Imported Upstream version 59.1 15/153615/1 upstream/59.1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Fri, 29 Sep 2017 02:44:41 +0000 (11:44 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Fri, 29 Sep 2017 02:45:20 +0000 (11:45 +0900)
Change-Id: I03408e3ee75325866aa0b6900c1a11e2c0514360
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
4394 files changed:
APIChangeReport.html
LICENSE
as_is/bomlist.txt
license.html
packaging/rpm/icu.spec [deleted file]
readme.html
source/Doxyfile.in
source/Makefile.in
source/allinone/allinone.sln
source/allinone/icucheck.bat
source/common/Makefile.in
source/common/appendable.cpp
source/common/bmpset.cpp
source/common/bmpset.h
source/common/brkeng.cpp
source/common/brkeng.h
source/common/brkiter.cpp
source/common/bytestream.cpp
source/common/bytestrie.cpp
source/common/bytestriebuilder.cpp
source/common/bytestrieiterator.cpp
source/common/caniter.cpp
source/common/chariter.cpp
source/common/charstr.cpp
source/common/charstr.h
source/common/cmemory.c [deleted file]
source/common/cmemory.h
source/common/common.vcxproj
source/common/common.vcxproj.filters
source/common/cpputils.h
source/common/cstr.cpp
source/common/cstr.h
source/common/cstring.c [deleted file]
source/common/cstring.h
source/common/cwchar.c [deleted file]
source/common/cwchar.h
source/common/dictbe.cpp
source/common/dictbe.h
source/common/dictionarydata.cpp
source/common/dictionarydata.h
source/common/dtintrv.cpp
source/common/errorcode.cpp
source/common/filteredbrk.cpp
source/common/filterednormalizer2.cpp
source/common/hash.h
source/common/icudataver.c [deleted file]
source/common/icuplug.cpp
source/common/icuplugimp.h
source/common/listformatter.cpp
source/common/loadednormalizer2impl.cpp
source/common/localsvc.h
source/common/locavailable.cpp
source/common/locbased.cpp
source/common/locbased.h
source/common/locdispnames.cpp
source/common/locdspnm.cpp
source/common/locid.cpp
source/common/loclikely.cpp
source/common/locmap.c [deleted file]
source/common/locmap.h
source/common/locresdata.cpp
source/common/locutil.cpp
source/common/locutil.h
source/common/messageimpl.h
source/common/messagepattern.cpp
source/common/msvcres.h
source/common/mutex.h
source/common/norm2_nfc_data.h
source/common/norm2allmodes.h
source/common/normalizer2.cpp
source/common/normalizer2impl.cpp
source/common/normalizer2impl.h
source/common/normlzr.cpp
source/common/parsepos.cpp
source/common/patternprops.cpp
source/common/patternprops.h
source/common/pluralmap.cpp
source/common/pluralmap.h
source/common/propname.cpp
source/common/propname.h
source/common/propname_data.h
source/common/propsvec.c [deleted file]
source/common/propsvec.h
source/common/punycode.cpp
source/common/punycode.h
source/common/putil.cpp
source/common/putilimp.h
source/common/rbbi.cpp
source/common/rbbidata.cpp
source/common/rbbidata.h
source/common/rbbinode.cpp
source/common/rbbinode.h
source/common/rbbirb.cpp
source/common/rbbirb.h
source/common/rbbirpt.h
source/common/rbbiscan.cpp
source/common/rbbiscan.h
source/common/rbbisetb.cpp
source/common/rbbisetb.h
source/common/rbbistbl.cpp
source/common/rbbitblb.cpp
source/common/rbbitblb.h
source/common/resbund.cpp
source/common/resbund_cnv.cpp
source/common/resource.cpp
source/common/resource.h
source/common/ruleiter.cpp
source/common/ruleiter.h
source/common/schriter.cpp
source/common/serv.cpp
source/common/serv.h
source/common/servlk.cpp
source/common/servlkf.cpp
source/common/servloc.h
source/common/servls.cpp
source/common/servnotf.cpp
source/common/servnotf.h
source/common/servrbf.cpp
source/common/servslkf.cpp
source/common/sharedobject.cpp
source/common/sharedobject.h
source/common/simpleformatter.cpp
source/common/sprpimpl.h
source/common/stringpiece.cpp
source/common/stringtriebuilder.cpp
source/common/uarrsort.c [deleted file]
source/common/uarrsort.h
source/common/uassert.h
source/common/ubidi.c [deleted file]
source/common/ubidi_props.c [deleted file]
source/common/ubidi_props.h
source/common/ubidi_props_data.h
source/common/ubidiimp.h
source/common/ubidiln.c [deleted file]
source/common/ubiditransform.c [deleted file]
source/common/ubidiwrt.c [deleted file]
source/common/ubrk.cpp
source/common/ubrkimpl.h
source/common/ucase.cpp
source/common/ucase.h
source/common/ucase_props_data.h
source/common/ucasemap.cpp
source/common/ucasemap_titlecase_brkiter.cpp
source/common/ucat.c [deleted file]
source/common/uchar.c [deleted file]
source/common/uchar_props_data.h
source/common/ucharstrie.cpp
source/common/ucharstriebuilder.cpp
source/common/ucharstrieiterator.cpp
source/common/uchriter.cpp
source/common/ucln.h
source/common/ucln_cmn.cpp
source/common/ucln_cmn.h
source/common/ucln_imp.h
source/common/ucmndata.c [deleted file]
source/common/ucmndata.h
source/common/ucnv.c [deleted file]
source/common/ucnv2022.cpp
source/common/ucnv_bld.cpp
source/common/ucnv_bld.h
source/common/ucnv_cb.c [deleted file]
source/common/ucnv_cnv.c [deleted file]
source/common/ucnv_cnv.h
source/common/ucnv_ct.c [deleted file]
source/common/ucnv_err.c [deleted file]
source/common/ucnv_ext.cpp
source/common/ucnv_ext.h
source/common/ucnv_imp.h
source/common/ucnv_io.cpp
source/common/ucnv_io.h
source/common/ucnv_lmb.c [deleted file]
source/common/ucnv_set.c [deleted file]
source/common/ucnv_u16.c [deleted file]
source/common/ucnv_u32.c [deleted file]
source/common/ucnv_u7.c [deleted file]
source/common/ucnv_u8.c [deleted file]
source/common/ucnvbocu.cpp
source/common/ucnvdisp.c [deleted file]
source/common/ucnvhz.c [deleted file]
source/common/ucnvisci.c [deleted file]
source/common/ucnvlat1.c [deleted file]
source/common/ucnvmbcs.cpp
source/common/ucnvmbcs.h
source/common/ucnvscsu.c [deleted file]
source/common/ucnvsel.cpp
source/common/ucol_data.h
source/common/ucol_swp.cpp
source/common/ucol_swp.h
source/common/ucurr.cpp
source/common/ucurrimp.h
source/common/udata.cpp
source/common/udatamem.c [deleted file]
source/common/udatamem.h
source/common/udataswp.c [deleted file]
source/common/udataswp.h
source/common/uelement.h
source/common/uenum.c [deleted file]
source/common/uenumimp.h
source/common/uhash.c [deleted file]
source/common/uhash.h
source/common/uhash_us.cpp
source/common/uidna.cpp
source/common/uinit.cpp
source/common/uinvchar.c [deleted file]
source/common/uinvchar.h
source/common/uiter.cpp
source/common/ulist.c [deleted file]
source/common/ulist.h
source/common/ulistformatter.cpp
source/common/uloc.cpp
source/common/uloc_keytype.cpp
source/common/uloc_tag.c [deleted file]
source/common/ulocimp.h
source/common/umapfile.c [deleted file]
source/common/umapfile.h
source/common/umath.c [deleted file]
source/common/umutex.cpp
source/common/umutex.h
source/common/unames.cpp
source/common/unicode/appendable.h
source/common/unicode/brkiter.h
source/common/unicode/bytestream.h
source/common/unicode/bytestrie.h
source/common/unicode/bytestriebuilder.h
source/common/unicode/caniter.h
source/common/unicode/chariter.h
source/common/unicode/dbbi.h
source/common/unicode/docmain.h
source/common/unicode/dtintrv.h
source/common/unicode/enumset.h
source/common/unicode/errorcode.h
source/common/unicode/filteredbrk.h
source/common/unicode/icudataver.h
source/common/unicode/icuplug.h
source/common/unicode/idna.h
source/common/unicode/listformatter.h
source/common/unicode/localpointer.h
source/common/unicode/locdspnm.h
source/common/unicode/locid.h
source/common/unicode/messagepattern.h
source/common/unicode/normalizer2.h
source/common/unicode/normlzr.h
source/common/unicode/parseerr.h
source/common/unicode/parsepos.h
source/common/unicode/platform.h
source/common/unicode/ptypes.h
source/common/unicode/putil.h
source/common/unicode/rbbi.h
source/common/unicode/rep.h
source/common/unicode/resbund.h
source/common/unicode/schriter.h
source/common/unicode/simpleformatter.h
source/common/unicode/std_string.h
source/common/unicode/strenum.h
source/common/unicode/stringpiece.h
source/common/unicode/stringtriebuilder.h
source/common/unicode/symtable.h
source/common/unicode/ubidi.h
source/common/unicode/ubiditransform.h
source/common/unicode/ubrk.h
source/common/unicode/ucasemap.h
source/common/unicode/ucat.h
source/common/unicode/uchar.h
source/common/unicode/ucharstrie.h
source/common/unicode/ucharstriebuilder.h
source/common/unicode/uchriter.h
source/common/unicode/uclean.h
source/common/unicode/ucnv.h
source/common/unicode/ucnv_cb.h
source/common/unicode/ucnv_err.h
source/common/unicode/ucnvsel.h
source/common/unicode/uconfig.h
source/common/unicode/ucurr.h
source/common/unicode/udata.h
source/common/unicode/udisplaycontext.h
source/common/unicode/uenum.h
source/common/unicode/uidna.h
source/common/unicode/uiter.h
source/common/unicode/uldnames.h
source/common/unicode/ulistformatter.h
source/common/unicode/uloc.h
source/common/unicode/umachine.h
source/common/unicode/umisc.h
source/common/unicode/unifilt.h
source/common/unicode/unifunct.h
source/common/unicode/unimatch.h
source/common/unicode/uniset.h
source/common/unicode/unistr.h
source/common/unicode/unorm.h
source/common/unicode/unorm2.h
source/common/unicode/uobject.h
source/common/unicode/urename.h
source/common/unicode/urep.h
source/common/unicode/ures.h
source/common/unicode/uscript.h
source/common/unicode/uset.h
source/common/unicode/usetiter.h
source/common/unicode/ushape.h
source/common/unicode/usprep.h
source/common/unicode/ustring.h
source/common/unicode/ustringtrie.h
source/common/unicode/utext.h
source/common/unicode/utf.h
source/common/unicode/utf16.h
source/common/unicode/utf32.h
source/common/unicode/utf8.h
source/common/unicode/utf_old.h
source/common/unicode/utrace.h
source/common/unicode/utypes.h
source/common/unicode/uvernum.h
source/common/unicode/uversion.h
source/common/unifiedcache.cpp
source/common/unifiedcache.h
source/common/unifilt.cpp
source/common/unifunct.cpp
source/common/uniset.cpp
source/common/uniset_closure.cpp
source/common/uniset_props.cpp
source/common/unisetspan.cpp
source/common/unisetspan.h
source/common/unistr.cpp
source/common/unistr_case.cpp
source/common/unistr_case_locale.cpp
source/common/unistr_cnv.cpp
source/common/unistr_props.cpp
source/common/unistr_titlecase_brkiter.cpp
source/common/unistrappender.h
source/common/unorm.cpp
source/common/unormcmp.cpp
source/common/unormimp.h
source/common/uobject.cpp
source/common/uposixdefs.h
source/common/uprops.cpp
source/common/uprops.h
source/common/ures_cnv.c [deleted file]
source/common/uresbund.cpp
source/common/uresdata.cpp
source/common/uresdata.h
source/common/uresimp.h
source/common/ureslocs.h
source/common/usc_impl.c [deleted file]
source/common/usc_impl.h
source/common/uscript.c [deleted file]
source/common/uscript_props.cpp
source/common/uset.cpp
source/common/uset_imp.h
source/common/uset_props.cpp
source/common/usetiter.cpp
source/common/ushape.cpp
source/common/usprep.cpp
source/common/ustack.cpp
source/common/ustr_cnv.cpp
source/common/ustr_cnv.h
source/common/ustr_imp.h
source/common/ustr_titlecase_brkiter.cpp
source/common/ustr_wcs.cpp
source/common/ustrcase.cpp
source/common/ustrcase_locale.cpp
source/common/ustrenum.cpp
source/common/ustrenum.h
source/common/ustrfmt.c [deleted file]
source/common/ustrfmt.h
source/common/ustring.cpp
source/common/ustrtrns.cpp
source/common/utext.cpp
source/common/utf_impl.c [deleted file]
source/common/util.cpp
source/common/util.h
source/common/util_props.cpp
source/common/utrace.c [deleted file]
source/common/utracimp.h
source/common/utrie.cpp
source/common/utrie.h
source/common/utrie2.cpp
source/common/utrie2.h
source/common/utrie2_builder.cpp
source/common/utrie2_impl.h
source/common/uts46.cpp
source/common/utypeinfo.h
source/common/utypes.c [deleted file]
source/common/uvector.cpp
source/common/uvector.h
source/common/uvectr32.cpp
source/common/uvectr32.h
source/common/uvectr64.cpp
source/common/uvectr64.h
source/common/wintz.c [deleted file]
source/common/wintz.h
source/config/dist.mk
source/config/make2sh.sed
source/config/mh-aix-va
source/config/mh-cygwin
source/config/mh-cygwin-msvc
source/config/mh-cygwin64
source/config/mh-msys-msvc
source/config/mh-os390
source/config/mh-solaris
source/configure
source/configure.ac
source/data/brkitr/brkfiles.mk
source/data/brkitr/root.txt
source/data/brkitr/rules/char.txt
source/data/brkitr/rules/line.txt
source/data/brkitr/rules/line_fi.txt
source/data/brkitr/rules/line_loose.txt
source/data/brkitr/rules/line_loose_cj.txt
source/data/brkitr/rules/line_loose_fi.txt
source/data/brkitr/rules/line_normal.txt
source/data/brkitr/rules/line_normal_cj.txt
source/data/brkitr/rules/line_normal_fi.txt
source/data/brkitr/rules/word.txt
source/data/brkitr/rules/word_POSIX.txt
source/data/cldr-icu-readme.txt
source/data/coll/af.txt
source/data/coll/am.txt
source/data/coll/ar.txt
source/data/coll/ars.txt [new file with mode: 0644]
source/data/coll/as.txt
source/data/coll/az.txt
source/data/coll/be.txt
source/data/coll/bg.txt
source/data/coll/bn.txt
source/data/coll/bs.txt
source/data/coll/bs_Cyrl.txt
source/data/coll/ca.txt
source/data/coll/chr.txt
source/data/coll/colfiles.mk
source/data/coll/cs.txt
source/data/coll/cy.txt
source/data/coll/da.txt
source/data/coll/de.txt
source/data/coll/de_AT.txt
source/data/coll/dsb.txt
source/data/coll/ee.txt
source/data/coll/el.txt
source/data/coll/en_US_POSIX.txt
source/data/coll/eo.txt
source/data/coll/es.txt
source/data/coll/et.txt
source/data/coll/fa.txt
source/data/coll/fa_AF.txt
source/data/coll/fi.txt
source/data/coll/fil.txt
source/data/coll/fo.txt
source/data/coll/fr_CA.txt
source/data/coll/gl.txt
source/data/coll/gu.txt
source/data/coll/ha.txt
source/data/coll/haw.txt
source/data/coll/he.txt
source/data/coll/hi.txt
source/data/coll/hr.txt
source/data/coll/hsb.txt
source/data/coll/hu.txt
source/data/coll/hy.txt
source/data/coll/ig.txt
source/data/coll/is.txt
source/data/coll/ja.txt
source/data/coll/ka.txt
source/data/coll/kk.txt
source/data/coll/kl.txt
source/data/coll/km.txt
source/data/coll/kn.txt
source/data/coll/ko.txt
source/data/coll/kok.txt
source/data/coll/ky.txt
source/data/coll/lkt.txt
source/data/coll/ln.txt
source/data/coll/lo.txt
source/data/coll/lt.txt
source/data/coll/lv.txt
source/data/coll/mk.txt
source/data/coll/ml.txt
source/data/coll/mn.txt
source/data/coll/mr.txt
source/data/coll/mt.txt
source/data/coll/my.txt
source/data/coll/nb.txt
source/data/coll/ne.txt
source/data/coll/nn.txt
source/data/coll/om.txt
source/data/coll/or.txt
source/data/coll/pa.txt
source/data/coll/pl.txt
source/data/coll/ps.txt
source/data/coll/ro.txt
source/data/coll/root.txt
source/data/coll/ru.txt
source/data/coll/se.txt
source/data/coll/si.txt
source/data/coll/sk.txt
source/data/coll/sl.txt
source/data/coll/smn.txt
source/data/coll/sq.txt
source/data/coll/sr.txt
source/data/coll/sr_Latn.txt
source/data/coll/sv.txt
source/data/coll/ta.txt
source/data/coll/te.txt
source/data/coll/th.txt
source/data/coll/to.txt
source/data/coll/tr.txt
source/data/coll/ug.txt
source/data/coll/uk.txt
source/data/coll/ur.txt
source/data/coll/uz.txt
source/data/coll/vi.txt
source/data/coll/yi.txt
source/data/coll/yo.txt
source/data/coll/zh.txt
source/data/curr/af.txt
source/data/curr/af_NA.txt
source/data/curr/agq.txt
source/data/curr/ak.txt
source/data/curr/am.txt
source/data/curr/ar.txt
source/data/curr/ar_AE.txt
source/data/curr/ar_DJ.txt
source/data/curr/ar_ER.txt
source/data/curr/ar_LB.txt
source/data/curr/ar_SA.txt [new file with mode: 0644]
source/data/curr/ar_SO.txt
source/data/curr/ar_SS.txt
source/data/curr/ars.txt [new file with mode: 0644]
source/data/curr/as.txt
source/data/curr/asa.txt
source/data/curr/ast.txt
source/data/curr/az.txt
source/data/curr/az_Cyrl.txt
source/data/curr/az_Latn.txt
source/data/curr/bas.txt
source/data/curr/be.txt
source/data/curr/bem.txt
source/data/curr/bez.txt
source/data/curr/bg.txt
source/data/curr/bm.txt
source/data/curr/bn.txt
source/data/curr/bo.txt
source/data/curr/bo_IN.txt
source/data/curr/br.txt
source/data/curr/brx.txt
source/data/curr/bs.txt
source/data/curr/bs_Cyrl.txt
source/data/curr/bs_Latn.txt
source/data/curr/ca.txt
source/data/curr/ca_FR.txt
source/data/curr/ce.txt
source/data/curr/cgg.txt
source/data/curr/chr.txt
source/data/curr/ckb.txt
source/data/curr/cs.txt
source/data/curr/cy.txt
source/data/curr/da.txt
source/data/curr/dav.txt
source/data/curr/de.txt
source/data/curr/de_CH.txt
source/data/curr/de_LI.txt
source/data/curr/de_LU.txt
source/data/curr/dje.txt
source/data/curr/dsb.txt
source/data/curr/dua.txt
source/data/curr/dyo.txt
source/data/curr/dz.txt
source/data/curr/ebu.txt
source/data/curr/ee.txt
source/data/curr/el.txt
source/data/curr/en.txt
source/data/curr/en_001.txt
source/data/curr/en_150.txt
source/data/curr/en_AG.txt
source/data/curr/en_AI.txt
source/data/curr/en_AT.txt
source/data/curr/en_AU.txt
source/data/curr/en_BB.txt
source/data/curr/en_BE.txt
source/data/curr/en_BI.txt
source/data/curr/en_BM.txt
source/data/curr/en_BS.txt
source/data/curr/en_BW.txt
source/data/curr/en_BZ.txt
source/data/curr/en_CA.txt
source/data/curr/en_CC.txt
source/data/curr/en_CH.txt
source/data/curr/en_CK.txt
source/data/curr/en_CM.txt
source/data/curr/en_CX.txt
source/data/curr/en_CY.txt
source/data/curr/en_DE.txt
source/data/curr/en_DG.txt
source/data/curr/en_DK.txt
source/data/curr/en_DM.txt
source/data/curr/en_ER.txt
source/data/curr/en_FI.txt
source/data/curr/en_FJ.txt
source/data/curr/en_FK.txt
source/data/curr/en_FM.txt
source/data/curr/en_GB.txt
source/data/curr/en_GD.txt
source/data/curr/en_GG.txt
source/data/curr/en_GH.txt
source/data/curr/en_GI.txt
source/data/curr/en_GM.txt
source/data/curr/en_GY.txt
source/data/curr/en_HK.txt
source/data/curr/en_IE.txt
source/data/curr/en_IL.txt
source/data/curr/en_IM.txt
source/data/curr/en_IN.txt
source/data/curr/en_IO.txt
source/data/curr/en_JE.txt
source/data/curr/en_JM.txt
source/data/curr/en_KE.txt
source/data/curr/en_KI.txt
source/data/curr/en_KN.txt
source/data/curr/en_KY.txt
source/data/curr/en_LC.txt
source/data/curr/en_LR.txt
source/data/curr/en_LS.txt
source/data/curr/en_MG.txt
source/data/curr/en_MO.txt
source/data/curr/en_MS.txt
source/data/curr/en_MT.txt
source/data/curr/en_MU.txt
source/data/curr/en_MW.txt
source/data/curr/en_MY.txt
source/data/curr/en_NA.txt
source/data/curr/en_NF.txt
source/data/curr/en_NG.txt
source/data/curr/en_NL.txt
source/data/curr/en_NR.txt
source/data/curr/en_NU.txt
source/data/curr/en_NZ.txt
source/data/curr/en_PG.txt
source/data/curr/en_PH.txt
source/data/curr/en_PK.txt
source/data/curr/en_PN.txt
source/data/curr/en_PW.txt
source/data/curr/en_RW.txt
source/data/curr/en_SB.txt
source/data/curr/en_SC.txt
source/data/curr/en_SD.txt
source/data/curr/en_SE.txt
source/data/curr/en_SG.txt
source/data/curr/en_SH.txt
source/data/curr/en_SI.txt
source/data/curr/en_SL.txt
source/data/curr/en_SS.txt
source/data/curr/en_SX.txt
source/data/curr/en_SZ.txt
source/data/curr/en_TC.txt
source/data/curr/en_TK.txt
source/data/curr/en_TO.txt
source/data/curr/en_TT.txt
source/data/curr/en_TV.txt
source/data/curr/en_TZ.txt
source/data/curr/en_UG.txt
source/data/curr/en_VC.txt
source/data/curr/en_VG.txt
source/data/curr/en_VU.txt
source/data/curr/en_WS.txt
source/data/curr/en_ZA.txt
source/data/curr/en_ZM.txt
source/data/curr/en_ZW.txt
source/data/curr/eo.txt
source/data/curr/es.txt
source/data/curr/es_419.txt
source/data/curr/es_AR.txt
source/data/curr/es_BO.txt
source/data/curr/es_BR.txt
source/data/curr/es_BZ.txt [new file with mode: 0644]
source/data/curr/es_CL.txt
source/data/curr/es_CO.txt
source/data/curr/es_CR.txt
source/data/curr/es_CU.txt
source/data/curr/es_DO.txt
source/data/curr/es_EC.txt
source/data/curr/es_GQ.txt
source/data/curr/es_GT.txt
source/data/curr/es_HN.txt
source/data/curr/es_MX.txt
source/data/curr/es_NI.txt
source/data/curr/es_PA.txt
source/data/curr/es_PE.txt
source/data/curr/es_PH.txt
source/data/curr/es_PR.txt
source/data/curr/es_PY.txt
source/data/curr/es_SV.txt
source/data/curr/es_US.txt
source/data/curr/es_UY.txt
source/data/curr/es_VE.txt
source/data/curr/et.txt
source/data/curr/eu.txt
source/data/curr/ewo.txt
source/data/curr/fa.txt
source/data/curr/fa_AF.txt
source/data/curr/ff.txt
source/data/curr/ff_GN.txt
source/data/curr/ff_MR.txt
source/data/curr/fi.txt
source/data/curr/fil.txt
source/data/curr/fo.txt
source/data/curr/fo_DK.txt
source/data/curr/fr.txt
source/data/curr/fr_BI.txt
source/data/curr/fr_CA.txt
source/data/curr/fr_CD.txt
source/data/curr/fr_DJ.txt
source/data/curr/fr_DZ.txt
source/data/curr/fr_GN.txt
source/data/curr/fr_HT.txt
source/data/curr/fr_KM.txt
source/data/curr/fr_LU.txt
source/data/curr/fr_MG.txt
source/data/curr/fr_MR.txt
source/data/curr/fr_MU.txt
source/data/curr/fr_RW.txt
source/data/curr/fr_SC.txt
source/data/curr/fr_SY.txt
source/data/curr/fr_TN.txt
source/data/curr/fr_VU.txt
source/data/curr/fur.txt
source/data/curr/fy.txt
source/data/curr/ga.txt
source/data/curr/gd.txt
source/data/curr/gl.txt
source/data/curr/gsw.txt
source/data/curr/gu.txt
source/data/curr/guz.txt
source/data/curr/gv.txt
source/data/curr/ha.txt
source/data/curr/ha_GH.txt
source/data/curr/haw.txt
source/data/curr/he.txt
source/data/curr/hi.txt
source/data/curr/hr.txt
source/data/curr/hr_BA.txt
source/data/curr/hsb.txt
source/data/curr/hu.txt
source/data/curr/hy.txt
source/data/curr/id.txt
source/data/curr/ig.txt
source/data/curr/ii.txt
source/data/curr/is.txt
source/data/curr/it.txt
source/data/curr/ja.txt
source/data/curr/jgo.txt
source/data/curr/jmc.txt
source/data/curr/ka.txt
source/data/curr/kab.txt
source/data/curr/kam.txt
source/data/curr/kde.txt
source/data/curr/kea.txt
source/data/curr/khq.txt
source/data/curr/ki.txt
source/data/curr/kk.txt
source/data/curr/kkj.txt
source/data/curr/kl.txt
source/data/curr/kln.txt
source/data/curr/km.txt
source/data/curr/kn.txt
source/data/curr/ko.txt
source/data/curr/kok.txt
source/data/curr/ks.txt
source/data/curr/ksb.txt
source/data/curr/ksf.txt
source/data/curr/ksh.txt
source/data/curr/kw.txt
source/data/curr/ky.txt
source/data/curr/lag.txt
source/data/curr/lb.txt
source/data/curr/lg.txt
source/data/curr/lkt.txt
source/data/curr/ln.txt
source/data/curr/ln_AO.txt
source/data/curr/lo.txt
source/data/curr/lrc.txt
source/data/curr/lt.txt
source/data/curr/lu.txt
source/data/curr/luo.txt
source/data/curr/luy.txt
source/data/curr/lv.txt
source/data/curr/mas.txt
source/data/curr/mas_TZ.txt
source/data/curr/mer.txt
source/data/curr/mfe.txt
source/data/curr/mg.txt
source/data/curr/mgh.txt
source/data/curr/mgo.txt
source/data/curr/mk.txt
source/data/curr/ml.txt
source/data/curr/mn.txt
source/data/curr/mr.txt
source/data/curr/ms.txt
source/data/curr/ms_BN.txt
source/data/curr/ms_SG.txt
source/data/curr/mt.txt
source/data/curr/mua.txt
source/data/curr/my.txt
source/data/curr/mzn.txt
source/data/curr/naq.txt
source/data/curr/nb.txt
source/data/curr/nd.txt
source/data/curr/nds.txt
source/data/curr/ne.txt
source/data/curr/nl.txt
source/data/curr/nl_AW.txt
source/data/curr/nl_BQ.txt
source/data/curr/nl_CW.txt
source/data/curr/nl_SR.txt
source/data/curr/nl_SX.txt
source/data/curr/nmg.txt
source/data/curr/nn.txt
source/data/curr/nnh.txt
source/data/curr/nus.txt
source/data/curr/nyn.txt
source/data/curr/om.txt
source/data/curr/om_KE.txt
source/data/curr/or.txt
source/data/curr/os.txt
source/data/curr/os_RU.txt
source/data/curr/pa.txt
source/data/curr/pa_Arab.txt
source/data/curr/pa_Guru.txt
source/data/curr/pl.txt
source/data/curr/pool.res
source/data/curr/ps.txt
source/data/curr/pt.txt
source/data/curr/pt_AO.txt
source/data/curr/pt_CH.txt
source/data/curr/pt_CV.txt
source/data/curr/pt_GQ.txt
source/data/curr/pt_GW.txt
source/data/curr/pt_LU.txt
source/data/curr/pt_MO.txt
source/data/curr/pt_MZ.txt
source/data/curr/pt_PT.txt
source/data/curr/pt_ST.txt
source/data/curr/pt_TL.txt
source/data/curr/qu.txt
source/data/curr/qu_BO.txt
source/data/curr/qu_EC.txt
source/data/curr/resfiles.mk
source/data/curr/rm.txt
source/data/curr/rn.txt
source/data/curr/ro.txt
source/data/curr/ro_MD.txt
source/data/curr/rof.txt
source/data/curr/root.txt
source/data/curr/ru.txt
source/data/curr/ru_BY.txt
source/data/curr/ru_KG.txt
source/data/curr/ru_KZ.txt
source/data/curr/ru_MD.txt
source/data/curr/rw.txt
source/data/curr/rwk.txt
source/data/curr/sah.txt
source/data/curr/saq.txt
source/data/curr/sbp.txt
source/data/curr/se.txt
source/data/curr/se_SE.txt
source/data/curr/seh.txt
source/data/curr/ses.txt
source/data/curr/sg.txt
source/data/curr/shi.txt
source/data/curr/shi_Latn.txt
source/data/curr/shi_Tfng.txt
source/data/curr/si.txt
source/data/curr/sk.txt
source/data/curr/sl.txt
source/data/curr/smn.txt
source/data/curr/sn.txt
source/data/curr/so.txt
source/data/curr/so_DJ.txt
source/data/curr/so_ET.txt
source/data/curr/so_KE.txt
source/data/curr/sq.txt
source/data/curr/sq_MK.txt
source/data/curr/sr.txt
source/data/curr/sr_Cyrl.txt
source/data/curr/sr_Latn.txt
source/data/curr/sv.txt
source/data/curr/sw.txt
source/data/curr/sw_CD.txt
source/data/curr/sw_UG.txt
source/data/curr/ta.txt
source/data/curr/ta_LK.txt
source/data/curr/ta_MY.txt
source/data/curr/ta_SG.txt
source/data/curr/te.txt
source/data/curr/teo.txt
source/data/curr/teo_KE.txt
source/data/curr/th.txt
source/data/curr/ti.txt
source/data/curr/ti_ER.txt
source/data/curr/to.txt
source/data/curr/tr.txt
source/data/curr/twq.txt
source/data/curr/tzm.txt
source/data/curr/ug.txt
source/data/curr/uk.txt
source/data/curr/ur.txt
source/data/curr/ur_IN.txt
source/data/curr/uz.txt
source/data/curr/uz_Arab.txt
source/data/curr/uz_Cyrl.txt
source/data/curr/uz_Latn.txt
source/data/curr/vai.txt
source/data/curr/vai_Latn.txt
source/data/curr/vai_Vaii.txt
source/data/curr/vi.txt
source/data/curr/vun.txt
source/data/curr/wae.txt
source/data/curr/xog.txt
source/data/curr/yav.txt
source/data/curr/yi.txt
source/data/curr/yo.txt
source/data/curr/yo_BJ.txt
source/data/curr/yue.txt
source/data/curr/zgh.txt
source/data/curr/zh.txt
source/data/curr/zh_Hans.txt
source/data/curr/zh_Hans_HK.txt
source/data/curr/zh_Hans_MO.txt
source/data/curr/zh_Hans_SG.txt
source/data/curr/zh_Hant.txt
source/data/curr/zh_Hant_HK.txt
source/data/curr/zh_Hant_MO.txt
source/data/curr/zu.txt
source/data/icu-coll-deprecates.xml
source/data/icu-config.xml
source/data/icu-locale-deprecates.xml
source/data/icu-rbnf-deprecates.xml
source/data/in/ubidi.icu
source/data/in/uprops.icu
source/data/lang/af.txt
source/data/lang/agq.txt
source/data/lang/ak.txt
source/data/lang/am.txt
source/data/lang/ar.txt
source/data/lang/ar_EG.txt
source/data/lang/ar_LY.txt
source/data/lang/ar_SA.txt
source/data/lang/ars.txt [new file with mode: 0644]
source/data/lang/as.txt
source/data/lang/asa.txt
source/data/lang/ast.txt
source/data/lang/az.txt
source/data/lang/az_Cyrl.txt
source/data/lang/az_Latn.txt
source/data/lang/bas.txt
source/data/lang/be.txt
source/data/lang/bem.txt
source/data/lang/bez.txt
source/data/lang/bg.txt
source/data/lang/bm.txt
source/data/lang/bn.txt
source/data/lang/bn_IN.txt
source/data/lang/bo.txt
source/data/lang/br.txt
source/data/lang/brx.txt
source/data/lang/bs.txt
source/data/lang/bs_Cyrl.txt
source/data/lang/bs_Latn.txt
source/data/lang/ca.txt
source/data/lang/ce.txt
source/data/lang/cgg.txt
source/data/lang/chr.txt
source/data/lang/ckb.txt
source/data/lang/cs.txt
source/data/lang/cy.txt
source/data/lang/da.txt
source/data/lang/dav.txt
source/data/lang/de.txt
source/data/lang/de_AT.txt
source/data/lang/de_CH.txt
source/data/lang/de_LU.txt
source/data/lang/dje.txt
source/data/lang/dsb.txt
source/data/lang/dua.txt
source/data/lang/dyo.txt
source/data/lang/dz.txt
source/data/lang/ebu.txt
source/data/lang/ee.txt
source/data/lang/el.txt
source/data/lang/en.txt
source/data/lang/en_001.txt
source/data/lang/en_150.txt
source/data/lang/en_AG.txt
source/data/lang/en_AI.txt
source/data/lang/en_AT.txt
source/data/lang/en_AU.txt
source/data/lang/en_BB.txt
source/data/lang/en_BE.txt
source/data/lang/en_BM.txt
source/data/lang/en_BS.txt
source/data/lang/en_BW.txt
source/data/lang/en_BZ.txt
source/data/lang/en_CA.txt
source/data/lang/en_CC.txt
source/data/lang/en_CH.txt
source/data/lang/en_CK.txt
source/data/lang/en_CM.txt
source/data/lang/en_CX.txt
source/data/lang/en_CY.txt
source/data/lang/en_DE.txt
source/data/lang/en_DG.txt
source/data/lang/en_DK.txt
source/data/lang/en_DM.txt
source/data/lang/en_ER.txt
source/data/lang/en_FI.txt
source/data/lang/en_FJ.txt
source/data/lang/en_FK.txt
source/data/lang/en_FM.txt
source/data/lang/en_GB.txt
source/data/lang/en_GD.txt
source/data/lang/en_GG.txt
source/data/lang/en_GH.txt
source/data/lang/en_GI.txt
source/data/lang/en_GM.txt
source/data/lang/en_GY.txt
source/data/lang/en_HK.txt
source/data/lang/en_IE.txt
source/data/lang/en_IL.txt
source/data/lang/en_IM.txt
source/data/lang/en_IN.txt
source/data/lang/en_IO.txt
source/data/lang/en_JE.txt
source/data/lang/en_JM.txt
source/data/lang/en_KE.txt
source/data/lang/en_KI.txt
source/data/lang/en_KN.txt
source/data/lang/en_KY.txt
source/data/lang/en_LC.txt
source/data/lang/en_LR.txt
source/data/lang/en_LS.txt
source/data/lang/en_MG.txt
source/data/lang/en_MO.txt
source/data/lang/en_MS.txt
source/data/lang/en_MT.txt
source/data/lang/en_MU.txt
source/data/lang/en_MW.txt
source/data/lang/en_MY.txt
source/data/lang/en_NA.txt
source/data/lang/en_NF.txt
source/data/lang/en_NG.txt
source/data/lang/en_NL.txt
source/data/lang/en_NR.txt
source/data/lang/en_NU.txt
source/data/lang/en_NZ.txt
source/data/lang/en_PG.txt
source/data/lang/en_PH.txt
source/data/lang/en_PK.txt
source/data/lang/en_PN.txt
source/data/lang/en_PW.txt
source/data/lang/en_RW.txt
source/data/lang/en_SB.txt
source/data/lang/en_SC.txt
source/data/lang/en_SD.txt
source/data/lang/en_SE.txt
source/data/lang/en_SG.txt
source/data/lang/en_SH.txt
source/data/lang/en_SI.txt
source/data/lang/en_SL.txt
source/data/lang/en_SS.txt
source/data/lang/en_SX.txt
source/data/lang/en_SZ.txt
source/data/lang/en_TC.txt
source/data/lang/en_TK.txt
source/data/lang/en_TO.txt
source/data/lang/en_TT.txt
source/data/lang/en_TV.txt
source/data/lang/en_TZ.txt
source/data/lang/en_UG.txt
source/data/lang/en_VC.txt
source/data/lang/en_VG.txt
source/data/lang/en_VU.txt
source/data/lang/en_WS.txt
source/data/lang/en_ZA.txt
source/data/lang/en_ZM.txt
source/data/lang/en_ZW.txt
source/data/lang/eo.txt
source/data/lang/es.txt
source/data/lang/es_419.txt
source/data/lang/es_AR.txt
source/data/lang/es_BO.txt
source/data/lang/es_BR.txt
source/data/lang/es_BZ.txt [new file with mode: 0644]
source/data/lang/es_CL.txt
source/data/lang/es_CO.txt
source/data/lang/es_CR.txt
source/data/lang/es_CU.txt
source/data/lang/es_DO.txt
source/data/lang/es_EC.txt
source/data/lang/es_GT.txt
source/data/lang/es_HN.txt
source/data/lang/es_MX.txt
source/data/lang/es_NI.txt
source/data/lang/es_PA.txt
source/data/lang/es_PE.txt
source/data/lang/es_PR.txt
source/data/lang/es_PY.txt
source/data/lang/es_SV.txt
source/data/lang/es_US.txt
source/data/lang/es_UY.txt
source/data/lang/es_VE.txt
source/data/lang/et.txt
source/data/lang/eu.txt
source/data/lang/ewo.txt
source/data/lang/fa.txt
source/data/lang/fa_AF.txt
source/data/lang/ff.txt
source/data/lang/fi.txt
source/data/lang/fil.txt
source/data/lang/fo.txt
source/data/lang/fr.txt
source/data/lang/fr_BE.txt
source/data/lang/fr_CA.txt
source/data/lang/fr_CH.txt
source/data/lang/fur.txt
source/data/lang/fy.txt
source/data/lang/ga.txt
source/data/lang/gd.txt
source/data/lang/gl.txt
source/data/lang/gsw.txt
source/data/lang/gu.txt
source/data/lang/guz.txt
source/data/lang/gv.txt
source/data/lang/ha.txt
source/data/lang/haw.txt
source/data/lang/he.txt
source/data/lang/hi.txt
source/data/lang/hr.txt
source/data/lang/hsb.txt
source/data/lang/hu.txt
source/data/lang/hy.txt
source/data/lang/id.txt
source/data/lang/ig.txt
source/data/lang/ii.txt
source/data/lang/is.txt
source/data/lang/it.txt
source/data/lang/ja.txt
source/data/lang/jgo.txt
source/data/lang/jmc.txt
source/data/lang/ka.txt
source/data/lang/kab.txt
source/data/lang/kam.txt
source/data/lang/kde.txt
source/data/lang/kea.txt
source/data/lang/khq.txt
source/data/lang/ki.txt
source/data/lang/kk.txt
source/data/lang/kkj.txt
source/data/lang/kl.txt
source/data/lang/kln.txt
source/data/lang/km.txt
source/data/lang/kn.txt
source/data/lang/ko.txt
source/data/lang/kok.txt
source/data/lang/ks.txt
source/data/lang/ksb.txt
source/data/lang/ksf.txt
source/data/lang/ksh.txt
source/data/lang/kw.txt
source/data/lang/ky.txt
source/data/lang/lag.txt
source/data/lang/lb.txt
source/data/lang/lg.txt
source/data/lang/lkt.txt
source/data/lang/ln.txt
source/data/lang/lo.txt
source/data/lang/lrc.txt
source/data/lang/lt.txt
source/data/lang/lu.txt
source/data/lang/luo.txt
source/data/lang/luy.txt
source/data/lang/lv.txt
source/data/lang/mas.txt
source/data/lang/mer.txt
source/data/lang/mfe.txt
source/data/lang/mg.txt
source/data/lang/mgh.txt
source/data/lang/mgo.txt
source/data/lang/mk.txt
source/data/lang/ml.txt
source/data/lang/mn.txt
source/data/lang/mr.txt
source/data/lang/ms.txt
source/data/lang/mt.txt
source/data/lang/mua.txt
source/data/lang/my.txt
source/data/lang/mzn.txt
source/data/lang/naq.txt
source/data/lang/nb.txt
source/data/lang/nd.txt
source/data/lang/nds.txt
source/data/lang/ne.txt
source/data/lang/nl.txt
source/data/lang/nmg.txt
source/data/lang/nn.txt
source/data/lang/nnh.txt
source/data/lang/nus.txt
source/data/lang/nyn.txt
source/data/lang/om.txt
source/data/lang/or.txt
source/data/lang/os.txt
source/data/lang/pa.txt
source/data/lang/pa_Arab.txt
source/data/lang/pa_Guru.txt
source/data/lang/pl.txt
source/data/lang/pool.res
source/data/lang/ps.txt
source/data/lang/pt.txt
source/data/lang/pt_AO.txt
source/data/lang/pt_CH.txt
source/data/lang/pt_CV.txt
source/data/lang/pt_GQ.txt
source/data/lang/pt_GW.txt
source/data/lang/pt_LU.txt
source/data/lang/pt_MO.txt
source/data/lang/pt_MZ.txt
source/data/lang/pt_PT.txt
source/data/lang/pt_ST.txt
source/data/lang/pt_TL.txt
source/data/lang/qu.txt
source/data/lang/resfiles.mk
source/data/lang/rm.txt
source/data/lang/rn.txt
source/data/lang/ro.txt
source/data/lang/ro_MD.txt
source/data/lang/rof.txt
source/data/lang/root.txt
source/data/lang/ru.txt
source/data/lang/rw.txt
source/data/lang/rwk.txt
source/data/lang/sah.txt
source/data/lang/saq.txt
source/data/lang/sbp.txt
source/data/lang/se.txt
source/data/lang/se_FI.txt
source/data/lang/seh.txt
source/data/lang/ses.txt
source/data/lang/sg.txt
source/data/lang/shi.txt
source/data/lang/shi_Latn.txt
source/data/lang/shi_Tfng.txt
source/data/lang/si.txt
source/data/lang/sk.txt
source/data/lang/sl.txt
source/data/lang/smn.txt
source/data/lang/sn.txt
source/data/lang/so.txt
source/data/lang/sq.txt
source/data/lang/sr.txt
source/data/lang/sr_Cyrl.txt
source/data/lang/sr_Cyrl_BA.txt
source/data/lang/sr_Cyrl_ME.txt
source/data/lang/sr_Cyrl_XK.txt
source/data/lang/sr_Latn.txt
source/data/lang/sr_Latn_BA.txt
source/data/lang/sr_Latn_ME.txt
source/data/lang/sr_Latn_XK.txt
source/data/lang/sv.txt
source/data/lang/sv_FI.txt
source/data/lang/sw.txt
source/data/lang/sw_CD.txt
source/data/lang/sw_KE.txt
source/data/lang/ta.txt
source/data/lang/te.txt
source/data/lang/teo.txt
source/data/lang/th.txt
source/data/lang/ti.txt
source/data/lang/to.txt
source/data/lang/tr.txt
source/data/lang/twq.txt
source/data/lang/tzm.txt
source/data/lang/ug.txt
source/data/lang/uk.txt
source/data/lang/ur.txt
source/data/lang/ur_IN.txt
source/data/lang/uz.txt
source/data/lang/uz_Arab.txt
source/data/lang/uz_Cyrl.txt
source/data/lang/uz_Latn.txt
source/data/lang/vai.txt
source/data/lang/vai_Latn.txt
source/data/lang/vai_Vaii.txt
source/data/lang/vi.txt
source/data/lang/vun.txt
source/data/lang/wae.txt
source/data/lang/xog.txt
source/data/lang/yav.txt
source/data/lang/yi.txt
source/data/lang/yo.txt
source/data/lang/yo_BJ.txt
source/data/lang/yue.txt
source/data/lang/zgh.txt
source/data/lang/zh.txt
source/data/lang/zh_Hans.txt
source/data/lang/zh_Hant.txt
source/data/lang/zh_Hant_HK.txt
source/data/lang/zh_Hant_MO.txt
source/data/lang/zu.txt
source/data/locales/af.txt
source/data/locales/af_NA.txt
source/data/locales/af_ZA.txt
source/data/locales/agq.txt
source/data/locales/agq_CM.txt
source/data/locales/ak.txt
source/data/locales/ak_GH.txt
source/data/locales/am.txt
source/data/locales/am_ET.txt
source/data/locales/ar.txt
source/data/locales/ar_001.txt
source/data/locales/ar_AE.txt
source/data/locales/ar_BH.txt
source/data/locales/ar_DJ.txt
source/data/locales/ar_DZ.txt
source/data/locales/ar_EG.txt
source/data/locales/ar_EH.txt
source/data/locales/ar_ER.txt
source/data/locales/ar_IL.txt
source/data/locales/ar_IQ.txt
source/data/locales/ar_JO.txt
source/data/locales/ar_KM.txt
source/data/locales/ar_KW.txt
source/data/locales/ar_LB.txt
source/data/locales/ar_LY.txt
source/data/locales/ar_MA.txt
source/data/locales/ar_MR.txt
source/data/locales/ar_OM.txt
source/data/locales/ar_PS.txt
source/data/locales/ar_QA.txt
source/data/locales/ar_SA.txt
source/data/locales/ar_SD.txt
source/data/locales/ar_SO.txt
source/data/locales/ar_SS.txt
source/data/locales/ar_SY.txt
source/data/locales/ar_TD.txt
source/data/locales/ar_TN.txt
source/data/locales/ar_YE.txt
source/data/locales/ars.txt [new file with mode: 0644]
source/data/locales/as.txt
source/data/locales/as_IN.txt
source/data/locales/asa.txt
source/data/locales/asa_TZ.txt
source/data/locales/ast.txt
source/data/locales/ast_ES.txt
source/data/locales/az.txt
source/data/locales/az_Cyrl.txt
source/data/locales/az_Cyrl_AZ.txt
source/data/locales/az_Latn.txt
source/data/locales/az_Latn_AZ.txt
source/data/locales/bas.txt
source/data/locales/bas_CM.txt
source/data/locales/be.txt
source/data/locales/be_BY.txt
source/data/locales/bem.txt
source/data/locales/bem_ZM.txt
source/data/locales/bez.txt
source/data/locales/bez_TZ.txt
source/data/locales/bg.txt
source/data/locales/bg_BG.txt
source/data/locales/bm.txt
source/data/locales/bm_ML.txt
source/data/locales/bn.txt
source/data/locales/bn_BD.txt
source/data/locales/bn_IN.txt
source/data/locales/bo.txt
source/data/locales/bo_CN.txt
source/data/locales/bo_IN.txt
source/data/locales/br.txt
source/data/locales/br_FR.txt
source/data/locales/brx.txt
source/data/locales/brx_IN.txt
source/data/locales/bs.txt
source/data/locales/bs_Cyrl.txt
source/data/locales/bs_Cyrl_BA.txt
source/data/locales/bs_Latn.txt
source/data/locales/bs_Latn_BA.txt
source/data/locales/ca.txt
source/data/locales/ca_AD.txt
source/data/locales/ca_ES.txt
source/data/locales/ca_FR.txt
source/data/locales/ca_IT.txt
source/data/locales/ce.txt
source/data/locales/ce_RU.txt
source/data/locales/cgg.txt
source/data/locales/cgg_UG.txt
source/data/locales/chr.txt
source/data/locales/chr_US.txt
source/data/locales/ckb.txt
source/data/locales/ckb_IQ.txt
source/data/locales/ckb_IR.txt
source/data/locales/cs.txt
source/data/locales/cs_CZ.txt
source/data/locales/cy.txt
source/data/locales/cy_GB.txt
source/data/locales/da.txt
source/data/locales/da_DK.txt
source/data/locales/da_GL.txt
source/data/locales/dav.txt
source/data/locales/dav_KE.txt
source/data/locales/de.txt
source/data/locales/de_AT.txt
source/data/locales/de_BE.txt
source/data/locales/de_CH.txt
source/data/locales/de_DE.txt
source/data/locales/de_IT.txt
source/data/locales/de_LI.txt
source/data/locales/de_LU.txt
source/data/locales/dje.txt
source/data/locales/dje_NE.txt
source/data/locales/dsb.txt
source/data/locales/dsb_DE.txt
source/data/locales/dua.txt
source/data/locales/dua_CM.txt
source/data/locales/dyo.txt
source/data/locales/dyo_SN.txt
source/data/locales/dz.txt
source/data/locales/dz_BT.txt
source/data/locales/ebu.txt
source/data/locales/ebu_KE.txt
source/data/locales/ee.txt
source/data/locales/ee_GH.txt
source/data/locales/ee_TG.txt
source/data/locales/el.txt
source/data/locales/el_CY.txt
source/data/locales/el_GR.txt
source/data/locales/en.txt
source/data/locales/en_001.txt
source/data/locales/en_150.txt
source/data/locales/en_AG.txt
source/data/locales/en_AI.txt
source/data/locales/en_AS.txt
source/data/locales/en_AT.txt
source/data/locales/en_AU.txt
source/data/locales/en_BB.txt
source/data/locales/en_BE.txt
source/data/locales/en_BI.txt
source/data/locales/en_BM.txt
source/data/locales/en_BS.txt
source/data/locales/en_BW.txt
source/data/locales/en_BZ.txt
source/data/locales/en_CA.txt
source/data/locales/en_CC.txt
source/data/locales/en_CH.txt
source/data/locales/en_CK.txt
source/data/locales/en_CM.txt
source/data/locales/en_CX.txt
source/data/locales/en_CY.txt
source/data/locales/en_DE.txt
source/data/locales/en_DG.txt
source/data/locales/en_DK.txt
source/data/locales/en_DM.txt
source/data/locales/en_ER.txt
source/data/locales/en_FI.txt
source/data/locales/en_FJ.txt
source/data/locales/en_FK.txt
source/data/locales/en_FM.txt
source/data/locales/en_GB.txt
source/data/locales/en_GD.txt
source/data/locales/en_GG.txt
source/data/locales/en_GH.txt
source/data/locales/en_GI.txt
source/data/locales/en_GM.txt
source/data/locales/en_GU.txt
source/data/locales/en_GY.txt
source/data/locales/en_HK.txt
source/data/locales/en_IE.txt
source/data/locales/en_IL.txt
source/data/locales/en_IM.txt
source/data/locales/en_IN.txt
source/data/locales/en_IO.txt
source/data/locales/en_JE.txt
source/data/locales/en_JM.txt
source/data/locales/en_KE.txt
source/data/locales/en_KI.txt
source/data/locales/en_KN.txt
source/data/locales/en_KY.txt
source/data/locales/en_LC.txt
source/data/locales/en_LR.txt
source/data/locales/en_LS.txt
source/data/locales/en_MG.txt
source/data/locales/en_MH.txt
source/data/locales/en_MO.txt
source/data/locales/en_MP.txt
source/data/locales/en_MS.txt
source/data/locales/en_MT.txt
source/data/locales/en_MU.txt
source/data/locales/en_MW.txt
source/data/locales/en_MY.txt
source/data/locales/en_NA.txt
source/data/locales/en_NF.txt
source/data/locales/en_NG.txt
source/data/locales/en_NL.txt
source/data/locales/en_NR.txt
source/data/locales/en_NU.txt
source/data/locales/en_NZ.txt
source/data/locales/en_PG.txt
source/data/locales/en_PH.txt
source/data/locales/en_PK.txt
source/data/locales/en_PN.txt
source/data/locales/en_PR.txt
source/data/locales/en_PW.txt
source/data/locales/en_RW.txt
source/data/locales/en_SB.txt
source/data/locales/en_SC.txt
source/data/locales/en_SD.txt
source/data/locales/en_SE.txt
source/data/locales/en_SG.txt
source/data/locales/en_SH.txt
source/data/locales/en_SI.txt
source/data/locales/en_SL.txt
source/data/locales/en_SS.txt
source/data/locales/en_SX.txt
source/data/locales/en_SZ.txt
source/data/locales/en_TC.txt
source/data/locales/en_TK.txt
source/data/locales/en_TO.txt
source/data/locales/en_TT.txt
source/data/locales/en_TV.txt
source/data/locales/en_TZ.txt
source/data/locales/en_UG.txt
source/data/locales/en_UM.txt
source/data/locales/en_US.txt
source/data/locales/en_US_POSIX.txt
source/data/locales/en_VC.txt
source/data/locales/en_VG.txt
source/data/locales/en_VI.txt
source/data/locales/en_VU.txt
source/data/locales/en_WS.txt
source/data/locales/en_ZA.txt
source/data/locales/en_ZM.txt
source/data/locales/en_ZW.txt
source/data/locales/eo.txt
source/data/locales/es.txt
source/data/locales/es_419.txt
source/data/locales/es_AR.txt
source/data/locales/es_BO.txt
source/data/locales/es_BR.txt
source/data/locales/es_BZ.txt [new file with mode: 0644]
source/data/locales/es_CL.txt
source/data/locales/es_CO.txt
source/data/locales/es_CR.txt
source/data/locales/es_CU.txt
source/data/locales/es_DO.txt
source/data/locales/es_EA.txt
source/data/locales/es_EC.txt
source/data/locales/es_ES.txt
source/data/locales/es_GQ.txt
source/data/locales/es_GT.txt
source/data/locales/es_HN.txt
source/data/locales/es_IC.txt
source/data/locales/es_MX.txt
source/data/locales/es_NI.txt
source/data/locales/es_PA.txt
source/data/locales/es_PE.txt
source/data/locales/es_PH.txt
source/data/locales/es_PR.txt
source/data/locales/es_PY.txt
source/data/locales/es_SV.txt
source/data/locales/es_US.txt
source/data/locales/es_UY.txt
source/data/locales/es_VE.txt
source/data/locales/et.txt
source/data/locales/et_EE.txt
source/data/locales/eu.txt
source/data/locales/eu_ES.txt
source/data/locales/ewo.txt
source/data/locales/ewo_CM.txt
source/data/locales/fa.txt
source/data/locales/fa_AF.txt
source/data/locales/fa_IR.txt
source/data/locales/ff.txt
source/data/locales/ff_CM.txt
source/data/locales/ff_GN.txt
source/data/locales/ff_MR.txt
source/data/locales/ff_SN.txt
source/data/locales/fi.txt
source/data/locales/fi_FI.txt
source/data/locales/fil.txt
source/data/locales/fil_PH.txt
source/data/locales/fo.txt
source/data/locales/fo_DK.txt
source/data/locales/fo_FO.txt
source/data/locales/fr.txt
source/data/locales/fr_BE.txt
source/data/locales/fr_BF.txt
source/data/locales/fr_BI.txt
source/data/locales/fr_BJ.txt
source/data/locales/fr_BL.txt
source/data/locales/fr_CA.txt
source/data/locales/fr_CD.txt
source/data/locales/fr_CF.txt
source/data/locales/fr_CG.txt
source/data/locales/fr_CH.txt
source/data/locales/fr_CI.txt
source/data/locales/fr_CM.txt
source/data/locales/fr_DJ.txt
source/data/locales/fr_DZ.txt
source/data/locales/fr_FR.txt
source/data/locales/fr_GA.txt
source/data/locales/fr_GF.txt
source/data/locales/fr_GN.txt
source/data/locales/fr_GP.txt
source/data/locales/fr_GQ.txt
source/data/locales/fr_HT.txt
source/data/locales/fr_KM.txt
source/data/locales/fr_LU.txt
source/data/locales/fr_MA.txt
source/data/locales/fr_MC.txt
source/data/locales/fr_MF.txt
source/data/locales/fr_MG.txt
source/data/locales/fr_ML.txt
source/data/locales/fr_MQ.txt
source/data/locales/fr_MR.txt
source/data/locales/fr_MU.txt
source/data/locales/fr_NC.txt
source/data/locales/fr_NE.txt
source/data/locales/fr_PF.txt
source/data/locales/fr_PM.txt
source/data/locales/fr_RE.txt
source/data/locales/fr_RW.txt
source/data/locales/fr_SC.txt
source/data/locales/fr_SN.txt
source/data/locales/fr_SY.txt
source/data/locales/fr_TD.txt
source/data/locales/fr_TG.txt
source/data/locales/fr_TN.txt
source/data/locales/fr_VU.txt
source/data/locales/fr_WF.txt
source/data/locales/fr_YT.txt
source/data/locales/fur.txt
source/data/locales/fur_IT.txt
source/data/locales/fy.txt
source/data/locales/fy_NL.txt
source/data/locales/ga.txt
source/data/locales/ga_IE.txt
source/data/locales/gd.txt
source/data/locales/gd_GB.txt
source/data/locales/gl.txt
source/data/locales/gl_ES.txt
source/data/locales/gsw.txt
source/data/locales/gsw_CH.txt
source/data/locales/gsw_FR.txt
source/data/locales/gsw_LI.txt
source/data/locales/gu.txt
source/data/locales/gu_IN.txt
source/data/locales/guz.txt
source/data/locales/guz_KE.txt
source/data/locales/gv.txt
source/data/locales/gv_IM.txt
source/data/locales/ha.txt
source/data/locales/ha_GH.txt
source/data/locales/ha_NE.txt
source/data/locales/ha_NG.txt
source/data/locales/haw.txt
source/data/locales/haw_US.txt
source/data/locales/he.txt
source/data/locales/he_IL.txt
source/data/locales/hi.txt
source/data/locales/hi_IN.txt
source/data/locales/hr.txt
source/data/locales/hr_BA.txt
source/data/locales/hr_HR.txt
source/data/locales/hsb.txt
source/data/locales/hsb_DE.txt
source/data/locales/hu.txt
source/data/locales/hu_HU.txt
source/data/locales/hy.txt
source/data/locales/hy_AM.txt
source/data/locales/id.txt
source/data/locales/id_ID.txt
source/data/locales/ig.txt
source/data/locales/ig_NG.txt
source/data/locales/ii.txt
source/data/locales/ii_CN.txt
source/data/locales/is.txt
source/data/locales/is_IS.txt
source/data/locales/it.txt
source/data/locales/it_CH.txt
source/data/locales/it_IT.txt
source/data/locales/it_SM.txt
source/data/locales/it_VA.txt [new file with mode: 0644]
source/data/locales/ja.txt
source/data/locales/ja_JP.txt
source/data/locales/jgo.txt
source/data/locales/jgo_CM.txt
source/data/locales/jmc.txt
source/data/locales/jmc_TZ.txt
source/data/locales/ka.txt
source/data/locales/ka_GE.txt
source/data/locales/kab.txt
source/data/locales/kab_DZ.txt
source/data/locales/kam.txt
source/data/locales/kam_KE.txt
source/data/locales/kde.txt
source/data/locales/kde_TZ.txt
source/data/locales/kea.txt
source/data/locales/kea_CV.txt
source/data/locales/khq.txt
source/data/locales/khq_ML.txt
source/data/locales/ki.txt
source/data/locales/ki_KE.txt
source/data/locales/kk.txt
source/data/locales/kk_KZ.txt
source/data/locales/kkj.txt
source/data/locales/kkj_CM.txt
source/data/locales/kl.txt
source/data/locales/kl_GL.txt
source/data/locales/kln.txt
source/data/locales/kln_KE.txt
source/data/locales/km.txt
source/data/locales/km_KH.txt
source/data/locales/kn.txt
source/data/locales/kn_IN.txt
source/data/locales/ko.txt
source/data/locales/ko_KP.txt
source/data/locales/ko_KR.txt
source/data/locales/kok.txt
source/data/locales/kok_IN.txt
source/data/locales/ks.txt
source/data/locales/ks_IN.txt
source/data/locales/ksb.txt
source/data/locales/ksb_TZ.txt
source/data/locales/ksf.txt
source/data/locales/ksf_CM.txt
source/data/locales/ksh.txt
source/data/locales/ksh_DE.txt
source/data/locales/kw.txt
source/data/locales/kw_GB.txt
source/data/locales/ky.txt
source/data/locales/ky_KG.txt
source/data/locales/lag.txt
source/data/locales/lag_TZ.txt
source/data/locales/lb.txt
source/data/locales/lb_LU.txt
source/data/locales/lg.txt
source/data/locales/lg_UG.txt
source/data/locales/lkt.txt
source/data/locales/lkt_US.txt
source/data/locales/ln.txt
source/data/locales/ln_AO.txt
source/data/locales/ln_CD.txt
source/data/locales/ln_CF.txt
source/data/locales/ln_CG.txt
source/data/locales/lo.txt
source/data/locales/lo_LA.txt
source/data/locales/lrc.txt
source/data/locales/lrc_IQ.txt
source/data/locales/lrc_IR.txt
source/data/locales/lt.txt
source/data/locales/lt_LT.txt
source/data/locales/lu.txt
source/data/locales/lu_CD.txt
source/data/locales/luo.txt
source/data/locales/luo_KE.txt
source/data/locales/luy.txt
source/data/locales/luy_KE.txt
source/data/locales/lv.txt
source/data/locales/lv_LV.txt
source/data/locales/mas.txt
source/data/locales/mas_KE.txt
source/data/locales/mas_TZ.txt
source/data/locales/mer.txt
source/data/locales/mer_KE.txt
source/data/locales/mfe.txt
source/data/locales/mfe_MU.txt
source/data/locales/mg.txt
source/data/locales/mg_MG.txt
source/data/locales/mgh.txt
source/data/locales/mgh_MZ.txt
source/data/locales/mgo.txt
source/data/locales/mgo_CM.txt
source/data/locales/mk.txt
source/data/locales/mk_MK.txt
source/data/locales/ml.txt
source/data/locales/ml_IN.txt
source/data/locales/mn.txt
source/data/locales/mn_MN.txt
source/data/locales/mr.txt
source/data/locales/mr_IN.txt
source/data/locales/ms.txt
source/data/locales/ms_BN.txt
source/data/locales/ms_MY.txt
source/data/locales/ms_SG.txt
source/data/locales/mt.txt
source/data/locales/mt_MT.txt
source/data/locales/mua.txt
source/data/locales/mua_CM.txt
source/data/locales/my.txt
source/data/locales/my_MM.txt
source/data/locales/mzn.txt
source/data/locales/mzn_IR.txt
source/data/locales/naq.txt
source/data/locales/naq_NA.txt
source/data/locales/nb.txt
source/data/locales/nb_NO.txt
source/data/locales/nb_SJ.txt
source/data/locales/nd.txt
source/data/locales/nd_ZW.txt
source/data/locales/nds.txt
source/data/locales/nds_DE.txt
source/data/locales/nds_NL.txt
source/data/locales/ne.txt
source/data/locales/ne_IN.txt
source/data/locales/ne_NP.txt
source/data/locales/nl.txt
source/data/locales/nl_AW.txt
source/data/locales/nl_BE.txt
source/data/locales/nl_BQ.txt
source/data/locales/nl_CW.txt
source/data/locales/nl_NL.txt
source/data/locales/nl_SR.txt
source/data/locales/nl_SX.txt
source/data/locales/nmg.txt
source/data/locales/nmg_CM.txt
source/data/locales/nn.txt
source/data/locales/nn_NO.txt
source/data/locales/nnh.txt
source/data/locales/nnh_CM.txt
source/data/locales/nus.txt
source/data/locales/nus_SS.txt
source/data/locales/nyn.txt
source/data/locales/nyn_UG.txt
source/data/locales/om.txt
source/data/locales/om_ET.txt
source/data/locales/om_KE.txt
source/data/locales/or.txt
source/data/locales/or_IN.txt
source/data/locales/os.txt
source/data/locales/os_GE.txt
source/data/locales/os_RU.txt
source/data/locales/pa.txt
source/data/locales/pa_Arab.txt
source/data/locales/pa_Arab_PK.txt
source/data/locales/pa_Guru.txt
source/data/locales/pa_Guru_IN.txt
source/data/locales/pl.txt
source/data/locales/pl_PL.txt
source/data/locales/pool.res
source/data/locales/ps.txt
source/data/locales/ps_AF.txt
source/data/locales/pt.txt
source/data/locales/pt_AO.txt
source/data/locales/pt_BR.txt
source/data/locales/pt_CH.txt
source/data/locales/pt_CV.txt
source/data/locales/pt_GQ.txt
source/data/locales/pt_GW.txt
source/data/locales/pt_LU.txt
source/data/locales/pt_MO.txt
source/data/locales/pt_MZ.txt
source/data/locales/pt_PT.txt
source/data/locales/pt_ST.txt
source/data/locales/pt_TL.txt
source/data/locales/qu.txt
source/data/locales/qu_BO.txt
source/data/locales/qu_EC.txt
source/data/locales/qu_PE.txt
source/data/locales/resfiles.mk
source/data/locales/rm.txt
source/data/locales/rm_CH.txt
source/data/locales/rn.txt
source/data/locales/rn_BI.txt
source/data/locales/ro.txt
source/data/locales/ro_MD.txt
source/data/locales/ro_RO.txt
source/data/locales/rof.txt
source/data/locales/rof_TZ.txt
source/data/locales/root.txt
source/data/locales/ru.txt
source/data/locales/ru_BY.txt
source/data/locales/ru_KG.txt
source/data/locales/ru_KZ.txt
source/data/locales/ru_MD.txt
source/data/locales/ru_RU.txt
source/data/locales/ru_UA.txt
source/data/locales/rw.txt
source/data/locales/rw_RW.txt
source/data/locales/rwk.txt
source/data/locales/rwk_TZ.txt
source/data/locales/sah.txt
source/data/locales/sah_RU.txt
source/data/locales/saq.txt
source/data/locales/saq_KE.txt
source/data/locales/sbp.txt
source/data/locales/sbp_TZ.txt
source/data/locales/se.txt
source/data/locales/se_FI.txt
source/data/locales/se_NO.txt
source/data/locales/se_SE.txt
source/data/locales/seh.txt
source/data/locales/seh_MZ.txt
source/data/locales/ses.txt
source/data/locales/ses_ML.txt
source/data/locales/sg.txt
source/data/locales/sg_CF.txt
source/data/locales/shi.txt
source/data/locales/shi_Latn.txt
source/data/locales/shi_Latn_MA.txt
source/data/locales/shi_Tfng.txt
source/data/locales/shi_Tfng_MA.txt
source/data/locales/si.txt
source/data/locales/si_LK.txt
source/data/locales/sk.txt
source/data/locales/sk_SK.txt
source/data/locales/sl.txt
source/data/locales/sl_SI.txt
source/data/locales/smn.txt
source/data/locales/smn_FI.txt
source/data/locales/sn.txt
source/data/locales/sn_ZW.txt
source/data/locales/so.txt
source/data/locales/so_DJ.txt
source/data/locales/so_ET.txt
source/data/locales/so_KE.txt
source/data/locales/so_SO.txt
source/data/locales/sq.txt
source/data/locales/sq_AL.txt
source/data/locales/sq_MK.txt
source/data/locales/sq_XK.txt
source/data/locales/sr.txt
source/data/locales/sr_Cyrl.txt
source/data/locales/sr_Cyrl_BA.txt
source/data/locales/sr_Cyrl_ME.txt
source/data/locales/sr_Cyrl_RS.txt
source/data/locales/sr_Cyrl_XK.txt
source/data/locales/sr_Latn.txt
source/data/locales/sr_Latn_BA.txt
source/data/locales/sr_Latn_ME.txt
source/data/locales/sr_Latn_RS.txt
source/data/locales/sr_Latn_XK.txt
source/data/locales/sv.txt
source/data/locales/sv_AX.txt
source/data/locales/sv_FI.txt
source/data/locales/sv_SE.txt
source/data/locales/sw.txt
source/data/locales/sw_CD.txt
source/data/locales/sw_KE.txt
source/data/locales/sw_TZ.txt
source/data/locales/sw_UG.txt
source/data/locales/ta.txt
source/data/locales/ta_IN.txt
source/data/locales/ta_LK.txt
source/data/locales/ta_MY.txt
source/data/locales/ta_SG.txt
source/data/locales/te.txt
source/data/locales/te_IN.txt
source/data/locales/teo.txt
source/data/locales/teo_KE.txt
source/data/locales/teo_UG.txt
source/data/locales/th.txt
source/data/locales/th_TH.txt
source/data/locales/ti.txt
source/data/locales/ti_ER.txt
source/data/locales/ti_ET.txt
source/data/locales/to.txt
source/data/locales/to_TO.txt
source/data/locales/tr.txt
source/data/locales/tr_CY.txt
source/data/locales/tr_TR.txt
source/data/locales/twq.txt
source/data/locales/twq_NE.txt
source/data/locales/tzm.txt
source/data/locales/tzm_MA.txt
source/data/locales/ug.txt
source/data/locales/ug_CN.txt
source/data/locales/uk.txt
source/data/locales/uk_UA.txt
source/data/locales/ur.txt
source/data/locales/ur_IN.txt
source/data/locales/ur_PK.txt
source/data/locales/uz.txt
source/data/locales/uz_Arab.txt
source/data/locales/uz_Arab_AF.txt
source/data/locales/uz_Cyrl.txt
source/data/locales/uz_Cyrl_UZ.txt
source/data/locales/uz_Latn.txt
source/data/locales/uz_Latn_UZ.txt
source/data/locales/vai.txt
source/data/locales/vai_Latn.txt
source/data/locales/vai_Latn_LR.txt
source/data/locales/vai_Vaii.txt
source/data/locales/vai_Vaii_LR.txt
source/data/locales/vi.txt
source/data/locales/vi_VN.txt
source/data/locales/vun.txt
source/data/locales/vun_TZ.txt
source/data/locales/wae.txt
source/data/locales/wae_CH.txt
source/data/locales/xog.txt
source/data/locales/xog_UG.txt
source/data/locales/yav.txt
source/data/locales/yav_CM.txt
source/data/locales/yi.txt
source/data/locales/yi_001.txt
source/data/locales/yo.txt
source/data/locales/yo_BJ.txt
source/data/locales/yo_NG.txt
source/data/locales/yue.txt
source/data/locales/yue_HK.txt
source/data/locales/zgh.txt
source/data/locales/zgh_MA.txt
source/data/locales/zh.txt
source/data/locales/zh_Hans.txt
source/data/locales/zh_Hans_CN.txt
source/data/locales/zh_Hans_HK.txt
source/data/locales/zh_Hans_MO.txt
source/data/locales/zh_Hans_SG.txt
source/data/locales/zh_Hant.txt
source/data/locales/zh_Hant_HK.txt
source/data/locales/zh_Hant_MO.txt
source/data/locales/zh_Hant_TW.txt
source/data/locales/zu.txt
source/data/locales/zu_ZA.txt
source/data/makedata.mak
source/data/makedata.vcxproj
source/data/makedata_uwp.vcxproj [new file with mode: 0644]
source/data/mappings/convrtrs.txt
source/data/mappings/gsm-03.38-2009.ucm [new file with mode: 0644]
source/data/mappings/ucmfiles.mk
source/data/misc/dayPeriods.txt
source/data/misc/icuver.txt
source/data/misc/keyTypeData.txt
source/data/misc/likelySubtags.txt
source/data/misc/metaZones.txt
source/data/misc/metadata.txt
source/data/misc/plurals.txt
source/data/misc/supplementalData.txt
source/data/misc/timezoneTypes.txt
source/data/misc/windowsZones.txt
source/data/misc/zoneinfo64.txt
source/data/rbnf/ars.txt [new file with mode: 0644]
source/data/rbnf/id.txt
source/data/rbnf/ms.txt
source/data/rbnf/rbnffiles.mk
source/data/rbnf/uk.txt
source/data/region/af.txt
source/data/region/agq.txt
source/data/region/ak.txt
source/data/region/am.txt
source/data/region/ar.txt
source/data/region/ar_AE.txt
source/data/region/ar_LY.txt
source/data/region/ar_SA.txt
source/data/region/ars.txt [new file with mode: 0644]
source/data/region/as.txt
source/data/region/asa.txt
source/data/region/ast.txt
source/data/region/az.txt
source/data/region/az_Cyrl.txt
source/data/region/az_Latn.txt
source/data/region/bas.txt
source/data/region/be.txt
source/data/region/bem.txt
source/data/region/bez.txt
source/data/region/bg.txt
source/data/region/bm.txt
source/data/region/bn.txt
source/data/region/bn_IN.txt
source/data/region/bo.txt
source/data/region/bo_IN.txt
source/data/region/br.txt
source/data/region/brx.txt
source/data/region/bs.txt
source/data/region/bs_Cyrl.txt
source/data/region/bs_Latn.txt
source/data/region/ca.txt
source/data/region/ce.txt
source/data/region/cgg.txt
source/data/region/chr.txt
source/data/region/ckb.txt
source/data/region/cs.txt
source/data/region/cy.txt
source/data/region/da.txt
source/data/region/dav.txt
source/data/region/de.txt
source/data/region/de_AT.txt
source/data/region/de_CH.txt
source/data/region/dje.txt
source/data/region/dsb.txt
source/data/region/dua.txt
source/data/region/dyo.txt
source/data/region/dz.txt
source/data/region/ebu.txt
source/data/region/ee.txt
source/data/region/el.txt
source/data/region/en.txt
source/data/region/en_150.txt
source/data/region/en_AG.txt
source/data/region/en_AI.txt
source/data/region/en_AT.txt
source/data/region/en_AU.txt
source/data/region/en_BB.txt
source/data/region/en_BE.txt
source/data/region/en_BM.txt
source/data/region/en_BS.txt
source/data/region/en_BW.txt
source/data/region/en_BZ.txt
source/data/region/en_CA.txt
source/data/region/en_CC.txt
source/data/region/en_CH.txt
source/data/region/en_CK.txt
source/data/region/en_CM.txt
source/data/region/en_CX.txt
source/data/region/en_CY.txt
source/data/region/en_DE.txt
source/data/region/en_DG.txt
source/data/region/en_DK.txt
source/data/region/en_DM.txt
source/data/region/en_ER.txt
source/data/region/en_FI.txt
source/data/region/en_FJ.txt
source/data/region/en_FK.txt
source/data/region/en_FM.txt
source/data/region/en_GB.txt
source/data/region/en_GD.txt
source/data/region/en_GG.txt
source/data/region/en_GH.txt
source/data/region/en_GI.txt
source/data/region/en_GM.txt
source/data/region/en_GY.txt
source/data/region/en_HK.txt
source/data/region/en_IE.txt
source/data/region/en_IL.txt
source/data/region/en_IM.txt
source/data/region/en_IN.txt
source/data/region/en_IO.txt
source/data/region/en_JE.txt
source/data/region/en_JM.txt
source/data/region/en_KE.txt
source/data/region/en_KI.txt
source/data/region/en_KN.txt
source/data/region/en_KY.txt
source/data/region/en_LC.txt
source/data/region/en_LR.txt
source/data/region/en_LS.txt
source/data/region/en_MG.txt
source/data/region/en_MO.txt
source/data/region/en_MS.txt
source/data/region/en_MT.txt
source/data/region/en_MU.txt
source/data/region/en_MW.txt
source/data/region/en_MY.txt
source/data/region/en_NA.txt
source/data/region/en_NF.txt
source/data/region/en_NG.txt
source/data/region/en_NL.txt
source/data/region/en_NR.txt
source/data/region/en_NU.txt
source/data/region/en_NZ.txt
source/data/region/en_PG.txt
source/data/region/en_PH.txt
source/data/region/en_PK.txt
source/data/region/en_PN.txt
source/data/region/en_PW.txt
source/data/region/en_RW.txt
source/data/region/en_SB.txt
source/data/region/en_SC.txt
source/data/region/en_SD.txt
source/data/region/en_SE.txt
source/data/region/en_SG.txt
source/data/region/en_SH.txt
source/data/region/en_SI.txt
source/data/region/en_SL.txt
source/data/region/en_SS.txt
source/data/region/en_SX.txt
source/data/region/en_SZ.txt
source/data/region/en_TC.txt
source/data/region/en_TK.txt
source/data/region/en_TO.txt
source/data/region/en_TT.txt
source/data/region/en_TV.txt
source/data/region/en_TZ.txt
source/data/region/en_UG.txt
source/data/region/en_VC.txt
source/data/region/en_VG.txt
source/data/region/en_VU.txt
source/data/region/en_WS.txt
source/data/region/en_ZA.txt
source/data/region/en_ZM.txt
source/data/region/en_ZW.txt
source/data/region/eo.txt
source/data/region/es.txt
source/data/region/es_419.txt
source/data/region/es_AR.txt
source/data/region/es_BO.txt
source/data/region/es_BR.txt
source/data/region/es_BZ.txt [new file with mode: 0644]
source/data/region/es_CL.txt
source/data/region/es_CO.txt
source/data/region/es_CR.txt
source/data/region/es_CU.txt
source/data/region/es_DO.txt
source/data/region/es_EC.txt
source/data/region/es_GT.txt
source/data/region/es_HN.txt
source/data/region/es_MX.txt
source/data/region/es_NI.txt
source/data/region/es_PA.txt
source/data/region/es_PE.txt
source/data/region/es_PR.txt
source/data/region/es_PY.txt
source/data/region/es_SV.txt
source/data/region/es_US.txt
source/data/region/es_UY.txt
source/data/region/es_VE.txt
source/data/region/et.txt
source/data/region/eu.txt
source/data/region/ewo.txt
source/data/region/fa.txt
source/data/region/fa_AF.txt
source/data/region/ff.txt
source/data/region/fi.txt
source/data/region/fil.txt
source/data/region/fo.txt
source/data/region/fr.txt
source/data/region/fr_BE.txt
source/data/region/fr_CA.txt
source/data/region/fur.txt
source/data/region/fy.txt
source/data/region/ga.txt
source/data/region/gd.txt
source/data/region/gl.txt
source/data/region/gsw.txt
source/data/region/gu.txt
source/data/region/guz.txt
source/data/region/gv.txt
source/data/region/ha.txt
source/data/region/haw.txt
source/data/region/he.txt
source/data/region/hi.txt
source/data/region/hr.txt
source/data/region/hsb.txt
source/data/region/hu.txt
source/data/region/hy.txt
source/data/region/id.txt
source/data/region/ig.txt
source/data/region/ii.txt
source/data/region/is.txt
source/data/region/it.txt
source/data/region/ja.txt
source/data/region/jgo.txt
source/data/region/jmc.txt
source/data/region/ka.txt
source/data/region/kab.txt
source/data/region/kam.txt
source/data/region/kde.txt
source/data/region/kea.txt
source/data/region/khq.txt
source/data/region/ki.txt
source/data/region/kk.txt
source/data/region/kkj.txt
source/data/region/kl.txt
source/data/region/kln.txt
source/data/region/km.txt
source/data/region/kn.txt
source/data/region/ko.txt
source/data/region/ko_KP.txt
source/data/region/kok.txt
source/data/region/ks.txt
source/data/region/ksb.txt
source/data/region/ksf.txt
source/data/region/ksh.txt
source/data/region/kw.txt
source/data/region/ky.txt
source/data/region/lag.txt
source/data/region/lb.txt
source/data/region/lg.txt
source/data/region/lkt.txt
source/data/region/ln.txt
source/data/region/lo.txt
source/data/region/lrc.txt
source/data/region/lt.txt
source/data/region/lu.txt
source/data/region/luo.txt
source/data/region/luy.txt
source/data/region/lv.txt
source/data/region/mas.txt
source/data/region/mer.txt
source/data/region/mfe.txt
source/data/region/mg.txt
source/data/region/mgh.txt
source/data/region/mgo.txt
source/data/region/mk.txt
source/data/region/ml.txt
source/data/region/mn.txt
source/data/region/mr.txt
source/data/region/ms.txt
source/data/region/mt.txt
source/data/region/mua.txt
source/data/region/my.txt
source/data/region/mzn.txt
source/data/region/naq.txt
source/data/region/nb.txt
source/data/region/nd.txt
source/data/region/nds.txt
source/data/region/ne.txt
source/data/region/nl.txt
source/data/region/nmg.txt
source/data/region/nn.txt
source/data/region/nnh.txt
source/data/region/nus.txt
source/data/region/nyn.txt
source/data/region/om.txt
source/data/region/or.txt
source/data/region/os.txt
source/data/region/pa.txt
source/data/region/pa_Arab.txt
source/data/region/pa_Guru.txt
source/data/region/pl.txt
source/data/region/pool.res
source/data/region/ps.txt
source/data/region/pt.txt
source/data/region/pt_AO.txt
source/data/region/pt_CH.txt
source/data/region/pt_CV.txt
source/data/region/pt_GQ.txt
source/data/region/pt_GW.txt
source/data/region/pt_LU.txt
source/data/region/pt_MO.txt
source/data/region/pt_MZ.txt
source/data/region/pt_PT.txt
source/data/region/pt_ST.txt
source/data/region/pt_TL.txt
source/data/region/qu.txt
source/data/region/resfiles.mk
source/data/region/rm.txt
source/data/region/rn.txt
source/data/region/ro.txt
source/data/region/ro_MD.txt
source/data/region/rof.txt
source/data/region/root.txt
source/data/region/ru.txt
source/data/region/ru_UA.txt
source/data/region/rw.txt
source/data/region/rwk.txt
source/data/region/sah.txt
source/data/region/saq.txt
source/data/region/sbp.txt
source/data/region/se.txt
source/data/region/se_FI.txt
source/data/region/seh.txt
source/data/region/ses.txt
source/data/region/sg.txt
source/data/region/shi.txt
source/data/region/shi_Latn.txt
source/data/region/shi_Tfng.txt
source/data/region/si.txt
source/data/region/sk.txt
source/data/region/sl.txt
source/data/region/smn.txt
source/data/region/sn.txt
source/data/region/so.txt
source/data/region/sq.txt
source/data/region/sr.txt
source/data/region/sr_Cyrl.txt
source/data/region/sr_Cyrl_BA.txt
source/data/region/sr_Cyrl_ME.txt
source/data/region/sr_Cyrl_XK.txt
source/data/region/sr_Latn.txt
source/data/region/sr_Latn_BA.txt
source/data/region/sr_Latn_ME.txt
source/data/region/sr_Latn_XK.txt
source/data/region/sv.txt
source/data/region/sw.txt
source/data/region/sw_CD.txt
source/data/region/sw_KE.txt
source/data/region/ta.txt
source/data/region/te.txt
source/data/region/teo.txt
source/data/region/th.txt
source/data/region/ti.txt
source/data/region/to.txt
source/data/region/tr.txt
source/data/region/twq.txt
source/data/region/tzm.txt
source/data/region/ug.txt
source/data/region/uk.txt
source/data/region/ur.txt
source/data/region/ur_IN.txt
source/data/region/uz.txt
source/data/region/uz_Arab.txt
source/data/region/uz_Cyrl.txt
source/data/region/uz_Latn.txt
source/data/region/vai.txt
source/data/region/vai_Latn.txt
source/data/region/vai_Vaii.txt
source/data/region/vi.txt
source/data/region/vun.txt
source/data/region/wae.txt
source/data/region/xog.txt
source/data/region/yav.txt
source/data/region/yi.txt
source/data/region/yo.txt
source/data/region/yo_BJ.txt
source/data/region/yue.txt
source/data/region/zgh.txt
source/data/region/zh.txt
source/data/region/zh_Hans.txt
source/data/region/zh_Hant.txt
source/data/region/zh_Hant_HK.txt
source/data/region/zh_Hant_MO.txt
source/data/region/zu.txt
source/data/translit/InterIndic_Arabic.txt
source/data/translit/Zawgyi_my.txt
source/data/translit/root.txt
source/data/translit/ta_ta_FONIPA.txt [new file with mode: 0644]
source/data/unidata/changes.txt
source/data/unidata/confusables.txt
source/data/unidata/norm2/nfc.txt
source/data/unidata/norm2/nfkc.txt
source/data/unidata/norm2/nfkc_cf.txt
source/data/unidata/ppucd.txt
source/data/unit/af.txt
source/data/unit/agq.txt
source/data/unit/ak.txt
source/data/unit/am.txt
source/data/unit/ar.txt
source/data/unit/ar_SA.txt [new file with mode: 0644]
source/data/unit/ars.txt [new file with mode: 0644]
source/data/unit/as.txt
source/data/unit/asa.txt
source/data/unit/ast.txt
source/data/unit/az.txt
source/data/unit/az_Cyrl.txt
source/data/unit/az_Latn.txt
source/data/unit/bas.txt
source/data/unit/be.txt
source/data/unit/bem.txt
source/data/unit/bez.txt
source/data/unit/bg.txt
source/data/unit/bm.txt
source/data/unit/bn.txt
source/data/unit/bo.txt
source/data/unit/br.txt
source/data/unit/brx.txt
source/data/unit/bs.txt
source/data/unit/bs_Cyrl.txt
source/data/unit/bs_Latn.txt
source/data/unit/ca.txt
source/data/unit/ce.txt
source/data/unit/cgg.txt
source/data/unit/chr.txt
source/data/unit/ckb.txt
source/data/unit/cs.txt
source/data/unit/cy.txt
source/data/unit/da.txt
source/data/unit/dav.txt
source/data/unit/de.txt
source/data/unit/de_CH.txt
source/data/unit/dje.txt
source/data/unit/dsb.txt
source/data/unit/dua.txt
source/data/unit/dyo.txt
source/data/unit/dz.txt
source/data/unit/ebu.txt
source/data/unit/ee.txt
source/data/unit/el.txt
source/data/unit/en.txt
source/data/unit/en_001.txt
source/data/unit/en_150.txt
source/data/unit/en_AG.txt
source/data/unit/en_AI.txt
source/data/unit/en_AT.txt
source/data/unit/en_AU.txt
source/data/unit/en_BB.txt
source/data/unit/en_BE.txt
source/data/unit/en_BM.txt
source/data/unit/en_BS.txt
source/data/unit/en_BW.txt
source/data/unit/en_BZ.txt
source/data/unit/en_CA.txt
source/data/unit/en_CC.txt
source/data/unit/en_CH.txt
source/data/unit/en_CK.txt
source/data/unit/en_CM.txt
source/data/unit/en_CX.txt
source/data/unit/en_CY.txt
source/data/unit/en_DE.txt
source/data/unit/en_DG.txt
source/data/unit/en_DK.txt
source/data/unit/en_DM.txt
source/data/unit/en_ER.txt
source/data/unit/en_FI.txt
source/data/unit/en_FJ.txt
source/data/unit/en_FK.txt
source/data/unit/en_FM.txt
source/data/unit/en_GB.txt
source/data/unit/en_GD.txt
source/data/unit/en_GG.txt
source/data/unit/en_GH.txt
source/data/unit/en_GI.txt
source/data/unit/en_GM.txt
source/data/unit/en_GY.txt
source/data/unit/en_HK.txt
source/data/unit/en_IE.txt
source/data/unit/en_IL.txt
source/data/unit/en_IM.txt
source/data/unit/en_IN.txt
source/data/unit/en_IO.txt
source/data/unit/en_JE.txt
source/data/unit/en_JM.txt
source/data/unit/en_KE.txt
source/data/unit/en_KI.txt
source/data/unit/en_KN.txt
source/data/unit/en_KY.txt
source/data/unit/en_LC.txt
source/data/unit/en_LR.txt
source/data/unit/en_LS.txt
source/data/unit/en_MG.txt
source/data/unit/en_MO.txt
source/data/unit/en_MS.txt
source/data/unit/en_MT.txt
source/data/unit/en_MU.txt
source/data/unit/en_MW.txt
source/data/unit/en_MY.txt
source/data/unit/en_NA.txt
source/data/unit/en_NF.txt
source/data/unit/en_NG.txt
source/data/unit/en_NL.txt
source/data/unit/en_NR.txt
source/data/unit/en_NU.txt
source/data/unit/en_NZ.txt
source/data/unit/en_PG.txt
source/data/unit/en_PH.txt
source/data/unit/en_PK.txt
source/data/unit/en_PN.txt
source/data/unit/en_PW.txt
source/data/unit/en_RW.txt
source/data/unit/en_SB.txt
source/data/unit/en_SC.txt
source/data/unit/en_SD.txt
source/data/unit/en_SE.txt
source/data/unit/en_SG.txt
source/data/unit/en_SH.txt
source/data/unit/en_SI.txt
source/data/unit/en_SL.txt
source/data/unit/en_SS.txt
source/data/unit/en_SX.txt
source/data/unit/en_SZ.txt
source/data/unit/en_TC.txt
source/data/unit/en_TK.txt
source/data/unit/en_TO.txt
source/data/unit/en_TT.txt
source/data/unit/en_TV.txt
source/data/unit/en_TZ.txt
source/data/unit/en_UG.txt
source/data/unit/en_VC.txt
source/data/unit/en_VG.txt
source/data/unit/en_VU.txt
source/data/unit/en_WS.txt
source/data/unit/en_ZA.txt
source/data/unit/en_ZM.txt
source/data/unit/en_ZW.txt
source/data/unit/eo.txt
source/data/unit/es.txt
source/data/unit/es_419.txt
source/data/unit/es_AR.txt
source/data/unit/es_BO.txt
source/data/unit/es_BR.txt
source/data/unit/es_BZ.txt [new file with mode: 0644]
source/data/unit/es_CL.txt
source/data/unit/es_CO.txt
source/data/unit/es_CR.txt
source/data/unit/es_CU.txt
source/data/unit/es_DO.txt
source/data/unit/es_EC.txt
source/data/unit/es_GT.txt
source/data/unit/es_HN.txt
source/data/unit/es_MX.txt
source/data/unit/es_NI.txt
source/data/unit/es_PA.txt
source/data/unit/es_PE.txt
source/data/unit/es_PR.txt
source/data/unit/es_PY.txt
source/data/unit/es_SV.txt
source/data/unit/es_US.txt
source/data/unit/es_UY.txt
source/data/unit/es_VE.txt
source/data/unit/et.txt
source/data/unit/eu.txt
source/data/unit/ewo.txt
source/data/unit/fa.txt
source/data/unit/ff.txt
source/data/unit/fi.txt
source/data/unit/fil.txt
source/data/unit/fo.txt
source/data/unit/fr.txt
source/data/unit/fr_CA.txt
source/data/unit/fr_HT.txt
source/data/unit/fur.txt
source/data/unit/fy.txt
source/data/unit/ga.txt
source/data/unit/gd.txt
source/data/unit/gl.txt
source/data/unit/gsw.txt
source/data/unit/gu.txt
source/data/unit/guz.txt
source/data/unit/gv.txt
source/data/unit/ha.txt
source/data/unit/haw.txt
source/data/unit/he.txt
source/data/unit/hi.txt
source/data/unit/hr.txt
source/data/unit/hsb.txt
source/data/unit/hu.txt
source/data/unit/hy.txt
source/data/unit/id.txt
source/data/unit/ig.txt
source/data/unit/ii.txt
source/data/unit/is.txt
source/data/unit/it.txt
source/data/unit/ja.txt
source/data/unit/jgo.txt
source/data/unit/jmc.txt
source/data/unit/ka.txt
source/data/unit/kab.txt
source/data/unit/kam.txt
source/data/unit/kde.txt
source/data/unit/kea.txt
source/data/unit/khq.txt
source/data/unit/ki.txt
source/data/unit/kk.txt
source/data/unit/kkj.txt
source/data/unit/kl.txt
source/data/unit/kln.txt
source/data/unit/km.txt
source/data/unit/kn.txt
source/data/unit/ko.txt
source/data/unit/kok.txt
source/data/unit/ks.txt
source/data/unit/ksb.txt
source/data/unit/ksf.txt
source/data/unit/ksh.txt
source/data/unit/kw.txt
source/data/unit/ky.txt
source/data/unit/lag.txt
source/data/unit/lb.txt
source/data/unit/lg.txt
source/data/unit/lkt.txt
source/data/unit/ln.txt
source/data/unit/lo.txt
source/data/unit/lrc.txt
source/data/unit/lt.txt
source/data/unit/lu.txt
source/data/unit/luo.txt
source/data/unit/luy.txt
source/data/unit/lv.txt
source/data/unit/mas.txt
source/data/unit/mer.txt
source/data/unit/mfe.txt
source/data/unit/mg.txt
source/data/unit/mgh.txt
source/data/unit/mgo.txt
source/data/unit/mk.txt
source/data/unit/ml.txt
source/data/unit/mn.txt
source/data/unit/mr.txt
source/data/unit/ms.txt
source/data/unit/mt.txt
source/data/unit/mua.txt
source/data/unit/my.txt
source/data/unit/mzn.txt
source/data/unit/naq.txt
source/data/unit/nb.txt
source/data/unit/nd.txt
source/data/unit/nds.txt
source/data/unit/ne.txt
source/data/unit/nl.txt
source/data/unit/nmg.txt
source/data/unit/nn.txt
source/data/unit/nnh.txt
source/data/unit/nus.txt
source/data/unit/nyn.txt
source/data/unit/om.txt
source/data/unit/or.txt
source/data/unit/os.txt
source/data/unit/pa.txt
source/data/unit/pa_Arab.txt
source/data/unit/pa_Guru.txt
source/data/unit/pl.txt
source/data/unit/pool.res
source/data/unit/ps.txt
source/data/unit/pt.txt
source/data/unit/pt_AO.txt
source/data/unit/pt_CH.txt
source/data/unit/pt_CV.txt
source/data/unit/pt_GQ.txt
source/data/unit/pt_GW.txt
source/data/unit/pt_LU.txt
source/data/unit/pt_MO.txt
source/data/unit/pt_MZ.txt
source/data/unit/pt_PT.txt
source/data/unit/pt_ST.txt
source/data/unit/pt_TL.txt
source/data/unit/qu.txt
source/data/unit/resfiles.mk
source/data/unit/rm.txt
source/data/unit/rn.txt
source/data/unit/ro.txt
source/data/unit/ro_MD.txt
source/data/unit/rof.txt
source/data/unit/root.txt
source/data/unit/ru.txt
source/data/unit/rw.txt
source/data/unit/rwk.txt
source/data/unit/sah.txt
source/data/unit/saq.txt
source/data/unit/sbp.txt
source/data/unit/se.txt
source/data/unit/seh.txt
source/data/unit/ses.txt
source/data/unit/sg.txt
source/data/unit/shi.txt
source/data/unit/shi_Latn.txt
source/data/unit/shi_Tfng.txt
source/data/unit/si.txt
source/data/unit/sk.txt
source/data/unit/sl.txt
source/data/unit/smn.txt
source/data/unit/sn.txt
source/data/unit/so.txt
source/data/unit/sq.txt
source/data/unit/sr.txt
source/data/unit/sr_Cyrl.txt
source/data/unit/sr_Latn.txt
source/data/unit/sv.txt
source/data/unit/sv_FI.txt
source/data/unit/sw.txt
source/data/unit/ta.txt
source/data/unit/te.txt
source/data/unit/teo.txt
source/data/unit/th.txt
source/data/unit/ti.txt
source/data/unit/to.txt
source/data/unit/tr.txt
source/data/unit/twq.txt
source/data/unit/tzm.txt
source/data/unit/ug.txt
source/data/unit/uk.txt
source/data/unit/ur.txt
source/data/unit/ur_IN.txt
source/data/unit/uz.txt
source/data/unit/uz_Arab.txt
source/data/unit/uz_Cyrl.txt
source/data/unit/uz_Latn.txt
source/data/unit/vai.txt
source/data/unit/vai_Latn.txt
source/data/unit/vai_Vaii.txt
source/data/unit/vi.txt
source/data/unit/vun.txt
source/data/unit/wae.txt
source/data/unit/xog.txt
source/data/unit/yav.txt
source/data/unit/yi.txt
source/data/unit/yo.txt
source/data/unit/yue.txt
source/data/unit/zgh.txt
source/data/unit/zh.txt
source/data/unit/zh_Hans.txt
source/data/unit/zh_Hans_HK.txt
source/data/unit/zh_Hans_MO.txt
source/data/unit/zh_Hans_SG.txt
source/data/unit/zh_Hant.txt
source/data/unit/zh_Hant_HK.txt
source/data/unit/zh_Hant_MO.txt
source/data/unit/zu.txt
source/data/zone/af.txt
source/data/zone/agq.txt
source/data/zone/ak.txt
source/data/zone/am.txt
source/data/zone/ar.txt
source/data/zone/ar_SA.txt [new file with mode: 0644]
source/data/zone/ars.txt [new file with mode: 0644]
source/data/zone/as.txt
source/data/zone/asa.txt
source/data/zone/ast.txt
source/data/zone/az.txt
source/data/zone/az_Cyrl.txt
source/data/zone/az_Latn.txt
source/data/zone/bas.txt
source/data/zone/be.txt
source/data/zone/bem.txt
source/data/zone/bez.txt
source/data/zone/bg.txt
source/data/zone/bm.txt
source/data/zone/bn.txt
source/data/zone/bo.txt
source/data/zone/br.txt
source/data/zone/brx.txt
source/data/zone/bs.txt
source/data/zone/bs_Cyrl.txt
source/data/zone/bs_Latn.txt
source/data/zone/ca.txt
source/data/zone/ce.txt
source/data/zone/cgg.txt
source/data/zone/chr.txt
source/data/zone/ckb.txt
source/data/zone/cs.txt
source/data/zone/cy.txt
source/data/zone/da.txt
source/data/zone/dav.txt
source/data/zone/de.txt
source/data/zone/dje.txt
source/data/zone/dsb.txt
source/data/zone/dua.txt
source/data/zone/dyo.txt
source/data/zone/dz.txt
source/data/zone/ebu.txt
source/data/zone/ee.txt
source/data/zone/el.txt
source/data/zone/en.txt
source/data/zone/en_001.txt
source/data/zone/en_150.txt
source/data/zone/en_AG.txt
source/data/zone/en_AI.txt
source/data/zone/en_AT.txt
source/data/zone/en_AU.txt
source/data/zone/en_BB.txt
source/data/zone/en_BE.txt
source/data/zone/en_BM.txt
source/data/zone/en_BS.txt
source/data/zone/en_BW.txt
source/data/zone/en_BZ.txt
source/data/zone/en_CA.txt
source/data/zone/en_CC.txt
source/data/zone/en_CH.txt
source/data/zone/en_CK.txt
source/data/zone/en_CM.txt
source/data/zone/en_CX.txt
source/data/zone/en_CY.txt
source/data/zone/en_DE.txt
source/data/zone/en_DG.txt
source/data/zone/en_DK.txt
source/data/zone/en_DM.txt
source/data/zone/en_ER.txt
source/data/zone/en_FI.txt
source/data/zone/en_FJ.txt
source/data/zone/en_FK.txt
source/data/zone/en_FM.txt
source/data/zone/en_GB.txt
source/data/zone/en_GD.txt
source/data/zone/en_GG.txt
source/data/zone/en_GH.txt
source/data/zone/en_GI.txt
source/data/zone/en_GM.txt
source/data/zone/en_GU.txt
source/data/zone/en_GY.txt
source/data/zone/en_HK.txt
source/data/zone/en_IE.txt
source/data/zone/en_IL.txt
source/data/zone/en_IM.txt
source/data/zone/en_IN.txt
source/data/zone/en_IO.txt
source/data/zone/en_JE.txt
source/data/zone/en_JM.txt
source/data/zone/en_KE.txt
source/data/zone/en_KI.txt
source/data/zone/en_KN.txt
source/data/zone/en_KY.txt
source/data/zone/en_LC.txt
source/data/zone/en_LR.txt
source/data/zone/en_LS.txt
source/data/zone/en_MG.txt
source/data/zone/en_MH.txt
source/data/zone/en_MO.txt
source/data/zone/en_MP.txt
source/data/zone/en_MS.txt
source/data/zone/en_MT.txt
source/data/zone/en_MU.txt
source/data/zone/en_MW.txt
source/data/zone/en_MY.txt
source/data/zone/en_NA.txt
source/data/zone/en_NF.txt
source/data/zone/en_NG.txt
source/data/zone/en_NL.txt
source/data/zone/en_NR.txt
source/data/zone/en_NU.txt
source/data/zone/en_NZ.txt
source/data/zone/en_PG.txt
source/data/zone/en_PH.txt
source/data/zone/en_PK.txt
source/data/zone/en_PN.txt
source/data/zone/en_PW.txt
source/data/zone/en_RW.txt
source/data/zone/en_SB.txt
source/data/zone/en_SC.txt
source/data/zone/en_SD.txt
source/data/zone/en_SE.txt
source/data/zone/en_SG.txt
source/data/zone/en_SH.txt
source/data/zone/en_SI.txt
source/data/zone/en_SL.txt
source/data/zone/en_SS.txt
source/data/zone/en_SX.txt
source/data/zone/en_SZ.txt
source/data/zone/en_TC.txt
source/data/zone/en_TK.txt
source/data/zone/en_TO.txt
source/data/zone/en_TT.txt
source/data/zone/en_TV.txt
source/data/zone/en_TZ.txt
source/data/zone/en_UG.txt
source/data/zone/en_VC.txt
source/data/zone/en_VG.txt
source/data/zone/en_VU.txt
source/data/zone/en_WS.txt
source/data/zone/en_ZA.txt
source/data/zone/en_ZM.txt
source/data/zone/en_ZW.txt
source/data/zone/eo.txt
source/data/zone/es.txt
source/data/zone/es_419.txt
source/data/zone/es_AR.txt
source/data/zone/es_BO.txt
source/data/zone/es_BR.txt
source/data/zone/es_BZ.txt [new file with mode: 0644]
source/data/zone/es_CL.txt
source/data/zone/es_CO.txt
source/data/zone/es_CR.txt
source/data/zone/es_CU.txt
source/data/zone/es_DO.txt
source/data/zone/es_EC.txt
source/data/zone/es_GT.txt
source/data/zone/es_HN.txt
source/data/zone/es_MX.txt
source/data/zone/es_NI.txt
source/data/zone/es_PA.txt
source/data/zone/es_PE.txt
source/data/zone/es_PR.txt
source/data/zone/es_PY.txt
source/data/zone/es_SV.txt
source/data/zone/es_US.txt
source/data/zone/es_UY.txt
source/data/zone/es_VE.txt
source/data/zone/et.txt
source/data/zone/eu.txt
source/data/zone/ewo.txt
source/data/zone/fa.txt
source/data/zone/ff.txt
source/data/zone/fi.txt
source/data/zone/fil.txt
source/data/zone/fo.txt
source/data/zone/fr.txt
source/data/zone/fr_CA.txt
source/data/zone/fr_GF.txt
source/data/zone/fur.txt
source/data/zone/fy.txt
source/data/zone/ga.txt
source/data/zone/gd.txt
source/data/zone/gl.txt
source/data/zone/gsw.txt
source/data/zone/gu.txt
source/data/zone/guz.txt
source/data/zone/gv.txt
source/data/zone/ha.txt
source/data/zone/haw.txt
source/data/zone/he.txt
source/data/zone/hi.txt
source/data/zone/hr.txt
source/data/zone/hsb.txt
source/data/zone/hu.txt
source/data/zone/hy.txt
source/data/zone/id.txt
source/data/zone/ig.txt
source/data/zone/ii.txt
source/data/zone/is.txt
source/data/zone/it.txt
source/data/zone/ja.txt
source/data/zone/jgo.txt
source/data/zone/jmc.txt
source/data/zone/ka.txt
source/data/zone/kab.txt
source/data/zone/kam.txt
source/data/zone/kde.txt
source/data/zone/kea.txt
source/data/zone/khq.txt
source/data/zone/ki.txt
source/data/zone/kk.txt
source/data/zone/kkj.txt
source/data/zone/kl.txt
source/data/zone/kln.txt
source/data/zone/km.txt
source/data/zone/kn.txt
source/data/zone/ko.txt
source/data/zone/ko_KP.txt
source/data/zone/kok.txt
source/data/zone/ks.txt
source/data/zone/ksb.txt
source/data/zone/ksf.txt
source/data/zone/ksh.txt
source/data/zone/kw.txt
source/data/zone/ky.txt
source/data/zone/lag.txt
source/data/zone/lb.txt
source/data/zone/lg.txt
source/data/zone/lkt.txt
source/data/zone/ln.txt
source/data/zone/lo.txt
source/data/zone/lrc.txt
source/data/zone/lt.txt
source/data/zone/lu.txt
source/data/zone/luo.txt
source/data/zone/luy.txt
source/data/zone/lv.txt
source/data/zone/mas.txt
source/data/zone/mer.txt
source/data/zone/mfe.txt
source/data/zone/mg.txt
source/data/zone/mgh.txt
source/data/zone/mgo.txt
source/data/zone/mk.txt
source/data/zone/ml.txt
source/data/zone/mn.txt
source/data/zone/mr.txt
source/data/zone/ms.txt
source/data/zone/mt.txt
source/data/zone/mua.txt
source/data/zone/my.txt
source/data/zone/mzn.txt
source/data/zone/naq.txt
source/data/zone/nb.txt
source/data/zone/nd.txt
source/data/zone/nds.txt
source/data/zone/ne.txt
source/data/zone/ne_IN.txt
source/data/zone/nl.txt
source/data/zone/nl_SR.txt
source/data/zone/nmg.txt
source/data/zone/nn.txt
source/data/zone/nnh.txt
source/data/zone/nus.txt
source/data/zone/nyn.txt
source/data/zone/om.txt
source/data/zone/or.txt
source/data/zone/os.txt
source/data/zone/pa.txt
source/data/zone/pa_Arab.txt
source/data/zone/pa_Guru.txt
source/data/zone/pl.txt
source/data/zone/pool.res
source/data/zone/ps.txt
source/data/zone/pt.txt
source/data/zone/pt_AO.txt
source/data/zone/pt_CH.txt
source/data/zone/pt_CV.txt
source/data/zone/pt_GQ.txt
source/data/zone/pt_GW.txt
source/data/zone/pt_LU.txt
source/data/zone/pt_MO.txt
source/data/zone/pt_MZ.txt
source/data/zone/pt_PT.txt
source/data/zone/pt_ST.txt
source/data/zone/pt_TL.txt
source/data/zone/qu.txt
source/data/zone/qu_BO.txt
source/data/zone/qu_EC.txt
source/data/zone/resfiles.mk
source/data/zone/rm.txt
source/data/zone/rn.txt
source/data/zone/ro.txt
source/data/zone/rof.txt
source/data/zone/root.txt
source/data/zone/ru.txt
source/data/zone/rw.txt
source/data/zone/rwk.txt
source/data/zone/sah.txt
source/data/zone/saq.txt
source/data/zone/sbp.txt
source/data/zone/se.txt
source/data/zone/seh.txt
source/data/zone/ses.txt
source/data/zone/sg.txt
source/data/zone/shi.txt
source/data/zone/shi_Latn.txt
source/data/zone/shi_Tfng.txt
source/data/zone/si.txt
source/data/zone/sk.txt
source/data/zone/sl.txt
source/data/zone/smn.txt
source/data/zone/sn.txt
source/data/zone/so.txt
source/data/zone/sq.txt
source/data/zone/sr.txt
source/data/zone/sr_Cyrl.txt
source/data/zone/sr_Latn.txt
source/data/zone/sv.txt
source/data/zone/sw.txt
source/data/zone/ta.txt
source/data/zone/ta_MY.txt
source/data/zone/ta_SG.txt
source/data/zone/te.txt
source/data/zone/teo.txt
source/data/zone/th.txt
source/data/zone/ti.txt
source/data/zone/to.txt
source/data/zone/tr.txt
source/data/zone/twq.txt
source/data/zone/tzm.txt
source/data/zone/ug.txt
source/data/zone/uk.txt
source/data/zone/ur.txt
source/data/zone/ur_IN.txt
source/data/zone/uz.txt
source/data/zone/uz_Arab.txt
source/data/zone/uz_Cyrl.txt
source/data/zone/uz_Latn.txt
source/data/zone/vai.txt
source/data/zone/vai_Latn.txt
source/data/zone/vai_Vaii.txt
source/data/zone/vi.txt
source/data/zone/vun.txt
source/data/zone/wae.txt
source/data/zone/xog.txt
source/data/zone/yav.txt
source/data/zone/yi.txt
source/data/zone/yo.txt
source/data/zone/yue.txt
source/data/zone/zgh.txt
source/data/zone/zh.txt
source/data/zone/zh_Hans.txt
source/data/zone/zh_Hans_SG.txt
source/data/zone/zh_Hant.txt
source/data/zone/zh_Hant_HK.txt
source/data/zone/zh_Hant_MO.txt
source/data/zone/zu.txt
source/extra/scrptrun/scrptrun.cpp
source/extra/scrptrun/scrptrun.h
source/extra/scrptrun/srtest.cpp
source/extra/uconv/Makefile.in
source/extra/uconv/uconv.cpp
source/extra/uconv/uconv.vcxproj
source/extra/uconv/unicode/uwmsg.h
source/extra/uconv/uwmsg.c
source/i18n/affixpatternparser.cpp
source/i18n/affixpatternparser.h
source/i18n/alphaindex.cpp
source/i18n/anytrans.cpp
source/i18n/anytrans.h
source/i18n/astro.cpp
source/i18n/astro.h
source/i18n/basictz.cpp
source/i18n/bocsu.cpp
source/i18n/bocsu.h
source/i18n/brktrans.cpp
source/i18n/brktrans.h
source/i18n/buddhcal.cpp
source/i18n/buddhcal.h
source/i18n/calendar.cpp
source/i18n/casetrn.cpp
source/i18n/casetrn.h
source/i18n/cecal.cpp
source/i18n/cecal.h
source/i18n/chnsecal.cpp
source/i18n/chnsecal.h
source/i18n/choicfmt.cpp
source/i18n/coleitr.cpp
source/i18n/coll.cpp
source/i18n/collation.cpp
source/i18n/collation.h
source/i18n/collationbuilder.cpp
source/i18n/collationbuilder.h
source/i18n/collationcompare.cpp
source/i18n/collationcompare.h
source/i18n/collationdata.cpp
source/i18n/collationdata.h
source/i18n/collationdatabuilder.cpp
source/i18n/collationdatabuilder.h
source/i18n/collationdatareader.cpp
source/i18n/collationdatareader.h
source/i18n/collationdatawriter.cpp
source/i18n/collationdatawriter.h
source/i18n/collationfastlatin.cpp
source/i18n/collationfastlatin.h
source/i18n/collationfastlatinbuilder.cpp
source/i18n/collationfastlatinbuilder.h
source/i18n/collationfcd.cpp
source/i18n/collationfcd.h
source/i18n/collationiterator.cpp
source/i18n/collationiterator.h
source/i18n/collationkeys.cpp
source/i18n/collationkeys.h
source/i18n/collationroot.cpp
source/i18n/collationroot.h
source/i18n/collationrootelements.cpp
source/i18n/collationrootelements.h
source/i18n/collationruleparser.cpp
source/i18n/collationruleparser.h
source/i18n/collationsets.cpp
source/i18n/collationsets.h
source/i18n/collationsettings.cpp
source/i18n/collationsettings.h
source/i18n/collationtailoring.cpp
source/i18n/collationtailoring.h
source/i18n/collationweights.cpp
source/i18n/collationweights.h
source/i18n/collunsafe.h
source/i18n/compactdecimalformat.cpp
source/i18n/coptccal.cpp
source/i18n/coptccal.h
source/i18n/cpdtrans.cpp
source/i18n/cpdtrans.h
source/i18n/csdetect.cpp
source/i18n/csdetect.h
source/i18n/csmatch.cpp
source/i18n/csmatch.h
source/i18n/csr2022.cpp
source/i18n/csr2022.h
source/i18n/csrecog.cpp
source/i18n/csrecog.h
source/i18n/csrmbcs.cpp
source/i18n/csrmbcs.h
source/i18n/csrsbcs.cpp
source/i18n/csrsbcs.h
source/i18n/csrucode.cpp
source/i18n/csrucode.h
source/i18n/csrutf8.cpp
source/i18n/csrutf8.h
source/i18n/curramt.cpp
source/i18n/currfmt.cpp
source/i18n/currfmt.h
source/i18n/currpinf.cpp
source/i18n/currunit.cpp
source/i18n/dangical.cpp
source/i18n/dangical.h
source/i18n/datefmt.cpp
source/i18n/dayperiodrules.cpp
source/i18n/dayperiodrules.h
source/i18n/dcfmtimp.h
source/i18n/dcfmtsym.cpp
source/i18n/decContext.c [deleted file]
source/i18n/decContext.h
source/i18n/decNumber.c [deleted file]
source/i18n/decNumber.h
source/i18n/decNumberLocal.h
source/i18n/decfmtst.cpp
source/i18n/decfmtst.h
source/i18n/decimalformatpattern.cpp
source/i18n/decimalformatpattern.h
source/i18n/decimalformatpatternimpl.h
source/i18n/decimfmt.cpp
source/i18n/decimfmtimpl.cpp
source/i18n/decimfmtimpl.h
source/i18n/digitaffix.cpp
source/i18n/digitaffix.h
source/i18n/digitaffixesandpadding.cpp
source/i18n/digitaffixesandpadding.h
source/i18n/digitformatter.cpp
source/i18n/digitformatter.h
source/i18n/digitgrouping.cpp
source/i18n/digitgrouping.h
source/i18n/digitinterval.cpp
source/i18n/digitinterval.h
source/i18n/digitlst.cpp
source/i18n/digitlst.h
source/i18n/dt_impl.h
source/i18n/dtfmtsym.cpp
source/i18n/dtitv_impl.h
source/i18n/dtitvfmt.cpp
source/i18n/dtitvinf.cpp
source/i18n/dtptngen.cpp
source/i18n/dtptngen_impl.h
source/i18n/dtrule.cpp
source/i18n/esctrn.cpp
source/i18n/esctrn.h
source/i18n/ethpccal.cpp
source/i18n/ethpccal.h
source/i18n/fmtable.cpp
source/i18n/fmtable_cnv.cpp
source/i18n/fmtableimp.h
source/i18n/format.cpp
source/i18n/fphdlimp.cpp
source/i18n/fphdlimp.h
source/i18n/fpositer.cpp
source/i18n/funcrepl.cpp
source/i18n/funcrepl.h
source/i18n/gender.cpp
source/i18n/gregocal.cpp
source/i18n/gregoimp.cpp
source/i18n/gregoimp.h
source/i18n/hebrwcal.cpp
source/i18n/hebrwcal.h
source/i18n/i18n.vcxproj
source/i18n/i18n.vcxproj.filters
source/i18n/indiancal.cpp
source/i18n/indiancal.h
source/i18n/inputext.cpp
source/i18n/inputext.h
source/i18n/islamcal.cpp
source/i18n/islamcal.h
source/i18n/japancal.cpp
source/i18n/japancal.h
source/i18n/measfmt.cpp
source/i18n/measunit.cpp
source/i18n/measure.cpp
source/i18n/msgfmt.cpp
source/i18n/msgfmt_impl.h
source/i18n/name2uni.cpp
source/i18n/name2uni.h
source/i18n/nfrlist.h
source/i18n/nfrs.cpp
source/i18n/nfrs.h
source/i18n/nfrule.cpp
source/i18n/nfrule.h
source/i18n/nfsubs.cpp
source/i18n/nfsubs.h
source/i18n/nortrans.cpp
source/i18n/nortrans.h
source/i18n/nultrans.cpp
source/i18n/nultrans.h
source/i18n/numfmt.cpp
source/i18n/numsys.cpp
source/i18n/numsys_impl.h
source/i18n/olsontz.cpp
source/i18n/olsontz.h
source/i18n/persncal.cpp
source/i18n/persncal.h
source/i18n/pluralaffix.cpp
source/i18n/pluralaffix.h
source/i18n/plurfmt.cpp
source/i18n/plurrule.cpp
source/i18n/plurrule_impl.h
source/i18n/precision.cpp
source/i18n/precision.h
source/i18n/quant.cpp
source/i18n/quant.h
source/i18n/quantityformatter.cpp
source/i18n/quantityformatter.h
source/i18n/rbnf.cpp
source/i18n/rbt.cpp
source/i18n/rbt.h
source/i18n/rbt_data.cpp
source/i18n/rbt_data.h
source/i18n/rbt_pars.cpp
source/i18n/rbt_pars.h
source/i18n/rbt_rule.cpp
source/i18n/rbt_rule.h
source/i18n/rbt_set.cpp
source/i18n/rbt_set.h
source/i18n/rbtz.cpp
source/i18n/regexcmp.cpp
source/i18n/regexcmp.h
source/i18n/regexcst.h
source/i18n/regeximp.cpp
source/i18n/regeximp.h
source/i18n/regexst.cpp
source/i18n/regexst.h
source/i18n/regextxt.cpp
source/i18n/regextxt.h
source/i18n/region.cpp
source/i18n/region_impl.h
source/i18n/reldatefmt.cpp
source/i18n/reldtfmt.cpp
source/i18n/reldtfmt.h
source/i18n/rematch.cpp
source/i18n/remtrans.cpp
source/i18n/remtrans.h
source/i18n/repattrn.cpp
source/i18n/rulebasedcollator.cpp
source/i18n/scientificnumberformatter.cpp
source/i18n/scriptset.cpp
source/i18n/scriptset.h
source/i18n/search.cpp
source/i18n/selfmt.cpp
source/i18n/selfmtimpl.h
source/i18n/sharedbreakiterator.cpp
source/i18n/sharedbreakiterator.h
source/i18n/sharedcalendar.h
source/i18n/shareddateformatsymbols.h
source/i18n/sharednumberformat.h
source/i18n/sharedpluralrules.h
source/i18n/significantdigitinterval.h
source/i18n/simpletz.cpp
source/i18n/smallintformatter.cpp
source/i18n/smallintformatter.h
source/i18n/smpdtfmt.cpp
source/i18n/smpdtfst.cpp
source/i18n/smpdtfst.h
source/i18n/sortkey.cpp
source/i18n/standardplural.cpp
source/i18n/standardplural.h
source/i18n/strmatch.cpp
source/i18n/strmatch.h
source/i18n/strrepl.cpp
source/i18n/strrepl.h
source/i18n/stsearch.cpp
source/i18n/taiwncal.cpp
source/i18n/taiwncal.h
source/i18n/timezone.cpp
source/i18n/titletrn.cpp
source/i18n/titletrn.h
source/i18n/tmunit.cpp
source/i18n/tmutamt.cpp
source/i18n/tmutfmt.cpp
source/i18n/tolowtrn.cpp
source/i18n/tolowtrn.h
source/i18n/toupptrn.cpp
source/i18n/toupptrn.h
source/i18n/translit.cpp
source/i18n/transreg.cpp
source/i18n/transreg.h
source/i18n/tridpars.cpp
source/i18n/tridpars.h
source/i18n/tzfmt.cpp
source/i18n/tzgnames.cpp
source/i18n/tzgnames.h
source/i18n/tznames.cpp
source/i18n/tznames_impl.cpp
source/i18n/tznames_impl.h
source/i18n/tzrule.cpp
source/i18n/tztrans.cpp
source/i18n/ucal.cpp
source/i18n/ucln_in.cpp
source/i18n/ucln_in.h
source/i18n/ucol.cpp
source/i18n/ucol_imp.h
source/i18n/ucol_res.cpp
source/i18n/ucol_sit.cpp
source/i18n/ucoleitr.cpp
source/i18n/ucsdet.cpp
source/i18n/udat.cpp
source/i18n/udateintervalformat.cpp
source/i18n/udatpg.cpp
source/i18n/ufieldpositer.cpp
source/i18n/uitercollationiterator.cpp
source/i18n/uitercollationiterator.h
source/i18n/ulocdata.c [deleted file]
source/i18n/umsg.cpp
source/i18n/umsg_imp.h
source/i18n/unesctrn.cpp
source/i18n/unesctrn.h
source/i18n/uni2name.cpp
source/i18n/uni2name.h
source/i18n/unicode/alphaindex.h
source/i18n/unicode/basictz.h
source/i18n/unicode/calendar.h
source/i18n/unicode/choicfmt.h
source/i18n/unicode/coleitr.h
source/i18n/unicode/coll.h
source/i18n/unicode/compactdecimalformat.h
source/i18n/unicode/curramt.h
source/i18n/unicode/currpinf.h
source/i18n/unicode/currunit.h
source/i18n/unicode/datefmt.h
source/i18n/unicode/dcfmtsym.h
source/i18n/unicode/decimfmt.h
source/i18n/unicode/dtfmtsym.h
source/i18n/unicode/dtitvfmt.h
source/i18n/unicode/dtitvinf.h
source/i18n/unicode/dtptngen.h
source/i18n/unicode/dtrule.h
source/i18n/unicode/fieldpos.h
source/i18n/unicode/fmtable.h
source/i18n/unicode/format.h
source/i18n/unicode/fpositer.h
source/i18n/unicode/gender.h
source/i18n/unicode/gregocal.h
source/i18n/unicode/measfmt.h
source/i18n/unicode/measunit.h
source/i18n/unicode/measure.h
source/i18n/unicode/msgfmt.h
source/i18n/unicode/numfmt.h
source/i18n/unicode/numsys.h
source/i18n/unicode/plurfmt.h
source/i18n/unicode/plurrule.h
source/i18n/unicode/rbnf.h
source/i18n/unicode/rbtz.h
source/i18n/unicode/regex.h
source/i18n/unicode/region.h
source/i18n/unicode/reldatefmt.h
source/i18n/unicode/scientificnumberformatter.h
source/i18n/unicode/search.h
source/i18n/unicode/selfmt.h
source/i18n/unicode/simpletz.h
source/i18n/unicode/smpdtfmt.h
source/i18n/unicode/sortkey.h
source/i18n/unicode/stsearch.h
source/i18n/unicode/tblcoll.h
source/i18n/unicode/timezone.h
source/i18n/unicode/tmunit.h
source/i18n/unicode/tmutamt.h
source/i18n/unicode/tmutfmt.h
source/i18n/unicode/translit.h
source/i18n/unicode/tzfmt.h
source/i18n/unicode/tznames.h
source/i18n/unicode/tzrule.h
source/i18n/unicode/tztrans.h
source/i18n/unicode/ucal.h
source/i18n/unicode/ucol.h
source/i18n/unicode/ucoleitr.h
source/i18n/unicode/ucsdet.h
source/i18n/unicode/udat.h
source/i18n/unicode/udateintervalformat.h
source/i18n/unicode/udatpg.h
source/i18n/unicode/ufieldpositer.h
source/i18n/unicode/uformattable.h
source/i18n/unicode/ugender.h
source/i18n/unicode/ulocdata.h
source/i18n/unicode/umsg.h
source/i18n/unicode/unirepl.h
source/i18n/unicode/unum.h
source/i18n/unicode/unumsys.h
source/i18n/unicode/upluralrules.h
source/i18n/unicode/uregex.h
source/i18n/unicode/uregion.h
source/i18n/unicode/ureldatefmt.h
source/i18n/unicode/usearch.h
source/i18n/unicode/uspoof.h
source/i18n/unicode/utmscale.h
source/i18n/unicode/utrans.h
source/i18n/unicode/vtzone.h
source/i18n/unum.cpp
source/i18n/unumsys.cpp
source/i18n/upluralrules.cpp
source/i18n/uregex.cpp
source/i18n/uregexc.cpp
source/i18n/uregion.cpp
source/i18n/usearch.cpp
source/i18n/uspoof.cpp
source/i18n/uspoof_build.cpp
source/i18n/uspoof_conf.cpp
source/i18n/uspoof_conf.h
source/i18n/uspoof_impl.cpp
source/i18n/uspoof_impl.h
source/i18n/usrchimp.h
source/i18n/utf16collationiterator.cpp
source/i18n/utf16collationiterator.h
source/i18n/utf8collationiterator.cpp
source/i18n/utf8collationiterator.h
source/i18n/utmscale.c [deleted file]
source/i18n/utrans.cpp
source/i18n/valueformatter.cpp
source/i18n/valueformatter.h
source/i18n/visibledigits.cpp
source/i18n/visibledigits.h
source/i18n/vtzone.cpp
source/i18n/vzone.cpp
source/i18n/vzone.h
source/i18n/windtfmt.cpp
source/i18n/windtfmt.h
source/i18n/winnmfmt.cpp
source/i18n/winnmfmt.h
source/i18n/wintzimpl.cpp
source/i18n/wintzimpl.h
source/i18n/zonemeta.cpp
source/i18n/zonemeta.h
source/i18n/zrule.cpp
source/i18n/zrule.h
source/i18n/ztrans.cpp
source/i18n/ztrans.h
source/icudefs.mk.in
source/io/Makefile.in
source/io/io.vcxproj
source/io/io.vcxproj.filters
source/io/locbund.cpp
source/io/locbund.h
source/io/sprintf.c [deleted file]
source/io/sscanf.c [deleted file]
source/io/ucln_io.cpp
source/io/ucln_io.h
source/io/ufile.c [deleted file]
source/io/ufile.h
source/io/ufmt_cmn.c [deleted file]
source/io/ufmt_cmn.h
source/io/unicode/ustdio.h
source/io/unicode/ustream.h
source/io/uprintf.cpp
source/io/uprintf.h
source/io/uprntf_p.c [deleted file]
source/io/uscanf.c [deleted file]
source/io/uscanf.h
source/io/uscanf_p.c [deleted file]
source/io/ustdio.c [deleted file]
source/io/ustream.cpp
source/layoutex/LXUtilities.cpp
source/layoutex/LXUtilities.h
source/layoutex/ParagraphLayout.cpp
source/layoutex/RunArrays.cpp
source/layoutex/layout/ParagraphLayout.h
source/layoutex/layout/RunArrays.h
source/layoutex/layout/playout.h
source/layoutex/layout/plruns.h
source/layoutex/layoutex.vcxproj
source/layoutex/playout.cpp
source/layoutex/plruns.cpp
source/runConfigureICU
source/samples/break/break.cpp
source/samples/break/break.vcxproj
source/samples/break/ubreak.c
source/samples/cal/cal.c
source/samples/cal/cal.vcxproj
source/samples/cal/uprint.c
source/samples/cal/uprint.h
source/samples/case/case.cpp
source/samples/case/case.vcxproj
source/samples/case/ucase.c
source/samples/citer/citer.cpp
source/samples/citer/citer.vcxproj
source/samples/coll/coll.cpp
source/samples/coll/coll.vcxproj
source/samples/csdet/csdet.c
source/samples/csdet/csdet.vcxproj
source/samples/date/date.c
source/samples/date/date.vcxproj
source/samples/date/uprint.c
source/samples/date/uprint.h
source/samples/datecal/cal.cpp
source/samples/datecal/ccal.c
source/samples/datefmt/answers/main_0.cpp
source/samples/datefmt/answers/main_1.cpp
source/samples/datefmt/answers/main_2.cpp
source/samples/datefmt/answers/main_3.cpp
source/samples/datefmt/datefmt.vcxproj
source/samples/datefmt/main.cpp
source/samples/datefmt/util.cpp
source/samples/datefmt/util.h
source/samples/dtitvfmtsample/dtitvfmtsample.cpp
source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj
source/samples/dtptngsample/dtptngsample.cpp
source/samples/dtptngsample/dtptngsample.vcxproj
source/samples/layout/FontMap.cpp
source/samples/layout/FontMap.h
source/samples/layout/FontTableCache.cpp
source/samples/layout/FontTableCache.h
source/samples/layout/GDIFontInstance.cpp
source/samples/layout/GDIFontInstance.h
source/samples/layout/GDIFontMap.cpp
source/samples/layout/GDIFontMap.h
source/samples/layout/GDIGUISupport.cpp
source/samples/layout/GDIGUISupport.h
source/samples/layout/GUISupport.h
source/samples/layout/GnomeFontInstance.cpp
source/samples/layout/GnomeFontInstance.h
source/samples/layout/GnomeFontMap.cpp
source/samples/layout/GnomeFontMap.h
source/samples/layout/GnomeGUISupport.cpp
source/samples/layout/GnomeGUISupport.h
source/samples/layout/RenderingSurface.h
source/samples/layout/ScriptCompositeFontInstance.cpp
source/samples/layout/ScriptCompositeFontInstance.h
source/samples/layout/Surface.cpp
source/samples/layout/Surface.h
source/samples/layout/UnicodeReader.cpp
source/samples/layout/UnicodeReader.h
source/samples/layout/arraymem.h
source/samples/layout/cgnomelayout.c
source/samples/layout/clayout.c
source/samples/layout/cmaps.cpp
source/samples/layout/cmaps.h
source/samples/layout/gdiglue.cpp
source/samples/layout/gdiglue.h
source/samples/layout/gnomeglue.cpp
source/samples/layout/gnomeglue.h
source/samples/layout/gnomelayout.cpp
source/samples/layout/gsupport.h
source/samples/layout/layout.cpp
source/samples/layout/layout.vcxproj
source/samples/layout/paragraph.cpp
source/samples/layout/paragraph.h
source/samples/layout/pflow.c
source/samples/layout/pflow.h
source/samples/layout/resource.h
source/samples/layout/rsurface.cpp
source/samples/layout/rsurface.h
source/samples/layout/sfnt.h
source/samples/layout/ucreader.cpp
source/samples/layout/ucreader.h
source/samples/legacy/legacy.cpp
source/samples/legacy/legacy.vcxproj
source/samples/legacy/newcol.cpp
source/samples/legacy/oldcol.cpp
source/samples/msgfmt/answers/main_0.cpp
source/samples/msgfmt/answers/main_1.cpp
source/samples/msgfmt/answers/main_2.cpp
source/samples/msgfmt/answers/main_3.cpp
source/samples/msgfmt/main.cpp
source/samples/msgfmt/msgfmt.vcxproj
source/samples/msgfmt/util.cpp
source/samples/msgfmt/util.h
source/samples/numfmt/capi.c
source/samples/numfmt/main.cpp
source/samples/numfmt/numfmt.vcxproj
source/samples/numfmt/util.cpp
source/samples/numfmt/util.h
source/samples/plurfmtsample/plurfmtsample.cpp
source/samples/plurfmtsample/plurfmtsample.vcxproj
source/samples/props/props.cpp
source/samples/props/props.vcxproj
source/samples/strsrch/strsrch.cpp
source/samples/strsrch/strsrch.vcxproj
source/samples/translit/answers/main_1.cpp
source/samples/translit/answers/main_2.cpp
source/samples/translit/answers/main_3.cpp
source/samples/translit/answers/main_4.cpp
source/samples/translit/answers/unaccent.cpp
source/samples/translit/answers/unaccent.h
source/samples/translit/main.cpp
source/samples/translit/translit.vcxproj
source/samples/translit/unaccent.cpp
source/samples/translit/unaccent.h
source/samples/translit/util.cpp
source/samples/translit/util.h
source/samples/uciter8/uciter8.c
source/samples/uciter8/uciter8.vcxproj
source/samples/uciter8/uit_len8.c
source/samples/uciter8/uit_len8.h
source/samples/ucnv/convsamp.cpp
source/samples/ucnv/flagcb.c
source/samples/ucnv/flagcb.h
source/samples/ucnv/ucnv.vcxproj
source/samples/udata/reader.c
source/samples/udata/reader.vcxproj
source/samples/udata/writer.c
source/samples/udata/writer.vcxproj
source/samples/ufortune/ufortune.c
source/samples/ufortune/ufortune.vcxproj
source/samples/ugrep/ugrep.cpp
source/samples/ugrep/ugrep.vcxproj
source/samples/uresb/Makefile
source/samples/uresb/uresb.c
source/samples/uresb/uresb.vcxproj
source/samples/ustring/ustring.cpp
source/samples/ustring/ustring.vcxproj
source/stubdata/stubdata.c [deleted file]
source/stubdata/stubdata.vcxproj
source/stubdata/stubdata.vcxproj.filters
source/test/cintltst/bocu1tst.c
source/test/cintltst/callcoll.c
source/test/cintltst/callcoll.h
source/test/cintltst/calldata.h
source/test/cintltst/calltest.c
source/test/cintltst/capitst.c
source/test/cintltst/capitst.h
source/test/cintltst/cbiapts.c
source/test/cintltst/cbiapts.h
source/test/cintltst/cbididat.c
source/test/cintltst/cbiditransformtst.c
source/test/cintltst/cbiditst.c
source/test/cintltst/cbiditst.h
source/test/cintltst/cbkittst.c
source/test/cintltst/ccaltst.c
source/test/cintltst/ccaltst.h
source/test/cintltst/ccapitst.c
source/test/cintltst/ccapitst.h
source/test/cintltst/ccolltst.c
source/test/cintltst/ccolltst.h
source/test/cintltst/cconvtst.c
source/test/cintltst/cctest.c
source/test/cintltst/ccurrtst.c
source/test/cintltst/ccurrtst.h
source/test/cintltst/cdateintervalformattest.c
source/test/cintltst/cdattst.c
source/test/cintltst/cdattst.h
source/test/cintltst/cdetst.c
source/test/cintltst/cdetst.h
source/test/cintltst/cdtdptst.c
source/test/cintltst/cdtdptst.h
source/test/cintltst/cdtrgtst.c
source/test/cintltst/cdtrgtst.h
source/test/cintltst/cestst.c
source/test/cintltst/cestst.h
source/test/cintltst/cfintst.c
source/test/cintltst/cfintst.h
source/test/cintltst/cformtst.c
source/test/cintltst/cformtst.h
source/test/cintltst/cfrtst.c
source/test/cintltst/cfrtst.h
source/test/cintltst/cg7coll.c
source/test/cintltst/cg7coll.h
source/test/cintltst/cgendtst.c
source/test/cintltst/chashtst.c
source/test/cintltst/cintltst.c
source/test/cintltst/cintltst.h
source/test/cintltst/cintltst.vcxproj
source/test/cintltst/citertst.c
source/test/cintltst/citertst.h
source/test/cintltst/cjaptst.c
source/test/cintltst/cjaptst.h
source/test/cintltst/cldrtest.c
source/test/cintltst/cloctst.c
source/test/cintltst/cloctst.h
source/test/cintltst/cmsccoll.c
source/test/cintltst/cmsgtst.c
source/test/cintltst/cmsgtst.h
source/test/cintltst/cnmdptst.c
source/test/cintltst/cnmdptst.h
source/test/cintltst/cnormtst.c
source/test/cintltst/cnormtst.h
source/test/cintltst/cnumtst.c
source/test/cintltst/cnumtst.h
source/test/cintltst/cpluralrulestest.c
source/test/cintltst/cposxtst.c
source/test/cintltst/crelativedateformattest.c
source/test/cintltst/crestst.c
source/test/cintltst/crestst.h
source/test/cintltst/creststn.c
source/test/cintltst/creststn.h
source/test/cintltst/cstrcase.c
source/test/cintltst/cstrtest.c
source/test/cintltst/cturtst.c
source/test/cintltst/cturtst.h
source/test/cintltst/cucdapi.c
source/test/cintltst/cucdapi.h
source/test/cintltst/cucdtst.c
source/test/cintltst/currtest.c
source/test/cintltst/custrtrn.c
source/test/cintltst/custrtst.c
source/test/cintltst/cutiltst.c
source/test/cintltst/encoll.c
source/test/cintltst/encoll.h
source/test/cintltst/eurocreg.c
source/test/cintltst/hpmufn.c
source/test/cintltst/idnatest.c
source/test/cintltst/nccbtst.c
source/test/cintltst/nccbtst.h
source/test/cintltst/ncnvfbts.c
source/test/cintltst/ncnvfbts.h
source/test/cintltst/ncnvtst.c
source/test/cintltst/nfsprep.c
source/test/cintltst/nfsprep.h
source/test/cintltst/nucnvtst.c
source/test/cintltst/nucnvtst.h
source/test/cintltst/putiltst.c
source/test/cintltst/reapits.c
source/test/cintltst/sorttest.c
source/test/cintltst/spooftest.c
source/test/cintltst/spreptst.c
source/test/cintltst/sprpdata.c
source/test/cintltst/stdnmtst.c
source/test/cintltst/tracetst.c
source/test/cintltst/trie2test.c
source/test/cintltst/trietest.c
source/test/cintltst/ucnvseltst.c
source/test/cintltst/ucnvseltst.h
source/test/cintltst/ucsdetst.c
source/test/cintltst/udatatst.c
source/test/cintltst/udatpg_test.c
source/test/cintltst/uenumtst.c
source/test/cintltst/ulistfmttest.c
source/test/cintltst/uregiontest.c
source/test/cintltst/usettest.c
source/test/cintltst/usrchdat.c
source/test/cintltst/usrchtst.c
source/test/cintltst/utexttst.c
source/test/cintltst/utf16tst.c
source/test/cintltst/utf8tst.c
source/test/cintltst/utmstest.c
source/test/cintltst/utransts.c
source/test/compat/tzdate.c
source/test/depstest/dependencies.txt
source/test/hdrtst/Makefile.in
source/test/hdrtst/cxxfiles.txt
source/test/hdrtst/testinternalheaders.sh
source/test/intltest/Makefile.in
source/test/intltest/aliastst.cpp
source/test/intltest/aliastst.h
source/test/intltest/allcoll.cpp
source/test/intltest/allcoll.h
source/test/intltest/alphaindextst.cpp
source/test/intltest/alphaindextst.h
source/test/intltest/apicoll.cpp
source/test/intltest/apicoll.h
source/test/intltest/astrotst.cpp
source/test/intltest/astrotst.h
source/test/intltest/bidiconf.cpp
source/test/intltest/bytestrietest.cpp
source/test/intltest/calcasts.cpp
source/test/intltest/calcasts.h
source/test/intltest/callimts.cpp
source/test/intltest/callimts.h
source/test/intltest/calregts.cpp
source/test/intltest/calregts.h
source/test/intltest/caltest.cpp
source/test/intltest/caltest.h
source/test/intltest/caltestdata.h
source/test/intltest/caltztst.cpp
source/test/intltest/caltztst.h
source/test/intltest/canittst.cpp
source/test/intltest/canittst.h
source/test/intltest/citrtest.cpp
source/test/intltest/citrtest.h
source/test/intltest/collationtest.cpp
source/test/intltest/colldata.cpp
source/test/intltest/colldata.h
source/test/intltest/compactdecimalformattest.cpp
source/test/intltest/convtest.cpp
source/test/intltest/convtest.h
source/test/intltest/cpdtrtst.cpp
source/test/intltest/cpdtrtst.h
source/test/intltest/csdetest.cpp
source/test/intltest/csdetest.h
source/test/intltest/currcoll.cpp
source/test/intltest/currcoll.h
source/test/intltest/dadrcal.cpp
source/test/intltest/dadrcal.h
source/test/intltest/dadrfmt.cpp
source/test/intltest/dadrfmt.h
source/test/intltest/datadrivennumberformattestsuite.cpp
source/test/intltest/datadrivennumberformattestsuite.h
source/test/intltest/dcfmapts.cpp
source/test/intltest/dcfmapts.h
source/test/intltest/dcfmtest.cpp
source/test/intltest/dcfmtest.h
source/test/intltest/decoll.cpp
source/test/intltest/decoll.h
source/test/intltest/dtfmapts.cpp
source/test/intltest/dtfmapts.h
source/test/intltest/dtfmrgts.cpp
source/test/intltest/dtfmrgts.h
source/test/intltest/dtfmtrtts.cpp
source/test/intltest/dtfmtrtts.h
source/test/intltest/dtfmttst.cpp
source/test/intltest/dtfmttst.h
source/test/intltest/dtifmtts.cpp
source/test/intltest/dtifmtts.h
source/test/intltest/dtptngts.cpp
source/test/intltest/dtptngts.h
source/test/intltest/encoll.cpp
source/test/intltest/encoll.h
source/test/intltest/escoll.cpp
source/test/intltest/escoll.h
source/test/intltest/ficoll.cpp
source/test/intltest/ficoll.h
source/test/intltest/fldset.cpp
source/test/intltest/fldset.h
source/test/intltest/frcoll.cpp
source/test/intltest/frcoll.h
source/test/intltest/g7coll.cpp
source/test/intltest/g7coll.h
source/test/intltest/genderinfotest.cpp
source/test/intltest/icusvtst.cpp
source/test/intltest/icusvtst.h
source/test/intltest/idnaconf.cpp
source/test/intltest/idnaconf.h
source/test/intltest/idnaref.cpp
source/test/intltest/idnaref.h
source/test/intltest/incaltst.cpp
source/test/intltest/incaltst.h
source/test/intltest/intltest.cpp
source/test/intltest/intltest.h
source/test/intltest/intltest.vcxproj
source/test/intltest/intltest.vcxproj.filters
source/test/intltest/itercoll.cpp
source/test/intltest/itercoll.h
source/test/intltest/itformat.cpp
source/test/intltest/itformat.h
source/test/intltest/itmajor.cpp
source/test/intltest/itmajor.h
source/test/intltest/itrbbi.cpp
source/test/intltest/itrbbi.h
source/test/intltest/itrbnf.cpp
source/test/intltest/itrbnf.h
source/test/intltest/itrbnfp.cpp
source/test/intltest/itrbnfp.h
source/test/intltest/itrbnfrt.cpp
source/test/intltest/itrbnfrt.h
source/test/intltest/itspoof.cpp
source/test/intltest/itspoof.h
source/test/intltest/ittrans.cpp
source/test/intltest/ittrans.h
source/test/intltest/itutil.cpp
source/test/intltest/itutil.h
source/test/intltest/jacoll.cpp
source/test/intltest/jacoll.h
source/test/intltest/jamotest.cpp
source/test/intltest/jamotest.h
source/test/intltest/lcukocol.cpp
source/test/intltest/lcukocol.h
source/test/intltest/listformattertest.cpp
source/test/intltest/listformattertest.h
source/test/intltest/locnmtst.cpp
source/test/intltest/locnmtst.h
source/test/intltest/loctest.cpp
source/test/intltest/loctest.h
source/test/intltest/measfmttest.cpp
source/test/intltest/miscdtfm.cpp
source/test/intltest/miscdtfm.h
source/test/intltest/mnkytst.cpp
source/test/intltest/mnkytst.h
source/test/intltest/msfmrgts.cpp
source/test/intltest/msfmrgts.h
source/test/intltest/nmfmapts.cpp
source/test/intltest/nmfmapts.h
source/test/intltest/nmfmtrt.cpp
source/test/intltest/nmfmtrt.h
source/test/intltest/normconf.cpp
source/test/intltest/normconf.h
source/test/intltest/nptrans.cpp
source/test/intltest/nptrans.h
source/test/intltest/numberformat2test.cpp
source/test/intltest/numberformattesttuple.cpp
source/test/intltest/numberformattesttuple.h
source/test/intltest/numfmtspectest.cpp
source/test/intltest/numfmtst.cpp
source/test/intltest/numfmtst.h
source/test/intltest/numrgts.cpp
source/test/intltest/numrgts.h
source/test/intltest/pluralmaptest.cpp
source/test/intltest/plurfmts.cpp
source/test/intltest/plurfmts.h
source/test/intltest/plurults.cpp
source/test/intltest/plurults.h
source/test/intltest/pptest.cpp
source/test/intltest/pptest.h
source/test/intltest/punyref.c [deleted file]
source/test/intltest/punyref.h
source/test/intltest/quantityformattertest.cpp
source/test/intltest/rbbiapts.cpp
source/test/intltest/rbbiapts.h
source/test/intltest/rbbimonkeytest.cpp
source/test/intltest/rbbimonkeytest.h
source/test/intltest/rbbitst.cpp
source/test/intltest/rbbitst.h
source/test/intltest/regcoll.cpp
source/test/intltest/regcoll.h
source/test/intltest/regextst.cpp
source/test/intltest/regextst.h
source/test/intltest/regiontst.cpp
source/test/intltest/regiontst.h
source/test/intltest/reldatefmttest.cpp
source/test/intltest/reptest.cpp
source/test/intltest/reptest.h
source/test/intltest/restest.cpp
source/test/intltest/restest.h
source/test/intltest/restsnew.cpp
source/test/intltest/restsnew.h
source/test/intltest/scientificnumberformattertest.cpp
source/test/intltest/sdtfmtts.cpp
source/test/intltest/sdtfmtts.h
source/test/intltest/selfmts.cpp
source/test/intltest/selfmts.h
source/test/intltest/sfwdchit.cpp
source/test/intltest/sfwdchit.h
source/test/intltest/simpleformattertest.cpp
source/test/intltest/simplethread.cpp
source/test/intltest/simplethread.h
source/test/intltest/srchtest.cpp
source/test/intltest/srchtest.h
source/test/intltest/ssearch.cpp
source/test/intltest/ssearch.h
source/test/intltest/strcase.cpp
source/test/intltest/strtest.cpp
source/test/intltest/strtest.h
source/test/intltest/svccoll.cpp
source/test/intltest/svccoll.h
source/test/intltest/tchcfmt.cpp
source/test/intltest/tchcfmt.h
source/test/intltest/testidn.cpp
source/test/intltest/testidna.cpp
source/test/intltest/testidna.h
source/test/intltest/testutil.cpp
source/test/intltest/testutil.h
source/test/intltest/textfile.cpp
source/test/intltest/textfile.h
source/test/intltest/tfsmalls.cpp
source/test/intltest/tfsmalls.h
source/test/intltest/thcoll.cpp
source/test/intltest/thcoll.h
source/test/intltest/tmsgfmt.cpp
source/test/intltest/tmsgfmt.h
source/test/intltest/tokiter.cpp
source/test/intltest/tokiter.h
source/test/intltest/transapi.cpp
source/test/intltest/transapi.h
source/test/intltest/transrt.cpp
source/test/intltest/transrt.h
source/test/intltest/transtst.cpp
source/test/intltest/transtst.h
source/test/intltest/trcoll.cpp
source/test/intltest/trcoll.h
source/test/intltest/trnserr.cpp
source/test/intltest/trnserr.h
source/test/intltest/tscoll.cpp
source/test/intltest/tscoll.h
source/test/intltest/tsdate.cpp
source/test/intltest/tsdate.h
source/test/intltest/tsdcfmsy.cpp
source/test/intltest/tsdcfmsy.h
source/test/intltest/tsdtfmsy.cpp
source/test/intltest/tsdtfmsy.h
source/test/intltest/tsmthred.cpp
source/test/intltest/tsmthred.h
source/test/intltest/tsnmfmt.cpp
source/test/intltest/tsnmfmt.h
source/test/intltest/tsputil.cpp
source/test/intltest/tsputil.h
source/test/intltest/tstnorm.cpp
source/test/intltest/tstnorm.h
source/test/intltest/tstnrapi.cpp
source/test/intltest/tufmtts.cpp
source/test/intltest/tzbdtest.cpp
source/test/intltest/tzbdtest.h
source/test/intltest/tzfmttst.cpp
source/test/intltest/tzfmttst.h
source/test/intltest/tzoffloc.cpp
source/test/intltest/tzoffloc.h
source/test/intltest/tzregts.cpp
source/test/intltest/tzregts.h
source/test/intltest/tzrulets.cpp
source/test/intltest/tzrulets.h
source/test/intltest/tztest.cpp
source/test/intltest/tztest.h
source/test/intltest/ucaconf.cpp
source/test/intltest/ucaconf.h
source/test/intltest/ucdtest.cpp
source/test/intltest/ucdtest.h
source/test/intltest/ucharstrietest.cpp
source/test/intltest/unifiedcachetest.cpp
source/test/intltest/uobjtest.cpp
source/test/intltest/uobjtest.h
source/test/intltest/usettest.cpp
source/test/intltest/usettest.h
source/test/intltest/ustrtest.cpp
source/test/intltest/ustrtest.h
source/test/intltest/uts46test.cpp
source/test/intltest/utxttest.cpp
source/test/intltest/utxttest.h
source/test/intltest/uvectest.cpp
source/test/intltest/uvectest.h
source/test/intltest/v32test.cpp
source/test/intltest/v32test.h
source/test/intltest/windttst.cpp
source/test/intltest/windttst.h
source/test/intltest/winnmtst.cpp
source/test/intltest/winnmtst.h
source/test/intltest/winutil.cpp
source/test/intltest/winutil.h
source/test/iotest/Makefile.in
source/test/iotest/filetst.c
source/test/iotest/iotest.cpp
source/test/iotest/iotest.h
source/test/iotest/iotest.vcxproj
source/test/iotest/stream.cpp
source/test/iotest/strtst.c
source/test/iotest/trnstst.c
source/test/letest/FontObject.cpp
source/test/letest/FontObject.h
source/test/letest/FontTableCache.cpp
source/test/letest/FontTableCache.h
source/test/letest/PortableFontInstance.cpp
source/test/letest/PortableFontInstance.h
source/test/letest/SimpleFontInstance.cpp
source/test/letest/SimpleFontInstance.h
source/test/letest/cfonts.cpp
source/test/letest/cfonts.h
source/test/letest/cletest.c
source/test/letest/cletest.vcxproj
source/test/letest/cmaps.cpp
source/test/letest/cmaps.h
source/test/letest/gendata.cpp
source/test/letest/gendata.vcxproj
source/test/letest/letest.cpp
source/test/letest/letest.h
source/test/letest/letest.vcxproj
source/test/letest/letsutil.cpp
source/test/letest/letsutil.h
source/test/letest/sfnt.h
source/test/letest/testdata.cpp
source/test/letest/xmlreader.cpp
source/test/letest/xmlreader.h
source/test/perf/DateFmtPerf/DateFmtPerf.cpp
source/test/perf/DateFmtPerf/DateFmtPerf.h
source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj
source/test/perf/DateFmtPerf/breakdata.h
source/test/perf/DateFmtPerf/collationdata.h
source/test/perf/DateFmtPerf/datedata.h
source/test/perf/charperf/charperf.cpp
source/test/perf/charperf/charperf.h
source/test/perf/charperf/charperf.vcxproj
source/test/perf/collationperf/collperf.cpp
source/test/perf/collperf/collperf.cpp
source/test/perf/collperf/collperf.vcxproj
source/test/perf/collperf2/collperf2.cpp
source/test/perf/collperf2/collperf2.vcxproj
source/test/perf/convperf/convperf.cpp
source/test/perf/convperf/convperf.h
source/test/perf/convperf/convperf.vcxproj
source/test/perf/convperf/data.h
source/test/perf/dicttrieperf/dicttrieperf.cpp
source/test/perf/howExpensiveIs/Makefile.in
source/test/perf/howExpensiveIs/howExpensiveIs.cpp
source/test/perf/howExpensiveIs/sieve.cpp
source/test/perf/howExpensiveIs/sieve.h
source/test/perf/leperf/FontObject.cpp
source/test/perf/leperf/FontObject.h
source/test/perf/leperf/FontTableCache.cpp
source/test/perf/leperf/FontTableCache.h
source/test/perf/leperf/PortableFontInstance.cpp
source/test/perf/leperf/PortableFontInstance.h
source/test/perf/leperf/SimpleFontInstance.cpp
source/test/perf/leperf/SimpleFontInstance.h
source/test/perf/leperf/cfonts.cpp
source/test/perf/leperf/cfonts.h
source/test/perf/leperf/cmaps.cpp
source/test/perf/leperf/cmaps.h
source/test/perf/leperf/leperf.cpp
source/test/perf/leperf/letrperf.cpp
source/test/perf/leperf/sfnt.h
source/test/perf/leperf/xmlreader.cpp
source/test/perf/leperf/xmlreader.h
source/test/perf/normperf/dtfmtrtperf.cpp
source/test/perf/normperf/dtfmtrtperf.h
source/test/perf/normperf/dtfmtrtperf.vcxproj
source/test/perf/normperf/normperf.cpp
source/test/perf/normperf/normperf.h
source/test/perf/normperf/normperf.vcxproj
source/test/perf/strsrchperf/strsrchperf.cpp
source/test/perf/strsrchperf/strsrchperf.h
source/test/perf/strsrchperf/strsrchperf.vcxproj
source/test/perf/ubrkperf/ubrkperf.cpp
source/test/perf/ubrkperf/ubrkperf.h
source/test/perf/ubrkperf/ubrkperf.vcxproj
source/test/perf/ubrkperf/ubrkperfold.cpp
source/test/perf/ucnvavailperf/ucnvavailperf.cpp
source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj
source/test/perf/unisetperf/draft/bitset.cpp
source/test/perf/unisetperf/draft/trieset.cpp
source/test/perf/unisetperf/draft/unicont.h
source/test/perf/unisetperf/unisetperf.cpp
source/test/perf/unisetperf/unisetperf.vcxproj
source/test/perf/usetperf/bitset.cpp
source/test/perf/usetperf/bitset.h
source/test/perf/usetperf/usetperf.cpp
source/test/perf/usetperf/usetperf.vcxproj
source/test/perf/ustrperf/stringperf.cpp
source/test/perf/ustrperf/stringperf.h
source/test/perf/ustrperf/stringperf.vcxproj
source/test/perf/utfperf/utfperf.cpp
source/test/perf/utfperf/utfperf.vcxproj
source/test/perf/utrie2perf/utrie2perf.cpp
source/test/perf/utrie2perf/utrie2perf.vcxproj
source/test/testdata/BidiTest.txt
source/test/testdata/GraphemeBreakTest.txt
source/test/testdata/LineBreakTest.txt
source/test/testdata/SentenceBreakTest.txt
source/test/testdata/WordBreakTest.txt
source/test/testdata/break_rules/grapheme.txt
source/test/testdata/break_rules/line.txt
source/test/testdata/break_rules/line_loose.txt
source/test/testdata/break_rules/line_loose_cj.txt
source/test/testdata/break_rules/line_normal.txt
source/test/testdata/break_rules/line_normal_cj.txt
source/test/testdata/break_rules/word.txt
source/test/testdata/break_rules/word_POSIX.txt
source/test/testdata/rbbitst.txt
source/test/testdata/regextst.txt
source/test/testdata/root.txt
source/test/testdata/structLocale.txt
source/test/testmap/testmap.c
source/test/thaitest/thaitest.cpp
source/tools/Makefile.in
source/tools/ctestfw/ctest.c
source/tools/ctestfw/ctestfw.vcxproj
source/tools/ctestfw/datamap.cpp
source/tools/ctestfw/testdata.cpp
source/tools/ctestfw/tstdtmod.cpp
source/tools/ctestfw/ucln_ct.c
source/tools/ctestfw/unicode/ctest.h
source/tools/ctestfw/unicode/datamap.h
source/tools/ctestfw/unicode/testdata.h
source/tools/ctestfw/unicode/testlog.h
source/tools/ctestfw/unicode/testtype.h
source/tools/ctestfw/unicode/tstdtmod.h
source/tools/ctestfw/unicode/uperf.h
source/tools/ctestfw/unicode/utimer.h
source/tools/ctestfw/uperf.cpp
source/tools/genbrk/genbrk.cpp
source/tools/genbrk/genbrk.vcxproj
source/tools/genccode/genccode.c
source/tools/genccode/genccode.vcxproj
source/tools/gencfu/gencfu.cpp
source/tools/gencfu/gencfu.vcxproj
source/tools/gencmn/gencmn.c
source/tools/gencmn/gencmn.vcxproj
source/tools/gencnval/gencnval.c
source/tools/gencnval/gencnval.vcxproj
source/tools/gencolusb/extract_unsafe_backwards.cpp
source/tools/gencolusb/verify_uset.cpp
source/tools/gendict/gendict.cpp
source/tools/gendict/gendict.vcxproj
source/tools/gennorm2/Makefile.in
source/tools/gennorm2/gennorm2.cpp
source/tools/gennorm2/gennorm2.vcxproj
source/tools/gennorm2/n2builder.cpp
source/tools/gennorm2/n2builder.h
source/tools/genrb/Makefile.in
source/tools/genrb/derb.cpp
source/tools/genrb/derb.vcxproj
source/tools/genrb/errmsg.c
source/tools/genrb/errmsg.h
source/tools/genrb/genrb.cpp
source/tools/genrb/genrb.h
source/tools/genrb/genrb.vcxproj
source/tools/genrb/parse.cpp
source/tools/genrb/parse.h
source/tools/genrb/prscmnts.cpp
source/tools/genrb/prscmnts.h
source/tools/genrb/rbutil.c
source/tools/genrb/rbutil.h
source/tools/genrb/read.c
source/tools/genrb/read.h
source/tools/genrb/reslist.cpp
source/tools/genrb/reslist.h
source/tools/genrb/rle.c
source/tools/genrb/rle.h
source/tools/genrb/ustr.c
source/tools/genrb/ustr.h
source/tools/genrb/wrtjava.cpp
source/tools/genrb/wrtxml.cpp
source/tools/genren/genren.pl
source/tools/gensprep/gensprep.c
source/tools/gensprep/gensprep.h
source/tools/gensprep/gensprep.vcxproj
source/tools/gensprep/store.c
source/tools/gentest/genres32.c
source/tools/gentest/gentest.c
source/tools/gentest/gentest.h
source/tools/gentest/gentest.vcxproj
source/tools/icu-svnprops-check.py
source/tools/icuinfo/icuinfo.cpp
source/tools/icuinfo/icuinfo.vcxproj
source/tools/icuinfo/testplug.c
source/tools/icuinfo/testplug.vcxproj
source/tools/icupkg/icupkg.cpp
source/tools/icupkg/icupkg.vcxproj
source/tools/icuswap/icuswap.cpp
source/tools/makeconv/Makefile.in
source/tools/makeconv/gencnvex.c
source/tools/makeconv/genmbcs.cpp
source/tools/makeconv/genmbcs.h
source/tools/makeconv/makeconv.cpp
source/tools/makeconv/makeconv.h
source/tools/makeconv/makeconv.vcxproj
source/tools/makeconv/ucnvstat.c
source/tools/pkgdata/Makefile.in
source/tools/pkgdata/pkgdata.cpp
source/tools/pkgdata/pkgdata.vcxproj
source/tools/pkgdata/pkgtypes.c
source/tools/pkgdata/pkgtypes.h
source/tools/toolutil/Makefile.in
source/tools/toolutil/collationinfo.cpp
source/tools/toolutil/collationinfo.h
source/tools/toolutil/dbgutil.cpp
source/tools/toolutil/dbgutil.h
source/tools/toolutil/denseranges.cpp
source/tools/toolutil/denseranges.h
source/tools/toolutil/filestrm.c [deleted file]
source/tools/toolutil/filestrm.h
source/tools/toolutil/filetools.cpp
source/tools/toolutil/filetools.h
source/tools/toolutil/flagparser.c [deleted file]
source/tools/toolutil/flagparser.h
source/tools/toolutil/package.cpp
source/tools/toolutil/package.h
source/tools/toolutil/pkg_genc.c [deleted file]
source/tools/toolutil/pkg_genc.h
source/tools/toolutil/pkg_gencmn.c [deleted file]
source/tools/toolutil/pkg_gencmn.h
source/tools/toolutil/pkg_icu.cpp
source/tools/toolutil/pkg_icu.h
source/tools/toolutil/pkg_imp.h
source/tools/toolutil/pkgitems.cpp
source/tools/toolutil/ppucd.cpp
source/tools/toolutil/ppucd.h
source/tools/toolutil/swapimpl.cpp
source/tools/toolutil/swapimpl.h
source/tools/toolutil/toolutil.cpp
source/tools/toolutil/toolutil.h
source/tools/toolutil/toolutil.vcxproj
source/tools/toolutil/ucbuf.cpp
source/tools/toolutil/ucbuf.h
source/tools/toolutil/ucln_tu.cpp
source/tools/toolutil/ucm.c [deleted file]
source/tools/toolutil/ucm.h
source/tools/toolutil/ucmstate.c [deleted file]
source/tools/toolutil/udbgutil.cpp
source/tools/toolutil/udbgutil.h
source/tools/toolutil/unewdata.c [deleted file]
source/tools/toolutil/unewdata.h
source/tools/toolutil/uoptions.c [deleted file]
source/tools/toolutil/uoptions.h
source/tools/toolutil/uparse.c [deleted file]
source/tools/toolutil/uparse.h
source/tools/toolutil/writesrc.c [deleted file]
source/tools/toolutil/writesrc.h
source/tools/toolutil/xmlparser.cpp
source/tools/toolutil/xmlparser.h
source/tools/tzcode/Makefile.in
source/tools/tzcode/icuregions
source/tools/tzcode/icuzdump.cpp
source/tools/tzcode/tz2icu.cpp
source/tools/tzcode/tz2icu.h

index 232f9b9..d56d69c 100644 (file)
@@ -5,31 +5,31 @@
        -->
 <head>
 <META http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>ICU4C API Comparison: ICU 57 with ICU 58</title>
+<title>ICU4C API Comparison: ICU 58 (update #1: 58.2) with ICU 59</title>
 <link type="text/css" href="icu4c.css" rel="stylesheet">
 </head>
 <body>
 <a name="#_top"></a>
-<h1>ICU4C API Comparison: ICU 57 with ICU 58</h1>
+<h1>ICU4C API Comparison: ICU 58 (update #1: 58.2) with ICU 59</h1>
 <div id="toc">
 <ul>
 <li>
-<a href="#removed">Removed from ICU 57</a>
+<a href="#removed">Removed from ICU 58</a>
 </li>
 <li>
-<a href="#deprecated">Deprecated or Obsoleted in ICU 58</a>
+<a href="#deprecated">Deprecated or Obsoleted in ICU 59</a>
 </li>
 <li>
-<a href="#changed">Changed in  ICU 58</a>
+<a href="#changed">Changed in  ICU 59</a>
 </li>
 <li>
-<a href="#promoted">Promoted to stable in ICU 58</a>
+<a href="#promoted">Promoted to stable in ICU 59</a>
 </li>
 <li>
-<a href="#added">Added in ICU 58</a>
+<a href="#added">Added in ICU 59</a>
 </li>
 <li>
-<a href="#other">Other existing drafts in ICU 58</a>
+<a href="#other">Other existing drafts in ICU 59</a>
 </li>
 <li>
 <a href="#purevirtual">Signature Simplifications</a><sup style="background-color: yellow; font-size: smallest;">(new)</sup>
 <hr>
 </div>
 <a name="removed"></a>
-<h2>Removed from ICU 57</h2>
+<h2>Removed from ICU 58</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
+<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">bytestrie.h</td><td class="proto">const StringPiece&amp; icu::BytesTrie::Iterator::getString()</td><td class="stabchange">Stable<br>ICU 4.8</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEast(UErrorCode&amp;)</td><td class="">Draft<br>ICU 58</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">bytestriebuilder.h</td><td class="proto">BytesTrieBuilder&amp; icu::BytesTrieBuilder::add(const StringPiece&amp;, int32_t, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.8</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNorth(UErrorCode&amp;)</td><td class="">Draft<br>ICU 58</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">compactdecimalformat.h</td><td class="proto">UnicodeString&amp; icu::CompactDecimalFormat::format(const StringPiece&amp;, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSouth(UErrorCode&amp;)</td><td class="">Draft<br>ICU 58</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(const StringPiece&amp;, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createWest(UErrorCode&amp;)</td><td class="">Draft<br>ICU 58</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">fmtable.h</td><td class="proto">icu::Formattable::Formattable(const StringPiece&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.4</td><td>(missing)<br>
+<td class="file">platform.h</td><td class="proto"><tt>#define</tt> U_HAVE_RVALUE_REFERENCES</td><td class="">Internal</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">fmtable.h</td><td class="proto">void icu::Formattable::setDecimalNumber(const StringPiece&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.4</td><td>(missing)<br>
+<td class="file">unistr.h</td><td class="proto"><tt>#define</tt> U_STRING_CASE_MAPPER_DEFINED</td><td class="">Internal</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
-<tr class="row1">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToASCII_UTF8(const StringPiece&amp;, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToUnicodeUTF8(const StringPiece&amp;, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToASCII_UTF8(const StringPiece&amp;, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToUnicodeUTF8(const StringPiece&amp;, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LayoutEngine.h</td><td class="proto">UClassID icu::LayoutEngine::getDynamicClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LayoutEngine.h</td><td class="proto">icu::LayoutEngine::~LayoutEngine()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LayoutEngine.h</td><td class="proto">le_int32 icu::LayoutEngine::getGlyphCount()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LayoutEngine.h</td><td class="proto">le_int32 icu::LayoutEngine::layoutChars(const LEUnicode chars[], le_int32, le_int32, le_int32, le_bool, float, float, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> LayoutEngine* icu::LayoutEngine::layoutEngineFactory(const LEFontInstance*, le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> LayoutEngine* icu::LayoutEngine::layoutEngineFactory(const LEFontInstance*, le_int32, le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> UClassID icu::LayoutEngine::getStaticClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> const le_int32 icu::LayoutEngine::kTypoFlagKern</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> const le_int32 icu::LayoutEngine::kTypoFlagLiga</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getCharIndices(le_int32 charIndices[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getCharIndices(le_int32 charIndices[], le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getGlyphPosition(le_int32, float&amp;, float&amp;, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getGlyphPositions(float positions[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getGlyphs(LEGlyphID glyphs[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getGlyphs(le_uint32 glyphs[], le_uint32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::reset()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">LEGlyphID icu::LEFontInstance::mapCharToGlyph(LEUnicode32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">LEGlyphID icu::LEFontInstance::mapCharToGlyph(LEUnicode32, const LECharMapper*)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">LEGlyphID icu::LEFontInstance::mapCharToGlyph(LEUnicode32, const LECharMapper*, le_bool)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">LEUnicode32 icu::LECharMapper::mapChar(LEUnicode32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">UClassID icu::LEFontInstance::getDynamicClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">const LEFontInstance* icu::LEFontInstance::getSubFont(const LEUnicode chars[], le_int32*, le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">const void* icu::LEFontInstance::getFontTable(LETag, size_t&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::getScaleFactorX()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::getScaleFactorY()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::getXPixelsPerEm()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::getYPixelsPerEm()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::xPixelsToUnits(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::xUnitsToPoints(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::yPixelsToUnits(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::yUnitsToPoints(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">icu::LECharMapper::~LECharMapper()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">icu::LEFontInstance::~LEFontInstance()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">le_bool icu::LEFontInstance::canDisplay(LEUnicode32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">le_bool icu::LEFontInstance::getGlyphPoint(LEGlyphID, le_int32, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getAscent()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getDescent()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getLeading()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getLineHeight()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getUnitsPerEM()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto"><tt>static</tt> UClassID icu::LEFontInstance::getStaticClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto"><tt>static</tt> float icu::LEFontInstance::fixedToFloat(le_int32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto"><tt>static</tt> le_int32 icu::LEFontInstance::floatToFixed(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::getGlyphAdvance(LEGlyphID, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::mapCharsToGlyphs(const LEUnicode chars[], le_int32, le_int32, le_bool, const LECharMapper*, le_bool, LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::pixelsToUnits(LEPoint&amp;, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::transformFunits(float, float, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::unitsToPoints(LEPoint&amp;, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">LEGlyphID icu::LEGlyphStorage::getGlyphID(le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">LEGlyphID&amp; icu::LEGlyphStorage::operator[](le_int32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">LEGlyphID* icu::LEGlyphStorage::insertGlyphs(le_int32, le_int32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">LEGlyphID* icu::LEGlyphStorage::insertGlyphs(le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">UClassID icu::LEGlyphStorage::getDynamicClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">icu::LEGlyphStorage::LEGlyphStorage()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">icu::LEGlyphStorage::~LEGlyphStorage()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::allocateAuxData(LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::allocatePositions(LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::applyInsertions()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::getCharIndex(le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::getGlyphCount()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">le_uint32 icu::LEGlyphStorage::getAuxData(le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto"><tt>static</tt> UClassID icu::LEGlyphStorage::getStaticClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adjustPosition(le_int32, float, float, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptAuxDataArray(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptCharIndicesArray(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptGlyphArray(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptGlyphCount(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptGlyphCount(le_int32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptPositionArray(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::allocateGlyphArray(le_int32, le_bool, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getAuxData(le_uint32 auxData[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getCharIndices(le_int32 charIndices[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getCharIndices(le_int32 charIndices[], le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getGlyphPosition(le_int32, float&amp;, float&amp;, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getGlyphPositions(float positions[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getGlyphs(LEGlyphID glyphs[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getGlyphs(le_uint32 glyphs[], le_uint32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::moveGlyph(le_int32, le_int32, le_uint32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::reset()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::setAuxData(le_int32, le_uint32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::setCharIndex(le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::setGlyphID(le_int32, LEGlyphID, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::setPosition(le_int32, float, float, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LESwaps.h</td><td class="proto"><tt>#define</tt> SWAPL</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LESwaps.h</td><td class="proto"><tt>#define</tt> SWAPW</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LESwaps.h</td><td class="proto"><tt>static</tt> le_uint16 icu::LESwaps::swapWord(le_uint16)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LESwaps.h</td><td class="proto"><tt>static</tt> le_uint32 icu::LESwaps::swapLong(le_uint32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_AFRC_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_ARRAY_COPY</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_ARRAY_SIZE</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_ASSERT_BAD_FONT</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CHAR_FILTER_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CLIENT_MASK</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CLIENT_SHIFT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CLIG_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CSWH_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_DEBUG_BAD_FONT</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_DEFAULT_FEATURE_FLAG</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_DELETE_ARRAY</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_DLIG_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_FAILURE</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_FRAC_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GET_CLIENT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GET_GLYPH</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GET_SUB_FONT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GLYPH_MASK</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GLYPH_SHIFT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GROW_ARRAY</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_HLIG_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_Kerning_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_LIGA_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_Ligatures_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_MAKE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_NALT_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_NEW_ARRAY</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_RANGE_CHECK</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_RLIG_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_RUBY_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SALT_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SET_CLIENT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SET_GLYPH</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SET_SUB_FONT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SMCP_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS01_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS02_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS03_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS04_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS05_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS06_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS07_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SUB_FONT_MASK</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SUB_FONT_SHIFT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SUCCESS</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SWSH_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_UINT32_MAX</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_UINTPTR_MAX</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_ZERO_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_FONT_FILE_NOT_FOUND_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_ILLEGAL_ARGUMENT_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_INDEX_OUT_OF_BOUNDS_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_INTERNAL_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_MEMORY_ALLOCATION_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_MISSING_FONT_TABLE_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_NO_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_NO_LAYOUT_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_NO_SUBFONT_WARNING</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_AFRC_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_CHAR_FILTER_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_CLIG_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_CSWH_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_DLIG_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_FEATURE_ENUM_MAX</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_FRAC_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_HLIG_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_Kerning_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_LIGA_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_Ligatures_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_NALT_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_RLIG_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_RUBY_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SALT_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SMCP_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS01_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS02_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS03_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS04_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS05_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS06_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS07_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SWSH_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_ZERO_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_AALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ABVF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ABVM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ABVS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_AFRC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_AKHN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_BLWF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_BLWM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_BLWS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_C2PC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_C2SC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CASE_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CCMP_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CJCT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CLIG_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CPSP_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CSWH_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CURS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_DIST_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_DLIG_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_DNOM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_EXPT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FIN2_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FIN3_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FINA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FRAC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HALF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HALN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HIST_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HKNA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HLIG_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HNGL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_INIT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ISOL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ITAL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_JALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_JP78_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_JP83_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_JP90_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_KERN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LFBD_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LIGA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LJMO_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LNUM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LOCL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MARK_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MED2_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MEDI_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MGRK_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MKMK_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MSET_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_NALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_NLCK_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_NUKT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_NUMR_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ONUM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_OPBD_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ORDN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ORNM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PCAP_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PNUM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PREF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PRES_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PSTF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PSTS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_QWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RAND_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RKRF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RLIG_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RPHF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RTBD_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RTLA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RUBY_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SINF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SIZE_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SMCP_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SMPL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS01_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS02_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS03_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS04_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS05_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS06_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS07_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS08_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS09_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS10_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS11_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS12_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS13_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS14_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS15_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS16_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS17_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS18_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS19_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS20_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SUBS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SUPS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SWSH_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TITL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TJMO_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TNAM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TNUM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TRAD_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_UNIC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VATU_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VERT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VHAL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VJMO_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VKNA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VKRN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VPAL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VRT2_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ZERO_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_ACNT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_AVAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BASE_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BDAT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BHED_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BLOC_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BSLN_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_CFF__TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_CMAP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_CVAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_CVT__TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_DSIG_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_EBDT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_EBLC_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_EBSC_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FDSC_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FEAT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FMTX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FPGM_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FVAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GASP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GDEF_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GLYF_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GPOS_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GSUB_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GVAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HDMX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HEAD_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HHEA_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HMTX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HSTY_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_JSTF_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_JUST_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_KERN_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_LCAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_LOCA_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_LTSH_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_MAXP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_MORT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_MORX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_NAME_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_OPBD_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_OS_2_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_PCLT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_POST_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_PREP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_PROP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_TRAK_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_VDMX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_VHEA_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_VMTX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_VORG_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_ZAPF_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(const StringPiece&amp;, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">unistr.h</td><td class="proto"><tt>static</tt> UnicodeString icu::UnicodeString::fromUTF8(const StringPiece&amp;)</td><td class="stabchange">Stable<br>ICU 4.2</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>#define</tt> NULL</td><td class="stabchange">Stable<br>ICU 2.0</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-</table>
-<P></P>
-<a href="#_top">(jump back to top)</a>
-<hr>
-<a name="deprecated"></a>
-<h2>Deprecated or Obsoleted in ICU 58</h2>
-<table BORDER="1" class="genTable">
-<THEAD>
-<tr>
-<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
-</tr>
-</THEAD>
-<tr class="row1">
-<td class="file">dtfmtsym.h</td><td class="proto"><tt>enum</tt> 
-                                                       icu::DateFormatSymbols::DtContextType::DT_CONTEXT_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">dtfmtsym.h</td><td class="proto"><tt>enum</tt> 
-                                                       icu::DateFormatSymbols::DtWidthType::DT_WIDTH_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measfmt.h</td><td class="proto"><tt>enum</tt> UMeasureFormatWidth::UMEASFMT_WIDTH_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_UNIT_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateDirection::UDAT_DIRECTION_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateRelativeUnit::UDAT_RELATIVE_UNIT_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">tmunit.h</td><td class="proto"><tt>enum</tt> 
-                                                       icu::TimeUnit::UTimeUnitFields::UTIMEUNIT_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 4.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ubidi.h</td><td class="proto"><tt>#define</tt> U_BIDI_CLASS_DEFAULT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ubidi.h</td><td class="proto"><tt>enum</tt> UBiDiReorderingMode::UBIDI_REORDER_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ubrk.h</td><td class="proto"><tt>enum</tt> UBreakIteratorType::UBRK_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UCalendarDateFields::UCAL_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBidiPairedBracketType::U_BPT_COUNT</td><td class="stabchange">Stable<br>ICU 52</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UCharDirection::U_CHAR_DIRECTION_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UCharNameChoice::U_CHAR_NAME_CHOICE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UDecompositionType::U_DT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UEastAsianWidth::U_EA_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UHangulSyllableType::U_HST_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningType::U_JT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UNumericType::U_NT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_BINARY_LIMIT</td><td class="stabchange">Stable<br>ICU 2.1</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_DOUBLE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_INT_LIMIT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_MASK_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_OTHER_PROPERTY_LIMIT</td><td class="stabchange">Stable<br>ICU 4.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_STRING_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UPropertyNameChoice::U_PROPERTY_NAME_CHOICE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> USentenceBreak::U_SB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ucnv.h</td><td class="proto"><tt>enum</tt> UConverterUnicodeSet::UCNV_SET_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColAttribute::UCOL_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColAttributeValue::UCOL_ATTRIBUTE_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColBoundMode::UCOL_BOUND_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColReorderCode::UCOL_REORDER_CODE_LIMIT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrencyUsage::UCURR_USAGE_COUNT</td><td class="stabchange">Stable<br>ICU 54</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_BOOLEAN_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 3.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">udata.h</td><td class="proto"><tt>enum</tt> UDataFileAccess::UDATA_FILE_ACCESS_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePatternConflict::UDATPG_CONFLICT_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePatternField::UDATPG_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uformattable.h</td><td class="proto"><tt>enum</tt> UFormattableType::UFMT_COUNT</td><td class="stabchange">Stable<br>ICU 52</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocDataLocaleType::ULOC_DATA_LOCALE_TYPE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.1</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> ULocaleDataDelimiterType::ULOCDATA_DELIMITER_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> ULocaleDataExemplarSetType::ULOCDATA_ES_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> UMeasurementSystem::UMS_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UCurrencySpacing::UNUM_CURRENCY_SPACING_COUNT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 49</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_FORMAT_STYLE_COUNT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatSymbol::UNUM_FORMAT_SYMBOL_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">upluralrules.h</td><td class="proto"><tt>enum</tt> UPluralType::UPLURAL_TYPE_COUNT</td><td class="stabchange">Stable<br>ICU 50</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uregion.h</td><td class="proto"><tt>enum</tt> URegionType::URGN_LIMIT</td><td class="stabchange">Stable<br>ICU 51</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> UDateRelativeDateTimeFormatterStyle::UDAT_STYLE_COUNT</td><td class="stabchange">Stable<br>ICU 54</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_COUNT</td><td class="">Draft<br>ICU 57</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ures.h</td><td class="proto"><tt>enum</tt> UResType::URES_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_CODE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">usearch.h</td><td class="proto"><tt>enum</tt> USearchAttribute::USEARCH_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">usearch.h</td><td class="proto"><tt>enum</tt> USearchAttributeValue::USEARCH_ATTRIBUTE_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uset.h</td><td class="proto"><tt>enum</tt> USetSpanCondition::USET_SPAN_CONDITION_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_ANY_CASE</td><td class="stabchange">Stable<br>ICU 4.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_COLLATION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_CONVERSION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_FUNCTION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_BRK_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_ERROR_WARNING_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_FMT_PARSE_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_IDNA_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_PARSE_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_PLUGIN_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_REGEX_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_STANDARD_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-</table>
-<P></P>
-<a href="#_top">(jump back to top)</a>
-<hr>
-<a name="changed"></a>
-<h2>Changed in  ICU 58 (old, new)</h2>
-<table BORDER="1" class="genTable">
-<THEAD>
-<tr>
-<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
-</tr>
-</THEAD>
-<tr class="row1">
-<td class="file">compactdecimalformat.h</td><td class="proto">UnicodeString&amp; icu::CompactDecimalFormat::format(int32_t, UnicodeString&amp;, FieldPosition&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(double, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(int32_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(int64_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">dtfmtsym.h</td><td class="proto"><tt>enum</tt> 
-                                                       icu::DateFormatSymbols::DtContextType::DT_CONTEXT_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">dtfmtsym.h</td><td class="proto"><tt>enum</tt> 
-                                                       icu::DateFormatSymbols::DtWidthType::DT_WIDTH_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> UnicodeString icu::DateTimePatternGenerator::staticGetBaseSkeleton(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> UnicodeString icu::DateTimePatternGenerator::staticGetSkeleton(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">fieldpos.h</td><td class="proto"><tt>enum</tt> icu::FieldPosition::(anonymous) {}</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">fieldpos.h</td><td class="proto"><tt>enum</tt> icu::FieldPosition::(anonymous)::DONT_CARE</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">filteredbrk.h</td><td class="proto">BreakIterator* icu::FilteredBreakIteratorBuilder::build(BreakIterator*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">filteredbrk.h</td><td class="proto">UBool icu::FilteredBreakIteratorBuilder::suppressBreakAfter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">filteredbrk.h</td><td class="proto">UBool icu::FilteredBreakIteratorBuilder::unsuppressBreakAfter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">filteredbrk.h</td><td class="proto">icu::FilteredBreakIteratorBuilder::~FilteredBreakIteratorBuilder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">filteredbrk.h</td><td class="proto"><tt>static</tt> FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">filteredbrk.h</td><td class="proto"><tt>static</tt> FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(const Locale&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(T*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">void icu::LocalArray&lt; T &gt;::adoptInsteadAndCheckErrorCode(T*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">void icu::LocalArray&lt; T &gt;::swap(LocalArray&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">void icu::LocalPointer&lt; T &gt;::swap(LocalPointer&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">measfmt.h</td><td class="proto"><tt>enum</tt> UMeasureFormatWidth::UMEASFMT_WIDTH_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCentury(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCupMetric(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGenericTemperature(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKnot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLiterPer100Kilometers(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMileScandinavian(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPintMetric(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createRevolutionAngle(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(const Formattable&amp;, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(double, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(int32_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(int64_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_UNIT_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateDirection::UDAT_DIRECTION_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateRelativeUnit::UDAT_RELATIVE_UNIT_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">tmunit.h</td><td class="proto"><tt>enum</tt> 
-                                                       icu::TimeUnit::UTimeUnitFields::UTIMEUNIT_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 4.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ubidi.h</td><td class="proto"><tt>#define</tt> U_BIDI_CLASS_DEFAULT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ubidi.h</td><td class="proto"><tt>enum</tt> UBiDiReorderingMode::UBIDI_REORDER_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ubrk.h</td><td class="proto"><tt>enum</tt> UBreakIteratorType::UBRK_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UCalendarDateFields::UCAL_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBidiPairedBracketType::U_BPT_COUNT</td><td class="stabchange">Stable<br>ICU 52</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UCharDirection::U_CHAR_DIRECTION_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UCharNameChoice::U_CHAR_NAME_CHOICE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UDecompositionType::U_DT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UEastAsianWidth::U_EA_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_PREPEND</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.0</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_REGIONAL_INDICATOR</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 50</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_SPACING_MARK</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.0</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UHangulSyllableType::U_HST_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningType::U_JT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_CLOSE_PARENTHESIS</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.4</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_CONDITIONAL_JAPANESE_STARTER</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 49</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_H2</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 3.4</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_H3</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 3.4</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_HEBREW_LETTER</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 49</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_JL</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 3.4</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_JT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 3.4</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_JV</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 3.4</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_NEXT_LINE</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 2.6</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_REGIONAL_INDICATOR</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 50</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_WORD_JOINER</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
-<span class="verchange"><span>ICU 2.6</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UNumericType::U_NT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_BINARY_LIMIT</td><td class="stabchange">Stable<br>ICU 2.1</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_DOUBLE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_INT_LIMIT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_MASK_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_OTHER_PROPERTY_LIMIT</td><td class="stabchange">Stable<br>ICU 4.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_STRING_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UPropertyNameChoice::U_PROPERTY_NAME_CHOICE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> USentenceBreak::U_SB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_CR</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.0</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_DOUBLE_QUOTE</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 52</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_EXTEND</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.0</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_HEBREW_LETTER</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 52</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_LF</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.0</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_MIDNUMLET</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.0</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_NEWLINE</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.0</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_REGIONAL_INDICATOR</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 50</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="deprecated"></a>
+<h2>Deprecated or Obsoleted in ICU 59</h2>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
 </tr>
+</THEAD>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_SINGLE_QUOTE</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
-<span class="verchange"><span>ICU 52</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+<td class="file">utmscale.h</td><td class="proto"><tt>enum</tt> UDateTimeScale::UDTS_MAX_SCALE</td><td class="stabchange">Stable<br>ICU 3.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ucnv.h</td><td class="proto"><tt>enum</tt> UConverterUnicodeSet::UCNV_SET_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColAttribute::UCOL_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">utmscale.h</td><td class="proto"><tt>enum</tt> UTimeScaleValue::UTSV_MAX_SCALE_VALUE</td><td class="stabchange">Stable<br>ICU 3.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 59</span></span></td>
 </tr>
-<tr class="row0">
-<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColAttributeValue::UCOL_ATTRIBUTE_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="changed"></a>
+<h2>Changed in  ICU 59 (old, new)</h2>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
 </tr>
+</THEAD>
 <tr class="row1">
-<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColBoundMode::UCOL_BOUND_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColReorderCode::UCOL_REORDER_CODE_LIMIT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilePerGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrencyUsage::UCURR_USAGE_COUNT</td><td class="stabchange">Stable<br>ICU 54</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramPerDeciliter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_BOOLEAN_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMillimolePerLiter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPartPerMillion(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_PARSE_PARTIAL_LITERAL_MATCH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::format(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 3.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::formatNumeric(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">udata.h</td><td class="proto"><tt>enum</tt> UDataFileAccess::UDATA_FILE_ACCESS_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">SimpleFormatter&amp; icu::SimpleFormatter::operator=(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePatternConflict::UDATPG_CONFLICT_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPattern(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePatternField::UDATPG_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPatternMinMaxArguments(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uformattable.h</td><td class="proto"><tt>enum</tt> UFormattableType::UFMT_COUNT</td><td class="stabchange">Stable<br>ICU 52</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString icu::SimpleFormatter::getTextWithNoArguments()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocDataLocaleType::ULOC_DATA_LOCALE_TYPE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.1</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> ULocaleDataDelimiterType::ULOCDATA_DELIMITER_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> ULocaleDataExemplarSetType::ULOCDATA_ES_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> UMeasurementSystem::UMS_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndAppend(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto"><tt>#define</tt> UNISTR_OBJECT_SIZE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndReplace(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">unistr.h</td><td class="proto">void icu::UnicodeString::swap(UnicodeString&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UCurrencySpacing::UNUM_CURRENCY_SPACING_COUNT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 49</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_CURRENCY_STANDARD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_DECIMAL_COMPACT_LONG</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::~SimpleFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_DECIMAL_COMPACT_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">simpleformatter.h</td><td class="proto">int32_t icu::SimpleFormatter::getArgumentLimit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_FORMAT_STYLE_COUNT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER_BASE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatSymbol::UNUM_FORMAT_SYMBOL_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">upluralrules.h</td><td class="proto"><tt>enum</tt> UPluralType::UPLURAL_TYPE_COUNT</td><td class="stabchange">Stable<br>ICU 50</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_PRESENTATION</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uregion.h</td><td class="proto"><tt>enum</tt> URegionType::URGN_LIMIT</td><td class="stabchange">Stable<br>ICU 51</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> UDateRelativeDateTimeFormatterStyle::UDAT_STYLE_COUNT</td><td class="stabchange">Stable<br>ICU 54</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_AM_PM_MIDNIGHT_NOON_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_COUNT</td><td class="">Draft<br>ICU 57</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto">URelativeDateTimeFormatter* ureldatefmt_open(const char*, UNumberFormat*, UDateRelativeDateTimeFormatterStyle, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">ures.h</td><td class="proto"><tt>enum</tt> UResType::URES_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_DAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_CODE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_FRIDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">usearch.h</td><td class="proto"><tt>enum</tt> USearchAttribute::USEARCH_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_HOUR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">usearch.h</td><td class="proto"><tt>enum</tt> USearchAttributeValue::USEARCH_ATTRIBUTE_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MINUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uset.h</td><td class="proto"><tt>enum</tt> USetSpanCondition::USET_SPAN_CONDITION_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_ANY_CASE</td><td class="stabchange">Stable<br>ICU 4.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONTH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_checkUTF8(const USpoofChecker*, const char*, int32_t, int32_t*, UErrorCode*)</td><td class="">Deprecated<br>ICU 51</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.2</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_QUARTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_checkUnicodeString(const USpoofChecker*, const icu::UnicodeString&amp;, int32_t*, UErrorCode*)</td><td class="">Deprecated<br>ICU 51</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.2</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SATURDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_COLLATION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SECOND</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_CONVERSION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SUNDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_FUNCTION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_THURSDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>#define</tt> NULL</td><td class="">Deprecated<br>ICU 54</td><td>Stable<br>
-<span class="verchange"><span>ICU 2.0</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_TUESDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_BRK_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEDNESDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEEK</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_ERROR_WARNING_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_YEAR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_FMT_PARSE_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_combineDateAndTime(const URelativeDateTimeFormatter*, const UChar*, int32_t, const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_IDNA_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_format(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_PARSE_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_formatNumeric(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_PLUGIN_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_close(URelativeDateTimeFormatter*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_REGEX_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">utmscale.h</td><td class="proto"><tt>enum</tt> UDateTimeScale::UDTS_MAX_SCALE</td><td class="stabchange">Stable<br>ICU 3.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_STANDARD_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 58</span></span></td>
+<td class="file">utmscale.h</td><td class="proto"><tt>enum</tt> UTimeScaleValue::UTSV_MAX_SCALE_VALUE</td><td class="stabchange">Stable<br>ICU 3.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 59</span></span></td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="promoted"></a>
-<h2>Promoted to stable in ICU 58</h2>
+<h2>Promoted to stable in ICU 59</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
+<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">bytestrie.h</td><td class="proto">StringPiece icu::BytesTrie::Iterator::getString()</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.8</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">bytestriebuilder.h</td><td class="proto">BytesTrieBuilder&amp; icu::BytesTrieBuilder::add(StringPiece, int32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.8</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">compactdecimalformat.h</td><td class="proto">UnicodeString&amp; icu::CompactDecimalFormat::format(int32_t, UnicodeString&amp;, FieldPosition&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> UnicodeString icu::DateTimePatternGenerator::staticGetBaseSkeleton(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> UnicodeString icu::DateTimePatternGenerator::staticGetSkeleton(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">fieldpos.h</td><td class="proto"><tt>enum</tt> icu::FieldPosition::(anonymous) {}</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">fieldpos.h</td><td class="proto"><tt>enum</tt> icu::FieldPosition::(anonymous)::DONT_CARE</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">filteredbrk.h</td><td class="proto">BreakIterator* icu::FilteredBreakIteratorBuilder::build(BreakIterator*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">filteredbrk.h</td><td class="proto">UBool icu::FilteredBreakIteratorBuilder::suppressBreakAfter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">filteredbrk.h</td><td class="proto">UBool icu::FilteredBreakIteratorBuilder::unsuppressBreakAfter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">filteredbrk.h</td><td class="proto">icu::FilteredBreakIteratorBuilder::~FilteredBreakIteratorBuilder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">filteredbrk.h</td><td class="proto"><tt>static</tt> FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">filteredbrk.h</td><td class="proto"><tt>static</tt> FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(const Locale&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">fmtable.h</td><td class="proto">icu::Formattable::Formattable(StringPiece, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">fmtable.h</td><td class="proto">void icu::Formattable::setDecimalNumber(StringPiece, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToASCII_UTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.6</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToUnicodeUTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.6</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToASCII_UTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.6</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToUnicodeUTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.6</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(T*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">void icu::LocalArray&lt; T &gt;::adoptInsteadAndCheckErrorCode(T*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">void icu::LocalArray&lt; T &gt;::swap(LocalArray&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">void icu::LocalPointer&lt; T &gt;::swap(LocalPointer&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCentury(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCupMetric(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGenericTemperature(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">localpointer.h</td><td class="proto">LocalArray&lt;T&gt;&amp; icu::LocalArray&lt; T &gt;::operator=(LocalArray&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKnot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">localpointer.h</td><td class="proto">LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::operator=(LocalPointer&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLiterPer100Kilometers(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(LocalArray&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMileScandinavian(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer&lt; T &gt;::LocalPointer(LocalPointer&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPintMetric(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createRevolutionAngle(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilePerGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramPerDeciliter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ADLAM</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMillimolePerLiter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_BHAIKSUKI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPartPerMillion(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYRILLIC_EXTENDED_C</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::format(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_GLAGOLITIC_SUPPLEMENT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::formatNumeric(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">SimpleFormatter&amp; icu::SimpleFormatter::operator=(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_MARCHEN</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPattern(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_MONGOLIAN_SUPPLEMENT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPatternMinMaxArguments(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_NEWA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString icu::SimpleFormatter::getTextWithNoArguments()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_OSAGE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGUT_COMPONENTS</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGUT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_BASE_GAZ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndAppend(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndReplace(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_GLUE_AFTER_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_FEH</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_NOON</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::~SimpleFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_QAF</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">simpleformatter.h</td><td class="proto">int32_t icu::SimpleFormatter::getArgumentLimit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER_BASE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_PRESENTATION</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_BASE_GAZ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_AM_PM_MIDNIGHT_NOON_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">unistr.h</td><td class="proto">UnicodeString&amp; icu::UnicodeString::operator=(UnicodeString&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_GLUE_AFTER_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(UnicodeString&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ureldatefmt.h</td><td class="proto">URelativeDateTimeFormatter* ureldatefmt_open(const char*, UNumberFormat*, UDateRelativeDateTimeFormatterStyle, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_DAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_PARSE_PARTIAL_LITERAL_MATCH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_FRIDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">unistr.h</td><td class="proto"><tt>#define</tt> UNISTR_OBJECT_SIZE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_HOUR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto"><tt>static</tt> UnicodeString icu::UnicodeString::fromUTF8(StringPiece)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.2</span></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MINUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">unistr.h</td><td class="proto">void icu::UnicodeString::swap(UnicodeString&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_CURRENCY_STANDARD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONTH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_DECIMAL_COMPACT_LONG</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_QUARTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_DECIMAL_COMPACT_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SATURDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_ADLAM</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SECOND</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_BHAIKSUKI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SUNDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_HAN_WITH_BOPOMOFO</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_THURSDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_JAMO</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_TUESDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_MARCHEN</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEDNESDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_NEWA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEEK</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_OSAGE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_YEAR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_SYMBOLS_EMOJI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_combineDateAndTime(const URelativeDateTimeFormatter*, const UChar*, int32_t, const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_checkUTF8(const USpoofChecker*, const char*, int32_t, int32_t*, UErrorCode*)</td><td class="">Deprecated<br>ICU 51</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.2</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_format(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_checkUnicodeString(const USpoofChecker*, const icu::UnicodeString&amp;, int32_t*, UErrorCode*)</td><td class="">Deprecated<br>ICU 51</td><td>Stable<br>
-<span class="verchange"><span>ICU 4.2</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_formatNumeric(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>#define</tt> NULL</td><td class="">Deprecated<br>ICU 54</td><td>Stable<br>
-<span class="verchange"><span>ICU 2.0</span>
-<br>
-<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_close(URelativeDateTimeFormatter*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="added"></a>
-<h2>Added in ICU 58</h2>
+<h2>Added in ICU 59</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
+<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">bytestrie.h</td><td class="proto">StringPiece icu::BytesTrie::Iterator::getString()</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.8</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">bytestriebuilder.h</td><td class="proto">BytesTrieBuilder&amp; icu::BytesTrieBuilder::add(StringPiece, int32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.8</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">compactdecimalformat.h</td><td class="proto">UnicodeString&amp; icu::CompactDecimalFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">fmtable.h</td><td class="proto">icu::Formattable::Formattable(StringPiece, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">fmtable.h</td><td class="proto">void icu::Formattable::setDecimalNumber(StringPiece, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToASCII_UTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.6</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToUnicodeUTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.6</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToASCII_UTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.6</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToUnicodeUTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.6</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measfmt.h</td><td class="proto">UnicodeString icu::MeasureFormat::getUnitDisplayName(const MeasureUnit&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEast(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNorth(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSouth(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createWest(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.4</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">tznames.h</td><td class="proto">void icu::TimeZoneNames::getDisplayNames(const UnicodeString&amp;, const UTimeZoneNameType types[], int32_t, UDate, UnicodeString dest[], UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::fold(uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">tznames.h</td><td class="proto">void icu::TimeZoneNames::loadAllDisplayNames(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::toLower(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ubiditransform.h</td><td class="proto">UBiDiTransform* ubiditransform_open(UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::toTitle(const char*, uint32_t, BreakIterator*, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiMirroring::UBIDI_MIRRORING_OFF</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::toUpper(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiMirroring::UBIDI_MIRRORING_ON</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::utf8Fold(uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiOrder::UBIDI_LOGICAL</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::utf8ToLower(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiOrder::UBIDI_VISUAL</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::utf8ToTitle(const char*, uint32_t, BreakIterator*, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ubiditransform.h</td><td class="proto">uint32_t ubiditransform_transform(UBiDiTransform*, const UChar*, int32_t, UChar*, int32_t, UBiDiLevel, UBiDiOrder, UBiDiLevel, UBiDiOrder, UBiDiMirroring, uint32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::utf8ToUpper(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ubiditransform.h</td><td class="proto">void ubiditransform_close(UBiDiTransform*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">char16ptr.h</td><td class="proto">char16_t* icu::Char16Ptr::get()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ADLAM</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">const char16_t* icu::ConstChar16Ptr::get()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_BHAIKSUKI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::Char16Ptr(char16_t*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYRILLIC_EXTENDED_C</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::Char16Ptr(std::nullptr_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_GLAGOLITIC_SUPPLEMENT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::Char16Ptr(uint16_t*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::Char16Ptr(wchar_t*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_MARCHEN</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::operator char16_t* ()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_MONGOLIAN_SUPPLEMENT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::~Char16Ptr()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_NEWA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::ConstChar16Ptr(const char16_t*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_OSAGE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::ConstChar16Ptr(const std::nullptr_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGUT_COMPONENTS</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::ConstChar16Ptr(const uint16_t*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGUT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::ConstChar16Ptr(const wchar_t*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_BASE_GAZ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::operator const char16_t* ()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::~ConstChar16Ptr()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getCoarseChangesIterator()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_GLUE_AFTER_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getCoarseIterator()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getFineChangesIterator()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_FEH</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getFineIterator()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_NOON</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">UBool icu::Edits::copyErrorTo(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_QAF</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">UBool icu::Edits::hasChanges()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">icu::Edits::Edits()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">icu::Edits::~Edits()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">int32_t icu::Edits::lengthDelta()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_BASE_GAZ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">void icu::Edits::addReplace(int32_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">void icu::Edits::addUnchanged(int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">edits.h</td><td class="proto">void icu::Edits::reset()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_GLUE_AFTER_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">localpointer.h</td><td class="proto">LocalArray&lt;T&gt;&amp; icu::LocalArray&lt; T &gt;::operator=(LocalArray&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">localpointer.h</td><td class="proto">LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::operator=(LocalPointer&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContext::UDISPCTX_NO_SUBSTITUTE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(LocalArray&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContext::UDISPCTX_SUBSTITUTE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer&lt; T &gt;::LocalPointer(LocalPointer&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContextType::UDISPCTX_TYPE_SUBSTITUTE_HANDLING</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoint(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto"><tt>static</tt> UnicodeString icu::UnicodeString::fromUTF8(StringPiece)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 4.2</span></span></td>
+<td class="file">platform.h</td><td class="proto"><tt>#define</tt> U_PLATFORM_HAS_WINUWP_API</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_ADLAM</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const Formattable&amp;, const NumberFormat&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_BHAIKSUKI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_openBinaryRules(const uint8_t*, int32_t, const UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_HAN_WITH_BOPOMOFO</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ubrk.h</td><td class="proto">int32_t ubrk_getBinaryRules(UBreakIterator*, uint8_t*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_JAMO</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">ucasemap.h</td><td class="proto"><tt>#define</tt> UCASEMAP_OMIT_UNCHANGED_TEXT</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_MARCHEN</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> U_CHAR16_IS_TYPEDEF</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_NEWA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">unistr.h</td><td class="proto">UNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const uint16_t*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_OSAGE</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">unistr.h</td><td class="proto">UNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const wchar_t*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_SYMBOLS_EMOJI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+<td class="file">unistr.h</td><td class="proto">UnicodeString&amp; icu::UnicodeString::operator=(UnicodeString&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">URestrictionLevel uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(UnicodeString&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 56</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">USpoofCheckResult* uspoof_openCheckResult(UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const std::nullptr_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckResultPointer,,)</td><td class="">(missing)</td><td>
-<br>
-<span class=""><span></span>
-<br>
-<b class="bigwarn" title="A new API was introduced that was not tagged.">(untagged)</b></span></td>
+<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const std::nullptr_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">U_NAMESPACE_END int32_t uspoof_getCheckResultChecks(const USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const uint16_t*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">const USet* uspoof_getCheckResultNumerics(const USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const wchar_t*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> URestrictionLevel::USPOOF_UNDEFINED_RESTRICTIVE</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(std::nullptr_t, int32_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_CONFUSABLE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2(const USpoofChecker*, const UChar*, int32_t, USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(wchar_t*, int32_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2UTF8(const USpoofChecker*, const char*, int32_t, USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">unum.h</td><td class="proto">int32_t unum_formatDoubleForFields(const UNumberFormat*, double, UChar*, int32_t, UFieldPositionIterator*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2UnicodeString(const USpoofChecker*, const icu::UnicodeString&amp;, USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">upluralrules.h</td><td class="proto">UEnumeration* uplrules_getKeywords(const UPluralRules*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">void uspoof_closeCheckResult(USpoofCheckResult*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 58</span></span></td>
+<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectWithFormat(const UPluralRules*, double, const UNumberFormat*, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 59</span></span></td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="other"></a>
-<h2>Other existing drafts in ICU 58</h2>
+<h2>Other existing drafts in ICU 59</h2>
 <div class="other">
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
+<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
 </tr>
 </THEAD>
 <tr class="row1">
 <td class="file">localpointer.h</td><td class="proto">LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::moveFrom(LocalPointer&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilePerGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramPerDeciliter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMillimolePerLiter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPartPerMillion(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::format(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::formatNumeric(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">SimpleFormatter&amp; icu::SimpleFormatter::operator=(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPattern(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPatternMinMaxArguments(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString icu::SimpleFormatter::getTextWithNoArguments()</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndAppend(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndReplace(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">measfmt.h</td><td class="proto">UnicodeString icu::MeasureFormat::getUnitDisplayName(const MeasureUnit&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter()</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">ubiditransform.h</td><td class="proto">UBiDiTransform* ubiditransform_open(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiMirroring::UBIDI_MIRRORING_OFF</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiMirroring::UBIDI_MIRRORING_ON</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::~SimpleFormatter()</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiOrder::UBIDI_LOGICAL</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">int32_t icu::SimpleFormatter::getArgumentLimit()</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiOrder::UBIDI_VISUAL</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER_BASE</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">ubiditransform.h</td><td class="proto">uint32_t ubiditransform_transform(UBiDiTransform*, const UChar*, int32_t, UChar*, int32_t, UBiDiLevel, UBiDiOrder, UBiDiLevel, UBiDiOrder, UBiDiMirroring, uint32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">ubiditransform.h</td><td class="proto">void ubiditransform_close(UBiDiTransform*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_PRESENTATION</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContext::UDISPCTX_NO_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContext::UDISPCTX_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_AM_PM_MIDNIGHT_NOON_FIELD</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContextType::UDISPCTX_TYPE_SUBSTITUTE_HANDLING</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row1">
 <td class="file">unistr.h</td><td class="proto">UnicodeString&amp; icu::UnicodeString::moveFrom(UnicodeString&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft<br>ICU 56</td>
 <td class="file">uregex.h</td><td class="proto"><tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ</td><td class="" colspan="2" align="center">Draft<br>ICU 2.4</td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">URelativeDateTimeFormatter* ureldatefmt_open(const char*, UNumberFormat*, UDateRelativeDateTimeFormatterStyle, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_DAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_FRIDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_HOUR</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MINUTE</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONTH</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_QUARTER</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SATURDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SECOND</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SUNDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">URestrictionLevel uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_THURSDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">USpoofCheckResult* uspoof_openCheckResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_TUESDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">U_NAMESPACE_END int32_t uspoof_getCheckResultChecks(const USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEDNESDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">const USet* uspoof_getCheckResultNumerics(const USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEEK</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_CONFUSABLE</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_YEAR</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2(const USpoofChecker*, const UChar*, int32_t, USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_combineDateAndTime(const URelativeDateTimeFormatter*, const UChar*, int32_t, const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2UTF8(const USpoofChecker*, const char*, int32_t, USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_format(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2UnicodeString(const USpoofChecker*, const icu::UnicodeString&amp;, USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_formatNumeric(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_close(URelativeDateTimeFormatter*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">void uspoof_closeCheckResult(USpoofCheckResult*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
 </tr>
 </table>
 </div>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <p>
-<i><font size="-1">Contents generated by StableAPI tool on Thu Sep 22 11:14:21 PDT 2016<br>Copyright (C) 2016, International Business Machines Corporation, All Rights Reserved.</font></i>
+<i><font size="-1">Contents generated by StableAPI tool on Wed Apr 05 23:17:58 UTC 2017<br>Copyright (C) 2017, International Business Machines Corporation, All Rights Reserved.</font></i>
 </p>
 </body>
 </html>
diff --git a/LICENSE b/LICENSE
index 90be7cd..c5295da 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
 
-Copyright © 1991-2016 Unicode, Inc. All rights reserved.
+Copyright © 1991-2017 Unicode, Inc. All rights reserved.
 Distributed under the Terms of Use in http://www.unicode.org/copyright.html
 
 Permission is hereby granted, free of charge, to any person obtaining
index ed27920..fd770ee 100644 (file)
@@ -130,436 +130,12 @@ icu/source/io/io.vcxproj
 icu/source/io/io.vcxproj.filters
 icu/source/data/makedata.vcxproj.filters
 icu/source/data/makedata.vcxproj
-icu/source/data/unit/fil_PH.txt
-icu/source/data/unit/kok.txt
-icu/source/data/unit/zh_Hans_HK.txt
-icu/source/data/unit/ga.txt
-icu/source/data/unit/br.txt
-icu/source/data/unit/en_VC.txt
-icu/source/data/unit/en_BS.txt
-icu/source/data/unit/sr_Latn_YU.txt
-icu/source/data/unit/th_TH_TRADITIONAL.txt
-icu/source/data/unit/en_CM.txt
-icu/source/data/unit/te.txt
-icu/source/data/unit/ee.txt
-icu/source/data/unit/sr_Latn_RS.txt
-icu/source/data/unit/zu.txt
-icu/source/data/unit/nb_NO.txt
-icu/source/data/unit/ebu.txt
-icu/source/data/unit/luo.txt
-icu/source/data/unit/en_VG.txt
-icu/source/data/unit/ksh.txt
-icu/source/data/unit/en_UG.txt
-icu/source/data/unit/es_CO.txt
-icu/source/data/unit/en_SS.txt
-icu/source/data/unit/dua.txt
-icu/source/data/unit/kam.txt
-icu/source/data/unit/en_SX.txt
-icu/source/data/unit/th.txt
-icu/source/data/unit/en_MT.txt
-icu/source/data/unit/no_NO_NY.txt
-icu/source/data/unit/mua.txt
-icu/source/data/unit/kl.txt
-icu/source/data/unit/es_BR.txt
-icu/source/data/unit/hr.txt
-icu/source/data/unit/en_GI.txt
-icu/source/data/unit/mas.txt
-icu/source/data/unit/lg.txt
-icu/source/data/unit/eo.txt
-icu/source/data/unit/sk.txt
-icu/source/data/unit/yo.txt
-icu/source/data/unit/pa_IN.txt
-icu/source/data/unit/sr_XK.txt
-icu/source/data/unit/sh_BA.txt
-icu/source/data/unit/es_PR.txt
-icu/source/data/unit/sr_Latn_CS.txt
-icu/source/data/unit/en_NA.txt
-icu/source/data/unit/tzm.txt
-icu/source/data/unit/ca.txt
-icu/source/data/unit/ru.txt
-icu/source/data/unit/is.txt
-icu/source/data/unit/twq.txt
-icu/source/data/unit/si.txt
-icu/source/data/unit/chr.txt
-icu/source/data/unit/bez.txt
-icu/source/data/unit/en_KE.txt
-icu/source/data/unit/pt_CH.txt
-icu/source/data/unit/zh_Hant_HK.txt
-icu/source/data/unit/en_ZA.txt
-icu/source/data/unit/en_JE.txt
-icu/source/data/unit/en_TC.txt
-icu/source/data/unit/in_ID.txt
-icu/source/data/unit/jmc.txt
-icu/source/data/unit/zh_Hant_MO.txt
-icu/source/data/unit/hu.txt
-icu/source/data/unit/pa_Arab_PK.txt
-icu/source/data/unit/pa.txt
-icu/source/data/unit/en_NH.txt
-icu/source/data/unit/uz_Arab.txt
-icu/source/data/unit/zh_Hant.txt
-icu/source/data/unit/en_TK.txt
-icu/source/data/unit/qu.txt
-icu/source/data/unit/sr_BA.txt
-icu/source/data/unit/in.txt
-icu/source/data/unit/en_PW.txt
-icu/source/data/unit/dyo.txt
-icu/source/data/unit/be.txt
-icu/source/data/unit/sr_Cyrl_RS.txt
-icu/source/data/unit/gsw.txt
-icu/source/data/unit/en_MO.txt
-icu/source/data/unit/id.txt
-icu/source/data/unit/shi.txt
-icu/source/data/unit/ak.txt
-icu/source/data/unit/yav.txt
-icu/source/data/unit/shi_Latn.txt
-icu/source/data/unit/es_VE.txt
-icu/source/data/unit/sbp.txt
-icu/source/data/unit/iw_IL.txt
-icu/source/data/unit/uz_AF.txt
-icu/source/data/unit/es_UY.txt
-icu/source/data/unit/ti.txt
-icu/source/data/unit/xog.txt
-icu/source/data/unit/guz.txt
-icu/source/data/unit/shi_Tfng.txt
-icu/source/data/unit/sah.txt
-icu/source/data/unit/mo.txt
-icu/source/data/unit/es_EC.txt
-icu/source/data/unit/pt_GQ.txt
-icu/source/data/unit/en_AG.txt
-icu/source/data/unit/fr.txt
-icu/source/data/unit/gv.txt
-icu/source/data/unit/es_PY.txt
-icu/source/data/unit/th_TH.txt
-icu/source/data/unit/az.txt
-icu/source/data/unit/bs_Latn.txt
-icu/source/data/unit/en_SG.txt
-icu/source/data/unit/sr_Cyrl_XK.txt
-icu/source/data/unit/sv.txt
-icu/source/data/unit/so.txt
-icu/source/data/unit/en_DG.txt
-icu/source/data/unit/mgh.txt
-icu/source/data/unit/gd.txt
-icu/source/data/unit/en_DK.txt
-icu/source/data/unit/en_ZW.txt
-icu/source/data/unit/en_SL.txt
-icu/source/data/unit/it.txt
-icu/source/data/unit/luy.txt
-icu/source/data/unit/sw.txt
-icu/source/data/unit/ar.txt
-icu/source/data/unit/fur.txt
-icu/source/data/unit/en_MG.txt
-icu/source/data/unit/rwk.txt
-icu/source/data/unit/es_US.txt
-icu/source/data/unit/naq.txt
-icu/source/data/unit/de_CH.txt
-icu/source/data/unit/sn.txt
-icu/source/data/unit/en_NR.txt
-icu/source/data/unit/mk.txt
-icu/source/data/unit/cgg.txt
-icu/source/data/unit/lrc.txt
-icu/source/data/unit/sr_Cyrl_BA.txt
-icu/source/data/unit/kw.txt
-icu/source/data/unit/zh_Hans.txt
-icu/source/data/unit/sh_YU.txt
-icu/source/data/unit/en_001.txt
-icu/source/data/unit/en_MS.txt
-icu/source/data/unit/ast.txt
-icu/source/data/unit/pa_Guru_IN.txt
-icu/source/data/unit/ka.txt
-icu/source/data/unit/wae.txt
-icu/source/data/unit/lt.txt
-icu/source/data/unit/en_NF.txt
-icu/source/data/unit/ig.txt
-icu/source/data/unit/es_PE.txt
-icu/source/data/unit/kea.txt
-icu/source/data/unit/uz.txt
-icu/source/data/unit/uz_Latn.txt
-icu/source/data/unit/en_CA.txt
-icu/source/data/unit/uz_Latn_UZ.txt
-icu/source/data/unit/pl.txt
-icu/source/data/unit/sr_Latn_BA.txt
-icu/source/data/unit/en_KI.txt
-icu/source/data/unit/uz_Cyrl.txt
-icu/source/data/unit/en_MY.txt
-icu/source/data/unit/fr_HT.txt
-icu/source/data/unit/sh_CS.txt
-icu/source/data/unit/rw.txt
-icu/source/data/unit/en_PN.txt
-icu/source/data/unit/ja.txt
-icu/source/data/unit/brx.txt
-icu/source/data/unit/de.txt
-icu/source/data/unit/en_BZ.txt
-icu/source/data/unit/cs.txt
-icu/source/data/unit/mr.txt
-icu/source/data/unit/en_ZM.txt
-icu/source/data/unit/es_NI.txt
-icu/source/data/unit/en_CX.txt
-icu/source/data/unit/en_BB.txt
-icu/source/data/unit/en_SZ.txt
-icu/source/data/unit/saq.txt
-icu/source/data/unit/en_DM.txt
-icu/source/data/unit/bem.txt
-icu/source/data/unit/en_IL.txt
-icu/source/data/unit/ii.txt
-icu/source/data/unit/vi.txt
-icu/source/data/unit/zh_TW.txt
-icu/source/data/unit/no_NO.txt
-icu/source/data/unit/kab.txt
-icu/source/data/unit/yue.txt
-icu/source/data/unit/en_DE.txt
-icu/source/data/unit/kk.txt
-icu/source/data/unit/tr.txt
-icu/source/data/unit/en_CK.txt
-icu/source/data/unit/shi_MA.txt
-icu/source/data/unit/fil.txt
-icu/source/data/unit/zgh.txt
-icu/source/data/unit/en.txt
-icu/source/data/unit/en_KN.txt
-icu/source/data/unit/en_MW.txt
-icu/source/data/unit/my.txt
-icu/source/data/unit/pt_PT.txt
-icu/source/data/unit/bs.txt
-icu/source/data/unit/sv_FI.txt
-icu/source/data/unit/en_GY.txt
-icu/source/data/unit/fr_CA.txt
-icu/source/data/unit/sr_Cyrl_YU.txt
-icu/source/data/unit/pt_LU.txt
-icu/source/data/unit/fi.txt
-icu/source/data/unit/en_IE.txt
-icu/source/data/unit/sr.txt
-icu/source/data/unit/vai_LR.txt
-icu/source/data/unit/bg.txt
-icu/source/data/unit/bs_Cyrl.txt
-icu/source/data/unit/ky.txt
-icu/source/data/unit/sr_CS.txt
-icu/source/data/unit/nyn.txt
-icu/source/data/unit/sr_ME.txt
-icu/source/data/unit/en_PK.txt
-icu/source/data/unit/af.txt
-icu/source/data/unit/mer.txt
-icu/source/data/unit/nl.txt
-icu/source/data/unit/en_IN.txt
-icu/source/data/unit/en_NL.txt
-icu/source/data/unit/ne.txt
-icu/source/data/unit/sr_YU.txt
-icu/source/data/unit/nus.txt
-icu/source/data/unit/gu.txt
-icu/source/data/unit/am.txt
-icu/source/data/unit/vai_Vaii_LR.txt
-icu/source/data/unit/en_HK.txt
-icu/source/data/unit/kn.txt
-icu/source/data/unit/es_SV.txt
-icu/source/data/unit/et.txt
-icu/source/data/unit/pa_Arab.txt
-icu/source/data/unit/az_AZ.txt
-icu/source/data/unit/mn.txt
-icu/source/data/unit/en_TT.txt
-icu/source/data/unit/en_NU.txt
-icu/source/data/unit/es.txt
-icu/source/data/unit/da.txt
-icu/source/data/unit/en_SH.txt
-icu/source/data/unit/en_CC.txt
-icu/source/data/unit/ug.txt
-icu/source/data/unit/en_GB.txt
-icu/source/data/unit/pt_AO.txt
-icu/source/data/unit/es_BO.txt
-icu/source/data/unit/or.txt
-icu/source/data/unit/nb.txt
-icu/source/data/unit/lag.txt
-icu/source/data/unit/es_GT.txt
-icu/source/data/unit/sr_RS.txt
-icu/source/data/unit/en_AU.txt
-icu/source/data/unit/zh_Hans_SG.txt
-icu/source/data/unit/vai_Vaii.txt
-icu/source/data/unit/sr_Cyrl.txt
-icu/source/data/unit/pa_PK.txt
-icu/source/data/unit/bn.txt
-icu/source/data/unit/cy.txt
-icu/source/data/unit/es_DO.txt
-icu/source/data/unit/fy.txt
-icu/source/data/unit/en_VU.txt
-icu/source/data/unit/en_ER.txt
-icu/source/data/unit/sq.txt
-icu/source/data/unit/lv.txt
-icu/source/data/unit/to.txt
-icu/source/data/unit/bas.txt
-icu/source/data/unit/ur.txt
-icu/source/data/unit/ro_MD.txt
-icu/source/data/unit/ksf.txt
-icu/source/data/unit/se.txt
-icu/source/data/unit/om.txt
-icu/source/data/unit/rm.txt
-icu/source/data/unit/en_IM.txt
-icu/source/data/unit/kde.txt
-icu/source/data/unit/zh_CN.txt
-icu/source/data/unit/es_CU.txt
-icu/source/data/unit/en_GG.txt
-icu/source/data/unit/en_RW.txt
-icu/source/data/unit/ro.txt
-icu/source/data/unit/nmg.txt
-icu/source/data/unit/dz.txt
-icu/source/data/unit/en_AT.txt
-icu/source/data/unit/en_SB.txt
-icu/source/data/unit/pa_Guru.txt
-icu/source/data/unit/en_FJ.txt
-icu/source/data/unit/es_PA.txt
-icu/source/data/unit/asa.txt
-icu/source/data/unit/ff.txt
-icu/source/data/unit/zh_Hans_CN.txt
-icu/source/data/unit/root.txt
-icu/source/data/unit/en_BM.txt
-icu/source/data/unit/en_WS.txt
-icu/source/data/unit/ja_JP_TRADITIONAL.txt
-icu/source/data/unit/en_FI.txt
-icu/source/data/unit/ewo.txt
-icu/source/data/unit/pt_GW.txt
-icu/source/data/unit/ln.txt
-icu/source/data/unit/zh_HK.txt
-icu/source/data/unit/jgo.txt
-icu/source/data/unit/dje.txt
-icu/source/data/unit/en_BW.txt
-icu/source/data/unit/es_CR.txt
-icu/source/data/unit/pt_CV.txt
-icu/source/data/unit/es_419.txt
-icu/source/data/unit/ms.txt
-icu/source/data/unit/ja_JP.txt
-icu/source/data/unit/fa.txt
-icu/source/data/unit/en_KY.txt
-icu/source/data/unit/en_CH.txt
-icu/source/data/unit/en_PG.txt
-icu/source/data/unit/he_IL.txt
-icu/source/data/unit/mg.txt
-icu/source/data/unit/as.txt
-icu/source/data/unit/smn.txt
-icu/source/data/unit/bs_BA.txt
-icu/source/data/unit/lo.txt
-icu/source/data/unit/en_AI.txt
-icu/source/data/unit/sg.txt
-icu/source/data/unit/he.txt
-icu/source/data/unit/es_MX.txt
-icu/source/data/unit/no.txt
-icu/source/data/unit/bo.txt
-icu/source/data/unit/ml.txt
-icu/source/data/unit/gl.txt
-icu/source/data/unit/ps.txt
-icu/source/data/unit/en_JM.txt
-icu/source/data/unit/teo.txt
-icu/source/data/unit/en_LC.txt
-icu/source/data/unit/nds.txt
-icu/source/data/unit/sr_Cyrl_CS.txt
-icu/source/data/unit/agq.txt
-icu/source/data/unit/pt.txt
-icu/source/data/unit/es_CL.txt
-icu/source/data/unit/bs_Latn_BA.txt
-icu/source/data/unit/bm.txt
-icu/source/data/unit/nn.txt
-icu/source/data/unit/nnh.txt
-icu/source/data/unit/zh.txt
-icu/source/data/unit/dav.txt
-icu/source/data/unit/ha.txt
-icu/source/data/unit/tl_PH.txt
-icu/source/data/unit/sh.txt
-icu/source/data/unit/tl.txt
-icu/source/data/unit/khq.txt
-icu/source/data/unit/lkt.txt
-icu/source/data/unit/ks.txt
-icu/source/data/unit/pt_ST.txt
-icu/source/data/unit/en_SI.txt
-icu/source/data/unit/uk.txt
-icu/source/data/unit/ta.txt
-icu/source/data/unit/fo.txt
-icu/source/data/unit/shi_Tfng_MA.txt
-icu/source/data/unit/os.txt
-icu/source/data/unit/ur_IN.txt
-icu/source/data/unit/lb.txt
-icu/source/data/unit/es_HN.txt
-icu/source/data/unit/hsb.txt
-icu/source/data/unit/en_GH.txt
-icu/source/data/unit/zh_Hans_MO.txt
-icu/source/data/unit/az_Latn_AZ.txt
-icu/source/data/unit/en_TZ.txt
-icu/source/data/unit/mzn.txt
-icu/source/data/unit/zh_SG.txt
-icu/source/data/unit/en_150.txt
-icu/source/data/unit/lu.txt
-icu/source/data/unit/el.txt
-icu/source/data/unit/en_CY.txt
-icu/source/data/unit/uz_Arab_AF.txt
-icu/source/data/unit/kln.txt
-icu/source/data/unit/seh.txt
-icu/source/data/unit/mt.txt
-icu/source/data/unit/ckb.txt
-icu/source/data/unit/km.txt
-icu/source/data/unit/ksb.txt
-icu/source/data/unit/en_MU.txt
-icu/source/data/unit/vai_Latn.txt
-icu/source/data/unit/en_SD.txt
-icu/source/data/unit/en_NG.txt
-icu/source/data/unit/en_FM.txt
-icu/source/data/unit/sr_Latn_ME.txt
-icu/source/data/unit/haw.txt
-icu/source/data/unit/yi.txt
-icu/source/data/unit/en_LR.txt
-icu/source/data/unit/vun.txt
-icu/source/data/unit/en_FK.txt
-icu/source/data/unit/az_Cyrl.txt
-icu/source/data/unit/mfe.txt
-icu/source/data/unit/zh_Hant_TW.txt
-icu/source/data/unit/es_AR.txt
-icu/source/data/unit/en_PH.txt
-icu/source/data/unit/pt_MZ.txt
-icu/source/data/unit/hy.txt
-icu/source/data/unit/dsb.txt
-icu/source/data/unit/en_GD.txt
-icu/source/data/unit/en_SE.txt
-icu/source/data/unit/ki.txt
-icu/source/data/unit/ko.txt
-icu/source/data/unit/en_NZ.txt
-icu/source/data/unit/iw.txt
-icu/source/data/unit/rn.txt
-icu/source/data/unit/en_BE.txt
-icu/source/data/unit/en_RH.txt
-icu/source/data/unit/hi.txt
-icu/source/data/unit/en_TO.txt
-icu/source/data/unit/id_ID.txt
-icu/source/data/unit/nd.txt
-icu/source/data/unit/pt_TL.txt
-icu/source/data/unit/vai.txt
-icu/source/data/unit/mgo.txt
-icu/source/data/unit/en_LS.txt
-icu/source/data/unit/ses.txt
-icu/source/data/unit/nn_NO.txt
-icu/source/data/unit/eu.txt
-icu/source/data/unit/en_SC.txt
-icu/source/data/unit/zh_MO.txt
-icu/source/data/unit/sl.txt
-icu/source/data/unit/sr_Latn.txt
-icu/source/data/unit/ce.txt
-icu/source/data/unit/en_IO.txt
-icu/source/data/unit/en_GM.txt
-icu/source/data/unit/en_TV.txt
-icu/source/data/unit/rof.txt
-icu/source/data/unit/kkj.txt
-icu/source/data/unit/pt_MO.txt
-icu/source/data/unit/az_Latn.txt
-icu/source/data/unit/uz_UZ.txt
+icu/source/data/makedata_uwp.vcxproj
 icu/source/data/unidata/confusablesWholeScript.txt
 icu/source/data/unidata/FractionalUCA.txt
 icu/source/data/unidata/confusables.txt
 icu/source/data/unidata/changes.txt
 icu/source/data/unidata/UCARules.txt
-icu/source/data/misc/windowsZones.txt
-icu/source/data/misc/keyTypeData.txt
-icu/source/data/misc/supplementalData.txt
-icu/source/data/misc/dayPeriods.txt
-icu/source/data/misc/metaZones.txt
-icu/source/data/misc/likelySubtags.txt
-icu/source/data/misc/numberingSystems.txt
-icu/source/data/misc/metadata.txt
-icu/source/data/misc/currencyNumericCodes.txt
-icu/source/data/misc/genderList.txt
-icu/source/data/misc/timezoneTypes.txt
-icu/source/data/misc/plurals.txt
 icu/source/tools/gensprep/gensprep.vcxproj
 icu/source/tools/gensprep/gensprep.vcxproj.filters
 icu/source/tools/genbrk/genbrk.vcxproj.filters
@@ -599,8 +175,10 @@ icu/source/stubdata/stubdata.vcxproj.filters
 icu/source/stubdata/stubdata.vcxproj
 icu/source/i18n/i18n.vcxproj
 icu/source/i18n/i18n.vcxproj.filters
+icu/source/i18n/i18n_uwp.vcxproj
 icu/source/common/common.vcxproj.filters
 icu/source/common/common.vcxproj
+icu/source/common/common_uwp.vcxproj
 icu/source/extra/uconv/uconv.vcxproj.filters
 icu/source/extra/uconv/uconv.vcxproj
 icu/source/extra/uconv/resources/fr.txt
index 25591ce..2484672 100644 (file)
@@ -11,8 +11,8 @@
     The ICU license is now in plain text format, see <a href="./LICENSE">LICENSE</a>.
 Update links and software appropriately.
   </p>
-  <i>Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html</i> 
-  <i>Copyright (c) 1995-2016 International Business Machines Corporation and others</i>
+  <i>© 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html</i> 
+  <i>© 1995-2016 International Business Machines Corporation and others</i>
 
 </body>
 </html>
diff --git a/packaging/rpm/icu.spec b/packaging/rpm/icu.spec
deleted file mode 100644 (file)
index 2edb595..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-#   Copyright (C) 2000-2005, International Business Machines
-#   Corporation and others.  All Rights Reserved.
-#
-# RPM specification file for ICU.
-#
-# Neal Probert <nprobert@walid.com> is the current maintainer.
-# Yves Arrouye <yves@realnames.com> is the original author.
-
-# This file can be freely redistributed under the same license as ICU.
-
-Name: icu
-Version: 3.4
-Release: 1
-Requires: libicu34 >= %{version}
-Summary: International Components for Unicode
-Packager: Ian Holsman (CNET Networks) <ianh@cnet.com>
-Copyright: X License
-Group: System Environment/Libraries
-Source: icu-%{version}.tgz
-BuildRoot: /var/tmp/%{name}-%{version}
-%description
-ICU is a set of C and C++ libraries that provides robust and full-featured
-Unicode and locale support. The library provides calendar support, conversions
-for many character sets, language sensitive collation, date
-and time formatting, support for many locales, message catalogs
-and resources, message formatting, normalization, number and currency
-formatting, time zones support, transliteration, word, line and
-sentence breaking, etc.
-
-This package contains the Unicode character database and derived
-properties, along with converters and time zones data.
-
-This package contains the runtime libraries for ICU. It does
-not contain any of the data files needed at runtime and present in the
-`icu' and `icu-locales` packages.
-
-%package -n libicu34
-Summary: International Components for Unicode (libraries)
-Group: Development/Libraries
-%description -n libicu34
-ICU is a set of C and C++ libraries that provides robust and full-featured
-Unicode support. This package contains the runtime libraries for ICU. It does
-not contain any of the data files needed at runtime and present in the
-`icu' and `icu-locales` packages.
-
-%package -n libicu-devel
-Summary: International Components for Unicode (development files)
-Group: Development/Libraries
-Requires: libicu34 = %{version}
-%description -n libicu-devel
-ICU is a set of C and C++ libraries that provides robust and full-featured
-Unicode support. This package contains the development files for ICU.
-
-%package locales
-Summary: Locale data for ICU
-Group: System Environment/Libraries
-Requires: libicu34 >= %{version}
-%description locales
-The locale data are used by ICU to provide localization (l10n), 
-internationalization (i18n) and timezone support to ICU applications.
-This package also contains break data for various languages,
-and transliteration data.
-
-%post
-# Adjust the current ICU link in /usr/lib/icu
-
-icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
-cd /usr/lib/icu
-rm -f /usr/lib/icu/current
-if test x"$icucurrent" != x
-then
-    ln -s "$icucurrent" current
-fi
-
-#ICU_DATA=/usr/share/icu/%{version}
-#export ICU_DATA
-
-%preun
-# Adjust the current ICU link in /usr/lib/icu
-
-icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/%{version}\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
-cd /usr/lib/icu
-rm -f /usr/lib/icu/current
-if test x"$icucurrent" != x
-then
-    ln -s "$icucurrent" current
-fi
-
-%post -n libicu34
-ldconfig
-
-# Adjust the current ICU link in /usr/lib/icu
-
-icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
-cd /usr/lib/icu
-rm -f /usr/lib/icu/current
-if test x"$icucurrent" != x
-then
-    ln -s "$icucurrent" current
-fi
-
-%preun -n libicu34
-# Adjust the current ICU link in /usr/lib/icu
-
-icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/%{version}\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
-cd /usr/lib/icu
-rm -f /usr/lib/icu/current
-if test x"$icucurrent" != x
-then
-    ln -s "$icucurrent" current
-fi
-
-%prep
-%setup -q -n icu
-
-%build
-cd source
-chmod a+x ./configure
-CFLAGS="-O3" CXXFLAGS="-O" ./configure --prefix=/usr --sysconfdir=/etc --with-data-packaging=files --enable-shared --enable-static --disable-samples
-echo 'CPPFLAGS += -DICU_DATA_DIR=\"/usr/share/icu/%{version}\"' >> icudefs.mk
-make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
-
-%install
-rm -rf $RPM_BUILD_ROOT
-cd source
-make install DESTDIR=$RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-%doc readme.html
-%doc license.html
-/usr/share/icu/%{version}/license.html
-/usr/share/icu/%{version}/icudt34l/*.cnv
-/usr/share/icu/%{version}/icudt34l/*.icu
-/usr/share/icu/%{version}/icudt34l/*.spp
-
-/usr/bin/derb
-/usr/bin/genbrk
-/usr/bin/gencnval
-/usr/bin/genrb
-/usr/bin/icu-config
-/usr/bin/makeconv
-/usr/bin/pkgdata
-/usr/bin/uconv
-
-/usr/sbin/decmn
-/usr/sbin/genccode
-/usr/sbin/gencmn
-/usr/sbin/gensprep
-/usr/sbin/genuca
-/usr/sbin/icuswap
-/usr/share/icu/%{version}/mkinstalldirs
-
-/usr/man/man1/derb.1.*
-/usr/man/man1/gencnval.1.*
-/usr/man/man1/genrb.1.*
-/usr/man/man1/icu-config.1.*
-/usr/man/man1/makeconv.1.*
-/usr/man/man1/pkgdata.1.*
-/usr/man/man1/uconv.1.*
-/usr/man/man8/decmn.8.*
-/usr/man/man8/genccode.8.*
-/usr/man/man8/gencmn.8.*
-/usr/man/man8/gensprep.8.*
-/usr/man/man8/genuca.8.*
-
-%files -n icu-locales
-/usr/share/icu/%{version}/icudt34l/*.brk
-/usr/share/icu/%{version}/icudt34l/*.res
-/usr/share/icu/%{version}/icudt34l/coll/*.res
-/usr/share/icu/%{version}/icudt34l/rbnf/*.res
-/usr/share/icu/%{version}/icudt34l/translit/*.res
-
-%files -n libicu34
-%doc license.html
-/usr/lib/libicui18n.so.34
-/usr/lib/libicui18n.so.34.0
-/usr/lib/libicutu.so.34
-/usr/lib/libicutu.so.34.0
-/usr/lib/libicuuc.so.34
-/usr/lib/libicuuc.so.34.0
-/usr/lib/libicudata.so.34
-/usr/lib/libicudata.so.34.0
-/usr/lib/libicuio.so.34
-/usr/lib/libicuio.so.34.0
-/usr/lib/libiculx.so.34
-/usr/lib/libiculx.so.34.0
-/usr/lib/libicule.so.34
-/usr/lib/libicule.so.34.0
-
-%files -n libicu-devel
-%doc readme.html
-%doc license.html
-/usr/lib/libicui18n.so
-/usr/lib/libsicui18n.a
-/usr/lib/libicuuc.so
-/usr/lib/libsicuuc.a
-/usr/lib/libicutu.so
-/usr/lib/libsicutu.a
-/usr/lib/libicuio.so
-/usr/lib/libsicuio.a
-/usr/lib/libicudata.so
-/usr/lib/libsicudata.a
-/usr/lib/libicule.so
-/usr/lib/libsicule.a
-/usr/lib/libiculx.so
-/usr/lib/libsiculx.a
-/usr/include/unicode/*.h
-/usr/include/layout/*.h
-/usr/lib/icu/%{version}/Makefile.inc
-/usr/lib/icu/Makefile.inc
-/usr/share/icu/%{version}/config
-/usr/share/doc/icu-%{version}/*
-
-%changelog
-* Mon Jun 07 2004 Alexei Dets <adets@idsk.com>
-- update to 3.0
-* Tue Aug 16 2003 Steven Loomis <srl@jtcsv.com>
-- update to 2.6.1 - include license
-* Thu Jun 05 2003 Steven Loomis <srl@jtcsv.com>
-- Update to 2.6
-* Fri Dec 27 2002 Steven Loomis <srl@jtcsv.com>
-- Update to 2.4 spec
-* Fri Sep 27 2002 Steven Loomis <srl@jtcsv.com>
-- minor updates to 2.2 spec. Rpath is off by default, don't pass it as an option.
-* Mon Sep 16 2002 Ian Holsman <ian@holsman.net> 
-- update to icu 2.2
-
index 6327fed..a497674 100644 (file)
@@ -3,7 +3,7 @@
 
 <html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
   <head>
-    <title>ReadMe for ICU 58.2</title>
+    <title>ReadMe for ICU 59.1</title>
     <meta name="COPYRIGHT" content=
     "Copyright (C) 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html"/>
     <!-- meta name="COPYRIGHT" content=
@@ -32,7 +32,7 @@
       International Components for Unicode<br/>
       <span class="only-rc">Release Candidate</span>
       <span class="only-milestone">(Milestone Release)</span>
-      <abbr title="International Components for Unicode">ICU</abbr> 58.2 ReadMe
+      <abbr title="International Components for Unicode">ICU</abbr> 59.1 ReadMe
     </h1>
 
     <!-- Shouldn't need to comment/uncomment this paragraph, just change the body class -->
@@ -44,7 +44,7 @@
     <p class="note only-rc">This is a release candidate version of ICU4C.
       It is not recommended for production use.</p>
 
-    <p>Last updated: 2016-Dec-8<br/>
+    <p>Last updated: 2017-Apr-12<br/>
       Copyright &copy; 2016 and later: Unicode, Inc. and others. License &amp; terms of use:
       <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a><br/>
       Copyright &copy; 1997-2016 International Business Machines Corporation and others.
@@ -59,9 +59,7 @@
 
       <li><a href="#GettingStarted">Getting Started</a></li>
 
-      <li><a href="#News">What Is New In This release?</a></li>
-
-      <li><a href="#RecentPreviousChanges">Changes in recent previous releases</a></li>
+      <li><a href="#News">What Is New In This Release?</a></li>
 
       <li><a href="#Download">How To Download the Source Code</a></li>
 
     </table>
 
     <p><strong>Important:</strong> Please make sure you understand the <a href=
-    "http://source.icu-project.org/repos/icu/icu/trunk/LICENSE">Copyright and License Information</a>.</p>
-
-    <h2><a name="News" href="#News" id="News">What is new in this
-    release?</a></h2>
-
-    <h3>New License</h3>
-    <p>This is the first release of ICU since the project
-       <a href="http://blog.unicode.org/2016/05/icu-joins-unicode-consortium.html">joined
-       the Unicode Consortium</a>. The license has changed to the
-       <a href="http://www.unicode.org/copyright.html#License">Unicode license</a>
-       (which is similar to the ICU 1.8.1-57 license).</p>
-
-    <h3>Layout Engine Removed</h3>
-    <p>The LayoutEngine was deprecated in ICU 54 and has now been removed.
-    see <a href='http://userguide.icu-project.org/layoutengine'>the
-    User's Guide</a> for more details and migration recommendations.
-    </p>
-    <p>
-      Note that the ParagraphLayout (layoutex) library is not deprecated.
-      There is a new option, <tt>--enable-layoutex</tt> which will build
-      the ParagraphLayout library using <a href="http://harfbuzz.org">HarfBuzz</a>
-      instead of ICU as the layout engine. See <a href="http://userguide.icu-project.org/layoutengine">
-        the users' guide</a> for more information about how to build.
-    </p>
-    <p>
-      The options <tt>--disable-layout</tt>
-      or <tt>--with-layout=false</tt> are being retained for
-      compatibility, but have no effect.
-    </p>
+    "http://source.icu-project.org/repos/icu/trunk/icu4c/LICENSE">Copyright and License Information</a>.</p>
 
-    <h3>Changes in CLDR 30 data</h3>
-    <ul>
-       <li>For some combinations of numbering system (arab, arabext, latn) and/or locale
-               (ar, fa, he), there were changes to the bidirectional control characters used
-               with certain symbols (percent, minus, plus), and changes to number patterns
-               (currency and/or percent, including addition of bidirectional control
-               characters in some cases).</li>
-       <li>The bidirectional controls used for such purposes now include U+061C ARABIC
-               LETTER MARK (ALM), which requires use of the bidirectional algorithm from
-               Unicode 6.3 or later.</li>
-       <li>The time separator for Norwegian locales (nb, nn) was changed to be ‘:’
-               throughout.</li>
-       <li>For more information on CLDR 30 changes, see
-               <a href="http://cldr.unicode.org/index/downloads/cldr-30">CLDR 30 download
-               page</a>.</li>
-    </ul>
 
-    <h3>Windows build changes</h3>
-    <p>Windows builds using Visual Studio now require Visual Studio 2015; otherwise you can
-       use cygwin or similar to build for Windows.</p>
+    <h2><a name="News" href="#News" id="News">What Is New In This Release?</a></h2>
 
-    <h3>API Changes</h3>
-    <p>See the <a href="APIChangeReport.html">API Change Report</a> for a complete
-      list of APIs added, removed, or changed in this release.</p>
+    <p>See the <a href="http://site.icu-project.org/download/59">ICU 59 download page</a>
+    for an overview of this release, important changes, new features, bug fixes, known issues,
+    changes to supported platforms and build environments,
+    and migration issues for existing applications migrating from previous ICU releases.</p>
 
-    <!-- standing item -->
-    <h3>Full release notes and the latest updates</h3>
-    <p>The previous list concentrates on <em>changes that affect existing
-    applications migrating from previous ICU releases</em>.
-    For more news about this release, as well as late-breaking news, see the
-    <a href="http://site.icu-project.org/download/57">ICU download page</a>.</p>
+    <p>See the <a href="APIChangeReport.html">API Change Report</a> for a complete list of
+    APIs added, removed, or changed in this release.</p>
 
-    <h3>Upcoming changes</h3>
-    <p>Please note the following changes planned for an upcoming ICU4C release (likely ICU 59):</p>
-    <ul>
-       <li>Compiler support for C++11 will be required.</li>
-       <li>Support for Windows XP will be removed.</li>
-    </ul>
-
-    <h2><a name="RecentPreviousChanges" href="#RecentPreviousChanges" id="RecentPreviousChanges">Changes in recent
-    previous releases</a></h2>
-
-    <!-- ICU 57 items -->
-    <h3>ICU 57: Changes related to new CLDR data and specifications</h3>
-    <ul>
-       <li>Time formats may include the new day period characters b, B, and
-       these may produced in response to the new skeleton character C used
-       with DateTimePatternGenerator.</li>
-       <li>In day period rules, the use of "after" has been deprecated.</li>
-       <li>The measurement unit "proportion-karat" has been renamed to
-       "concentr-karat".</li>
-    </ul>
+    <p><a name="RecentPreviousChanges" id="RecentPreviousChanges"></a>For
+    changes in previous releases, see the
+    main <a href="http://site.icu-project.org/download">ICU download page</a>
+    with its version-specific subpages.</p>
 
-    <!-- ICU 56 items -->
-    <h3>ICU 56: COLON withdrawn as date/time pattern character</h3>
-    <p>In ICU 55, COLON was introduced as a date/time pattern character
-      to be replaced by the value of the timeSeparator for the number
-      system being used; a corresponding new UDateFormatField
-      UDAT_TIME_SEPARATOR_FIELD was added. Use of COLON caused some
-      backwards compatibility problems, so it is being withdrawn as a
-      pattern character. However, UDAT_TIME_SEPARATOR_FIELD remains
-      as does the mechanism for replacing a pattern character with the
-      value of the timeSeparator; a new pattern character may be
-      assigned in the future.</p>
-
-    <h3>ICU 56: ICU Plugins are disabled by default</h3>
-    <p>ICU Plugins are now disabled by default. They may be enabled
-      with the configure option
-      <tt>--enable-plugins</tt> or by means of
-      <tt>#define UCONFIG_ENABLE_PLUGINS</tt>.
-       </p>
-
-    <h3>ICU 55: Deprecations in PluralRules (plurrule.h)</h3>
-    <p>The following PluralRules methods never had an implementation
-      but were inadvertently marked @stable; they have now been
-      deprecated. [#<a href="http://bugs.icu-project.org/trac/ticket/10759">10759</a>]</p>
-    <ul>
-      <li><tt>double icu::PluralRules::getUniqueKeywordValue(const UnicodeString&amp;)</tt></li>
-      <li><tt>int32_t icu::PluralRules::getAllKeywordValues(const UnicodeString&amp;, double*, int32_t, UErrorCode&amp;)</tt></li>
-    </ul>
-
-    <h3>ICU 55: Deprecate uidna.h functions for IDNA2003 support</h3>
-    <p>The IDNA2003 API has been deprecated; use the API for IDNA2008 / UTS #46 instead via
-      uidna_openUTS46() or class IDNA [#<a href="http://bugs.icu-project.org/trac/ticket/8477">8477</a>].
-      This applies to the following:</p>
-    <ul>
-      <li><tt>enum  value UIDNA_ALLOW_UNASSIGNED</tt></li>
-      <li><tt>uidna_IDNToASCII</tt></li>
-      <li><tt>uidna_IDNToUnicode</tt></li>
-      <li><tt>uidna_compare</tt></li>
-      <li><tt>uidna_toASCII</tt></li>
-      <li><tt>uidna_toUnicode</tt></li>
-    </ul>
-
-    <h3>ICU 54: Deprecation of Collation Short Strings</h3>
-    <p>The collation short naming scheme and its API functions are deprecated.
-    Use ucol_open() with language tag collation keywords instead (see <a href="http://userguide.icu-project.org/collation/api">Collation API Details</a>). For example, <code>ucol_open("de-u-co-phonebk-ka-shifted", &amp;errorCode)</code>
-     for German Phonebook order with "ignore punctuation" mode.</p>
-
-    <h3>ICU 54: Deprecation of UCOL_TAILORINGS_VERSION</h3>
-    <p>This was originally intended to be the version of collation tailorings,
-    but that information is actually in the tailorings data and this
-    constant has always been (and now will continue to be) 1.</p>
-
-    <!-- ICU 53 items -->
-    <h3>ICU 53: Deprecation of TimeUnitFormat</h3>
-    <p>The TimeUnitFormat and its methods were actually deprecated in ICU 53 and the
-    class as a whole was tagged as deprecated in that release, but the status tags for
-    the individual methods did not correctly indicate the deprecated status; they
-    do as of ICU 54. Use the MeasureFormat class and its methods instead.</p>
-
-    <!-- end of What's New items -->
 
     <h2><a name="Download" href="#Download" id="Download">How To Download the
     Source Code</a></h2>
             <li><b>brkitr/</b> Data files for character, word, sentence, title
             casing and line boundary analysis.</li>
 
+            <li><b>coll/</b> Data for collation tailorings. The makefile
+            <b>colfiles.mk</b> contains the list of resource bundle files.</li>
+
             <li><b>locales/</b> These .txt files contain ICU language and
             culture-specific localization data. Two special bundles are
             <b>root</b>, which is the fallback data and parent of other bundles,
             and <b>index</b>, which contains a list of installed bundles. The
             makefile <b>resfiles.mk</b> contains the list of resource bundle
-            files.</li>
+            files. Some of the locale data is split out into the type-specific
+            directories curr, lang, region, unit, and zone, described below.</li>
+
+            <li><b>curr/</b> Locale data for currency symbols and names (including
+            plural forms), with its own makefile <b>resfiles.mk</b>.</li>
+
+            <li><b>lang/</b> Locale data for names of languages, scripts, and locale
+            key names and values, with its own makefile <b>resfiles.mk</b>.</li>
+
+            <li><b>region/</b> Locale data for names of regions, with its own
+            makefile <b>resfiles.mk</b>.</li>
+
+            <li><b>unit/</b> Locale data for measurement unit patterns and names, 
+            with its own makefile <b>resfiles.mk</b>.</li>
+
+            <li><b>zone/</b> Locale data for time zone names, with its own
+            makefile <b>resfiles.mk</b>.</li>
 
             <li><b>mappings/</b> Here are the code page converter tables. These
             .ucm files contain mappings to and from Unicode. These are compiled
             information.</li>
 
             <li><b>misc/</b> The misc directory contains other data files which
-            did not fit into the above categories. Currently it only contains
-            time zone information, and a name preperation file for <a href=
-            "http://www.ietf.org/rfc/rfc3490.txt">IDNA</a>.</li>
+            did not fit into the above categories, including time zone
+            information, region-specific data, and other data derived from CLDR
+            supplemental data.</li>
 
             <li><b>out/</b> This directory contains the assembled memory mapped
             files.</li>
         source file tree clean and have build output files written to
         a different location. This is called an "out-of-source build".
         Simply invoke the configure script from the target location:
-<pre>~/icu$ svn export http://source.icu-project.org/repos/icu/icu/trunk
+<pre>~/icu$ svn export http://source.icu-project.org/repos/icu/trunk/icu4c
 ~/icu$ mkdir trunk-dev
 ~/icu$ cd trunk-dev
 ~/icu/trunk-dev$ ../trunk/source/runConfigureICU Linux
     <ul>
       <li>Microsoft Windows</li>
 
-      <li>Microsoft Visual C++ (see the ICU download page for the currently compatible version)</li>
+      <li>Microsoft Visual C++ (part of <a href="https://www.visualstudio.com/">Visual Studio</a>) (see the ICU download page for the currently compatible version)</li>
+      
+      <li><i><b>Optional:</b></i> A version of the <a href="https://developer.microsoft.com/windows/downloads">Windows 10 SDK</a> (if you want to build the UWP projects)</li>
     </ul>
         <p class="note"><a href="#HowToBuildCygwin">Cygwin</a> is required if using a version of MSVC other than the one
         compatible with the supplied project files or if other compilers are used to build ICU. (e.g. GCC)</p>
       "#HowToBuildWindowsCommandLine">command line note below</a> if you want to
       build from the command line instead.</li>
 
+      <li>You may need to re-target the UWP projects to the version of the SDK that you have installed. In Visual Studio you can
+      right-click on the UWP projects and select the option 'Retarget SDK Version'. Note: You do not need to have a copy of 
+      the Windows 10 SDK installed in order to build the non-UWP projects in Visual Studio. If the SDK is not installed then the
+      UWP projects will simply not be loaded.</li>
+
       <li>Set the active platform to "Win32" or "x64" (See <a href="#HowToBuildWindowsPlatform">Windows platform note</a> below)
       and configuration to "Debug" or "Release" (See <a href="#HowToBuildWindowsConfig">Windows configuration note</a> below).</li>
 
     "HowToBuildWindowsCommandLine"><strong>Using MSDEV At The Command Line
     Note:</strong></a> You can build ICU from the command line. Assuming that you
     have properly installed Microsoft Visual C++ to support command line
-    execution, you can run the following command, 'devenv.com
-    <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build "Win32|Release"'. You can also
-    use Cygwin with this compiler to build ICU, and you can refer to the <a href=
+    execution, you can run the following command to build the 32-bit Release version:
+    <code>'devenv.com <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build "Release|Win32"'</code>.
+    Or to build the 64-bit Release version from the command line: 
+    <code>'devenv.com <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build "Release|x64"'</code>.
+    <br />You can also use Cygwin with this compiler to build ICU, and you can refer to the <a href=
     "#HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a>
     section for more details.</p>
 
     <ul>
       <li>Microsoft Windows</li>
 
-      <li>Microsoft Visual C++ (when gcc isn't used).</li>
+      <li>Microsoft Visual C++ (from Visual Studio 2015 or newer, when gcc isn't used).</li>
 
       <li>
         Cygwin with the following installed:
       Visual C++ compiler will not work with a bash command prompt.</li>
 
       <li>If the computer isn't set up to use Visual C++ from the command line,
-      you need to run vcvars32.bat.<br />For example:<br />"<tt>C:\Program Files\Microsoft
-      Visual Studio 8\VC\bin\vcvars32.bat</tt>" can be used for 32-bit builds
-      <strong>or</strong> <br />"<tt>C:\Program Files (x86)\Microsoft Visual Studio
-      8\VC\bin\amd64\vcvarsamd64.bat</tt>" can be used for 64-bit builds on
-      Windows x64.</li>
+      you need to run vcvars32.bat.<br />For example:<br />
+      "<tt>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat</tt>"
+      can be used for 32-bit builds <strong>or</strong> <br />
+      "<tt>C:\Program Files (x86)\Microsoft Visual Studio 14\VC\bin\x86_amd64\vcvarsx86_amd64.bat</tt>"
+      can be used for 64-bit builds on Windows x64.</li>
 
       <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
       line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
       configure option.</li>
 
       <li>The latest versions of z/OS use <a
-      href="http://www.ibm.com/support/docview.wss?uid=swg2120240">XPLINK
+      href="https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v2r2.cbcux01/oebind6.htm">XPLINK
       version (C128) of the C++ standard library</a> by default. You may see <a
-      href="http://www.ibm.com/support/docview.wss?uid=swg21376279">an
+      href="https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v2r2.cbcux01/oebind5.htm">an
       error</a> when running with XPLINK disabled. To avoid this error,
       set the following environment variable or similar:
 
@@ -1405,7 +1307,7 @@ cd ../../..</samp></pre>
       <li>Test ICU. <pre><samp>gmake check</samp></pre>
         (The <tt> QIBM_MULTI_THREADED=Y</tt> flag will be automatically applied to intltest -
           you can look at the <a href=
-      "http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/apis/concept4.htm">
+      "https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzahw/rzahwceeco.htm">
       iSeries Information Center</a> for more details regarding the running of multiple threads
       on IBM i.)</li>
     </ol>
@@ -1657,7 +1559,7 @@ gnumake</pre>
     <p>In order to avoid synchronization and threading issues, developers are
     <strong>suggested</strong> to strictly follow the compiling and linking
     guidelines for multithreaded applications, specified in the following
-    document from Sun Microsystems. Most notably, pay strict attention to the
+    SUn Solaris document available from Oracle. Most notably, pay strict attention to the
     following statements from Sun:</p>
 
     <blockquote>
@@ -1671,10 +1573,15 @@ gnumake</pre>
     <p>Failure to do this may cause spurious lock conflicts, recursive mutex
     failure, and deadlock.</p>
 
-    <p>Source: "<i>Solaris Multithreaded Programming Guide, Compiling and
-    Debugging</i>", Sun Microsystems, Inc., Apr 2004<br />
+    <p>Source: "<i>Multithreaded Programming Guide, Compiling and
+    Debugging</i>", Sun Microsystems, 2002 <br />
+     <a href=
+    "https://docs.oracle.com/cd/E19683-01/806-6867/compile-74765/index.html">https://docs.oracle.com/cd/E19683-01/806-6867/compile-74765/index.html</a></p>
+
+    <p>Note, a version of that chapter from a 2008 document update covering both Solaris 9
+    and Solaris 10 is available here:<br />
      <a href=
-    "http://docs.sun.com/app/docs/doc/816-5137/6mba5vpke?a=view">http://docs.sun.com/app/docs/doc/816-5137/6mba5vpke?a=view</a></p>
+    "http://docs.oracle.com/cd/E19253-01/816-5137/compile-94179/index.html">http://docs.oracle.com/cd/E19253-01/816-5137/compile-94179/index.html</a></p>
 
     <h3><a name="ImportantNotesWindows" href="#ImportantNotesWindows" id=
     "ImportantNotesWindows">Windows Platform</a></h3>
index fde6125..df543e8 100644 (file)
@@ -194,7 +194,7 @@ EXPAND_ONLY_PREDEF     = YES
 SEARCH_INCLUDES        = YES
 INCLUDE_PATH           = 
 INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = U_EXPORT2= U_STABLE= U_DRAFT= U_INTERNAL= U_SYSTEM= U_DEPRECATED= U_OBSOLETE= U_CALLCONV= U_CDECL_BEGIN= U_CDECL_END=  U_NO_THROW=\ "U_NAMESPACE_BEGIN=namespace icu{" "U_NAMESPACE_END=}" U_HAVE_STD_STRING=1 U_SHOW_CPLUSPLUS_API=1 U_DEFINE_LOCAL_OPEN_POINTER()= U_IN_DOXYGEN=1 U_OVERRIDE= U_FINAL= UCONFIG_ENABLE_PLUGINS=1
+PREDEFINED             = U_EXPORT2= U_STABLE= U_DRAFT= U_INTERNAL= U_SYSTEM= U_DEPRECATED= U_OBSOLETE= U_CALLCONV= U_CDECL_BEGIN= U_CDECL_END=  U_NO_THROW=\  "U_NAMESPACE_BEGIN=namespace icu{" "U_NAMESPACE_END=}" U_SHOW_CPLUSPLUS_API=1 U_DEFINE_LOCAL_OPEN_POINTER()= U_IN_DOXYGEN=1 U_OVERRIDE=override U_FINAL=final UCONFIG_ENABLE_PLUGINS=1 U_CHAR16_IS_TYPEDEF=0 U_CPLUSPLUS_VERSION=11 U_HAVE_RVALUE_REFERENCES=1 U_WCHAR_IS_UTF16
 EXPAND_AS_DEFINED      = 
 SKIP_FUNCTION_MACROS   = YES
 #---------------------------------------------------------------------------
index bd5b117..f4bab77 100644 (file)
@@ -140,6 +140,10 @@ $(LIBDIR) $(BINDIR):
 
 ## Recursive targets
 all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive check-exhaustive-recursive: $(LIBDIR) $(BINDIR)
+ifneq ($(NEED_ESCAPING),)
+       @echo "building tools/escapesrc (Needed for this platform with NEED_ESCAPING)"
+       @(cd tools/escapesrc && $(MAKE) RECURSIVE=YES $$local_target) || exit
+endif
        @dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
        list='$(LOCAL_SUBDIRS)'; for subdir in $$list; do \
@@ -323,9 +327,10 @@ $(top_builddir)/config/icu-config: $(top_builddir)/Makefile $(top_srcdir)/config
        -$(RMV) $@
        $(INSTALL_SCRIPT) $(top_srcdir)/config/icu-config-top $@
        chmod u+w $@
+       @echo "# Following from icu/icu4c/source/config/Makefile.inc" >> $@
+       LC_ALL=C $(SED) -f $(top_srcdir)/config/make2sh.sed < $(top_builddir)/config/Makefile.inc | grep -v '#M#' | uniq >> $@
        @echo "# Following from @platform_make_fragment@" >> $@
-       LC_ALL=C sed -f $(top_srcdir)/config/make2sh.sed < $(top_builddir)/config/Makefile.inc | grep -v '#M#' | uniq >> $@
-       LC_ALL=C sed -f $(top_srcdir)/config/make2sh.sed < @platform_make_fragment@ | grep -v '#M#' | uniq >> $@
+       LC_ALL=C $(SED) -f $(top_srcdir)/config/make2sh.sed < @platform_make_fragment@ | grep -v '#M#' | uniq >> $@
        cat $(top_srcdir)/config/icu-config-bottom >> $@
        chmod u-w $@
 
index fdaaea9..88a0d19 100644 (file)
@@ -1,5 +1,7 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cal", "..\samples\cal\cal.vcxproj", "{F7659D77-09CF-4FE9-ACEE-927287AA9509}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst.vcxproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
@@ -61,268 +63,354 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icuinfo", "..\tools\icuinfo
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testplug", "..\tools\icuinfo\testplug.vcxproj", "{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedata_uwp", "..\data\makedata_uwp.vcxproj", "{B1D53358-37BD-48BC-B27C-68BAF1E78508}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "i18n_uwp", "..\i18n\i18n_uwp.vcxproj", "{6786C051-383B-47E0-9E82-B8B994E06A25}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common_uwp", "..\common\common_uwp.vcxproj", "{C10CF34B-3F79-430E-AD38-5A32DC0589C2}"
+EndProject
 Global
-       GlobalSection(SubversionScc) = preSolution
-               Svn-Managed = True
-               Manager = AnkhSVN - Subversion Support for Visual Studio
-       EndGlobalSection
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|ARM = Debug|ARM
                Debug|Win32 = Debug|Win32
                Debug|x64 = Debug|x64
+               Release|ARM = Release|ARM
                Release|Win32 = Release|Win32
                Release|x64 = Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|ARM.ActiveCfg = Debug|Win32
                {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.ActiveCfg = Debug|Win32
                {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.Build.0 = Debug|Win32
                {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|x64
                {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|x64
+               {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|ARM.ActiveCfg = Release|Win32
                {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.ActiveCfg = Release|Win32
                {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32
                {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|x64
                {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|x64
+               {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.ActiveCfg = Debug|Win32
                {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.ActiveCfg = Debug|Win32
                {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.Build.0 = Debug|Win32
                {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.ActiveCfg = Debug|x64
                {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.Build.0 = Debug|x64
+               {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM.ActiveCfg = Release|Win32
                {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.ActiveCfg = Release|Win32
                {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.Build.0 = Release|Win32
                {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.ActiveCfg = Release|x64
                {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.Build.0 = Release|x64
+               {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM.ActiveCfg = Debug|Win32
                {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.ActiveCfg = Debug|Win32
                {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.Build.0 = Debug|Win32
                {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.ActiveCfg = Debug|x64
                {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.Build.0 = Debug|x64
+               {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM.ActiveCfg = Release|Win32
                {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.ActiveCfg = Release|Win32
                {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.Build.0 = Release|Win32
                {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.ActiveCfg = Release|x64
                {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.Build.0 = Release|x64
+               {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM.ActiveCfg = Debug|Win32
                {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.ActiveCfg = Debug|Win32
                {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.Build.0 = Debug|Win32
                {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.ActiveCfg = Debug|x64
                {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.Build.0 = Debug|x64
+               {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM.ActiveCfg = Release|Win32
                {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.ActiveCfg = Release|Win32
                {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32
                {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64
                {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64
+               {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|ARM.ActiveCfg = Debug|Win32
                {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.ActiveCfg = Debug|Win32
                {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.Build.0 = Debug|Win32
                {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|x64
                {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|x64
+               {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|ARM.ActiveCfg = Release|Win32
                {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.ActiveCfg = Release|Win32
                {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.Build.0 = Release|Win32
                {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|x64
                {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.Build.0 = Release|x64
+               {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.ActiveCfg = Debug|Win32
                {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.ActiveCfg = Debug|Win32
                {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.Build.0 = Debug|Win32
                {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.ActiveCfg = Debug|x64
                {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.Build.0 = Debug|x64
+               {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM.ActiveCfg = Release|Win32
                {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.ActiveCfg = Release|Win32
                {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.Build.0 = Release|Win32
                {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.ActiveCfg = Release|x64
                {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.Build.0 = Release|x64
+               {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM.ActiveCfg = Debug|Win32
                {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.ActiveCfg = Debug|Win32
                {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.Build.0 = Debug|Win32
                {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.ActiveCfg = Debug|x64
                {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.Build.0 = Debug|x64
+               {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM.ActiveCfg = Release|Win32
                {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.ActiveCfg = Release|Win32
                {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.Build.0 = Release|Win32
                {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.ActiveCfg = Release|x64
                {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.Build.0 = Release|x64
+               {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM.ActiveCfg = Debug|Win32
                {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.ActiveCfg = Debug|Win32
                {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.Build.0 = Debug|Win32
                {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.ActiveCfg = Debug|x64
                {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.Build.0 = Debug|x64
+               {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM.ActiveCfg = Release|Win32
                {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.ActiveCfg = Release|Win32
                {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.Build.0 = Release|Win32
                {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.ActiveCfg = Release|x64
                {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.Build.0 = Release|x64
+               {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM.ActiveCfg = Debug|Win32
                {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.ActiveCfg = Debug|Win32
                {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.Build.0 = Debug|Win32
                {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.ActiveCfg = Debug|x64
                {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.Build.0 = Debug|x64
+               {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM.ActiveCfg = Release|Win32
                {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.ActiveCfg = Release|Win32
                {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.Build.0 = Release|Win32
                {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.ActiveCfg = Release|x64
                {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.Build.0 = Release|x64
+               {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM.ActiveCfg = Debug|Win32
                {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.ActiveCfg = Debug|Win32
                {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.Build.0 = Debug|Win32
                {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.ActiveCfg = Debug|x64
                {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.Build.0 = Debug|x64
+               {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM.ActiveCfg = Release|Win32
                {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.ActiveCfg = Release|Win32
                {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.Build.0 = Release|Win32
                {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.ActiveCfg = Release|x64
                {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.Build.0 = Release|x64
+               {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM.ActiveCfg = Debug|Win32
                {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.ActiveCfg = Debug|Win32
                {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.Build.0 = Debug|Win32
                {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.ActiveCfg = Debug|x64
                {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.Build.0 = Debug|x64
+               {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM.ActiveCfg = Release|Win32
                {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.ActiveCfg = Release|Win32
                {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.Build.0 = Release|Win32
                {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.ActiveCfg = Release|x64
                {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.Build.0 = Release|x64
+               {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM.ActiveCfg = Debug|Win32
                {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.ActiveCfg = Debug|Win32
                {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.Build.0 = Debug|Win32
                {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.ActiveCfg = Debug|x64
                {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.Build.0 = Debug|x64
+               {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM.ActiveCfg = Release|Win32
                {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.ActiveCfg = Release|Win32
                {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.Build.0 = Release|Win32
                {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.ActiveCfg = Release|x64
                {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.Build.0 = Release|x64
+               {0178B127-6269-407D-B112-93877BB62776}.Debug|ARM.ActiveCfg = Debug|Win32
                {0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.ActiveCfg = Debug|Win32
                {0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.Build.0 = Debug|Win32
                {0178B127-6269-407D-B112-93877BB62776}.Debug|x64.ActiveCfg = Debug|x64
                {0178B127-6269-407D-B112-93877BB62776}.Debug|x64.Build.0 = Debug|x64
+               {0178B127-6269-407D-B112-93877BB62776}.Release|ARM.ActiveCfg = Release|Win32
                {0178B127-6269-407D-B112-93877BB62776}.Release|Win32.ActiveCfg = Release|Win32
                {0178B127-6269-407D-B112-93877BB62776}.Release|Win32.Build.0 = Release|Win32
                {0178B127-6269-407D-B112-93877BB62776}.Release|x64.ActiveCfg = Release|x64
                {0178B127-6269-407D-B112-93877BB62776}.Release|x64.Build.0 = Release|x64
+               {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM.ActiveCfg = Debug|Win32
                {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.ActiveCfg = Debug|Win32
                {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.Build.0 = Debug|Win32
                {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.ActiveCfg = Debug|x64
                {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.Build.0 = Debug|x64
+               {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM.ActiveCfg = Release|Win32
                {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.ActiveCfg = Release|Win32
                {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.Build.0 = Release|Win32
                {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.ActiveCfg = Release|x64
                {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.Build.0 = Release|x64
-               {C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.ActiveCfg = Debug|Win32
-               {C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.Build.0 = Debug|Win32
-               {C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.ActiveCfg = Debug|x64
-               {C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.Build.0 = Debug|x64
-               {C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.ActiveCfg = Release|Win32
-               {C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.Build.0 = Release|Win32
-               {C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.ActiveCfg = Release|x64
-               {C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.Build.0 = Release|x64
-               {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.ActiveCfg = Debug|Win32
-               {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.Build.0 = Debug|Win32
-               {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.ActiveCfg = Debug|x64
-               {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.Build.0 = Debug|x64
-               {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.ActiveCfg = Release|Win32
-               {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.Build.0 = Release|Win32
-               {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.ActiveCfg = Release|x64
-               {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.Build.0 = Release|x64
+               {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM.ActiveCfg = Debug|Win32
                {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.ActiveCfg = Debug|Win32
                {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.Build.0 = Debug|Win32
                {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.ActiveCfg = Debug|x64
                {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.Build.0 = Debug|x64
+               {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM.ActiveCfg = Release|Win32
                {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.ActiveCfg = Release|Win32
                {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.Build.0 = Release|Win32
                {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.ActiveCfg = Release|x64
                {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.Build.0 = Release|x64
+               {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM.ActiveCfg = Debug|Win32
                {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.ActiveCfg = Debug|Win32
                {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.Build.0 = Debug|Win32
                {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.ActiveCfg = Debug|x64
                {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.Build.0 = Debug|x64
+               {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM.ActiveCfg = Release|Win32
                {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.ActiveCfg = Release|Win32
                {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.Build.0 = Release|Win32
                {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.ActiveCfg = Release|x64
                {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.Build.0 = Release|x64
+               {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM.ActiveCfg = Debug|Win32
                {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.ActiveCfg = Debug|Win32
                {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.Build.0 = Debug|Win32
                {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.ActiveCfg = Debug|x64
                {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.Build.0 = Debug|x64
+               {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM.ActiveCfg = Release|Win32
                {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.ActiveCfg = Release|Win32
                {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.Build.0 = Release|Win32
                {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.ActiveCfg = Release|x64
                {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.Build.0 = Release|x64
+               {203EC78A-0531-43F0-A636-285439BDE025}.Debug|ARM.ActiveCfg = Debug|Win32
                {203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.ActiveCfg = Debug|Win32
                {203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.Build.0 = Debug|Win32
                {203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.ActiveCfg = Debug|x64
                {203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.Build.0 = Debug|x64
+               {203EC78A-0531-43F0-A636-285439BDE025}.Release|ARM.ActiveCfg = Release|Win32
                {203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.ActiveCfg = Release|Win32
                {203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.Build.0 = Release|Win32
                {203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.ActiveCfg = Release|x64
                {203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.Build.0 = Release|x64
+               {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM.ActiveCfg = Debug|Win32
                {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.ActiveCfg = Debug|Win32
                {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.Build.0 = Debug|Win32
                {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.ActiveCfg = Debug|x64
                {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.Build.0 = Debug|x64
+               {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM.ActiveCfg = Release|Win32
                {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.ActiveCfg = Release|Win32
                {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.Build.0 = Release|Win32
                {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.ActiveCfg = Release|x64
                {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.Build.0 = Release|x64
+               {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM.ActiveCfg = Debug|Win32
                {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.ActiveCfg = Debug|Win32
                {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.Build.0 = Debug|Win32
                {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.ActiveCfg = Debug|x64
                {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.Build.0 = Debug|x64
+               {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM.ActiveCfg = Release|Win32
                {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.ActiveCfg = Release|Win32
                {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.Build.0 = Release|Win32
                {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.ActiveCfg = Release|x64
                {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.Build.0 = Release|x64
+               {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM.ActiveCfg = Debug|Win32
                {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.ActiveCfg = Debug|Win32
                {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.Build.0 = Debug|Win32
                {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.ActiveCfg = Debug|x64
                {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.Build.0 = Debug|x64
+               {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM.ActiveCfg = Release|Win32
                {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.ActiveCfg = Release|Win32
                {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.Build.0 = Release|Win32
                {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.ActiveCfg = Release|x64
                {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.Build.0 = Release|x64
+               {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM.ActiveCfg = Debug|Win32
                {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.ActiveCfg = Debug|Win32
                {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.Build.0 = Debug|Win32
                {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.ActiveCfg = Debug|x64
                {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.Build.0 = Debug|x64
+               {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM.ActiveCfg = Release|Win32
                {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.ActiveCfg = Release|Win32
                {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.Build.0 = Release|Win32
                {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.ActiveCfg = Release|x64
                {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.Build.0 = Release|x64
+               {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM.ActiveCfg = Debug|Win32
                {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.ActiveCfg = Debug|Win32
                {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.Build.0 = Debug|Win32
                {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.ActiveCfg = Debug|x64
                {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.Build.0 = Debug|x64
+               {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM.ActiveCfg = Release|Win32
                {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.ActiveCfg = Release|Win32
                {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.Build.0 = Release|Win32
                {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.ActiveCfg = Release|x64
                {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.Build.0 = Release|x64
+               {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM.ActiveCfg = Debug|Win32
                {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.ActiveCfg = Debug|Win32
                {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.Build.0 = Debug|Win32
                {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.ActiveCfg = Debug|x64
                {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.Build.0 = Debug|x64
+               {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM.ActiveCfg = Release|Win32
                {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.ActiveCfg = Release|Win32
                {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.Build.0 = Release|Win32
                {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.ActiveCfg = Release|x64
                {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.Build.0 = Release|x64
+               {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM.ActiveCfg = Debug|Win32
                {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.ActiveCfg = Debug|Win32
                {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.Build.0 = Debug|Win32
                {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.ActiveCfg = Debug|x64
                {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.Build.0 = Debug|x64
+               {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM.ActiveCfg = Release|Win32
                {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.ActiveCfg = Release|Win32
                {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.Build.0 = Release|Win32
                {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.ActiveCfg = Release|x64
                {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.Build.0 = Release|x64
+               {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM.ActiveCfg = Debug|Win32
                {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.ActiveCfg = Debug|Win32
                {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.Build.0 = Debug|Win32
                {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.ActiveCfg = Debug|x64
                {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.Build.0 = Debug|x64
+               {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM.ActiveCfg = Release|Win32
                {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.ActiveCfg = Release|Win32
                {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.Build.0 = Release|Win32
                {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.ActiveCfg = Release|x64
                {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.Build.0 = Release|x64
+               {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM.ActiveCfg = Debug|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.ActiveCfg = Debug|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.Build.0 = Debug|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.ActiveCfg = Debug|x64
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.Build.0 = Debug|x64
+               {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM.ActiveCfg = Release|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.ActiveCfg = Release|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.Build.0 = Release|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.ActiveCfg = Release|x64
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.Build.0 = Release|x64
+               {E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM.ActiveCfg = Debug|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.ActiveCfg = Debug|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.Build.0 = Debug|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.ActiveCfg = Debug|x64
                {E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.Build.0 = Debug|x64
+               {E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM.ActiveCfg = Release|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.ActiveCfg = Release|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.Build.0 = Release|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.ActiveCfg = Release|x64
                {E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.Build.0 = Release|x64
+               {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM.ActiveCfg = Debug|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.ActiveCfg = Debug|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.Build.0 = Debug|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.ActiveCfg = Debug|x64
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.Build.0 = Debug|x64
+               {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM.ActiveCfg = Release|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.ActiveCfg = Release|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.Build.0 = Release|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|x64.ActiveCfg = Release|x64
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|x64.Build.0 = Release|x64
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM.ActiveCfg = Debug|ARM
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM.Build.0 = Debug|ARM
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|Win32.ActiveCfg = Debug|Win32
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|Win32.Build.0 = Debug|Win32
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|x64.ActiveCfg = Debug|x64
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|x64.Build.0 = Debug|x64
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM.ActiveCfg = Release|ARM
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM.Build.0 = Release|ARM
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|Win32.ActiveCfg = Release|Win32
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|Win32.Build.0 = Release|Win32
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|x64.ActiveCfg = Release|x64
+               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|x64.Build.0 = Release|x64
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM.ActiveCfg = Debug|ARM
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM.Build.0 = Debug|ARM
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|Win32.ActiveCfg = Debug|Win32
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|Win32.Build.0 = Debug|Win32
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|x64.ActiveCfg = Debug|x64
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|x64.Build.0 = Debug|x64
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM.ActiveCfg = Release|ARM
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM.Build.0 = Release|ARM
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|Win32.ActiveCfg = Release|Win32
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|Win32.Build.0 = Release|Win32
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|x64.ActiveCfg = Release|x64
+               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|x64.Build.0 = Release|x64
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM.ActiveCfg = Debug|ARM
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM.Build.0 = Debug|ARM
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|Win32.ActiveCfg = Debug|Win32
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|Win32.Build.0 = Debug|Win32
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|x64.ActiveCfg = Debug|x64
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|x64.Build.0 = Debug|x64
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM.ActiveCfg = Release|ARM
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM.Build.0 = Release|ARM
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|Win32.ActiveCfg = Release|Win32
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|Win32.Build.0 = Release|Win32
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|x64.ActiveCfg = Release|x64
+               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|x64.Build.0 = Release|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
        EndGlobalSection
+       GlobalSection(SubversionScc) = preSolution
+               Svn-Managed = True
+               Manager = AnkhSVN - Subversion Support for Visual Studio
+       EndGlobalSection
 EndGlobal
index f8331a0..119bc99 100644 (file)
-@echo off\r
-REM Copyright (C) 2016 and later: Unicode, Inc. and others.\r
-REM License & terms of use: http://www.unicode.org/copyright.html\r
-REM  ********************************************************************\r
-REM  * COPYRIGHT:\r
-REM  * Copyright (c) 2010-2014, International Business Machines Corporation\r
-REM  * and others. All Rights Reserved.\r
-REM  ********************************************************************\r
-\r
-set ICU_ARCH=%1\r
-set ICU_DBRL=%2\r
-\r
-if "%1" == "" (\r
-echo Usage: %0 "x86 or x64"  "Debug or Release"\r
-exit /b 1\r
-)\r
-\r
-if "%2" == "" (\r
-echo Usage: %0 %1 "Debug or Release"\r
-exit /b 1\r
-)\r
-\r
-set ICU_OPATH=%PATH%\r
-\r
-set ICU_ICUDIR="%~dp0"\..\..\r
-\r
-if "%ICU_ARCH%" == "x64" (\r
-set ICU_BINDIR=%~dp0\..\..\bin64\r
-) else (\r
-set ICU_BINDIR=%~dp0\..\..\bin\r
-)\r
-\r
-set PATH=%ICU_BINDIR%;%PATH%\r
-\r
-echo testing ICU in %ICU_ICUDIR%  arch=%ICU_ARCH% type=%ICU_DBRL%\r
-pushd %ICU_ICUDIR%\r
-\r
-@rem factor these out\r
-set ICUINFO_CMD=%ICU_ICUDIR%\source\tools\icuinfo\%ICU_ARCH%\%ICU_DBRL%\icuinfo.exe\r
-set INTLTEST_CMD=%ICU_ICUDIR%\source\test\intltest\%ICU_ARCH%\%ICU_DBRL%\intltest.exe\r
-set IOTEST_CMD=%ICU_ICUDIR%\source\test\iotest\%ICU_ARCH%\%ICU_DBRL%\iotest.exe\r
-set CINTLTST_CMD=%ICU_ICUDIR%\source\test\cintltst\%ICU_ARCH%\%ICU_DBRL%\cintltst.exe\r
-set LETEST_CMD=%ICU_ICUDIR%\source\test\letest\%ICU_ARCH%\%ICU_DBRL%\letest.exe\r
-\r
-set ICUFAILED=\r
-set ICURUN=\r
-set ICUFAILCNT=0\r
-\r
-@echo on\r
-\r
-@set THT=icuinfo\r
-@echo ==== %THT% =========================================================================\r
-%ICUINFO_CMD% %ICUINFO_OPTS%\r
-\r
-@IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
-@set ICUFAILED=%ICUFAILED% %THT%\r
-@set ICUFAILCNT=1\r
-:OK_icuinfo\r
-@set ICURUN=%ICURUN% %THT%\r
-\r
-@set THT=intltest\r
-@echo ==== %THT% =========================================================================\r
-@cd %ICU_ICUDIR%\source\test\intltest\r
-%INTLTEST_CMD% %INTLTEST_OPTS%\r
-\r
-@IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
-@set ICUFAILED=%ICUFAILED% %THT%\r
-@set ICUFAILCNT=1\r
-:OK_intltest\r
-@set ICURUN=%ICURUN% %THT%\r
-\r
-@set THT=iotest\r
-@echo ==== %THT% =========================================================================\r
-@cd %ICU_ICUDIR%\source\test\iotest\r
-%IOTEST_CMD% %IOTEST_OPTS%\r
-\r
-@IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
-@set ICUFAILED=%ICUFAILED% %THT%\r
-@set ICUFAILCNT=1\r
-:OK_IOTEST\r
-@set ICURUN=%ICURUN% %THT%\r
-\r
-@set THT=cintltst\r
-@echo ==== %THT% =========================================================================\r
-@cd %ICU_ICUDIR%\source\test\cintltst\r
-%CINTLTST_CMD% %CINTLTST_OPTS%\r
-\r
-@IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
-@set ICUFAILED=%ICUFAILED% %THT%\r
-@set ICUFAILCNT=1\r
-:OK_cintltst\r
-@set ICURUN=%ICURUN% %THT%\r
-\r
-@REM  (Layout is deprecated - this would require HarfBuzz)\r
-@REM  @set THT=letest\r
-@REM  @echo ==== %THT% =========================================================================\r
-@REM  @cd %ICU_ICUDIR%\source\test\letest\r
-@REM  %LETST_CMD% %LETEST_OPTS%\r
-\r
-@REM  @IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
-@REM  @set ICUFAILED=%ICUFAILED% %THT%\r
-@REM  @set ICUFAILCNT=1\r
-@REM  :OK_letest\r
-@REM  @set ICURUN=%ICURUN% %THT%\r
-\r
-@echo off\r
-\r
-REM clean up\r
-set PATH=%ICU_OPATH%\r
-REM unset ICU_OPATH\r
-popd\r
-\r
-@REM done\r
-\r
-echo -\r
-echo -\r
-echo -\r
-echo ============================================================\r
-echo Summary: ICU in %ICU_ICUDIR%  arch=%ICU_ARCH% type=%ICU_DBRL%\r
-echo -\r
-echo Tests Run    : %ICURUN%\r
-\r
-if %ICUFAILCNT% == 0 (\r
-       echo " - All Passed!"\r
-       exit /b 0\r
-)\r
-echo Failing Tests: %ICUFAILED%\r
-echo -\r
-echo FAILED!\r
-\r
-exit /b 1\r
+@echo off
+REM Copyright (C) 2016 and later: Unicode, Inc. and others.
+REM License & terms of use: http://www.unicode.org/copyright.html
+REM  ********************************************************************
+REM  * COPYRIGHT:
+REM  * Copyright (c) 2010-2014, International Business Machines Corporation
+REM  * and others. All Rights Reserved.
+REM  ********************************************************************
+
+set ICU_ARCH=%1
+set ICU_DBRL=%2
+
+if "%1" == "" (
+echo Usage: %0 "x86 or x64"  "Debug or Release"
+exit /b 1
+)
+
+if "%2" == "" (
+echo Usage: %0 %1 "Debug or Release"
+exit /b 1
+)
+
+set ICU_OPATH=%PATH%
+
+set ICU_ICUDIR="%~dp0"\..\..
+
+if "%ICU_ARCH%" == "x64" (
+set ICU_BINDIR=%~dp0\..\..\bin64
+) else (
+set ICU_BINDIR=%~dp0\..\..\bin
+)
+
+set PATH=%ICU_BINDIR%;%PATH%
+
+echo testing ICU in %ICU_ICUDIR%  arch=%ICU_ARCH% type=%ICU_DBRL%
+pushd %ICU_ICUDIR%
+
+@rem factor these out
+set ICUINFO_CMD=%ICU_ICUDIR%\source\tools\icuinfo\%ICU_ARCH%\%ICU_DBRL%\icuinfo.exe
+set INTLTEST_CMD=%ICU_ICUDIR%\source\test\intltest\%ICU_ARCH%\%ICU_DBRL%\intltest.exe
+set IOTEST_CMD=%ICU_ICUDIR%\source\test\iotest\%ICU_ARCH%\%ICU_DBRL%\iotest.exe
+set CINTLTST_CMD=%ICU_ICUDIR%\source\test\cintltst\%ICU_ARCH%\%ICU_DBRL%\cintltst.exe
+set LETEST_CMD=%ICU_ICUDIR%\source\test\letest\%ICU_ARCH%\%ICU_DBRL%\letest.exe
+
+set ICUFAILED=
+set ICURUN=
+set ICUFAILCNT=0
+
+@echo on
+
+@set THT=icuinfo
+@echo ==== %THT% =========================================================================
+%ICUINFO_CMD% %ICUINFO_OPTS%
+
+@IF NOT ERRORLEVEL 1 GOTO OK_%THT%
+@set ICUFAILED=%ICUFAILED% %THT%
+@set ICUFAILCNT=1
+:OK_icuinfo
+@set ICURUN=%ICURUN% %THT%
+
+@set THT=intltest
+@echo ==== %THT% =========================================================================
+@cd %ICU_ICUDIR%\source\test\intltest
+%INTLTEST_CMD% %INTLTEST_OPTS%
+
+@IF NOT ERRORLEVEL 1 GOTO OK_%THT%
+@set ICUFAILED=%ICUFAILED% %THT%
+@set ICUFAILCNT=1
+:OK_intltest
+@set ICURUN=%ICURUN% %THT%
+
+@set THT=iotest
+@echo ==== %THT% =========================================================================
+@cd %ICU_ICUDIR%\source\test\iotest
+%IOTEST_CMD% %IOTEST_OPTS%
+
+@IF NOT ERRORLEVEL 1 GOTO OK_%THT%
+@set ICUFAILED=%ICUFAILED% %THT%
+@set ICUFAILCNT=1
+:OK_IOTEST
+@set ICURUN=%ICURUN% %THT%
+
+@set THT=cintltst
+@echo ==== %THT% =========================================================================
+@cd %ICU_ICUDIR%\source\test\cintltst
+%CINTLTST_CMD% %CINTLTST_OPTS%
+
+@IF NOT ERRORLEVEL 1 GOTO OK_%THT%
+@set ICUFAILED=%ICUFAILED% %THT%
+@set ICUFAILCNT=1
+:OK_cintltst
+@set ICURUN=%ICURUN% %THT%
+
+@REM  (Layout is deprecated - this would require HarfBuzz)
+@REM  @set THT=letest
+@REM  @echo ==== %THT% =========================================================================
+@REM  @cd %ICU_ICUDIR%\source\test\letest
+@REM  %LETST_CMD% %LETEST_OPTS%
+
+@REM  @IF NOT ERRORLEVEL 1 GOTO OK_%THT%
+@REM  @set ICUFAILED=%ICUFAILED% %THT%
+@REM  @set ICUFAILCNT=1
+@REM  :OK_letest
+@REM  @set ICURUN=%ICURUN% %THT%
+
+@echo off
+
+REM clean up
+set PATH=%ICU_OPATH%
+REM unset ICU_OPATH
+popd
+
+@REM done
+
+echo -
+echo -
+echo -
+echo ============================================================
+echo Summary: ICU in %ICU_ICUDIR%  arch=%ICU_ARCH% type=%ICU_DBRL%
+echo -
+echo Tests Run    : %ICURUN%
+
+if %ICUFAILCNT% == 0 (
+       echo " - All Passed!"
+       exit /b 0
+)
+echo Failing Tests: %ICUFAILED%
+echo -
+echo FAILED!
+
+exit /b 1
index 59ffb73..10fa8de 100644 (file)
@@ -94,6 +94,7 @@ stringtriebuilder.o bytestriebuilder.o \
 bytestrie.o bytestrieiterator.o \
 ucharstrie.o ucharstriebuilder.o ucharstrieiterator.o \
 dictionarydata.o \
+edits.o \
 appendable.o ustr_cnv.o unistr_cnv.o unistr.o unistr_case.o unistr_props.o \
 utf_impl.o ustring.o ustrcase.o ucasemap.o ucasemap_titlecase_brkiter.o cstring.o ustrfmt.o ustrtrns.o ustr_wcs.o utext.o \
 unistr_case_locale.o ustrcase_locale.o unistr_titlecase_brkiter.o ustr_titlecase_brkiter.o \
index 1a597b5..fca3c1e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  appendable.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ebcd0d2..08f9bed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  bmpset.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8975cd6..87375d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  bmpset.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index cf14483..a590060 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ************************************************************************************
index 163cbbe..0335d11 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  ************************************************************************************
index 029ec5e..f8e4d98 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5a5c2e4..bfd7bde 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // Copyright (C) 2009-2011, International Business Machines
 // Corporation and others. All Rights Reserved.
index 093cd8d..c4d498c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestrie.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 913d85a..581505e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestriebuilder.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4d04247..e64961a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestrieiterator.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 2479350..aee9f4e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
@@ -311,12 +311,12 @@ void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros
 
         // see what the permutations of the characters before and after this one are
         //Hashtable *subpermute = permute(source.substring(0,i) + source.substring(i + UTF16.getCharCount(cp)));
-        permute(subPermuteString.replace(i, U16_LENGTH(cp), NULL, 0), skipZeros, &subpermute, status);
+        permute(subPermuteString.remove(i, U16_LENGTH(cp)), skipZeros, &subpermute, status);
         /* Test for buffer overflows */
         if(U_FAILURE(status)) {
             return;
         }
-        // The upper replace is destructive. The question is do we have to make a copy, or we don't care about the contents 
+        // The upper remove is destructive. The question is do we have to make a copy, or we don't care about the contents 
         // of source at this point.
 
         // prefix this character to all of them
index 625ac49..887119a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c792181..8bacd20 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  charstr.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -15,6 +15,7 @@
 */
 
 #include "unicode/utypes.h"
+#include "unicode/putil.h"
 #include "charstr.h"
 #include "cmemory.h"
 #include "cstring.h"
index 9758c5c..3cfdf6a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/cmemory.c b/source/common/cmemory.c
deleted file mode 100644 (file)
index b40994a..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 2002-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-* File cmemory.c      ICU Heap allocation.
-*                     All ICU heap allocation, both for C and C++ new of ICU
-*                     class types, comes through these functions.
-*
-*                     If you have a need to replace ICU allocation, this is the
-*                     place to do it.
-*
-*                     Note that uprv_malloc(0) returns a non-NULL pointer, and
-*                     that a subsequent free of that pointer value is a NOP.
-*
-******************************************************************************
-*/
-#include "unicode/uclean.h"
-#include "cmemory.h"
-#include "putilimp.h"
-#include "uassert.h"
-#include <stdlib.h>
-
-/* uprv_malloc(0) returns a pointer to this read-only data. */
-static const int32_t zeroMem[] = {0, 0, 0, 0, 0, 0};
-
-/* Function Pointers for user-supplied heap functions  */
-static const void     *pContext;
-static UMemAllocFn    *pAlloc;
-static UMemReallocFn  *pRealloc;
-static UMemFreeFn     *pFree;
-
-#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
-#include <stdio.h>
-static int n=0;
-static long b=0; 
-#endif
-
-#if U_DEBUG
-
-static char gValidMemorySink = 0;
-
-U_CAPI void uprv_checkValidMemory(const void *p, size_t n) {
-    /*
-     * Access the memory to ensure that it's all valid.
-     * Load and save a computed value to try to ensure that the compiler
-     * does not throw away the whole loop.
-     * A thread analyzer might complain about un-mutexed access to gValidMemorySink
-     * which is true but harmless because no one ever uses the value in gValidMemorySink.
-     */
-    const char *s = (const char *)p;
-    char c = gValidMemorySink;
-    size_t i;
-    U_ASSERT(p != NULL);
-    for(i = 0; i < n; ++i) {
-        c ^= s[i];
-    }
-    gValidMemorySink = c;
-}
-
-#endif  /* U_DEBUG */
-
-U_CAPI void * U_EXPORT2
-uprv_malloc(size_t s) {
-#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
-#if 1
-  putchar('>');
-  fflush(stdout);
-#else
-  fprintf(stderr,"MALLOC\t#%d\t%ul bytes\t%ul total\n", ++n,s,(b+=s)); fflush(stderr);
-#endif
-#endif
-    if (s > 0) {
-        if (pAlloc) {
-            return (*pAlloc)(pContext, s);
-        } else {
-            return uprv_default_malloc(s);
-        }
-    } else {
-        return (void *)zeroMem;
-    }
-}
-
-U_CAPI void * U_EXPORT2
-uprv_realloc(void * buffer, size_t size) {
-#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
-  putchar('~');
-  fflush(stdout);
-#endif
-    if (buffer == zeroMem) {
-        return uprv_malloc(size);
-    } else if (size == 0) {
-        if (pFree) {
-            (*pFree)(pContext, buffer);
-        } else {
-            uprv_default_free(buffer);
-        }
-        return (void *)zeroMem;
-    } else {
-        if (pRealloc) {
-            return (*pRealloc)(pContext, buffer, size);
-        } else {
-            return uprv_default_realloc(buffer, size);
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-uprv_free(void *buffer) {
-#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
-  putchar('<');
-  fflush(stdout);
-#endif
-    if (buffer != zeroMem) {
-        if (pFree) {
-            (*pFree)(pContext, buffer);
-        } else {
-            uprv_default_free(buffer);
-        }
-    }
-}
-
-U_CAPI void * U_EXPORT2
-uprv_calloc(size_t num, size_t size) {
-    void *mem = NULL;
-    size *= num;
-    mem = uprv_malloc(size);
-    if (mem) {
-        uprv_memset(mem, 0, size);
-    }
-    return mem;
-}
-
-U_CAPI void U_EXPORT2
-u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMemFreeFn *f,  UErrorCode *status)
-{
-    if (U_FAILURE(*status)) {
-        return;
-    }
-    if (a==NULL || r==NULL || f==NULL) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    pContext  = context;
-    pAlloc    = a;
-    pRealloc  = r;
-    pFree     = f;
-}
-
-
-U_CFUNC UBool cmemory_cleanup(void) {
-    pContext   = NULL;
-    pAlloc     = NULL;
-    pRealloc   = NULL;
-    pFree      = NULL;
-    return TRUE;
-}
index a1211bd..665a822 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index e6c9acf..33ef60e 100644 (file)
       <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuuc58.dll</OutputFile>
+      <OutputFile>..\..\bin\icuuc59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib\icuuc.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuuc58d.dll</OutputFile>
+      <OutputFile>..\..\bin\icuuc59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib\icuucd.pdb</ProgramDatabaseFile>
       <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuuc58.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuuc59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib64\icuuc.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuuc58d.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuuc59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib64\icuucd.pdb</ProgramDatabaseFile>
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="filteredbrk.cpp" />
-    <ClCompile Include="ubidi.c" />
-    <ClCompile Include="ubiditransform.c" />
-    <ClCompile Include="ubidi_props.c" />
-    <ClCompile Include="ubidiln.c" />
-    <ClCompile Include="ubidiwrt.c" />
+    <ClCompile Include="ubidi.cpp" />
+    <ClCompile Include="ubiditransform.cpp" />
+    <ClCompile Include="ubidi_props.cpp" />
+    <ClCompile Include="ubidiln.cpp" />
+    <ClCompile Include="ubidiwrt.cpp" />
     <ClCompile Include="uloc_keytype.cpp" />
     <ClCompile Include="ushape.cpp" />
     <ClCompile Include="brkeng.cpp">
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\i18n;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\i18n;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
-    <ClCompile Include="propsvec.c" />
-    <ClCompile Include="uarrsort.c" />
-    <ClCompile Include="uenum.c" />
-    <ClCompile Include="uhash.c" />
+    <ClCompile Include="propsvec.cpp" />
+    <ClCompile Include="uarrsort.cpp" />
+    <ClCompile Include="uenum.cpp" />
+    <ClCompile Include="uhash.cpp" />
     <ClCompile Include="uhash_us.cpp" />
-    <ClCompile Include="ulist.c" />
+    <ClCompile Include="ulist.cpp" />
     <ClCompile Include="ustack.cpp" />
     <ClCompile Include="ustrenum.cpp" />
     <ClCompile Include="utrie.cpp" />
     <ClCompile Include="uvectr32.cpp" />
     <ClCompile Include="uvectr64.cpp" />
     <ClCompile Include="errorcode.cpp" />
-    <ClCompile Include="icudataver.c" />
-    <ClCompile Include="locmap.c">
+    <ClCompile Include="icudataver.cpp" />
+    <ClCompile Include="locmap.cpp">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="umath.c" />
+    <ClCompile Include="umath.cpp" />
     <ClCompile Include="umutex.cpp">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="utrace.c" />
-    <ClCompile Include="utypes.c" />
-    <ClCompile Include="wintz.c">
+    <ClCompile Include="utrace.cpp" />
+    <ClCompile Include="utypes.cpp" />
+    <ClCompile Include="wintz.cpp">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="ucnv.c" />
+    <ClCompile Include="ucnv.cpp" />
     <ClCompile Include="ucnv2022.cpp" />
     <ClCompile Include="ucnv_bld.cpp">
     </ClCompile>
-    <ClCompile Include="ucnv_cb.c" />
-    <ClCompile Include="ucnv_cnv.c" />
-    <ClCompile Include="ucnv_ct.c" />
-    <ClCompile Include="ucnv_err.c" />
+    <ClCompile Include="ucnv_cb.cpp" />
+    <ClCompile Include="ucnv_cnv.cpp" />
+    <ClCompile Include="ucnv_ct.cpp" />
+    <ClCompile Include="ucnv_err.cpp" />
     <ClCompile Include="ucnv_ext.cpp" />
     <ClCompile Include="ucnv_io.cpp">
     </ClCompile>
-    <ClCompile Include="ucnv_lmb.c" />
-    <ClCompile Include="ucnv_set.c" />
-    <ClCompile Include="ucnv_u16.c" />
-    <ClCompile Include="ucnv_u32.c" />
-    <ClCompile Include="ucnv_u7.c" />
-    <ClCompile Include="ucnv_u8.c" />
+    <ClCompile Include="ucnv_lmb.cpp" />
+    <ClCompile Include="ucnv_set.cpp" />
+    <ClCompile Include="ucnv_u16.cpp" />
+    <ClCompile Include="ucnv_u32.cpp" />
+    <ClCompile Include="ucnv_u7.cpp" />
+    <ClCompile Include="ucnv_u8.cpp" />
     <ClCompile Include="ucnvbocu.cpp" />
-    <ClCompile Include="ucnvdisp.c" />
-    <ClCompile Include="ucnvhz.c" />
-    <ClCompile Include="ucnvisci.c" />
-    <ClCompile Include="ucnvlat1.c" />
+    <ClCompile Include="ucnvdisp.cpp" />
+    <ClCompile Include="ucnvhz.cpp" />
+    <ClCompile Include="ucnvisci.cpp" />
+    <ClCompile Include="ucnvlat1.cpp" />
     <ClCompile Include="ucnvmbcs.cpp" />
-    <ClCompile Include="ucnvscsu.c" />
+    <ClCompile Include="ucnvscsu.cpp" />
     <ClCompile Include="ucnvsel.cpp">
     </ClCompile>
-    <ClCompile Include="cmemory.c" />
+    <ClCompile Include="cmemory.cpp" />
     <ClCompile Include="ucln_cmn.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="ucmndata.c" />
+    <ClCompile Include="ucmndata.cpp" />
     <ClCompile Include="udata.cpp" />
-    <ClCompile Include="udatamem.c" />
-    <ClCompile Include="udataswp.c" />
+    <ClCompile Include="udatamem.cpp" />
+    <ClCompile Include="udataswp.cpp" />
     <ClCompile Include="uinit.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="umapfile.c">
+    <ClCompile Include="umapfile.cpp">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
     <ClCompile Include="uobject.cpp" />
     <ClCompile Include="dtintrv.cpp" />
     <ClCompile Include="parsepos.cpp" />
-    <ClCompile Include="ustrfmt.c" />
+    <ClCompile Include="ustrfmt.cpp" />
     <ClCompile Include="util.cpp" />
     <ClCompile Include="util_props.cpp" />
     <ClCompile Include="punycode.cpp" />
     <ClCompile Include="resbund.cpp">
     </ClCompile>
     <ClCompile Include="resbund_cnv.cpp" />
-    <ClCompile Include="ucat.c" />
+    <ClCompile Include="ucat.cpp" />
     <ClCompile Include="uloc.cpp" />
-    <ClCompile Include="uloc_tag.c" />
-    <ClCompile Include="ures_cnv.c" />
+    <ClCompile Include="uloc_tag.cpp" />
+    <ClCompile Include="ures_cnv.cpp" />
     <ClCompile Include="uresbund.cpp" />
     <ClCompile Include="uresdata.cpp" />
     <ClCompile Include="resource.cpp" />
     <ClCompile Include="ruleiter.cpp" />
     <ClCompile Include="ucase.cpp">
     </ClCompile>
-    <ClCompile Include="uchar.c" />
+    <ClCompile Include="uchar.cpp" />
     <ClCompile Include="unames.cpp" />
     <ClCompile Include="unifiedcache.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     <ClCompile Include="uniset_props.cpp" />
     <ClCompile Include="unisetspan.cpp" />
     <ClCompile Include="uprops.cpp" />
-    <ClCompile Include="usc_impl.c" />
-    <ClCompile Include="uscript.c" />
+    <ClCompile Include="usc_impl.cpp" />
+    <ClCompile Include="uscript.cpp" />
     <ClCompile Include="uscript_props.cpp" />
     <ClCompile Include="uset.cpp" />
     <ClCompile Include="uset_props.cpp" />
     <ClCompile Include="bytestrieiterator.cpp" />
     <ClCompile Include="chariter.cpp" />
     <ClCompile Include="charstr.cpp" />
-    <ClCompile Include="cstring.c" />
+    <ClCompile Include="cstring.cpp" />
     <ClCompile Include="cstr.cpp" />
-    <ClCompile Include="cwchar.c" />
+    <ClCompile Include="cwchar.cpp" />
+    <ClCompile Include="edits.cpp" />
     <ClCompile Include="messagepattern.cpp" />
     <ClCompile Include="schriter.cpp" />
     <ClCompile Include="stringpiece.cpp" />
     <ClCompile Include="ucharstriebuilder.cpp" />
     <ClCompile Include="ucharstrieiterator.cpp" />
     <ClCompile Include="uchriter.cpp" />
-    <ClCompile Include="uinvchar.c" />
+    <ClCompile Include="uinvchar.cpp" />
     <ClCompile Include="uiter.cpp" />
     <ClCompile Include="unistr.cpp" />
     <ClCompile Include="unistr_case.cpp" />
     <ClCompile Include="ustring.cpp" />
     <ClCompile Include="ustrtrns.cpp" />
     <ClCompile Include="utext.cpp" />
-    <ClCompile Include="utf_impl.c" />
+    <ClCompile Include="utf_impl.cpp" />
     <ClCompile Include="listformatter.cpp" />
     <ClCompile Include="ulistformatter.cpp" />
   </ItemGroup>
 </Command>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
     </CustomBuild>
+    <CustomBuild Include="unicode\casemap.h">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="unicode\char16ptr.h">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+    </CustomBuild>
     <CustomBuild Include="unicode\chariter.h">
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
 </Command>
     <ClInclude Include="cstring.h" />
     <ClInclude Include="cstr.h" />
     <ClInclude Include="cwchar.h" />
+    <CustomBuild Include="unicode\edits.h">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" ..\..\include\unicode
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+    </CustomBuild>
     <CustomBuild Include="unicode\messagepattern.h">
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
 </Command>
 </Command>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
     </CustomBuild>
+    <ClInclude Include="ucasemap_imp.h" />
     <CustomBuild Include="unicode\ucharstrie.h">
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
 </Command>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 56e8c12..0542a8b 100644 (file)
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="ubidi.c">
+    <ClCompile Include="ubidi.cpp">
       <Filter>bidi</Filter>
     </ClCompile>
-    <ClCompile Include="ubidi_props.c">
+    <ClCompile Include="ubidi_props.cpp">
       <Filter>bidi</Filter>
     </ClCompile>
-    <ClCompile Include="ubidiln.c">
+    <ClCompile Include="ubidiln.cpp">
       <Filter>bidi</Filter>
     </ClCompile>
-    <ClCompile Include="ubidiwrt.c">
+    <ClCompile Include="ubidiwrt.cpp">
       <Filter>bidi</Filter>
     </ClCompile>
     <ClCompile Include="ushape.cpp">
     <ClCompile Include="pluralmap.cpp">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="propsvec.c">
+    <ClCompile Include="propsvec.cpp">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="uarrsort.c">
+    <ClCompile Include="uarrsort.cpp">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="uenum.c">
+    <ClCompile Include="uenum.cpp">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="uhash.c">
+    <ClCompile Include="uhash.cpp">
       <Filter>collections</Filter>
     </ClCompile>
     <ClCompile Include="uhash_us.cpp">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="ulist.c">
+    <ClCompile Include="ulist.cpp">
       <Filter>collections</Filter>
     </ClCompile>
     <ClCompile Include="unifiedcache.cpp">
     <ClCompile Include="errorcode.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="icudataver.c">
+    <ClCompile Include="icudataver.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="locmap.c">
+    <ClCompile Include="locmap.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
     <ClCompile Include="putil.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="umath.c">
+    <ClCompile Include="umath.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
     <ClCompile Include="umutex.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="utrace.c">
+    <ClCompile Include="utrace.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="utypes.c">
+    <ClCompile Include="utypes.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="wintz.c">
+    <ClCompile Include="wintz.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv.c">
+    <ClCompile Include="ucnv.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnv2022.cpp">
     <ClCompile Include="ucnv_bld.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_cb.c">
+    <ClCompile Include="ucnv_cb.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_cnv.c">
+    <ClCompile Include="ucnv_cnv.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_err.c">
+    <ClCompile Include="ucnv_err.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnv_ext.cpp">
     <ClCompile Include="ucnv_io.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_lmb.c">
+    <ClCompile Include="ucnv_lmb.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_set.c">
+    <ClCompile Include="ucnv_set.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_u16.c">
+    <ClCompile Include="ucnv_u16.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_u32.c">
+    <ClCompile Include="ucnv_u32.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_u7.c">
+    <ClCompile Include="ucnv_u7.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_u8.c">
+    <ClCompile Include="ucnv_u8.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnvbocu.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvdisp.c">
+    <ClCompile Include="ucnvdisp.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvhz.c">
+    <ClCompile Include="ucnvhz.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvisci.c">
+    <ClCompile Include="ucnvisci.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvlat1.c">
+    <ClCompile Include="ucnvlat1.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnvmbcs.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvscsu.c">
+    <ClCompile Include="ucnvscsu.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnvsel.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="cmemory.c">
+    <ClCompile Include="cmemory.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
     <ClCompile Include="sharedobject.cpp">
     <ClCompile Include="ucln_cmn.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
-    <ClCompile Include="ucmndata.c">
+    <ClCompile Include="ucmndata.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
     <ClCompile Include="udata.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
-    <ClCompile Include="udatamem.c">
+    <ClCompile Include="udatamem.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
-    <ClCompile Include="udataswp.c">
+    <ClCompile Include="udataswp.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
     <ClCompile Include="uinit.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
-    <ClCompile Include="umapfile.c">
+    <ClCompile Include="umapfile.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
     <ClCompile Include="uobject.cpp">
     <ClCompile Include="ucurr.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="ustrfmt.c">
+    <ClCompile Include="ustrfmt.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="util.cpp">
     <ClCompile Include="resbund_cnv.cpp">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
-    <ClCompile Include="ucat.c">
+    <ClCompile Include="ucat.cpp">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
     <ClCompile Include="uloc.cpp">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
-    <ClCompile Include="uloc_tag.c">
+    <ClCompile Include="uloc_tag.cpp">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
-    <ClCompile Include="ures_cnv.c">
+    <ClCompile Include="ures_cnv.cpp">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
     <ClCompile Include="uresbund.cpp">
     <ClCompile Include="ucase.cpp">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
-    <ClCompile Include="uchar.c">
+    <ClCompile Include="uchar.cpp">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
     <ClCompile Include="unames.cpp">
     <ClCompile Include="uprops.cpp">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
-    <ClCompile Include="usc_impl.c">
+    <ClCompile Include="usc_impl.cpp">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
-    <ClCompile Include="uscript.c">
+    <ClCompile Include="uscript.cpp">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
     <ClCompile Include="uscript_props.cpp">
     <ClCompile Include="charstr.cpp">
       <Filter>strings</Filter>
     </ClCompile>
-    <ClCompile Include="cstring.c">
+    <ClCompile Include="cstring.cpp">
       <Filter>strings</Filter>
     </ClCompile>
     <ClCompile Include="cstr.cpp">
       <Filter>strings</Filter>
     </ClCompile>
-    <ClCompile Include="cwchar.c">
+    <ClCompile Include="cwchar.cpp">
+      <Filter>strings</Filter>
+    </ClCompile>
+    <ClCompile Include="edits.cpp">
       <Filter>strings</Filter>
     </ClCompile>
     <ClCompile Include="schriter.cpp">
     <ClCompile Include="uchriter.cpp">
       <Filter>strings</Filter>
     </ClCompile>
-    <ClCompile Include="uinvchar.c">
+    <ClCompile Include="uinvchar.cpp">
       <Filter>strings</Filter>
     </ClCompile>
     <ClCompile Include="uiter.cpp">
     <ClCompile Include="utext.cpp">
       <Filter>strings</Filter>
     </ClCompile>
-    <ClCompile Include="utf_impl.c">
+    <ClCompile Include="utf_impl.cpp">
       <Filter>strings</Filter>
     </ClCompile>
     <ClCompile Include="bytestrie.cpp">
     <ClCompile Include="dictionarydata.cpp">
       <Filter>break iteration</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_ct.c">
+    <ClCompile Include="ucnv_ct.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucharstrie.cpp">
     <ClCompile Include="icuplug.cpp">
       <Filter>registration</Filter>
     </ClCompile>
-    <ClCompile Include="ubiditransform.c">
+    <ClCompile Include="ubiditransform.cpp">
       <Filter>bidi</Filter>
     </ClCompile>
   </ItemGroup>
     <ClInclude Include="cwchar.h">
       <Filter>strings</Filter>
     </ClInclude>
+    <ClInclude Include="ucasemap_imp.h">
+      <Filter>strings</Filter>
+    </ClInclude>
     <ClInclude Include="uinvchar.h">
       <Filter>strings</Filter>
     </ClInclude>
     <CustomBuild Include="unicode\bytestream.h">
       <Filter>strings</Filter>
     </CustomBuild>
+    <CustomBuild Include="unicode\casemap.h">
+      <Filter>strings</Filter>
+    </CustomBuild>
+    <CustomBuild Include="unicode\char16ptr.h">
+      <Filter>strings</Filter>
+    </CustomBuild>
     <CustomBuild Include="unicode\chariter.h">
       <Filter>strings</Filter>
     </CustomBuild>
+    <CustomBuild Include="unicode\edits.h">
+      <Filter>strings</Filter>
+    </CustomBuild>
     <CustomBuild Include="unicode\rep.h">
       <Filter>strings</Filter>
     </CustomBuild>
       <Filter>collections</Filter>
     </CustomBuild>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index 57af69a..307e570 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  cpputils.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 */
index a0006df..24654f8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 93b2e54..c33f487 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/cstring.c b/source/common/cstring.c
deleted file mode 100644 (file)
index eb6e021..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1997-2011, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-* File CSTRING.C
-*
-* @author       Helena Shih
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   6/18/98     hshih       Created
-*   09/08/98    stephen     Added include for ctype, for Mac Port
-*   11/15/99    helena      Integrated S/390 IEEE changes. 
-******************************************************************************
-*/
-
-
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "unicode/utypes.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "uassert.h"
-
-/*
- * We hardcode case conversion for invariant characters to match our expectation
- * and the compiler execution charset.
- * This prevents problems on systems
- * - with non-default casing behavior, like Turkish system locales where
- *   tolower('I') maps to dotless i and toupper('i') maps to dotted I
- * - where there are no lowercase Latin characters at all, or using different
- *   codes (some old EBCDIC codepages)
- *
- * This works because the compiler usually runs on a platform where the execution
- * charset includes all of the invariant characters at their expected
- * code positions, so that the char * string literals in ICU code match
- * the char literals here.
- *
- * Note that the set of lowercase Latin letters is discontiguous in EBCDIC
- * and the set of uppercase Latin letters is discontiguous as well.
- */
-
-U_CAPI UBool U_EXPORT2
-uprv_isASCIILetter(char c) {
-#if U_CHARSET_FAMILY==U_EBCDIC_FAMILY
-    return
-        ('a'<=c && c<='i') || ('j'<=c && c<='r') || ('s'<=c && c<='z') ||
-        ('A'<=c && c<='I') || ('J'<=c && c<='R') || ('S'<=c && c<='Z');
-#else
-    return ('a'<=c && c<='z') || ('A'<=c && c<='Z');
-#endif
-}
-
-U_CAPI char U_EXPORT2
-uprv_toupper(char c) {
-#if U_CHARSET_FAMILY==U_EBCDIC_FAMILY
-    if(('a'<=c && c<='i') || ('j'<=c && c<='r') || ('s'<=c && c<='z')) {
-        c=(char)(c+('A'-'a'));
-    }
-#else
-    if('a'<=c && c<='z') {
-        c=(char)(c+('A'-'a'));
-    }
-#endif
-    return c;
-}
-
-
-#if 0
-/*
- * Commented out because cstring.h defines uprv_tolower() to be
- * the same as either uprv_asciitolower() or uprv_ebcdictolower()
- * to reduce the amount of code to cover with tests.
- *
- * Note that this uprv_tolower() definition is likely to work for most
- * charset families, not just ASCII and EBCDIC, because its #else branch
- * is written generically.
- */
-U_CAPI char U_EXPORT2
-uprv_tolower(char c) {
-#if U_CHARSET_FAMILY==U_EBCDIC_FAMILY
-    if(('A'<=c && c<='I') || ('J'<=c && c<='R') || ('S'<=c && c<='Z')) {
-        c=(char)(c+('a'-'A'));
-    }
-#else
-    if('A'<=c && c<='Z') {
-        c=(char)(c+('a'-'A'));
-    }
-#endif
-    return c;
-}
-#endif
-
-U_CAPI char U_EXPORT2
-uprv_asciitolower(char c) {
-    if(0x41<=c && c<=0x5a) {
-        c=(char)(c+0x20);
-    }
-    return c;
-}
-
-U_CAPI char U_EXPORT2
-uprv_ebcdictolower(char c) {
-    if( (0xc1<=(uint8_t)c && (uint8_t)c<=0xc9) ||
-        (0xd1<=(uint8_t)c && (uint8_t)c<=0xd9) ||
-        (0xe2<=(uint8_t)c && (uint8_t)c<=0xe9)
-    ) {
-        c=(char)(c-0x40);
-    }
-    return c;
-}
-
-
-U_CAPI char* U_EXPORT2
-T_CString_toLowerCase(char* str)
-{
-    char* origPtr = str;
-
-    if (str) {
-        do
-            *str = (char)uprv_tolower(*str);
-        while (*(str++));
-    }
-
-    return origPtr;
-}
-
-U_CAPI char* U_EXPORT2
-T_CString_toUpperCase(char* str)
-{
-    char* origPtr = str;
-
-    if (str) {
-        do
-            *str = (char)uprv_toupper(*str);
-        while (*(str++));
-    }
-
-    return origPtr;
-}
-
-/*
- * Takes a int32_t and fills in  a char* string with that number "radix"-based.
- * Does not handle negative values (makes an empty string for them).
- * Writes at most 12 chars ("-2147483647" plus NUL).
- * Returns the length of the string (not including the NUL).
- */
-U_CAPI int32_t U_EXPORT2
-T_CString_integerToString(char* buffer, int32_t v, int32_t radix)
-{
-    char      tbuf[30];
-    int32_t   tbx    = sizeof(tbuf);
-    uint8_t   digit;
-    int32_t   length = 0;
-    uint32_t  uval;
-    
-    U_ASSERT(radix>=2 && radix<=16);
-    uval = (uint32_t) v;
-    if(v<0 && radix == 10) {
-        /* Only in base 10 do we conside numbers to be signed. */
-        uval = (uint32_t)(-v); 
-        buffer[length++] = '-';
-    }
-    
-    tbx = sizeof(tbuf)-1;
-    tbuf[tbx] = 0;   /* We are generating the digits backwards.  Null term the end. */
-    do {
-        digit = (uint8_t)(uval % radix);
-        tbuf[--tbx] = (char)(T_CString_itosOffset(digit));
-        uval  = uval / radix;
-    } while (uval != 0);
-    
-    /* copy converted number into user buffer  */
-    uprv_strcpy(buffer+length, tbuf+tbx);
-    length += sizeof(tbuf) - tbx -1;
-    return length;
-}
-
-
-
-/*
- * Takes a int64_t and fills in  a char* string with that number "radix"-based.
- * Writes at most 21: chars ("-9223372036854775807" plus NUL).
- * Returns the length of the string, not including the terminating NULL.
- */
-U_CAPI int32_t U_EXPORT2
-T_CString_int64ToString(char* buffer, int64_t v, uint32_t radix)
-{
-    char      tbuf[30];
-    int32_t   tbx    = sizeof(tbuf);
-    uint8_t   digit;
-    int32_t   length = 0;
-    uint64_t  uval;
-    
-    U_ASSERT(radix>=2 && radix<=16);
-    uval = (uint64_t) v;
-    if(v<0 && radix == 10) {
-        /* Only in base 10 do we conside numbers to be signed. */
-        uval = (uint64_t)(-v); 
-        buffer[length++] = '-';
-    }
-    
-    tbx = sizeof(tbuf)-1;
-    tbuf[tbx] = 0;   /* We are generating the digits backwards.  Null term the end. */
-    do {
-        digit = (uint8_t)(uval % radix);
-        tbuf[--tbx] = (char)(T_CString_itosOffset(digit));
-        uval  = uval / radix;
-    } while (uval != 0);
-    
-    /* copy converted number into user buffer  */
-    uprv_strcpy(buffer+length, tbuf+tbx);
-    length += sizeof(tbuf) - tbx -1;
-    return length;
-}
-
-
-U_CAPI int32_t U_EXPORT2
-T_CString_stringToInteger(const char *integerString, int32_t radix)
-{
-    char *end;
-    return uprv_strtoul(integerString, &end, radix);
-
-}
-
-U_CAPI int U_EXPORT2
-uprv_stricmp(const char *str1, const char *str2) {
-    if(str1==NULL) {
-        if(str2==NULL) {
-            return 0;
-        } else {
-            return -1;
-        }
-    } else if(str2==NULL) {
-        return 1;
-    } else {
-        /* compare non-NULL strings lexically with lowercase */
-        int rc;
-        unsigned char c1, c2;
-
-        for(;;) {
-            c1=(unsigned char)*str1;
-            c2=(unsigned char)*str2;
-            if(c1==0) {
-                if(c2==0) {
-                    return 0;
-                } else {
-                    return -1;
-                }
-            } else if(c2==0) {
-                return 1;
-            } else {
-                /* compare non-zero characters with lowercase */
-                rc=(int)(unsigned char)uprv_tolower(c1)-(int)(unsigned char)uprv_tolower(c2);
-                if(rc!=0) {
-                    return rc;
-                }
-            }
-            ++str1;
-            ++str2;
-        }
-    }
-}
-
-U_CAPI int U_EXPORT2
-uprv_strnicmp(const char *str1, const char *str2, uint32_t n) {
-    if(str1==NULL) {
-        if(str2==NULL) {
-            return 0;
-        } else {
-            return -1;
-        }
-    } else if(str2==NULL) {
-        return 1;
-    } else {
-        /* compare non-NULL strings lexically with lowercase */
-        int rc;
-        unsigned char c1, c2;
-
-        for(; n--;) {
-            c1=(unsigned char)*str1;
-            c2=(unsigned char)*str2;
-            if(c1==0) {
-                if(c2==0) {
-                    return 0;
-                } else {
-                    return -1;
-                }
-            } else if(c2==0) {
-                return 1;
-            } else {
-                /* compare non-zero characters with lowercase */
-                rc=(int)(unsigned char)uprv_tolower(c1)-(int)(unsigned char)uprv_tolower(c2);
-                if(rc!=0) {
-                    return rc;
-                }
-            }
-            ++str1;
-            ++str2;
-        }
-    }
-
-    return 0;
-}
-
-U_CAPI char* U_EXPORT2
-uprv_strdup(const char *src) {
-    size_t len = uprv_strlen(src) + 1;
-    char *dup = (char *) uprv_malloc(len);
-
-    if (dup) {
-        uprv_memcpy(dup, src, len);
-    }
-
-    return dup;
-}
-
-U_CAPI char* U_EXPORT2
-uprv_strndup(const char *src, int32_t n) {
-    char *dup;
-
-    if(n < 0) {
-        dup = uprv_strdup(src);
-    } else {
-        dup = (char*)uprv_malloc(n+1);
-        if (dup) { 
-            uprv_memcpy(dup, src, n);
-            dup[n] = 0;
-        }
-    }
-
-    return dup;
-}
index 238cb31..2232efc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/cwchar.c b/source/common/cwchar.c
deleted file mode 100644 (file)
index 4c469ce..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*  
-******************************************************************************
-*
-*   Copyright (C) 2001, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*   file name:  cwchar.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2001may25
-*   created by: Markus W. Scherer
-*/
-
-#include "unicode/utypes.h"
-
-#if !U_HAVE_WCSCPY
-
-#include "cwchar.h"
-
-U_CAPI wchar_t *uprv_wcscat(wchar_t *dst, const wchar_t *src) {
-    wchar_t *start=dst;
-    while(*dst!=0) {
-        ++dst;
-    }
-    while((*dst=*src)!=0) {
-        ++dst;
-        ++src;
-    }
-    return start;
-}
-
-U_CAPI wchar_t *uprv_wcscpy(wchar_t *dst, const wchar_t *src) {
-    wchar_t *start=dst;
-    while((*dst=*src)!=0) {
-        ++dst;
-        ++src;
-    }
-    return start;
-}
-
-U_CAPI size_t uprv_wcslen(const wchar_t *src) {
-    const wchar_t *start=src;
-    while(*src!=0) {
-        ++src;
-    }
-    return src-start;
-}
-
-#endif
-
index c8c3497..8fd041a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  cwchar.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 924f09b..8ee76ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
@@ -1385,12 +1385,25 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText,
     // Now that we're done, convert positions in t_boundary[] (indices in 
     // the normalized input string) back to indices in the original input UText
     // while reversing t_boundary and pushing values to foundBreaks.
+    int32_t prevCPPos = -1;
+    int32_t prevUTextPos = -1;
     for (int32_t i = numBreaks-1; i >= 0; i--) {
         int32_t cpPos = t_boundary.elementAti(i);
+        U_ASSERT(cpPos > prevCPPos);
         int32_t utextPos =  inputMap.isValid() ? inputMap->elementAti(cpPos) : cpPos + rangeStart;
-        // Boundaries are added to foundBreaks output in ascending order.
-        U_ASSERT(foundBreaks.size() == 0 ||foundBreaks.peeki() < utextPos);
-        foundBreaks.push(utextPos, status);
+        U_ASSERT(utextPos >= prevUTextPos);
+        if (utextPos > prevUTextPos) {
+            // Boundaries are added to foundBreaks output in ascending order.
+            U_ASSERT(foundBreaks.size() == 0 || foundBreaks.peeki() < utextPos);
+            foundBreaks.push(utextPos, status);
+        } else {
+            // Normalization expanded the input text, the dictionary found a boundary
+            // within the expansion, giving two boundaries with the same index in the
+            // original text. Ignore the second. See ticket #12918.
+            --numBreaks;
+        }
+        prevCPPos = cpPos;
+        prevUTextPos = utextPos;
     }
 
     // inString goes out of scope
index 9390e92..242f475 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 00f6636..6e2dbee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6f8852c..73b7d67 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index f3313d5..80bb5d6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*******************************************************************************
 * Copyright (C) 2008, International Business Machines Corporation and
index bc7807d..e7ac43b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  errorcode.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index acba959..1ab1ca6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -702,4 +702,4 @@ FilteredBreakIteratorBuilder::createInstance(UErrorCode& status) {
 
 U_NAMESPACE_END
 
-#endif //#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING && !UCONFIG_NO_FILTERED_BREAK_ITERATION
+#endif //#if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION
index fb6e831..28e5f6c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  filterednormalizer2.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ac7d22f..b411a43 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/icudataver.c b/source/common/icudataver.c
deleted file mode 100644 (file)
index 681a187..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 2009-2011, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/icudataver.h"
-#include "unicode/ures.h"
-#include "uresimp.h" /* for ures_getVersionByKey */
-
-U_CAPI void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status) {
-    UResourceBundle *icudatares = NULL;
-    
-    if (U_FAILURE(*status)) {
-        return;
-    }
-    
-    if (dataVersionFillin != NULL) {
-        icudatares = ures_openDirect(NULL, U_ICU_VERSION_BUNDLE , status);
-        if (U_SUCCESS(*status)) {
-            ures_getVersionByKey(icudatares, U_ICU_DATA_KEY, dataVersionFillin, status);
-        }
-        ures_close(icudatares);
-    }
-}
index ec889f7..c6439cc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index acbbcaf..3cad8f8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 9225c22..d105654 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  listformatter.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -25,6 +25,7 @@
 #include "charstr.h"
 #include "ucln_cmn.h"
 #include "uresimp.h"
+#include "resource.h"
 
 U_NAMESPACE_BEGIN
 
@@ -78,17 +79,6 @@ uprv_deleteListFormatInternal(void *obj) {
 
 U_CDECL_END
 
-static ListFormatInternal* loadListFormatInternal(
-        const Locale& locale,
-        const char* style,
-        UErrorCode& errorCode);
-
-static void getStringByKey(
-        const UResourceBundle* rb,
-        const char* key,
-        UnicodeString& result,
-        UErrorCode& errorCode);
-
 ListFormatter::ListFormatter(const ListFormatter& other) :
         owned(other.owned), data(other.data) {
     if (other.owned != NULL) {
@@ -171,30 +161,107 @@ const ListFormatInternal* ListFormatter::getListFormatInternal(
     return result;
 }
 
-static ListFormatInternal* loadListFormatInternal(
+static const UChar solidus = 0x2F;
+static const UChar aliasPrefix[] = { 0x6C,0x69,0x73,0x74,0x50,0x61,0x74,0x74,0x65,0x72,0x6E,0x2F }; // "listPattern/"
+enum {
+    kAliasPrefixLen = UPRV_LENGTHOF(aliasPrefix),
+    kStyleLenMax = 24 // longest currently is 14
+};
+
+struct ListFormatter::ListPatternsSink : public ResourceSink {
+    UnicodeString two, start, middle, end;
+#if ((U_PLATFORM == U_PF_AIX) || (U_PLATFORM == U_PF_OS390)) && (U_CPLUSPLUS_VERSION < 11)
+    char aliasedStyle[kStyleLenMax+1];
+    ListPatternsSink() {
+      uprv_memset(aliasedStyle, 0, kStyleLenMax+1);
+    }
+#else
+    char aliasedStyle[kStyleLenMax+1] = {0};
+
+    ListPatternsSink() {}
+#endif
+    virtual ~ListPatternsSink();
+
+    void setAliasedStyle(UnicodeString alias) {
+        int32_t startIndex = alias.indexOf(aliasPrefix, kAliasPrefixLen, 0);
+        if (startIndex < 0) {
+            return;
+        }
+        startIndex += kAliasPrefixLen;
+        int32_t endIndex = alias.indexOf(solidus, startIndex);
+        if (endIndex < 0) {
+            endIndex = alias.length();
+        }
+        alias.extract(startIndex, endIndex-startIndex, aliasedStyle, kStyleLenMax+1, US_INV);
+        aliasedStyle[kStyleLenMax] = 0;
+    }
+
+    void handleValueForPattern(ResourceValue &value, UnicodeString &pattern, UErrorCode &errorCode) {
+        if (pattern.isEmpty()) {
+            if (value.getType() == URES_ALIAS) {
+                if (aliasedStyle[0] == 0) {
+                    setAliasedStyle(value.getAliasUnicodeString(errorCode));
+                }
+            } else {
+                pattern = value.getUnicodeString(errorCode);
+            }
+        }
+    }
+
+    virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/,
+            UErrorCode &errorCode) {
+        aliasedStyle[0] = 0;
+        if (value.getType() == URES_ALIAS) {
+            setAliasedStyle(value.getAliasUnicodeString(errorCode));
+            return;
+        }
+        ResourceTable listPatterns = value.getTable(errorCode);
+        for (int i = 0; U_SUCCESS(errorCode) && listPatterns.getKeyAndValue(i, key, value); ++i) {
+            if (uprv_strcmp(key, "2") == 0) {
+                handleValueForPattern(value, two, errorCode);
+            } else if (uprv_strcmp(key, "end") == 0) {
+                handleValueForPattern(value, end, errorCode);
+            } else if (uprv_strcmp(key, "middle") == 0) {
+                handleValueForPattern(value, middle, errorCode);
+            } else if (uprv_strcmp(key, "start") == 0) {
+                handleValueForPattern(value, start, errorCode);
+            }
+        }
+    }
+};
+
+// Virtual destructors must be defined out of line.
+ListFormatter::ListPatternsSink::~ListPatternsSink() {}
+
+ListFormatInternal* ListFormatter::loadListFormatInternal(
         const Locale& locale, const char * style, UErrorCode& errorCode) {
     UResourceBundle* rb = ures_open(NULL, locale.getName(), &errorCode);
-    if (U_FAILURE(errorCode)) {
-        ures_close(rb);
-        return NULL;
-    }
     rb = ures_getByKeyWithFallback(rb, "listPattern", rb, &errorCode);
-    rb = ures_getByKeyWithFallback(rb, style, rb, &errorCode);
-
     if (U_FAILURE(errorCode)) {
         ures_close(rb);
         return NULL;
     }
-    UnicodeString two, start, middle, end;
-    getStringByKey(rb, "2", two, errorCode);
-    getStringByKey(rb, "start", start, errorCode);
-    getStringByKey(rb, "middle", middle, errorCode);
-    getStringByKey(rb, "end", end, errorCode);
+    ListFormatter::ListPatternsSink sink;
+    char currentStyle[kStyleLenMax+1];
+    uprv_strncpy(currentStyle, style, kStyleLenMax);
+    currentStyle[kStyleLenMax] = 0;
+
+    for (;;) {
+        ures_getAllItemsWithFallback(rb, currentStyle, sink, errorCode);
+        if (U_FAILURE(errorCode) || sink.aliasedStyle[0] == 0 || uprv_strcmp(currentStyle, sink.aliasedStyle) == 0) {
+            break;
+        }
+        uprv_strcpy(currentStyle, sink.aliasedStyle);
+    }
     ures_close(rb);
     if (U_FAILURE(errorCode)) {
         return NULL;
     }
-    ListFormatInternal* result = new ListFormatInternal(two, start, middle, end, errorCode);
+    if (sink.two.isEmpty() || sink.start.isEmpty() || sink.middle.isEmpty() || sink.end.isEmpty()) {
+        errorCode = U_MISSING_RESOURCE_ERROR;
+        return NULL;
+    }
+    ListFormatInternal* result = new ListFormatInternal(sink.two, sink.start, sink.middle, sink.end, errorCode);
     if (result == NULL) {
         errorCode = U_MEMORY_ALLOCATION_ERROR;
         return NULL;
@@ -206,15 +273,6 @@ static ListFormatInternal* loadListFormatInternal(
     return result;
 }
 
-static void getStringByKey(const UResourceBundle* rb, const char* key, UnicodeString& result, UErrorCode& errorCode) {
-    int32_t len;
-    const UChar* ustr = ures_getStringByKeyWithFallback(rb, key, &len, &errorCode);
-    if (U_FAILURE(errorCode)) {
-      return;
-    }
-    result.setTo(ustr, len);
-}
-
 ListFormatter* ListFormatter::createInstance(UErrorCode& errorCode) {
     Locale locale;  // The default locale.
     return createInstance(locale, errorCode);
index bd61818..bd37b95 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -232,6 +232,7 @@ Normalizer2::getInstance(const char *packageName,
             }
         }
         if(allModes==NULL) {
+            ucln_common_registerCleanup(UCLN_COMMON_LOADED_NORMALIZER2, uprv_loaded_normalizer2_cleanup);
             LocalPointer<Norm2AllModes> localAllModes(
                 Norm2AllModes::createInstance(packageName, name, errorCode));
             if(U_SUCCESS(errorCode)) {
index 6b0624f..60d447c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index 6016fde..f054db3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  locavailable.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f2f56ad..ff378b4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ab8628b..06133be 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d60920c..1aa3ca7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  locdispnames.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a17478c..39934dc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -13,6 +13,7 @@
 
 #include "unicode/locdspnm.h"
 #include "unicode/simpleformatter.h"
+#include "unicode/ucasemap.h"
 #include "unicode/ures.h"
 #include "unicode/udisplaycontext.h"
 #include "unicode/brkiter.h"
index d2781db..36508ac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -33,6 +33,7 @@
 
 
 #include "unicode/locid.h"
+#include "unicode/strenum.h"
 #include "unicode/uloc.h"
 #include "putilimp.h"
 #include "mutex.h"
index c13b37e..cdd6f78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  loclikely.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -22,6 +22,7 @@
 #include "unicode/utypes.h"
 #include "unicode/locid.h"
 #include "unicode/putil.h"
+#include "unicode/uchar.h"
 #include "unicode/uloc.h"
 #include "unicode/ures.h"
 #include "unicode/uscript.h"
diff --git a/source/common/locmap.c b/source/common/locmap.c
deleted file mode 100644 (file)
index 1e28bd7..0000000
+++ /dev/null
@@ -1,1175 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
- **********************************************************************
- *   Copyright (C) 1996-2016, International Business Machines
- *   Corporation and others.  All Rights Reserved.
- **********************************************************************
- *
- * Provides functionality for mapping between
- * LCID and Posix IDs or ICU locale to codepage
- *
- * Note: All classes and code in this file are
- *       intended for internal use only.
- *
- * Methods of interest:
- *   unsigned long convertToLCID(const char*);
- *   const char* convertToPosix(unsigned long);
- *
- * Kathleen Wilson, 4/30/96
- *
- *  Date        Name        Description
- *  3/11/97     aliu        Fixed off-by-one bug in assignment operator. Added
- *                          setId() method and safety check against 
- *                          MAX_ID_LENGTH.
- * 04/23/99     stephen     Added C wrapper for convertToPosix.
- * 09/18/00     george      Removed the memory leaks.
- * 08/23/01     george      Convert to C
- */
-
-#include "locmap.h"
-#include "cstring.h"
-#include "cmemory.h"
-
-#if U_PLATFORM == U_PF_WINDOWS && defined(_MSC_VER) && (_MSC_VER >= 1500)
-/*
- * TODO: It seems like we should widen this to
- * either U_PLATFORM_USES_ONLY_WIN32_API (includes MinGW)
- * or U_PLATFORM_HAS_WIN32_API (includes MinGW and Cygwin)
- * but those use gcc and won't have defined(_MSC_VER).
- * We might need to #include some Windows header and test for some version macro from there.
- * Or call some Windows function and see what it returns.
- */
-#define USE_WINDOWS_LOCALE_API
-#endif
-
-#ifdef USE_WINDOWS_LOCALE_API
-#include <windows.h>
-#include <winnls.h>
-#endif
-
-/*
- * Note:
- * The mapping from Win32 locale ID numbers to POSIX locale strings should
- * be the faster one.
- *
- * Many LCID values come from winnt.h
- * Some also come from http://www.microsoft.com/globaldev/reference/lcid-all.mspx
- */
-
-/*
-////////////////////////////////////////////////
-//
-// Internal Classes for LCID <--> POSIX Mapping
-//
-/////////////////////////////////////////////////
-*/
-
-typedef struct ILcidPosixElement
-{
-    const uint32_t hostID;
-    const char * const posixID;
-} ILcidPosixElement;
-
-typedef struct ILcidPosixMap
-{
-    const uint32_t numRegions;
-    const struct ILcidPosixElement* const regionMaps;
-} ILcidPosixMap;
-
-
-/*
-/////////////////////////////////////////////////
-//
-// Easy macros to make the LCID <--> POSIX Mapping
-//
-/////////////////////////////////////////////////
-*/
-
-/**
- * The standard one language/one country mapping for LCID.
- * The first element must be the language, and the following
- * elements are the language with the country.
- * @param hostID LCID in host format such as 0x044d
- * @param languageID posix ID of just the language such as 'de'
- * @param posixID posix ID of the language_TERRITORY such as 'de_CH'
- */
-#define ILCID_POSIX_ELEMENT_ARRAY(hostID, languageID, posixID) \
-static const ILcidPosixElement locmap_ ## languageID [] = { \
-    {LANGUAGE_LCID(hostID), #languageID},     /* parent locale */ \
-    {hostID, #posixID}, \
-};
-
-/**
- * Define a subtable by ID
- * @param id the POSIX ID, either a language or language_TERRITORY
- */
-#define ILCID_POSIX_SUBTABLE(id) \
-static const ILcidPosixElement locmap_ ## id [] =
-
-
-/**
- * Create the map for the posixID. This macro supposes that the language string
- * name is the same as the global variable name, and that the first element
- * in the ILcidPosixElement is just the language.
- * @param _posixID the full POSIX ID for this entry.
- */
-#define ILCID_POSIX_MAP(_posixID) \
-    {UPRV_LENGTHOF(locmap_ ## _posixID), locmap_ ## _posixID}
-
-/*
-////////////////////////////////////////////
-//
-// Create the table of LCID to POSIX Mapping
-// None of it should be dynamically created.
-//
-// Keep static locale variables inside the function so that
-// it can be created properly during static init.
-//
-// Note: This table should be updated periodically. Check the National Lanaguage Support API Reference Website.
-//       Microsoft is moving away from LCID in favor of locale name as of Vista.  This table needs to be
-//       maintained for support of older Windows version.
-//       Update: Windows 7 (091130)
-//
-// Note: Microsoft assign a different LCID if a locale has a sorting variant. POSIX IDs below may contain
-//       @collation=XXX, but no other keywords are allowed (at least for now). When uprv_convertToLCID() is
-//       called from uloc_getLCID(), keywords other than collation are already removed. If we really need
-//       to support other keywords in this mapping data, we must update the implementation.
-////////////////////////////////////////////
-*/
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0436, af, af_ZA)
-
-ILCID_POSIX_SUBTABLE(ar) {
-    {0x01,   "ar"},
-    {0x3801, "ar_AE"},
-    {0x3c01, "ar_BH"},
-    {0x1401, "ar_DZ"},
-    {0x0c01, "ar_EG"},
-    {0x0801, "ar_IQ"},
-    {0x2c01, "ar_JO"},
-    {0x3401, "ar_KW"},
-    {0x3001, "ar_LB"},
-    {0x1001, "ar_LY"},
-    {0x1801, "ar_MA"},
-    {0x1801, "ar_MO"},
-    {0x2001, "ar_OM"},
-    {0x4001, "ar_QA"},
-    {0x0401, "ar_SA"},
-    {0x2801, "ar_SY"},
-    {0x1c01, "ar_TN"},
-    {0x2401, "ar_YE"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x044d, as, as_IN)
-ILCID_POSIX_ELEMENT_ARRAY(0x045e, am, am_ET)
-ILCID_POSIX_ELEMENT_ARRAY(0x047a, arn,arn_CL)
-
-ILCID_POSIX_SUBTABLE(az) {
-    {0x2c,   "az"},
-    {0x082c, "az_Cyrl_AZ"},  /* Cyrillic based */
-    {0x742c, "az_Cyrl"},  /* Cyrillic based */
-    {0x042c, "az_Latn_AZ"}, /* Latin based */
-    {0x782c, "az_Latn"}, /* Latin based */
-    {0x042c, "az_AZ"} /* Latin based */
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x046d, ba, ba_RU)
-ILCID_POSIX_ELEMENT_ARRAY(0x0423, be, be_BY)
-
-/*ILCID_POSIX_SUBTABLE(ber) {
-    {0x5f,   "ber"},
-    {0x045f, "ber_Arab_DZ"},
-    {0x045f, "ber_Arab"},
-    {0x085f, "ber_Latn_DZ"},
-    {0x085f, "ber_Latn"}
-};*/
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0402, bg, bg_BG)
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0466, bin, bin_NG)
-
-ILCID_POSIX_SUBTABLE(bn) {
-    {0x45,   "bn"},
-    {0x0845, "bn_BD"},
-    {0x0445, "bn_IN"}
-};
-
-ILCID_POSIX_SUBTABLE(bo) {
-    {0x51,   "bo"},
-    {0x0851, "bo_BT"},
-    {0x0451, "bo_CN"},
-    {0x0c51, "dz_BT"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x047e, br, br_FR)
-
-ILCID_POSIX_SUBTABLE(ca) {
-    {0x03,   "ca"},
-    {0x0403, "ca_ES"},
-    {0x0803, "ca_ES_VALENCIA"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0483, co, co_FR)
-ILCID_POSIX_ELEMENT_ARRAY(0x045c, chr,chr_US)
-
-ILCID_POSIX_SUBTABLE(ckb) {
-    {0x92,   "ckb"},
-    {0x7c92, "ckb_Arab"},
-    {0x0492, "ckb_Arab_IQ"}
-};
-
-/* Declared as cs_CZ to get around compiler errors on z/OS, which defines cs as a function */
-ILCID_POSIX_ELEMENT_ARRAY(0x0405, cs, cs_CZ)
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0452, cy, cy_GB)
-ILCID_POSIX_ELEMENT_ARRAY(0x0406, da, da_DK)
-
-ILCID_POSIX_SUBTABLE(de) {
-    {0x07,   "de"},
-    {0x0c07, "de_AT"},
-    {0x0807, "de_CH"},
-    {0x0407, "de_DE"},
-    {0x1407, "de_LI"},
-    {0x1007, "de_LU"},
-    {0x10407,"de_DE@collation=phonebook"},  /*This is really de_DE_PHONEBOOK on Windows*/
-    {0x10407,"de@collation=phonebook"}  /*This is really de_DE_PHONEBOOK on Windows*/
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0465, dv, dv_MV)
-ILCID_POSIX_ELEMENT_ARRAY(0x0408, el, el_GR)
-
-ILCID_POSIX_SUBTABLE(en) {
-    {0x09,   "en"},
-    {0x0c09, "en_AU"},
-    {0x2809, "en_BZ"},
-    {0x1009, "en_CA"},
-    {0x0809, "en_GB"},
-    {0x3c09, "en_HK"},
-    {0x3809, "en_ID"},
-    {0x1809, "en_IE"},
-    {0x4009, "en_IN"},
-    {0x2009, "en_JM"},
-    {0x4409, "en_MY"},
-    {0x1409, "en_NZ"},
-    {0x3409, "en_PH"},
-    {0x4809, "en_SG"},
-    {0x2C09, "en_TT"},
-    {0x0409, "en_US"},
-    {0x007f, "en_US_POSIX"}, /* duplicate for roundtripping */
-    {0x2409, "en_VI"},  /* Virgin Islands AKA Caribbean Islands (en_CB). */
-    {0x1c09, "en_ZA"},
-    {0x3009, "en_ZW"},
-    {0x2409, "en_029"},
-    {0x0409, "en_AS"},  /* Alias for en_US. Leave last. */
-    {0x0409, "en_GU"},  /* Alias for en_US. Leave last. */
-    {0x0409, "en_MH"},  /* Alias for en_US. Leave last. */
-    {0x0409, "en_MP"},  /* Alias for en_US. Leave last. */
-    {0x0409, "en_UM"}   /* Alias for en_US. Leave last. */
-};
-
-ILCID_POSIX_SUBTABLE(en_US_POSIX) {
-    {0x007f, "en_US_POSIX"} /* duplicate for roundtripping */
-};
-
-ILCID_POSIX_SUBTABLE(es) {
-    {0x0a,   "es"},
-    {0x2c0a, "es_AR"},
-    {0x400a, "es_BO"},
-    {0x340a, "es_CL"},
-    {0x240a, "es_CO"},
-    {0x140a, "es_CR"},
-    {0x5c0a, "es_CU"},
-    {0x1c0a, "es_DO"},
-    {0x300a, "es_EC"},
-    {0x0c0a, "es_ES"},      /*Modern sort.*/
-    {0x100a, "es_GT"},
-    {0x480a, "es_HN"},
-    {0x080a, "es_MX"},
-    {0x4c0a, "es_NI"},
-    {0x180a, "es_PA"},
-    {0x280a, "es_PE"},
-    {0x500a, "es_PR"},
-    {0x3c0a, "es_PY"},
-    {0x440a, "es_SV"},
-    {0x540a, "es_US"},
-    {0x380a, "es_UY"},
-    {0x200a, "es_VE"},
-    {0x580a, "es_419"},
-    {0x040a, "es_ES@collation=traditional"},
-    {0x040a, "es@collation=traditional"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0425, et, et_EE)
-ILCID_POSIX_ELEMENT_ARRAY(0x042d, eu, eu_ES)
-
-/* ISO-639 doesn't distinguish between Persian and Dari.*/
-ILCID_POSIX_SUBTABLE(fa) {
-    {0x29,   "fa"},
-    {0x0429, "fa_IR"},  /* Persian/Farsi (Iran) */
-    {0x048c, "fa_AF"}   /* Persian/Dari (Afghanistan) */
-};
-
-/* duplicate for roundtripping */
-ILCID_POSIX_SUBTABLE(fa_AF) {
-    {0x8c,   "fa_AF"},  /* Persian/Dari (Afghanistan) */
-    {0x048c, "fa_AF"}   /* Persian/Dari (Afghanistan) */
-};
-
-ILCID_POSIX_SUBTABLE(ff) {
-    {0x67,   "ff"},
-    {0x7c67, "ff_Latn"},
-    {0x0867, "ff_Latn_SN"},
-    {0x0467, "ff_NG"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x040b, fi, fi_FI)
-ILCID_POSIX_ELEMENT_ARRAY(0x0464, fil,fil_PH)
-ILCID_POSIX_ELEMENT_ARRAY(0x0438, fo, fo_FO)
-
-ILCID_POSIX_SUBTABLE(fr) {
-    {0x0c,   "fr"},
-    {0x080c, "fr_BE"},
-    {0x0c0c, "fr_CA"},
-    {0x240c, "fr_CD"},
-    {0x240c, "fr_CG"},
-    {0x100c, "fr_CH"},
-    {0x300c, "fr_CI"},
-    {0x2c0c, "fr_CM"},
-    {0x040c, "fr_FR"},
-    {0x3c0c, "fr_HT"},
-    {0x140c, "fr_LU"},
-    {0x380c, "fr_MA"},
-    {0x180c, "fr_MC"},
-    {0x340c, "fr_ML"},
-    {0x200c, "fr_RE"},
-    {0x280c, "fr_SN"},
-    {0xe40c, "fr_015"},
-    {0x1c0c, "fr_029"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0467, fuv, fuv_NG)
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0462, fy, fy_NL)
-
-ILCID_POSIX_SUBTABLE(ga) { /* Gaelic (Ireland) */
-    {0x3c,   "ga"},
-    {0x083c, "ga_IE"},
-    {0x043c, "gd_GB"}
-};
-
-ILCID_POSIX_SUBTABLE(gd) { /* Gaelic (Scotland) */
-    {0x91,   "gd"},
-    {0x0491, "gd_GB"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0456, gl, gl_ES)
-ILCID_POSIX_ELEMENT_ARRAY(0x0447, gu, gu_IN)
-ILCID_POSIX_ELEMENT_ARRAY(0x0474, gn, gn_PY)
-ILCID_POSIX_ELEMENT_ARRAY(0x0484, gsw,gsw_FR)
-
-ILCID_POSIX_SUBTABLE(ha) {
-    {0x68,   "ha"},
-    {0x7c68, "ha_Latn"},
-    {0x0468, "ha_Latn_NG"},
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0475, haw,haw_US)
-ILCID_POSIX_ELEMENT_ARRAY(0x040d, he, he_IL)
-ILCID_POSIX_ELEMENT_ARRAY(0x0439, hi, hi_IN)
-
-/* This LCID is really four different locales.*/
-ILCID_POSIX_SUBTABLE(hr) {
-    {0x1a,   "hr"},
-    {0x141a, "bs_Latn_BA"},  /* Bosnian, Bosnia and Herzegovina */
-    {0x681a, "bs_Latn"},  /* Bosnian, Bosnia and Herzegovina */
-    {0x141a, "bs_BA"},  /* Bosnian, Bosnia and Herzegovina */
-    {0x781a, "bs"},     /* Bosnian */
-    {0x201a, "bs_Cyrl_BA"},  /* Bosnian, Bosnia and Herzegovina */
-    {0x641a, "bs_Cyrl"},  /* Bosnian, Bosnia and Herzegovina */
-    {0x101a, "hr_BA"},  /* Croatian in Bosnia */
-    {0x041a, "hr_HR"},  /* Croatian*/
-    {0x2c1a, "sr_Latn_ME"},
-    {0x241a, "sr_Latn_RS"},
-    {0x181a, "sr_Latn_BA"}, /* Serbo-Croatian in Bosnia */
-    {0x081a, "sr_Latn_CS"}, /* Serbo-Croatian*/
-    {0x701a, "sr_Latn"},    /* It's 0x1a or 0x081a, pick one to make the test program happy. */
-    {0x1c1a, "sr_Cyrl_BA"}, /* Serbo-Croatian in Bosnia */
-    {0x0c1a, "sr_Cyrl_CS"}, /* Serbian*/
-    {0x301a, "sr_Cyrl_ME"},
-    {0x281a, "sr_Cyrl_RS"},
-    {0x6c1a, "sr_Cyrl"},    /* It's 0x1a or 0x0c1a, pick one to make the test program happy. */
-    {0x7c1a, "sr"}          /* In CLDR sr is sr_Cyrl. */
-};
-
-ILCID_POSIX_SUBTABLE(hsb) {
-    {0x2E,   "hsb"},
-    {0x042E, "hsb_DE"},
-    {0x082E, "dsb_DE"},
-    {0x7C2E, "dsb"},
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x040e, hu, hu_HU)
-ILCID_POSIX_ELEMENT_ARRAY(0x042b, hy, hy_AM)
-ILCID_POSIX_ELEMENT_ARRAY(0x0469, ibb, ibb_NG)
-ILCID_POSIX_ELEMENT_ARRAY(0x0421, id, id_ID)
-ILCID_POSIX_ELEMENT_ARRAY(0x0470, ig, ig_NG)
-ILCID_POSIX_ELEMENT_ARRAY(0x0478, ii, ii_CN)
-ILCID_POSIX_ELEMENT_ARRAY(0x040f, is, is_IS)
-
-ILCID_POSIX_SUBTABLE(it) {
-    {0x10,   "it"},
-    {0x0810, "it_CH"},
-    {0x0410, "it_IT"}
-};
-
-ILCID_POSIX_SUBTABLE(iu) {
-    {0x5d,   "iu"},
-    {0x045d, "iu_Cans_CA"},
-    {0x785d, "iu_Cans"},
-    {0x085d, "iu_Latn_CA"},
-    {0x7c5d, "iu_Latn"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x040d, iw, iw_IL)    /*Left in for compatibility*/
-ILCID_POSIX_ELEMENT_ARRAY(0x0411, ja, ja_JP)
-ILCID_POSIX_ELEMENT_ARRAY(0x0437, ka, ka_GE)
-ILCID_POSIX_ELEMENT_ARRAY(0x043f, kk, kk_KZ)
-ILCID_POSIX_ELEMENT_ARRAY(0x046f, kl, kl_GL)
-ILCID_POSIX_ELEMENT_ARRAY(0x0453, km, km_KH)
-ILCID_POSIX_ELEMENT_ARRAY(0x044b, kn, kn_IN)
-
-ILCID_POSIX_SUBTABLE(ko) {
-    {0x12,   "ko"},
-    {0x0812, "ko_KP"},
-    {0x0412, "ko_KR"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0457, kok, kok_IN)
-ILCID_POSIX_ELEMENT_ARRAY(0x0471, kr,  kr_NG)
-
-ILCID_POSIX_SUBTABLE(ks) {         /* We could add PK and CN too */
-    {0x60,   "ks"},
-    {0x0860, "ks_IN"},              /* Documentation doesn't mention script */
-    {0x0460, "ks_Arab_IN"},
-    {0x0860, "ks_Deva_IN"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0440, ky, ky_KG)   /* Kyrgyz is spoken in Kyrgyzstan */
-ILCID_POSIX_ELEMENT_ARRAY(0x0476, la, la_IT)   /* TODO: Verify the country */
-ILCID_POSIX_ELEMENT_ARRAY(0x046e, lb, lb_LU)
-ILCID_POSIX_ELEMENT_ARRAY(0x0454, lo, lo_LA)
-ILCID_POSIX_ELEMENT_ARRAY(0x0427, lt, lt_LT)
-ILCID_POSIX_ELEMENT_ARRAY(0x0426, lv, lv_LV)
-ILCID_POSIX_ELEMENT_ARRAY(0x0481, mi, mi_NZ)
-ILCID_POSIX_ELEMENT_ARRAY(0x042f, mk, mk_MK)
-ILCID_POSIX_ELEMENT_ARRAY(0x044c, ml, ml_IN)
-
-ILCID_POSIX_SUBTABLE(mn) {
-    {0x50,   "mn"},
-    {0x0450, "mn_MN"},
-    {0x7c50, "mn_Mong"},
-    {0x0850, "mn_Mong_CN"},
-    {0x0850, "mn_CN"},
-    {0x7850, "mn_Cyrl"},
-    {0x0c50, "mn_Mong_MN"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0458, mni,mni_IN)
-ILCID_POSIX_ELEMENT_ARRAY(0x047c, moh,moh_CA)
-ILCID_POSIX_ELEMENT_ARRAY(0x044e, mr, mr_IN)
-
-ILCID_POSIX_SUBTABLE(ms) {
-    {0x3e,   "ms"},
-    {0x083e, "ms_BN"},   /* Brunei Darussalam*/
-    {0x043e, "ms_MY"}    /* Malaysia*/
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x043a, mt, mt_MT)
-ILCID_POSIX_ELEMENT_ARRAY(0x0455, my, my_MM)
-
-ILCID_POSIX_SUBTABLE(ne) {
-    {0x61,   "ne"},
-    {0x0861, "ne_IN"},   /* India*/
-    {0x0461, "ne_NP"}    /* Nepal*/
-};
-
-ILCID_POSIX_SUBTABLE(nl) {
-    {0x13,   "nl"},
-    {0x0813, "nl_BE"},
-    {0x0413, "nl_NL"}
-};
-
-/* The "no" locale split into nb and nn.  By default in ICU, "no" is nb.*/
-ILCID_POSIX_SUBTABLE(no) {
-    {0x14,   "no"},     /* really nb_NO */
-    {0x7c14, "nb"},     /* really nb */
-    {0x0414, "nb_NO"},  /* really nb_NO. Keep first in the 414 list. */
-    {0x0414, "no_NO"},  /* really nb_NO */
-    {0x0814, "nn_NO"},  /* really nn_NO. Keep first in the 814 list.  */
-    {0x7814, "nn"},     /* It's 0x14 or 0x814, pick one to make the test program happy. */
-    {0x0814, "no_NO_NY"}/* really nn_NO */
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x046c, nso,nso_ZA)   /* TODO: Verify the ISO-639 code */
-ILCID_POSIX_ELEMENT_ARRAY(0x0482, oc, oc_FR)
-
-ILCID_POSIX_SUBTABLE(om) { /* TODO: Verify the country */
-    {0x72,   "om"},
-    {0x0472, "om_ET"},
-    {0x0472, "gaz_ET"}
-};
-
-/* Declared as or_IN to get around compiler errors*/
-ILCID_POSIX_SUBTABLE(or_IN) {
-    {0x48,   "or"},
-    {0x0448, "or_IN"},
-};
-
-
-ILCID_POSIX_SUBTABLE(pa) {
-    {0x46,   "pa"},
-    {0x0446, "pa_IN"},
-    {0x0846, "pa_PK"},
-    {0x0846, "pa_Arab_PK"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0479, pap, pap_AN)
-ILCID_POSIX_ELEMENT_ARRAY(0x0415, pl, pl_PL)
-ILCID_POSIX_ELEMENT_ARRAY(0x0463, ps, ps_AF)
-
-ILCID_POSIX_SUBTABLE(pt) {
-    {0x16,   "pt"},
-    {0x0416, "pt_BR"},
-    {0x0816, "pt_PT"}
-};
-
-ILCID_POSIX_SUBTABLE(qu) {
-    {0x6b,   "qu"},
-    {0x046b, "qu_BO"},
-    {0x086b, "qu_EC"},
-    {0x0C6b, "qu_PE"},
-    {0x046b, "quz_BO"},
-    {0x086b, "quz_EC"},
-    {0x0C6b, "quz_PE"}
-};
-
-ILCID_POSIX_SUBTABLE(quc) {
-    {0x93,   "quc"},
-    {0x0493, "quc_CO"},
-    /*
-        "quc_Latn_GT" is an exceptional case. Language ID of "quc"
-        is 0x93, but LCID of "quc_Latn_GT" is 0x486, which should be
-        under the group of "qut". "qut" is a retired ISO 639-3 language
-        code for West Central Quiche, and merged to "quc".
-        It looks Windows previously reserved "qut" for K'iche', but,
-        decided to use "quc" when adding a locale for K'iche' (Guatemala).
-
-        This data structure used here assumes language ID bits in
-        LCID is unique for alphabetic language code. But this is not true
-        for "quc_Latn_GT". If we don't have the data below, LCID look up
-        by alphabetic locale ID (POSIX) will fail. The same entry is found
-        under "qut" below, which is required for reverse look up.
-    */
-    {0x0486, "quc_Latn_GT"}
-};
-
-ILCID_POSIX_SUBTABLE(qut) {
-    {0x86,   "qut"},
-    {0x0486, "qut_GT"},
-    /*
-        See the note in "quc" above.
-    */
-    {0x0486, "quc_Latn_GT"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0417, rm, rm_CH)
-
-ILCID_POSIX_SUBTABLE(ro) {
-    {0x18,   "ro"},
-    {0x0418, "ro_RO"},
-    {0x0818, "ro_MD"}
-};
-
-ILCID_POSIX_SUBTABLE(root) {
-    {0x00,   "root"}
-};
-
-ILCID_POSIX_SUBTABLE(ru) {
-    {0x19,   "ru"},
-    {0x0419, "ru_RU"},
-    {0x0819, "ru_MD"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0487, rw, rw_RW)
-ILCID_POSIX_ELEMENT_ARRAY(0x044f, sa, sa_IN)
-ILCID_POSIX_ELEMENT_ARRAY(0x0485, sah,sah_RU)
-
-ILCID_POSIX_SUBTABLE(sd) {
-    {0x59,   "sd"},
-    {0x0459, "sd_IN"},
-    {0x0459, "sd_Deva_IN"},
-    {0x0859, "sd_PK"}
-};
-
-ILCID_POSIX_SUBTABLE(se) {
-    {0x3b,   "se"},
-    {0x0c3b, "se_FI"},
-    {0x043b, "se_NO"},
-    {0x083b, "se_SE"},
-    {0x783b, "sma"},
-    {0x183b, "sma_NO"},
-    {0x1c3b, "sma_SE"},
-    {0x7c3b, "smj"},
-    {0x703b, "smn"},
-    {0x743b, "sms"},
-    {0x103b, "smj_NO"},
-    {0x143b, "smj_SE"},
-    {0x243b, "smn_FI"},
-    {0x203b, "sms_FI"},
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x045b, si, si_LK)
-ILCID_POSIX_ELEMENT_ARRAY(0x041b, sk, sk_SK)
-ILCID_POSIX_ELEMENT_ARRAY(0x0424, sl, sl_SI)
-
-ILCID_POSIX_SUBTABLE(so) { /* TODO: Verify the country */
-    {0x77,   "so"},
-    {0x0477, "so_ET"},
-    {0x0477, "so_SO"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x041c, sq, sq_AL)
-ILCID_POSIX_ELEMENT_ARRAY(0x0430, st, st_ZA)
-
-ILCID_POSIX_SUBTABLE(sv) {
-    {0x1d,   "sv"},
-    {0x081d, "sv_FI"},
-    {0x041d, "sv_SE"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0441, sw, sw_KE)
-ILCID_POSIX_ELEMENT_ARRAY(0x045A, syr, syr_SY)
-
-ILCID_POSIX_SUBTABLE(ta) {
-    {0x49,   "ta"},
-    {0x0449, "ta_IN"},
-    {0x0849, "ta_LK"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x044a, te, te_IN)
-
-/* Cyrillic based by default */
-ILCID_POSIX_SUBTABLE(tg) {
-    {0x28,   "tg"},
-    {0x7c28, "tg_Cyrl"},
-    {0x0428, "tg_Cyrl_TJ"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x041e, th, th_TH)
-
-ILCID_POSIX_SUBTABLE(ti) {
-    {0x73,   "ti"},
-    {0x0873, "ti_ER"},
-    {0x0473, "ti_ET"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0442, tk, tk_TM)
-
-ILCID_POSIX_SUBTABLE(tn) {
-    {0x32,   "tn"},
-    {0x0832, "tn_BW"},
-    {0x0432, "tn_ZA"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x041f, tr, tr_TR)
-ILCID_POSIX_ELEMENT_ARRAY(0x0431, ts, ts_ZA)
-ILCID_POSIX_ELEMENT_ARRAY(0x0444, tt, tt_RU)
-
-ILCID_POSIX_SUBTABLE(tzm) {
-    {0x5f,   "tzm"},
-    {0x7c5f, "tzm_Latn"},
-    {0x085f, "tzm_Latn_DZ"},
-    {0x105f, "tzm_Tfng_MA"},
-    {0x045f, "tzm_Arab_MA"},
-    {0x045f, "tmz"}
-};
-
-ILCID_POSIX_SUBTABLE(ug) {
-    {0x80,   "ug"},
-    {0x0480, "ug_CN"},
-    {0x0480, "ug_Arab_CN"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0422, uk, uk_UA)
-
-ILCID_POSIX_SUBTABLE(ur) {
-    {0x20,   "ur"},
-    {0x0820, "ur_IN"},
-    {0x0420, "ur_PK"}
-};
-
-ILCID_POSIX_SUBTABLE(uz) {
-    {0x43,   "uz"},
-    {0x0843, "uz_Cyrl_UZ"},  /* Cyrillic based */
-    {0x7843, "uz_Cyrl"},  /* Cyrillic based */
-    {0x0843, "uz_UZ"},  /* Cyrillic based */
-    {0x0443, "uz_Latn_UZ"}, /* Latin based */
-    {0x7c43, "uz_Latn"} /* Latin based */
-};
-
-ILCID_POSIX_SUBTABLE(ve) { /* TODO: Verify the country */
-    {0x33,   "ve"},
-    {0x0433, "ve_ZA"},
-    {0x0433, "ven_ZA"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x042a, vi, vi_VN)
-ILCID_POSIX_ELEMENT_ARRAY(0x0488, wo, wo_SN)
-ILCID_POSIX_ELEMENT_ARRAY(0x0434, xh, xh_ZA)
-ILCID_POSIX_ELEMENT_ARRAY(0x043d, yi, yi)
-ILCID_POSIX_ELEMENT_ARRAY(0x046a, yo, yo_NG)
-
-ILCID_POSIX_SUBTABLE(zh) {
-    {0x0004, "zh_Hans"},
-    {0x7804, "zh"},
-    {0x0804, "zh_CN"},
-    {0x0804, "zh_Hans_CN"},
-    {0x0c04, "zh_Hant_HK"},
-    {0x0c04, "zh_HK"},
-    {0x1404, "zh_Hant_MO"},
-    {0x1404, "zh_MO"},
-    {0x1004, "zh_Hans_SG"},
-    {0x1004, "zh_SG"},
-    {0x0404, "zh_Hant_TW"},
-    {0x7c04, "zh_Hant"},
-    {0x0404, "zh_TW"},
-    {0x30404,"zh_Hant_TW"},     /* Bopomofo order */
-    {0x30404,"zh_TW"},          /* Bopomofo order */
-    {0x20004,"zh@collation=stroke"},
-    {0x20404,"zh_Hant@collation=stroke"},
-    {0x20404,"zh_Hant_TW@collation=stroke"},
-    {0x20404,"zh_TW@collation=stroke"},
-    {0x20804,"zh_Hans@collation=stroke"},
-    {0x20804,"zh_Hans_CN@collation=stroke"},
-    {0x20804,"zh_CN@collation=stroke"}
-};
-
-ILCID_POSIX_ELEMENT_ARRAY(0x0435, zu, zu_ZA)
-
-/* This must be static and grouped by LCID. */
-static const ILcidPosixMap gPosixIDmap[] = {
-    ILCID_POSIX_MAP(af),    /*  af  Afrikaans                 0x36 */
-    ILCID_POSIX_MAP(am),    /*  am  Amharic                   0x5e */
-    ILCID_POSIX_MAP(ar),    /*  ar  Arabic                    0x01 */
-    ILCID_POSIX_MAP(arn),   /*  arn Araucanian/Mapudungun     0x7a */
-    ILCID_POSIX_MAP(as),    /*  as  Assamese                  0x4d */
-    ILCID_POSIX_MAP(az),    /*  az  Azerbaijani               0x2c */
-    ILCID_POSIX_MAP(ba),    /*  ba  Bashkir                   0x6d */
-    ILCID_POSIX_MAP(be),    /*  be  Belarusian                0x23 */
-/*    ILCID_POSIX_MAP(ber),     ber Berber/Tamazight          0x5f */
-    ILCID_POSIX_MAP(bg),    /*  bg  Bulgarian                 0x02 */
-    ILCID_POSIX_MAP(bin),   /*  bin Edo                       0x66 */
-    ILCID_POSIX_MAP(bn),    /*  bn  Bengali; Bangla           0x45 */
-    ILCID_POSIX_MAP(bo),    /*  bo  Tibetan                   0x51 */
-    ILCID_POSIX_MAP(br),    /*  br  Breton                    0x7e */
-    ILCID_POSIX_MAP(ca),    /*  ca  Catalan                   0x03 */
-    ILCID_POSIX_MAP(chr),   /*  chr Cherokee                  0x5c */
-    ILCID_POSIX_MAP(ckb),   /*  ckb Sorani (Central Kurdish)  0x92 */
-    ILCID_POSIX_MAP(co),    /*  co  Corsican                  0x83 */
-    ILCID_POSIX_MAP(cs),    /*  cs  Czech                     0x05 */
-    ILCID_POSIX_MAP(cy),    /*  cy  Welsh                     0x52 */
-    ILCID_POSIX_MAP(da),    /*  da  Danish                    0x06 */
-    ILCID_POSIX_MAP(de),    /*  de  German                    0x07 */
-    ILCID_POSIX_MAP(dv),    /*  dv  Divehi                    0x65 */
-    ILCID_POSIX_MAP(el),    /*  el  Greek                     0x08 */
-    ILCID_POSIX_MAP(en),    /*  en  English                   0x09 */
-    ILCID_POSIX_MAP(en_US_POSIX), /*    invariant             0x7f */
-    ILCID_POSIX_MAP(es),    /*  es  Spanish                   0x0a */
-    ILCID_POSIX_MAP(et),    /*  et  Estonian                  0x25 */
-    ILCID_POSIX_MAP(eu),    /*  eu  Basque                    0x2d */
-    ILCID_POSIX_MAP(fa),    /*  fa  Persian/Farsi             0x29 */
-    ILCID_POSIX_MAP(fa_AF), /*  fa  Persian/Dari              0x8c */
-    ILCID_POSIX_MAP(ff),    /*  ff  Fula                      0x67 */
-    ILCID_POSIX_MAP(fi),    /*  fi  Finnish                   0x0b */
-    ILCID_POSIX_MAP(fil),   /*  fil Filipino                  0x64 */
-    ILCID_POSIX_MAP(fo),    /*  fo  Faroese                   0x38 */
-    ILCID_POSIX_MAP(fr),    /*  fr  French                    0x0c */
-    ILCID_POSIX_MAP(fuv),   /*  fuv Fulfulde - Nigeria        0x67 */
-    ILCID_POSIX_MAP(fy),    /*  fy  Frisian                   0x62 */
-    ILCID_POSIX_MAP(ga),    /*  *   Gaelic (Ireland,Scotland) 0x3c */
-    ILCID_POSIX_MAP(gd),    /*  gd  Gaelic (United Kingdom)   0x91 */
-    ILCID_POSIX_MAP(gl),    /*  gl  Galician                  0x56 */
-    ILCID_POSIX_MAP(gn),    /*  gn  Guarani                   0x74 */
-    ILCID_POSIX_MAP(gsw),   /*  gsw Alemanic/Alsatian/Swiss German 0x84 */
-    ILCID_POSIX_MAP(gu),    /*  gu  Gujarati                  0x47 */
-    ILCID_POSIX_MAP(ha),    /*  ha  Hausa                     0x68 */
-    ILCID_POSIX_MAP(haw),   /*  haw Hawaiian                  0x75 */
-    ILCID_POSIX_MAP(he),    /*  he  Hebrew (formerly iw)      0x0d */
-    ILCID_POSIX_MAP(hi),    /*  hi  Hindi                     0x39 */
-    ILCID_POSIX_MAP(hr),    /*  *   Croatian and others       0x1a */
-    ILCID_POSIX_MAP(hsb),   /*  hsb Upper Sorbian             0x2e */
-    ILCID_POSIX_MAP(hu),    /*  hu  Hungarian                 0x0e */
-    ILCID_POSIX_MAP(hy),    /*  hy  Armenian                  0x2b */
-    ILCID_POSIX_MAP(ibb),   /*  ibb Ibibio - Nigeria          0x69 */
-    ILCID_POSIX_MAP(id),    /*  id  Indonesian (formerly in)  0x21 */
-    ILCID_POSIX_MAP(ig),    /*  ig  Igbo                      0x70 */
-    ILCID_POSIX_MAP(ii),    /*  ii  Sichuan Yi                0x78 */
-    ILCID_POSIX_MAP(is),    /*  is  Icelandic                 0x0f */
-    ILCID_POSIX_MAP(it),    /*  it  Italian                   0x10 */
-    ILCID_POSIX_MAP(iu),    /*  iu  Inuktitut                 0x5d */
-    ILCID_POSIX_MAP(iw),    /*  iw  Hebrew                    0x0d */
-    ILCID_POSIX_MAP(ja),    /*  ja  Japanese                  0x11 */
-    ILCID_POSIX_MAP(ka),    /*  ka  Georgian                  0x37 */
-    ILCID_POSIX_MAP(kk),    /*  kk  Kazakh                    0x3f */
-    ILCID_POSIX_MAP(kl),    /*  kl  Kalaallisut               0x6f */
-    ILCID_POSIX_MAP(km),    /*  km  Khmer                     0x53 */
-    ILCID_POSIX_MAP(kn),    /*  kn  Kannada                   0x4b */
-    ILCID_POSIX_MAP(ko),    /*  ko  Korean                    0x12 */
-    ILCID_POSIX_MAP(kok),   /*  kok Konkani                   0x57 */
-    ILCID_POSIX_MAP(kr),    /*  kr  Kanuri                    0x71 */
-    ILCID_POSIX_MAP(ks),    /*  ks  Kashmiri                  0x60 */
-    ILCID_POSIX_MAP(ky),    /*  ky  Kyrgyz                    0x40 */
-    ILCID_POSIX_MAP(lb),    /*  lb  Luxembourgish             0x6e */
-    ILCID_POSIX_MAP(la),    /*  la  Latin                     0x76 */
-    ILCID_POSIX_MAP(lo),    /*  lo  Lao                       0x54 */
-    ILCID_POSIX_MAP(lt),    /*  lt  Lithuanian                0x27 */
-    ILCID_POSIX_MAP(lv),    /*  lv  Latvian, Lettish          0x26 */
-    ILCID_POSIX_MAP(mi),    /*  mi  Maori                     0x81 */
-    ILCID_POSIX_MAP(mk),    /*  mk  Macedonian                0x2f */
-    ILCID_POSIX_MAP(ml),    /*  ml  Malayalam                 0x4c */
-    ILCID_POSIX_MAP(mn),    /*  mn  Mongolian                 0x50 */
-    ILCID_POSIX_MAP(mni),   /*  mni Manipuri                  0x58 */
-    ILCID_POSIX_MAP(moh),   /*  moh Mohawk                    0x7c */
-    ILCID_POSIX_MAP(mr),    /*  mr  Marathi                   0x4e */
-    ILCID_POSIX_MAP(ms),    /*  ms  Malay                     0x3e */
-    ILCID_POSIX_MAP(mt),    /*  mt  Maltese                   0x3a */
-    ILCID_POSIX_MAP(my),    /*  my  Burmese                   0x55 */
-/*    ILCID_POSIX_MAP(nb),    //  no  Norwegian                 0x14 */
-    ILCID_POSIX_MAP(ne),    /*  ne  Nepali                    0x61 */
-    ILCID_POSIX_MAP(nl),    /*  nl  Dutch                     0x13 */
-/*    ILCID_POSIX_MAP(nn),    //  no  Norwegian                 0x14 */
-    ILCID_POSIX_MAP(no),    /*  *   Norwegian                 0x14 */
-    ILCID_POSIX_MAP(nso),   /*  nso Sotho, Northern (Sepedi dialect) 0x6c */
-    ILCID_POSIX_MAP(oc),    /*  oc  Occitan                   0x82 */
-    ILCID_POSIX_MAP(om),    /*  om  Oromo                     0x72 */
-    ILCID_POSIX_MAP(or_IN), /*  or  Oriya                     0x48 */
-    ILCID_POSIX_MAP(pa),    /*  pa  Punjabi                   0x46 */
-    ILCID_POSIX_MAP(pap),   /*  pap Papiamentu                0x79 */
-    ILCID_POSIX_MAP(pl),    /*  pl  Polish                    0x15 */
-    ILCID_POSIX_MAP(ps),    /*  ps  Pashto                    0x63 */
-    ILCID_POSIX_MAP(pt),    /*  pt  Portuguese                0x16 */
-    ILCID_POSIX_MAP(qu),    /*  qu  Quechua                   0x6B */
-    ILCID_POSIX_MAP(quc),   /*  quc K'iche                    0x93 */
-    ILCID_POSIX_MAP(qut),   /*  qut K'iche                    0x86 */
-    ILCID_POSIX_MAP(rm),    /*  rm  Raeto-Romance/Romansh     0x17 */
-    ILCID_POSIX_MAP(ro),    /*  ro  Romanian                  0x18 */
-    ILCID_POSIX_MAP(root),  /*  root                          0x00 */
-    ILCID_POSIX_MAP(ru),    /*  ru  Russian                   0x19 */
-    ILCID_POSIX_MAP(rw),    /*  rw  Kinyarwanda               0x87 */
-    ILCID_POSIX_MAP(sa),    /*  sa  Sanskrit                  0x4f */
-    ILCID_POSIX_MAP(sah),   /*  sah Yakut                     0x85 */
-    ILCID_POSIX_MAP(sd),    /*  sd  Sindhi                    0x59 */
-    ILCID_POSIX_MAP(se),    /*  se  Sami                      0x3b */
-/*    ILCID_POSIX_MAP(sh),    //  sh  Serbo-Croatian            0x1a */
-    ILCID_POSIX_MAP(si),    /*  si  Sinhalese                 0x5b */
-    ILCID_POSIX_MAP(sk),    /*  sk  Slovak                    0x1b */
-    ILCID_POSIX_MAP(sl),    /*  sl  Slovenian                 0x24 */
-    ILCID_POSIX_MAP(so),    /*  so  Somali                    0x77 */
-    ILCID_POSIX_MAP(sq),    /*  sq  Albanian                  0x1c */
-/*    ILCID_POSIX_MAP(sr),    //  sr  Serbian                   0x1a */
-    ILCID_POSIX_MAP(st),    /*  st  Sutu                      0x30 */
-    ILCID_POSIX_MAP(sv),    /*  sv  Swedish                   0x1d */
-    ILCID_POSIX_MAP(sw),    /*  sw  Swahili                   0x41 */
-    ILCID_POSIX_MAP(syr),   /*  syr Syriac                    0x5A */
-    ILCID_POSIX_MAP(ta),    /*  ta  Tamil                     0x49 */
-    ILCID_POSIX_MAP(te),    /*  te  Telugu                    0x4a */
-    ILCID_POSIX_MAP(tg),    /*  tg  Tajik                     0x28 */
-    ILCID_POSIX_MAP(th),    /*  th  Thai                      0x1e */
-    ILCID_POSIX_MAP(ti),    /*  ti  Tigrigna                  0x73 */
-    ILCID_POSIX_MAP(tk),    /*  tk  Turkmen                   0x42 */
-    ILCID_POSIX_MAP(tn),    /*  tn  Tswana                    0x32 */
-    ILCID_POSIX_MAP(tr),    /*  tr  Turkish                   0x1f */
-    ILCID_POSIX_MAP(ts),    /*  ts  Tsonga                    0x31 */
-    ILCID_POSIX_MAP(tt),    /*  tt  Tatar                     0x44 */
-    ILCID_POSIX_MAP(tzm),   /*  tzm Tamazight                 0x5f */
-    ILCID_POSIX_MAP(ug),    /*  ug  Uighur                    0x80 */
-    ILCID_POSIX_MAP(uk),    /*  uk  Ukrainian                 0x22 */
-    ILCID_POSIX_MAP(ur),    /*  ur  Urdu                      0x20 */
-    ILCID_POSIX_MAP(uz),    /*  uz  Uzbek                     0x43 */
-    ILCID_POSIX_MAP(ve),    /*  ve  Venda                     0x33 */
-    ILCID_POSIX_MAP(vi),    /*  vi  Vietnamese                0x2a */
-    ILCID_POSIX_MAP(wo),    /*  wo  Wolof                     0x88 */
-    ILCID_POSIX_MAP(xh),    /*  xh  Xhosa                     0x34 */
-    ILCID_POSIX_MAP(yi),    /*  yi  Yiddish                   0x3d */
-    ILCID_POSIX_MAP(yo),    /*  yo  Yoruba                    0x6a */
-    ILCID_POSIX_MAP(zh),    /*  zh  Chinese                   0x04 */
-    ILCID_POSIX_MAP(zu),    /*  zu  Zulu                      0x35 */
-};
-
-static const uint32_t gLocaleCount = UPRV_LENGTHOF(gPosixIDmap);
-
-/**
- * Do not call this function. It is called by hostID.
- * The function is not private because this struct must stay as a C struct,
- * and this is an internal class.
- */
-static int32_t
-idCmp(const char* id1, const char* id2)
-{
-    int32_t diffIdx = 0;
-    while (*id1 == *id2 && *id1 != 0) {
-        diffIdx++;
-        id1++;
-        id2++;
-    }
-    return diffIdx;
-}
-
-/**
- * Searches for a Windows LCID
- *
- * @param posixid the Posix style locale id.
- * @param status gets set to U_ILLEGAL_ARGUMENT_ERROR when the Posix ID has
- *               no equivalent Windows LCID.
- * @return the LCID
- */
-static uint32_t
-getHostID(const ILcidPosixMap *this_0, const char* posixID, UErrorCode* status)
-{
-    int32_t bestIdx = 0;
-    int32_t bestIdxDiff = 0;
-    int32_t posixIDlen = (int32_t)uprv_strlen(posixID);
-    uint32_t idx;
-
-    for (idx = 0; idx < this_0->numRegions; idx++ ) {
-        int32_t sameChars = idCmp(posixID, this_0->regionMaps[idx].posixID);
-        if (sameChars > bestIdxDiff && this_0->regionMaps[idx].posixID[sameChars] == 0) {
-            if (posixIDlen == sameChars) {
-                /* Exact match */
-                return this_0->regionMaps[idx].hostID;
-            }
-            bestIdxDiff = sameChars;
-            bestIdx = idx;
-        }
-    }
-    /* We asked for something unusual, like en_ZZ, and we try to return the number for the same language. */
-    /* We also have to make sure that sid and si and similar string subsets don't match. */
-    if ((posixID[bestIdxDiff] == '_' || posixID[bestIdxDiff] == '@')
-        && this_0->regionMaps[bestIdx].posixID[bestIdxDiff] == 0)
-    {
-        *status = U_USING_FALLBACK_WARNING;
-        return this_0->regionMaps[bestIdx].hostID;
-    }
-
-    /*no match found */
-    *status = U_ILLEGAL_ARGUMENT_ERROR;
-    return this_0->regionMaps->hostID;
-}
-
-static const char*
-getPosixID(const ILcidPosixMap *this_0, uint32_t hostID)
-{
-    uint32_t i;
-    for (i = 0; i <= this_0->numRegions; i++)
-    {
-        if (this_0->regionMaps[i].hostID == hostID)
-        {
-            return this_0->regionMaps[i].posixID;
-        }
-    }
-
-    /* If you get here, then no matching region was found,
-       so return the language id with the wild card region. */
-    return this_0->regionMaps[0].posixID;
-}
-
-/*
-//////////////////////////////////////
-//
-// LCID --> POSIX
-//
-/////////////////////////////////////
-*/
-#ifdef USE_WINDOWS_LOCALE_API
-/*
- * Various language tags needs to be changed:
- * quz -> qu
- * prs -> fa
- */
-#define FIX_LANGUAGE_ID_TAG(buffer, len) \
-    if (len >= 3) { \
-        if (buffer[0] == 'q' && buffer[1] == 'u' && buffer[2] == 'z') {\
-            buffer[2] = 0; \
-            uprv_strcat(buffer, buffer+3); \
-        } else if (buffer[0] == 'p' && buffer[1] == 'r' && buffer[2] == 's') {\
-            buffer[0] = 'f'; buffer[1] = 'a'; buffer[2] = 0; \
-            uprv_strcat(buffer, buffer+3); \
-        } \
-    }
-
-#endif
-U_CAPI int32_t
-uprv_convertToPosix(uint32_t hostid, char *posixID, int32_t posixIDCapacity, UErrorCode* status)
-{
-    uint16_t langID;
-    uint32_t localeIndex;
-    UBool bLookup = TRUE;
-    const char *pPosixID = NULL;
-
-#ifdef USE_WINDOWS_LOCALE_API
-    // Note: Windows primary lang ID 0x92 in LCID is used for Central Kurdish and
-    // GetLocaleInfo() maps such LCID to "ku". However, CLDR uses "ku" for
-    // Northern Kurdish and "ckb" for Central Kurdish. For this reason, we cannot
-    // use the Windows API to resolve locale ID for this specific case.
-    if ((hostid & 0x3FF) != 0x92) {
-        int32_t tmpLen = 0;
-        char locName[157];  /* ULOC_FULLNAME_CAPACITY */
-
-        tmpLen = GetLocaleInfoA(hostid, LOCALE_SNAME, (LPSTR)locName, UPRV_LENGTHOF(locName));
-        if (tmpLen > 1) {
-            /* Windows locale name may contain sorting variant, such as "es-ES_tradnl".
-            In such case, we need special mapping data found in the hardcoded table
-            in this source file. */
-            char *p = uprv_strchr(locName, '_');
-            if (p) {
-                /* Keep the base locale, without variant */
-                *p = 0;
-                tmpLen = uprv_strlen(locName);
-            }
-            else {
-                /* No hardcoded table lookup necessary */
-                bLookup = FALSE;
-            }
-            /* Change the tag separator from '-' to '_' */
-            p = locName;
-            while (*p) {
-                if (*p == '-') {
-                    *p = '_';
-                }
-                p++;
-            }
-            FIX_LANGUAGE_ID_TAG(locName, tmpLen);
-            pPosixID = locName;
-        }
-    }
-#endif
-    if (bLookup) {
-        const char *pCandidate = NULL;
-        langID = LANGUAGE_LCID(hostid);
-
-        for (localeIndex = 0; localeIndex < gLocaleCount; localeIndex++) {
-            if (langID == gPosixIDmap[localeIndex].regionMaps->hostID) {
-                pCandidate = getPosixID(&gPosixIDmap[localeIndex], hostid);
-                break;
-            }
-        }
-
-        /* On Windows, when locale name has a variant, we still look up the hardcoded table.
-           If a match in the hardcoded table is longer than the Windows locale name without
-           variant, we use the one as the result */
-        if (pCandidate && (pPosixID == NULL || uprv_strlen(pCandidate) > uprv_strlen(pPosixID))) {
-            pPosixID = pCandidate;
-        }
-    }
-
-    if (pPosixID) {
-        int32_t resLen = uprv_strlen(pPosixID);
-        int32_t copyLen = resLen <= posixIDCapacity ? resLen : posixIDCapacity;
-        uprv_memcpy(posixID, pPosixID, copyLen);
-        if (resLen < posixIDCapacity) {
-            posixID[resLen] = 0;
-            if (*status == U_STRING_NOT_TERMINATED_WARNING) {
-                *status = U_ZERO_ERROR;
-            }
-        } else if (resLen == posixIDCapacity) {
-            *status = U_STRING_NOT_TERMINATED_WARNING;
-        } else {
-            *status = U_BUFFER_OVERFLOW_ERROR;
-        }
-        return resLen;
-    }
-
-    /* no match found */
-    *status = U_ILLEGAL_ARGUMENT_ERROR;
-    return -1;
-}
-
-/*
-//////////////////////////////////////
-//
-// POSIX --> LCID
-// This should only be called from uloc_getLCID.
-// The locale ID must be in canonical form.
-// langID is separate so that this file doesn't depend on the uloc_* API.
-//
-/////////////////////////////////////
-*/
-
-U_CAPI uint32_t
-uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status)
-{
-
-    uint32_t   low    = 0;
-    uint32_t   high   = gLocaleCount;
-    uint32_t   mid;
-    uint32_t   oldmid = 0;
-    int32_t    compVal;
-
-    uint32_t   value         = 0;
-    uint32_t   fallbackValue = (uint32_t)-1;
-    UErrorCode myStatus;
-    uint32_t   idx;
-
-    /* Check for incomplete id. */
-    if (!langID || !posixID || uprv_strlen(langID) < 2 || uprv_strlen(posixID) < 2) {
-        return 0;
-    }
-
-    /*Binary search for the map entry for normal cases */
-
-    while (high > low)  /*binary search*/{
-
-        mid = (high+low) >> 1; /*Finds median*/
-
-        if (mid == oldmid) 
-            break;
-
-        compVal = uprv_strcmp(langID, gPosixIDmap[mid].regionMaps->posixID);
-        if (compVal < 0){
-            high = mid;
-        }
-        else if (compVal > 0){
-            low = mid;
-        }
-        else /*we found it*/{
-            return getHostID(&gPosixIDmap[mid], posixID, status);
-        }
-        oldmid = mid;
-    }
-
-    /*
-     * Sometimes we can't do a binary search on posixID because some LCIDs
-     * go to different locales.  We hit one of those special cases.
-     */
-    for (idx = 0; idx < gLocaleCount; idx++ ) {
-        myStatus = U_ZERO_ERROR;
-        value = getHostID(&gPosixIDmap[idx], posixID, &myStatus);
-        if (myStatus == U_ZERO_ERROR) {
-            return value;
-        }
-        else if (myStatus == U_USING_FALLBACK_WARNING) {
-            fallbackValue = value;
-        }
-    }
-
-    if (fallbackValue != (uint32_t)-1) {
-        *status = U_USING_FALLBACK_WARNING;
-        return fallbackValue;
-    }
-
-    /* no match found */
-    *status = U_ILLEGAL_ARGUMENT_ERROR;
-    return 0;   /* return international (root) */
-}
-
index 4e14fe5..bef6295 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -32,7 +32,8 @@
 
 U_CAPI int32_t uprv_convertToPosix(uint32_t hostid, char* posixID, int32_t posixIDCapacity, UErrorCode* status);
 
-/* Don't call this function directly. Use uloc_getLCID instead. */
+/* Don't call these functions directly. Use uloc_getLCID instead. */
+U_CAPI uint32_t uprv_convertToLCIDPlatform(const char *localeID);   // Leverage platform conversion if possible
 U_CAPI uint32_t uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status);
 
 #endif /* LOCMAP_H */
index ee60639..258b707 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  loclikely.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a27edf1..5f0bd52 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 64f7dcc..31bfffd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 980f777..dc7a6ed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  messageimpl.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 31d5bb7..f223d06 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  messagepattern.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ac23b97..0cace85 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //{{NO_DEPENDENCIES}}
 // Copyright (c) 2003-2010 International Business Machines
index 525628b..bb45e7d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 4ddba0f..9295404 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1999-2016, International Business Machines
index 943e83d..9516817 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 33d9417..77f6e27 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  normalizer2.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index be0240e..67f4c1c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  normalizer2impl.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a6bf967..946abee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  normalizer2impl.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -176,7 +176,7 @@ public:
         lastCC=0;
     }
     void copyReorderableSuffixTo(UnicodeString &s) const {
-        s.setTo(reorderStart, (int32_t)(limit-reorderStart));
+        s.setTo(ConstChar16Ptr(reorderStart), (int32_t)(limit-reorderStart));
     }
 private:
     /*
index 19c09f0..607660c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *************************************************************************
 #include "normalizer2impl.h"
 #include "uprops.h"  // for uniset_getUnicode32Instance()
 
+#if defined(_ARM64_) && defined(move32)
+ // System can define move32 intrinsics, but the char iters define move32 method
+ // using same undef trick in headers, so undef here to re-enable the method.
+#undef move32
+#endif
+
 U_NAMESPACE_BEGIN
 
 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Normalizer)
@@ -40,7 +46,7 @@ Normalizer::Normalizer(const UnicodeString& str, UNormalizationMode mode) :
     init();
 }
 
-Normalizer::Normalizer(const UChar *str, int32_t length, UNormalizationMode mode) :
+Normalizer::Normalizer(ConstChar16Ptr str, int32_t length, UNormalizationMode mode) :
     UObject(), fFilteredNorm2(NULL), fNorm2(NULL), fUMode(mode), fOptions(0),
     text(new UCharCharacterIterator(str, length)),
     currentIndex(0), nextIndex(0),
@@ -435,7 +441,7 @@ Normalizer::setText(const CharacterIterator& newText,
 }
 
 void
-Normalizer::setText(const UChar* newText,
+Normalizer::setText(ConstChar16Ptr newText,
                     int32_t length,
                     UErrorCode &status)
 {
index af6ac6c..56c6c78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 30c3f68..01e33ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  patternprops.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f309c2d..a42eb3c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  patternprops.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index fc5f8fc..ec87f01 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines Corporation and
index 76e95c5..db64409 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 4107869..a12eb7d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c93d3d7..1a8ced5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 4863b26..c15b2a4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (C) 1999-2016, International Business Machines
diff --git a/source/common/propsvec.c b/source/common/propsvec.c
deleted file mode 100644 (file)
index ed4d899..0000000
+++ /dev/null
@@ -1,527 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2002-2011, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  propsvec.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2002feb22
-*   created by: Markus W. Scherer
-*
-*   Store bits (Unicode character properties) in bit set vectors.
-*/
-
-#include <stdlib.h>
-#include "unicode/utypes.h"
-#include "cmemory.h"
-#include "utrie.h"
-#include "utrie2.h"
-#include "uarrsort.h"
-#include "propsvec.h"
-#include "uassert.h"
-
-struct UPropsVectors {
-    uint32_t *v;
-    int32_t columns;  /* number of columns, plus two for start & limit values */
-    int32_t maxRows;
-    int32_t rows;
-    int32_t prevRow;  /* search optimization: remember last row seen */
-    UBool isCompacted;
-};
-
-#define UPVEC_INITIAL_ROWS (1<<12)
-#define UPVEC_MEDIUM_ROWS ((int32_t)1<<16)
-#define UPVEC_MAX_ROWS (UPVEC_MAX_CP+1)
-
-U_CAPI UPropsVectors * U_EXPORT2
-upvec_open(int32_t columns, UErrorCode *pErrorCode) {
-    UPropsVectors *pv;
-    uint32_t *v, *row;
-    uint32_t cp;
-
-    if(U_FAILURE(*pErrorCode)) {
-        return NULL;
-    }
-    if(columns<1) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-    columns+=2; /* count range start and limit columns */
-
-    pv=(UPropsVectors *)uprv_malloc(sizeof(UPropsVectors));
-    v=(uint32_t *)uprv_malloc(UPVEC_INITIAL_ROWS*columns*4);
-    if(pv==NULL || v==NULL) {
-        uprv_free(pv);
-        uprv_free(v);
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-    uprv_memset(pv, 0, sizeof(UPropsVectors));
-    pv->v=v;
-    pv->columns=columns;
-    pv->maxRows=UPVEC_INITIAL_ROWS;
-    pv->rows=2+(UPVEC_MAX_CP-UPVEC_FIRST_SPECIAL_CP);
-
-    /* set the all-Unicode row and the special-value rows */
-    row=pv->v;
-    uprv_memset(row, 0, pv->rows*columns*4);
-    row[0]=0;
-    row[1]=0x110000;
-    row+=columns;
-    for(cp=UPVEC_FIRST_SPECIAL_CP; cp<=UPVEC_MAX_CP; ++cp) {
-        row[0]=cp;
-        row[1]=cp+1;
-        row+=columns;
-    }
-    return pv;
-}
-
-U_CAPI void U_EXPORT2
-upvec_close(UPropsVectors *pv) {
-    if(pv!=NULL) {
-        uprv_free(pv->v);
-        uprv_free(pv);
-    }
-}
-
-static uint32_t *
-_findRow(UPropsVectors *pv, UChar32 rangeStart) {
-    uint32_t *row;
-    int32_t columns, i, start, limit, prevRow;
-
-    columns=pv->columns;
-    limit=pv->rows;
-    prevRow=pv->prevRow;
-
-    /* check the vicinity of the last-seen row (start searching with an unrolled loop) */
-    row=pv->v+prevRow*columns;
-    if(rangeStart>=(UChar32)row[0]) {
-        if(rangeStart<(UChar32)row[1]) {
-            /* same row as last seen */
-            return row;
-        } else if(rangeStart<(UChar32)(row+=columns)[1]) {
-            /* next row after the last one */
-            pv->prevRow=prevRow+1;
-            return row;
-        } else if(rangeStart<(UChar32)(row+=columns)[1]) {
-            /* second row after the last one */
-            pv->prevRow=prevRow+2;
-            return row;
-        } else if((rangeStart-(UChar32)row[1])<10) {
-            /* we are close, continue looping */
-            prevRow+=2;
-            do {
-                ++prevRow;
-                row+=columns;
-            } while(rangeStart>=(UChar32)row[1]);
-            pv->prevRow=prevRow;
-            return row;
-        }
-    } else if(rangeStart<(UChar32)pv->v[1]) {
-        /* the very first row */
-        pv->prevRow=0;
-        return pv->v;
-    }
-
-    /* do a binary search for the start of the range */
-    start=0;
-    while(start<limit-1) {
-        i=(start+limit)/2;
-        row=pv->v+i*columns;
-        if(rangeStart<(UChar32)row[0]) {
-            limit=i;
-        } else if(rangeStart<(UChar32)row[1]) {
-            pv->prevRow=i;
-            return row;
-        } else {
-            start=i;
-        }
-    }
-
-    /* must be found because all ranges together always cover all of Unicode */
-    pv->prevRow=start;
-    return pv->v+start*columns;
-}
-
-U_CAPI void U_EXPORT2
-upvec_setValue(UPropsVectors *pv,
-               UChar32 start, UChar32 end,
-               int32_t column,
-               uint32_t value, uint32_t mask,
-               UErrorCode *pErrorCode) {
-    uint32_t *firstRow, *lastRow;
-    int32_t columns;
-    UChar32 limit;
-    UBool splitFirstRow, splitLastRow;
-
-    /* argument checking */
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-    if( pv==NULL ||
-        start<0 || start>end || end>UPVEC_MAX_CP ||
-        column<0 || column>=(pv->columns-2)
-    ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    if(pv->isCompacted) {
-        *pErrorCode=U_NO_WRITE_PERMISSION;
-        return;
-    }
-    limit=end+1;
-
-    /* initialize */
-    columns=pv->columns;
-    column+=2; /* skip range start and limit columns */
-    value&=mask;
-
-    /* find the rows whose ranges overlap with the input range */
-
-    /* find the first and last rows, always successful */
-    firstRow=_findRow(pv, start);
-    lastRow=_findRow(pv, end);
-
-    /*
-     * Rows need to be split if they partially overlap with the
-     * input range (only possible for the first and last rows)
-     * and if their value differs from the input value.
-     */
-    splitFirstRow= (UBool)(start!=(UChar32)firstRow[0] && value!=(firstRow[column]&mask));
-    splitLastRow= (UBool)(limit!=(UChar32)lastRow[1] && value!=(lastRow[column]&mask));
-
-    /* split first/last rows if necessary */
-    if(splitFirstRow || splitLastRow) {
-        int32_t count, rows;
-
-        rows=pv->rows;
-        if((rows+splitFirstRow+splitLastRow)>pv->maxRows) {
-            uint32_t *newVectors;
-            int32_t newMaxRows;
-
-            if(pv->maxRows<UPVEC_MEDIUM_ROWS) {
-                newMaxRows=UPVEC_MEDIUM_ROWS;
-            } else if(pv->maxRows<UPVEC_MAX_ROWS) {
-                newMaxRows=UPVEC_MAX_ROWS;
-            } else {
-                /* Implementation bug, or UPVEC_MAX_ROWS too low. */
-                *pErrorCode=U_INTERNAL_PROGRAM_ERROR;
-                return;
-            }
-            newVectors=(uint32_t *)uprv_malloc(newMaxRows*columns*4);
-            if(newVectors==NULL) {
-                *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-                return;
-            }
-            uprv_memcpy(newVectors, pv->v, (size_t)rows*columns*4);
-            firstRow=newVectors+(firstRow-pv->v);
-            lastRow=newVectors+(lastRow-pv->v);
-            uprv_free(pv->v);
-            pv->v=newVectors;
-            pv->maxRows=newMaxRows;
-        }
-
-        /* count the number of row cells to move after the last row, and move them */
-        count = (int32_t)((pv->v+rows*columns)-(lastRow+columns));
-        if(count>0) {
-            uprv_memmove(
-                lastRow+(1+splitFirstRow+splitLastRow)*columns,
-                lastRow+columns,
-                count*4);
-        }
-        pv->rows=rows+splitFirstRow+splitLastRow;
-
-        /* split the first row, and move the firstRow pointer to the second part */
-        if(splitFirstRow) {
-            /* copy all affected rows up one and move the lastRow pointer */
-            count = (int32_t)((lastRow-firstRow)+columns);
-            uprv_memmove(firstRow+columns, firstRow, (size_t)count*4);
-            lastRow+=columns;
-
-            /* split the range and move the firstRow pointer */
-            firstRow[1]=firstRow[columns]=(uint32_t)start;
-            firstRow+=columns;
-        }
-
-        /* split the last row */
-        if(splitLastRow) {
-            /* copy the last row data */
-            uprv_memcpy(lastRow+columns, lastRow, (size_t)columns*4);
-
-            /* split the range and move the firstRow pointer */
-            lastRow[1]=lastRow[columns]=(uint32_t)limit;
-        }
-    }
-
-    /* set the "row last seen" to the last row for the range */
-    pv->prevRow=(int32_t)((lastRow-(pv->v))/columns);
-
-    /* set the input value in all remaining rows */
-    firstRow+=column;
-    lastRow+=column;
-    mask=~mask;
-    for(;;) {
-        *firstRow=(*firstRow&mask)|value;
-        if(firstRow==lastRow) {
-            break;
-        }
-        firstRow+=columns;
-    }
-}
-
-U_CAPI uint32_t U_EXPORT2
-upvec_getValue(const UPropsVectors *pv, UChar32 c, int32_t column) {
-    uint32_t *row;
-    UPropsVectors *ncpv;
-
-    if(pv->isCompacted || c<0 || c>UPVEC_MAX_CP || column<0 || column>=(pv->columns-2)) {
-        return 0;
-    }
-    ncpv=(UPropsVectors *)pv;
-    row=_findRow(ncpv, c);
-    return row[2+column];
-}
-
-U_CAPI uint32_t * U_EXPORT2
-upvec_getRow(const UPropsVectors *pv, int32_t rowIndex,
-             UChar32 *pRangeStart, UChar32 *pRangeEnd) {
-    uint32_t *row;
-    int32_t columns;
-
-    if(pv->isCompacted || rowIndex<0 || rowIndex>=pv->rows) {
-        return NULL;
-    }
-
-    columns=pv->columns;
-    row=pv->v+rowIndex*columns;
-    if(pRangeStart!=NULL) {
-        *pRangeStart=(UChar32)row[0];
-    }
-    if(pRangeEnd!=NULL) {
-        *pRangeEnd=(UChar32)row[1]-1;
-    }
-    return row+2;
-}
-
-static int32_t U_CALLCONV
-upvec_compareRows(const void *context, const void *l, const void *r) {
-    const uint32_t *left=(const uint32_t *)l, *right=(const uint32_t *)r;
-    const UPropsVectors *pv=(const UPropsVectors *)context;
-    int32_t i, count, columns;
-
-    count=columns=pv->columns; /* includes start/limit columns */
-
-    /* start comparing after start/limit but wrap around to them */
-    i=2;
-    do {
-        if(left[i]!=right[i]) {
-            return left[i]<right[i] ? -1 : 1;
-        }
-        if(++i==columns) {
-            i=0;
-        }
-    } while(--count>0);
-
-    return 0;
-}
-
-U_CAPI void U_EXPORT2
-upvec_compact(UPropsVectors *pv, UPVecCompactHandler *handler, void *context, UErrorCode *pErrorCode) {
-    uint32_t *row;
-    int32_t i, columns, valueColumns, rows, count;
-    UChar32 start, limit;
-
-    /* argument checking */
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-    if(handler==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    if(pv->isCompacted) {
-        return;
-    }
-
-    /* Set the flag now: Sorting and compacting destroys the builder data structure. */
-    pv->isCompacted=TRUE;
-
-    rows=pv->rows;
-    columns=pv->columns;
-    U_ASSERT(columns>=3); /* upvec_open asserts this */
-    valueColumns=columns-2; /* not counting start & limit */
-
-    /* sort the properties vectors to find unique vector values */
-    uprv_sortArray(pv->v, rows, columns*4,
-                   upvec_compareRows, pv, FALSE, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-
-    /*
-     * Find and set the special values.
-     * This has to do almost the same work as the compaction below,
-     * to find the indexes where the special-value rows will move.
-     */
-    row=pv->v;
-    count=-valueColumns;
-    for(i=0; i<rows; ++i) {
-        start=(UChar32)row[0];
-
-        /* count a new values vector if it is different from the current one */
-        if(count<0 || 0!=uprv_memcmp(row+2, row-valueColumns, valueColumns*4)) {
-            count+=valueColumns;
-        }
-
-        if(start>=UPVEC_FIRST_SPECIAL_CP) {
-            handler(context, start, start, count, row+2, valueColumns, pErrorCode);
-            if(U_FAILURE(*pErrorCode)) {
-                return;
-            }
-        }
-
-        row+=columns;
-    }
-
-    /* count is at the beginning of the last vector, add valueColumns to include that last vector */
-    count+=valueColumns;
-
-    /* Call the handler once more to signal the start of delivering real values. */
-    handler(context, UPVEC_START_REAL_VALUES_CP, UPVEC_START_REAL_VALUES_CP,
-            count, row-valueColumns, valueColumns, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-
-    /*
-     * Move vector contents up to a contiguous array with only unique
-     * vector values, and call the handler function for each vector.
-     *
-     * This destroys the Properties Vector structure and replaces it
-     * with an array of just vector values.
-     */
-    row=pv->v;
-    count=-valueColumns;
-    for(i=0; i<rows; ++i) {
-        /* fetch these first before memmove() may overwrite them */
-        start=(UChar32)row[0];
-        limit=(UChar32)row[1];
-
-        /* add a new values vector if it is different from the current one */
-        if(count<0 || 0!=uprv_memcmp(row+2, pv->v+count, valueColumns*4)) {
-            count+=valueColumns;
-            uprv_memmove(pv->v+count, row+2, (size_t)valueColumns*4);
-        }
-
-        if(start<UPVEC_FIRST_SPECIAL_CP) {
-            handler(context, start, limit-1, count, pv->v+count, valueColumns, pErrorCode);
-            if(U_FAILURE(*pErrorCode)) {
-                return;
-            }
-        }
-
-        row+=columns;
-    }
-
-    /* count is at the beginning of the last vector, add one to include that last vector */
-    pv->rows=count/valueColumns+1;
-}
-
-U_CAPI const uint32_t * U_EXPORT2
-upvec_getArray(const UPropsVectors *pv, int32_t *pRows, int32_t *pColumns) {
-    if(!pv->isCompacted) {
-        return NULL;
-    }
-    if(pRows!=NULL) {
-        *pRows=pv->rows;
-    }
-    if(pColumns!=NULL) {
-        *pColumns=pv->columns-2;
-    }
-    return pv->v;
-}
-
-U_CAPI uint32_t * U_EXPORT2
-upvec_cloneArray(const UPropsVectors *pv,
-                 int32_t *pRows, int32_t *pColumns, UErrorCode *pErrorCode) {
-    uint32_t *clonedArray;
-    int32_t byteLength;
-
-    if(U_FAILURE(*pErrorCode)) {
-        return NULL;
-    }
-    if(!pv->isCompacted) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-    byteLength=pv->rows*(pv->columns-2)*4;
-    clonedArray=(uint32_t *)uprv_malloc(byteLength);
-    if(clonedArray==NULL) {
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-    uprv_memcpy(clonedArray, pv->v, byteLength);
-    if(pRows!=NULL) {
-        *pRows=pv->rows;
-    }
-    if(pColumns!=NULL) {
-        *pColumns=pv->columns-2;
-    }
-    return clonedArray;
-}
-
-U_CAPI UTrie2 * U_EXPORT2
-upvec_compactToUTrie2WithRowIndexes(UPropsVectors *pv, UErrorCode *pErrorCode) {
-    UPVecToUTrie2Context toUTrie2={ NULL, 0, 0, 0 };
-    upvec_compact(pv, upvec_compactToUTrie2Handler, &toUTrie2, pErrorCode);
-    utrie2_freeze(toUTrie2.trie, UTRIE2_16_VALUE_BITS, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        utrie2_close(toUTrie2.trie);
-        toUTrie2.trie=NULL;
-    }
-    return toUTrie2.trie;
-}
-
-/*
- * TODO(markus): Add upvec_16BitsToUTrie2() function that enumerates all rows, extracts
- * some 16-bit field and builds and returns a UTrie2.
- */
-
-U_CAPI void U_CALLCONV
-upvec_compactToUTrie2Handler(void *context,
-                             UChar32 start, UChar32 end,
-                             int32_t rowIndex, uint32_t *row, int32_t columns,
-                             UErrorCode *pErrorCode) {
-    UPVecToUTrie2Context *toUTrie2=(UPVecToUTrie2Context *)context;
-    if(start<UPVEC_FIRST_SPECIAL_CP) {
-        utrie2_setRange32(toUTrie2->trie, start, end, (uint32_t)rowIndex, TRUE, pErrorCode);
-    } else {
-        switch(start) {
-        case UPVEC_INITIAL_VALUE_CP:
-            toUTrie2->initialValue=rowIndex;
-            break;
-        case UPVEC_ERROR_VALUE_CP:
-            toUTrie2->errorValue=rowIndex;
-            break;
-        case UPVEC_START_REAL_VALUES_CP:
-            toUTrie2->maxValue=rowIndex;
-            if(rowIndex>0xffff) {
-                /* too many rows for a 16-bit trie */
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-            } else {
-                toUTrie2->trie=utrie2_open(toUTrie2->initialValue,
-                                           toUTrie2->errorValue, pErrorCode);
-            }
-            break;
-        default:
-            break;
-        }
-    }
-}
index b34e4ee..3908061 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  propsvec.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1d2ccb3..90fe1ec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  punycode.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ff23eb0..5d8a243 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  punycode.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 03f6548..023186c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 // Must be before any other #includes.
 #include "uposixdefs.h"
 
-/* include ICU headers */
-#include "unicode/utypes.h"
+// First, the platform type. Need this for U_PLATFORM.
+#include "unicode/platform.h"
+
+#if U_PLATFORM == U_PF_MINGW && defined __STRICT_ANSI__
+/* tzset isn't defined in strict ANSI on MinGW. */
+#undef __STRICT_ANSI__
+#endif
+
+/*
+ * Cygwin with GCC requires inclusion of time.h after the above disabling strict asci mode statement.
+ */
+#include <time.h>
+
+#if !U_PLATFORM_USES_ONLY_WIN32_API
+#include <sys/time.h>
+#endif
+
+/* include the rest of the ICU headers */
 #include "unicode/putil.h"
 #include "unicode/ustring.h"
 #include "putilimp.h"
      * Should Cygwin be included as well (U_PLATFORM_HAS_WIN32_API)
      * to use native APIs as much as possible?
      */
+#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
+#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
 #   define NOIME
 #   define NOMCX
 #   include <windows.h>
+#   include "unicode\uloc.h"
+#if U_PLATFORM_HAS_WINUWP_API == 0
 #   include "wintz.h"
+#else // U_PLATFORM_HAS_WINUWP_API
+typedef PVOID LPMSG; // TODO: figure out how to get rid of this typedef
+#include <Windows.Globalization.h>
+#include <windows.system.userprofile.h>
+#include <wrl\wrappers\corewrappers.h>
+#include <wrl\client.h>
+
+using namespace ABI::Windows::Foundation;
+using namespace Microsoft::WRL;
+using namespace Microsoft::WRL::Wrappers;
+#endif
 #elif U_PLATFORM == U_PF_OS400
 #   include <float.h>
 #   include <qusec.h>       /* error code structure */
 #   include <sys/neutrino.h>
 #endif
 
-#if (U_PF_MINGW <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN) && defined(__STRICT_ANSI__)
-/* tzset isn't defined in strict ANSI on Cygwin and MinGW. */
-#undef __STRICT_ANSI__
-#endif
-
-/*
- * Cygwin with GCC requires inclusion of time.h after the above disabling strict asci mode statement.
- */
-#include <time.h>
-
-#if !U_PLATFORM_USES_ONLY_WIN32_API
-#include <sys/time.h>
-#endif
-
 /*
  * Only include langinfo.h if we have a way to get the codeset. If we later
  * depend on more feature, we can test on U_HAVE_NL_LANGINFO.
@@ -651,7 +668,7 @@ uprv_timezone()
 /* Note that U_TZNAME does *not* have to be tzname, but if it is,
    some platforms need to have it declared here. */
 
-#if defined(U_TZNAME) && (U_PLATFORM == U_PF_IRIX || U_PLATFORM_IS_DARWIN_BASED || (U_PLATFORM == U_PF_CYGWIN && !U_PLATFORM_USES_ONLY_WIN32_API))
+#if defined(U_TZNAME) && (U_PLATFORM == U_PF_IRIX || U_PLATFORM_IS_DARWIN_BASED)
 /* RS6000 and others reject char **tzname.  */
 extern U_IMPORT char *U_TZNAME[];
 #endif
@@ -1008,16 +1025,65 @@ uprv_tzname_clear_cache()
 #endif
 }
 
+// With the Universal Windows Platform we can just ask Windows for the name
+#if U_PLATFORM_HAS_WINUWP_API
+U_CAPI const char* U_EXPORT2
+uprv_getWindowsTimeZone()
+{
+    // Get default Windows timezone.   
+    ComPtr<IInspectable> calendar;
+    HRESULT hr = RoActivateInstance(
+        HStringReference(RuntimeClass_Windows_Globalization_Calendar).Get(),
+        &calendar);
+    if (SUCCEEDED(hr))
+    {
+        ComPtr<ABI::Windows::Globalization::ITimeZoneOnCalendar> timezone;
+        hr = calendar.As(&timezone);
+        if (SUCCEEDED(hr))
+        {
+            HString timezoneString;
+            hr = timezone->GetTimeZone(timezoneString.GetAddressOf());
+            if (SUCCEEDED(hr))
+            {
+                int32_t length = wcslen(timezoneString.GetRawBuffer(NULL));
+                char* asciiId = (char*)uprv_calloc(length + 1, sizeof(char));
+                if (asciiId != nullptr)
+                {
+                    u_UCharsToChars((UChar*)timezoneString.GetRawBuffer(NULL), asciiId, length);
+                    return asciiId;
+                }
+            }
+        }
+    }
+
+    // Failed
+    return nullptr;
+}
+#endif
+
 U_CAPI const char* U_EXPORT2
 uprv_tzname(int n)
 {
     const char *tzid = NULL;
 #if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WINUWP_API > 0
+    tzid = uprv_getWindowsTimeZone();
+#else
     tzid = uprv_detectWindowsTimeZone();
+#endif
 
     if (tzid != NULL) {
         return tzid;
     }
+
+#ifndef U_TZNAME
+    // The return value is free'd in timezone.cpp on Windows because
+    // the other code path returns a pointer to a heap location.
+    // If we don't have a name already, then tzname wouldn't be any
+    // better, so just fall back.
+    return uprv_strdup("Etc/UTC");
+#endif // !U_TZNAME
+
 #else
 
 /*#if U_PLATFORM_IS_DARWIN_BASED
@@ -1162,7 +1228,8 @@ UInitOnce gTimeZoneFilesInitOnce = U_INITONCE_INITIALIZER;
 static CharString *gTimeZoneFilesDirectory = NULL;
 
 #if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
- static char *gCorrectedPOSIXLocale = NULL; /* Heap allocated */
+ static char *gCorrectedPOSIXLocale = NULL; /* Sometimes heap allocated */
+ static bool gCorrectedPOSIXLocaleHeapAllocated = false;
 #endif
 
 static UBool U_CALLCONV putil_cleanup(void)
@@ -1183,9 +1250,10 @@ static UBool U_CALLCONV putil_cleanup(void)
 #endif
 
 #if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
-    if (gCorrectedPOSIXLocale) {
+    if (gCorrectedPOSIXLocale && gCorrectedPOSIXLocaleHeapAllocated) {
         uprv_free(gCorrectedPOSIXLocale);
         gCorrectedPOSIXLocale = NULL;
+        gCorrectedPOSIXLocaleHeapAllocated = false;
     }
 #endif
     return TRUE;
@@ -1297,7 +1365,9 @@ static void U_CALLCONV dataDirectoryInitFn() {
     */
 #   if !defined(ICU_NO_USER_DATA_OVERRIDE) && !UCONFIG_NO_FILE_IO
     /* First try to get the environment variable */
-    path=getenv("ICU_DATA");
+#       if U_PLATFORM_HAS_WINUWP_API == 0  // Windows UWP does not support getenv
+        path=getenv("ICU_DATA");
+#       endif
 #   endif
 
     /* ICU_DATA_DIR may be set as a compile option.
@@ -1326,9 +1396,35 @@ static void U_CALLCONV dataDirectoryInitFn() {
     }
 #endif
 
+#if defined(ICU_DATA_DIR_WINDOWS) && U_PLATFORM_HAS_WINUWP_API != 0
+    // Use data from the %windir%\globalization\icu directory
+    // This is only available if ICU is built as a system component
+    char datadir_path_buffer[MAX_PATH];
+    UINT length = GetWindowsDirectoryA(datadir_path_buffer, UPRV_LENGTHOF(datadir_path_buffer));
+    if (length > 0 && length < (UPRV_LENGTHOF(datadir_path_buffer) - sizeof(ICU_DATA_DIR_WINDOWS) - 1))
+    {
+        if (datadir_path_buffer[length - 1] != '\\')
+        {
+            datadir_path_buffer[length++] = '\\';
+            datadir_path_buffer[length] = '\0';
+        }
+
+        if ((length + 1 + sizeof(ICU_DATA_DIR_WINDOWS)) < UPRV_LENGTHOF(datadir_path_buffer))
+        {
+            uprv_strcat(datadir_path_buffer, ICU_DATA_DIR_WINDOWS);
+            path = datadir_path_buffer;
+        }
+    }
+#endif
+
     if(path==NULL) {
         /* It looks really bad, set it to something. */
+#if U_PLATFORM_HAS_WIN32_API
+        // Windows UWP will require icudtl.dat file in same directory as icuuc.dll
+        path = ".\\";
+#else
         path = "";
+#endif
     }
 
     u_setDataDirectory(path);
@@ -1366,7 +1462,12 @@ static void U_CALLCONV TimeZoneDataDirInitFn(UErrorCode &status) {
         status = U_MEMORY_ALLOCATION_ERROR;
         return;
     }
+#if U_PLATFORM_HAS_WINUWP_API == 0
     const char *dir = getenv("ICU_TIMEZONE_FILES_DIR");
+#else
+    // TODO: UWP does not support alternate timezone data directories at this time
+    const char *dir = "";
+#endif // U_PLATFORM_HAS_WINUWP_API
 #if defined(U_TIMEZONE_FILES_DIR)
     if (dir == NULL) {
         dir = TO_STRING(U_TIMEZONE_FILES_DIR);
@@ -1603,6 +1704,7 @@ The leftmost codepage (.xxx) wins.
 
     if (gCorrectedPOSIXLocale == NULL) {
         gCorrectedPOSIXLocale = correctedPOSIXLocale;
+        gCorrectedPOSIXLocaleHeapAllocated = true;
         ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
         correctedPOSIXLocale = NULL;
     }
@@ -1618,25 +1720,115 @@ The leftmost codepage (.xxx) wins.
     UErrorCode status = U_ZERO_ERROR;
     char *correctedPOSIXLocale = 0;
 
+    // If we have already figured this out just use the cached value
     if (gCorrectedPOSIXLocale != NULL) {
         return gCorrectedPOSIXLocale;
     }
 
-    LCID id = GetThreadLocale();
-    correctedPOSIXLocale = static_cast<char *>(uprv_malloc(POSIX_LOCALE_CAPACITY + 1));
-    if (correctedPOSIXLocale) {
-        int32_t posixLen = uprv_convertToPosix(id, correctedPOSIXLocale, POSIX_LOCALE_CAPACITY, &status);
-        if (U_SUCCESS(status)) {
-            *(correctedPOSIXLocale + posixLen) = 0;
-            gCorrectedPOSIXLocale = correctedPOSIXLocale;
-            ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
-        } else {
-            uprv_free(correctedPOSIXLocale);
+    // No cached value, need to determine the current value
+    static WCHAR windowsLocale[LOCALE_NAME_MAX_LENGTH];
+#if U_PLATFORM_HAS_WINUWP_API == 0 
+    // If not a Universal Windows App, we'll need user default language.
+    // Vista and above should use Locale Names instead of LCIDs
+    int length = GetUserDefaultLocaleName(windowsLocale, UPRV_LENGTHOF(windowsLocale));
+#else
+    // In a UWP app, we want the top language that the application and user agreed upon
+    ComPtr<ABI::Windows::Foundation::Collections::IVectorView<HSTRING>> languageList;
+
+    ComPtr<ABI::Windows::Globalization::IApplicationLanguagesStatics> applicationLanguagesStatics;
+    HRESULT hr = GetActivationFactory(
+        HStringReference(RuntimeClass_Windows_Globalization_ApplicationLanguages).Get(),
+        &applicationLanguagesStatics);
+    if (SUCCEEDED(hr))
+    {
+        hr = applicationLanguagesStatics->get_Languages(&languageList);
+    }
+
+    if (FAILED(hr))
+    {
+        // If there is no application context, then use the top language from the user language profile
+        ComPtr<ABI::Windows::System::UserProfile::IGlobalizationPreferencesStatics> globalizationPreferencesStatics;
+        hr = GetActivationFactory(
+            HStringReference(RuntimeClass_Windows_System_UserProfile_GlobalizationPreferences).Get(),
+            &globalizationPreferencesStatics);
+        if (SUCCEEDED(hr))
+        {
+            hr = globalizationPreferencesStatics->get_Languages(&languageList);
         }
     }
 
+    // We have a list of languages, ICU knows one, so use the top one for our locale
+    HString topLanguage;
+    if (SUCCEEDED(hr))
+    {
+        hr = languageList->GetAt(0, topLanguage.GetAddressOf());
+    }
+
+    if (FAILED(hr))
+    {
+        // Unexpected, use en-US by default
+        if (gCorrectedPOSIXLocale == NULL) {
+            gCorrectedPOSIXLocale = "en_US";
+        }
+
+        return gCorrectedPOSIXLocale;
+    }
+
+    // ResolveLocaleName will get a likely subtags form consistent with Windows behavior.
+    int length = ResolveLocaleName(topLanguage.GetRawBuffer(NULL), windowsLocale, UPRV_LENGTHOF(windowsLocale));
+#endif
+    // Now we should have a Windows locale name that needs converted to the POSIX style,
+    if (length > 0)
+    {
+        // First we need to go from UTF-16 to char (and also convert from _ to - while we're at it.)
+        char modifiedWindowsLocale[LOCALE_NAME_MAX_LENGTH];
+
+        int32_t i;
+        for (i = 0; i < UPRV_LENGTHOF(modifiedWindowsLocale); i++)
+        {
+            if (windowsLocale[i] == '_')
+            {
+                modifiedWindowsLocale[i] = '-';
+            }
+            else
+            {
+                modifiedWindowsLocale[i] = static_cast<char>(windowsLocale[i]);
+            }
+
+            if (modifiedWindowsLocale[i] == '\0')
+            {
+                break;
+            }
+        }
+
+        if (i >= UPRV_LENGTHOF(modifiedWindowsLocale))
+        {
+            // Ran out of room, can't really happen, maybe we'll be lucky about a matching
+            // locale when tags are dropped
+            modifiedWindowsLocale[UPRV_LENGTHOF(modifiedWindowsLocale) - 1] = '\0';
+        }
+
+        // Now normalize the resulting name
+        if (correctedPOSIXLocale)
+        {
+            int32_t posixLen = uloc_canonicalize(modifiedWindowsLocale, correctedPOSIXLocale, POSIX_LOCALE_CAPACITY, &status);
+            if (U_SUCCESS(status))
+            {
+                *(correctedPOSIXLocale + posixLen) = 0;
+                gCorrectedPOSIXLocale = correctedPOSIXLocale;
+                gCorrectedPOSIXLocaleHeapAllocated = true;
+                ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
+            }
+            else
+            {
+                uprv_free(correctedPOSIXLocale);
+            }
+        }
+    }
+
+    // If unable to find a locale we can agree upon, use en-US by default
     if (gCorrectedPOSIXLocale == NULL) {
-        return "en_US";
+        gCorrectedPOSIXLocale = "en_US";
     }
     return gCorrectedPOSIXLocale;
 
@@ -1923,8 +2115,34 @@ int_getDefaultCodepage()
 
 #elif U_PLATFORM_USES_ONLY_WIN32_API
     static char codepage[64];
-    sprintf(codepage, "windows-%d", GetACP());
-    return codepage;
+    DWORD codepageNumber = 0;
+
+#if U_PLATFORM_HAS_WINUWP_API > 0
+    // UWP doesn't have a direct API to get the default ACP as Microsoft would rather
+    // have folks use Unicode than a "system" code page, however this is the same
+    // codepage as the system default locale codepage.  (FWIW, the system locale is
+    // ONLY used for codepage, it should never be used for anything else)
+    GetLocaleInfoEx(LOCALE_NAME_SYSTEM_DEFAULT, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER,
+        (LPWSTR)&codepageNumber, sizeof(codepageNumber) / sizeof(WCHAR));
+#else
+    // Win32 apps can call GetACP
+    codepageNumber = GetACP();
+#endif
+    // Special case for UTF-8
+    if (codepageNumber == 65001)
+    { 
+        return "UTF-8";
+    }
+    // Windows codepages can look like windows-1252, so format the found number
+    // the numbers are eclectic, however all valid system code pages, besides UTF-8
+    // are between 3 and 19999
+    if (codepageNumber > 0 && codepageNumber < 20000)
+    {
+        sprintf(codepage, "windows-%ld", codepageNumber);
+        return codepage;
+    }
+    // If the codepage number call failed then return UTF-8
+    return "UTF-8";
 
 #elif U_POSIX_LOCALE
     static char codesetName[100];
index 05f7391..e547322 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -87,7 +87,7 @@ typedef size_t uintptr_t;
 
 #ifdef U_HAVE_NL_LANGINFO_CODESET
     /* Use the predefined value. */
-#elif U_PLATFORM_HAS_WIN32_API || U_PLATFORM == U_PF_ANDROID || U_PLATFORM == U_PF_QNX
+#elif U_PLATFORM_USES_ONLY_WIN32_API || U_PLATFORM == U_PF_ANDROID || U_PLATFORM == U_PF_QNX
 #   define U_HAVE_NL_LANGINFO_CODESET 0
 #else
 #   define U_HAVE_NL_LANGINFO_CODESET 1
@@ -106,7 +106,10 @@ typedef size_t uintptr_t;
 #ifdef U_TZSET
     /* Use the predefined value. */
 #elif U_PLATFORM_USES_ONLY_WIN32_API
+    // UWP doesn't support tzset or environment variables for tz
+#if U_PLATFORM_HAS_WINUWP_API == 0
 #   define U_TZSET _tzset
+#endif
 #elif U_PLATFORM == U_PF_OS400
    /* not defined */
 #else
@@ -141,7 +144,10 @@ typedef size_t uintptr_t;
 #ifdef U_TZNAME
     /* Use the predefined value. */
 #elif U_PLATFORM_USES_ONLY_WIN32_API
+    /* not usable on all windows platforms */
+#if U_PLATFORM_HAS_WINUWP_API == 0
 #   define U_TZNAME _tzname
+#endif
 #elif U_PLATFORM == U_PF_OS400
    /* not defined */
 #else
index 2680bf2..e4c91ba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index 26e11ac..63ed15f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index 1d6f37d..8011baf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  rbbidata.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 123c21e..69d8415 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index 74096cc..f352596 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 3d9fe6f..f4fa13c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  rbbirb.cpp
index e4f736c..d58a136 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbirb.h
index b5bc8f7..586953c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //---------------------------------------------------------------------------------
 //
index df30f2c..e68e052 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  rbbiscan.cpp
@@ -1179,13 +1179,12 @@ RBBINode  *RBBIRuleScanner::pushNewNode(RBBINode::NodeType  t) {
     if (U_FAILURE(*fRB->fStatus)) {
         return NULL;
     }
-    fNodeStackPtr++;
-    if (fNodeStackPtr >= kStackSize) {
-        error(U_BRK_INTERNAL_ERROR);
+    if (fNodeStackPtr >= kStackSize - 1) {
+        error(U_BRK_RULE_SYNTAX);
         RBBIDebugPuts("RBBIRuleScanner::pushNewNode - stack overflow.");
-        *fRB->fStatus = U_BRK_INTERNAL_ERROR;
         return NULL;
     }
+    fNodeStackPtr++;
     fNodeStack[fNodeStackPtr] = new RBBINode(t);
     if (fNodeStack[fNodeStackPtr] == NULL) {
         *fRB->fStatus = U_MEMORY_ALLOCATION_ERROR;
index 6f3267e..8bec823 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbiscan.h
index ebdf8b7..f55388a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbisetb.cpp
index 89bfb98..a7d1e7a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbisetb.h
index d937edb..5303f76 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  rbbistbl.cpp    Implementation of the ICU RBBISymbolTable class
index 2738c75..0f1a901 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d71a024..1041501 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbitblb.h
index 7bd6b32..512bd53 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 65c32b5..45c0b39 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  resbund_cnv.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 62b3aa4..3d41a16 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 43c3309..3dbff78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6e27b4d..41eea23 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 1221396..4e1be53 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index cc41366..f852800 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index c650ef3..de29c64 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
index 679c443..e1f69cd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 319d7b8..538982c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 114d643..84f2347 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 7faec51..ccf6433 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 71c6c44..f4579d0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 69a81da..dc77c7b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 05606ff..dba7a0f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 299695e..94279ab 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 4cf66b9..09154d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 8e5095e..37aa458 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 0e53cfb..d132651 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index eaeb60d..f866e0a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 6e0bad0..12f18a5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  sprpimpl.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index b032b47..d4f7f31 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // Copyright (C) 2009-2013, International Business Machines
 // Corporation and others. All Rights Reserved.
index 075d7c4..cf5b7b7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  stringtriebuilder.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/uarrsort.c b/source/common/uarrsort.c
deleted file mode 100644 (file)
index bb1b5bd..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2003-2013, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  uarrsort.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2003aug04
-*   created by: Markus W. Scherer
-*
-*   Internal function for sorting arrays.
-*/
-
-#include "unicode/utypes.h"
-#include "cmemory.h"
-#include "uarrsort.h"
-
-enum {
-    /**
-     * "from Knuth"
-     *
-     * A binary search over 8 items performs 4 comparisons:
-     * log2(8)=3 to subdivide, +1 to check for equality.
-     * A linear search over 8 items on average also performs 4 comparisons.
-     */
-    MIN_QSORT=9,
-    STACK_ITEM_SIZE=200
-};
-
-/* UComparator convenience implementations ---------------------------------- */
-
-U_CAPI int32_t U_EXPORT2
-uprv_uint16Comparator(const void *context, const void *left, const void *right) {
-    return (int32_t)*(const uint16_t *)left - (int32_t)*(const uint16_t *)right;
-}
-
-U_CAPI int32_t U_EXPORT2
-uprv_int32Comparator(const void *context, const void *left, const void *right) {
-    return *(const int32_t *)left - *(const int32_t *)right;
-}
-
-U_CAPI int32_t U_EXPORT2
-uprv_uint32Comparator(const void *context, const void *left, const void *right) {
-    uint32_t l=*(const uint32_t *)left, r=*(const uint32_t *)right;
-
-    /* compare directly because (l-r) would overflow the int32_t result */
-    if(l<r) {
-        return -1;
-    } else if(l==r) {
-        return 0;
-    } else /* l>r */ {
-        return 1;
-    }
-}
-
-/* Insertion sort using binary search --------------------------------------- */
-
-U_CAPI int32_t U_EXPORT2
-uprv_stableBinarySearch(char *array, int32_t limit, void *item, int32_t itemSize,
-                        UComparator *cmp, const void *context) {
-    int32_t start=0;
-    UBool found=FALSE;
-
-    /* Binary search until we get down to a tiny sub-array. */
-    while((limit-start)>=MIN_QSORT) {
-        int32_t i=(start+limit)/2;
-        int32_t diff=cmp(context, item, array+i*itemSize);
-        if(diff==0) {
-            /*
-             * Found the item. We look for the *last* occurrence of such
-             * an item, for stable sorting.
-             * If we knew that there will be only few equal items,
-             * we could break now and enter the linear search.
-             * However, if there are many equal items, then it should be
-             * faster to continue with the binary search.
-             * It seems likely that we either have all unique items
-             * (where found will never become TRUE in the insertion sort)
-             * or potentially many duplicates.
-             */
-            found=TRUE;
-            start=i+1;
-        } else if(diff<0) {
-            limit=i;
-        } else {
-            start=i;
-        }
-    }
-
-    /* Linear search over the remaining tiny sub-array. */
-    while(start<limit) {
-        int32_t diff=cmp(context, item, array+start*itemSize);
-        if(diff==0) {
-            found=TRUE;
-        } else if(diff<0) {
-            break;
-        }
-        ++start;
-    }
-    return found ? (start-1) : ~start;
-}
-
-static void
-doInsertionSort(char *array, int32_t length, int32_t itemSize,
-                UComparator *cmp, const void *context, void *pv) {
-    int32_t j;
-
-    for(j=1; j<length; ++j) {
-        char *item=array+j*itemSize;
-        int32_t insertionPoint=uprv_stableBinarySearch(array, j, item, itemSize, cmp, context);
-        if(insertionPoint<0) {
-            insertionPoint=~insertionPoint;
-        } else {
-            ++insertionPoint;  /* one past the last equal item */
-        }
-        if(insertionPoint<j) {
-            char *dest=array+insertionPoint*itemSize;
-            uprv_memcpy(pv, item, itemSize);  /* v=array[j] */
-            uprv_memmove(dest+itemSize, dest, (j-insertionPoint)*(size_t)itemSize);
-            uprv_memcpy(dest, pv, itemSize);  /* array[insertionPoint]=v */
-        }
-    }
-}
-
-static void
-insertionSort(char *array, int32_t length, int32_t itemSize,
-              UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
-    UAlignedMemory v[STACK_ITEM_SIZE/sizeof(UAlignedMemory)+1];
-    void *pv;
-
-    /* allocate an intermediate item variable (v) */
-    if(itemSize<=STACK_ITEM_SIZE) {
-        pv=v;
-    } else {
-        pv=uprv_malloc(itemSize);
-        if(pv==NULL) {
-            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-            return;
-        }
-    }
-
-    doInsertionSort(array, length, itemSize, cmp, context, pv);
-
-    if(pv!=v) {
-        uprv_free(pv);
-    }
-}
-
-/* QuickSort ---------------------------------------------------------------- */
-
-/*
- * This implementation is semi-recursive:
- * It recurses for the smaller sub-array to shorten the recursion depth,
- * and loops for the larger sub-array.
- *
- * Loosely after QuickSort algorithms in
- * Niklaus Wirth
- * Algorithmen und Datenstrukturen mit Modula-2
- * B.G. Teubner Stuttgart
- * 4. Auflage 1986
- * ISBN 3-519-02260-5
- */
-static void
-subQuickSort(char *array, int32_t start, int32_t limit, int32_t itemSize,
-             UComparator *cmp, const void *context,
-             void *px, void *pw) {
-    int32_t left, right;
-
-    /* start and left are inclusive, limit and right are exclusive */
-    do {
-        if((start+MIN_QSORT)>=limit) {
-            doInsertionSort(array+start*itemSize, limit-start, itemSize, cmp, context, px);
-            break;
-        }
-
-        left=start;
-        right=limit;
-
-        /* x=array[middle] */
-        uprv_memcpy(px, array+(size_t)((start+limit)/2)*itemSize, itemSize);
-
-        do {
-            while(/* array[left]<x */
-                  cmp(context, array+left*itemSize, px)<0
-            ) {
-                ++left;
-            }
-            while(/* x<array[right-1] */
-                  cmp(context, px, array+(right-1)*itemSize)<0
-            ) {
-                --right;
-            }
-
-            /* swap array[left] and array[right-1] via w; ++left; --right */
-            if(left<right) {
-                --right;
-
-                if(left<right) {
-                    uprv_memcpy(pw, array+(size_t)left*itemSize, itemSize);
-                    uprv_memcpy(array+(size_t)left*itemSize, array+(size_t)right*itemSize, itemSize);
-                    uprv_memcpy(array+(size_t)right*itemSize, pw, itemSize);
-                }
-
-                ++left;
-            }
-        } while(left<right);
-
-        /* sort sub-arrays */
-        if((right-start)<(limit-left)) {
-            /* sort [start..right[ */
-            if(start<(right-1)) {
-                subQuickSort(array, start, right, itemSize, cmp, context, px, pw);
-            }
-
-            /* sort [left..limit[ */
-            start=left;
-        } else {
-            /* sort [left..limit[ */
-            if(left<(limit-1)) {
-                subQuickSort(array, left, limit, itemSize, cmp, context, px, pw);
-            }
-
-            /* sort [start..right[ */
-            limit=right;
-        }
-    } while(start<(limit-1));
-}
-
-static void
-quickSort(char *array, int32_t length, int32_t itemSize,
-            UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
-    UAlignedMemory xw[(2*STACK_ITEM_SIZE)/sizeof(UAlignedMemory)+1];
-    void *p;
-
-    /* allocate two intermediate item variables (x and w) */
-    if(itemSize<=STACK_ITEM_SIZE) {
-        p=xw;
-    } else {
-        p=uprv_malloc(2*itemSize);
-        if(p==NULL) {
-            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-            return;
-        }
-    }
-
-    subQuickSort(array, 0, length, itemSize,
-                 cmp, context, p, (char *)p+itemSize);
-
-    if(p!=xw) {
-        uprv_free(p);
-    }
-}
-
-/* uprv_sortArray() API ----------------------------------------------------- */
-
-/*
- * Check arguments, select an appropriate implementation,
- * cast the array to char * so that array+i*itemSize works.
- */
-U_CAPI void U_EXPORT2
-uprv_sortArray(void *array, int32_t length, int32_t itemSize,
-               UComparator *cmp, const void *context,
-               UBool sortStable, UErrorCode *pErrorCode) {
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return;
-    }
-    if((length>0 && array==NULL) || length<0 || itemSize<=0 || cmp==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    if(length<=1) {
-        return;
-    } else if(length<MIN_QSORT || sortStable) {
-        insertionSort((char *)array, length, itemSize, cmp, context, pErrorCode);
-    } else {
-        quickSort((char *)array, length, itemSize, cmp, context, pErrorCode);
-    }
-}
index 8b25cc5..a55dca5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uarrsort.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5a048a5..fd6b6c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/ubidi.c b/source/common/ubidi.c
deleted file mode 100644 (file)
index 3c94978..0000000
+++ /dev/null
@@ -1,3015 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1999-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*   file name:  ubidi.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 1999jul27
-*   created by: Markus W. Scherer, updated by Matitiahu Allouche
-*
-*/
-
-#include "cmemory.h"
-#include "unicode/utypes.h"
-#include "unicode/ustring.h"
-#include "unicode/uchar.h"
-#include "unicode/ubidi.h"
-#include "unicode/utf16.h"
-#include "ubidi_props.h"
-#include "ubidiimp.h"
-#include "uassert.h"
-
-/*
- * General implementation notes:
- *
- * Throughout the implementation, there are comments like (W2) that refer to
- * rules of the BiDi algorithm, in this example to the second rule of the
- * resolution of weak types.
- *
- * For handling surrogate pairs, where two UChar's form one "abstract" (or UTF-32)
- * character according to UTF-16, the second UChar gets the directional property of
- * the entire character assigned, while the first one gets a BN, a boundary
- * neutral, type, which is ignored by most of the algorithm according to
- * rule (X9) and the implementation suggestions of the BiDi algorithm.
- *
- * Later, adjustWSLevels() will set the level for each BN to that of the
- * following character (UChar), which results in surrogate pairs getting the
- * same level on each of their surrogates.
- *
- * In a UTF-8 implementation, the same thing could be done: the last byte of
- * a multi-byte sequence would get the "real" property, while all previous
- * bytes of that sequence would get BN.
- *
- * It is not possible to assign all those parts of a character the same real
- * property because this would fail in the resolution of weak types with rules
- * that look at immediately surrounding types.
- *
- * As a related topic, this implementation does not remove Boundary Neutral
- * types from the input, but ignores them wherever this is relevant.
- * For example, the loop for the resolution of the weak types reads
- * types until it finds a non-BN.
- * Also, explicit embedding codes are neither changed into BN nor removed.
- * They are only treated the same way real BNs are.
- * As stated before, adjustWSLevels() takes care of them at the end.
- * For the purpose of conformance, the levels of all these codes
- * do not matter.
- *
- * Note that this implementation modifies the dirProps
- * after the initial setup, when applying X5c (replace FSI by LRI or RLI),
- * X6, N0 (replace paired brackets by L or R).
- *
- * In this implementation, the resolution of weak types (W1 to W6),
- * neutrals (N1 and N2), and the assignment of the resolved level (In)
- * are all done in one single loop, in resolveImplicitLevels().
- * Changes of dirProp values are done on the fly, without writing
- * them back to the dirProps array.
- *
- *
- * This implementation contains code that allows to bypass steps of the
- * algorithm that are not needed on the specific paragraph
- * in order to speed up the most common cases considerably,
- * like text that is entirely LTR, or RTL text without numbers.
- *
- * Most of this is done by setting a bit for each directional property
- * in a flags variable and later checking for whether there are
- * any LTR characters or any RTL characters, or both, whether
- * there are any explicit embedding codes, etc.
- *
- * If the (Xn) steps are performed, then the flags are re-evaluated,
- * because they will then not contain the embedding codes any more
- * and will be adjusted for override codes, so that subsequently
- * more bypassing may be possible than what the initial flags suggested.
- *
- * If the text is not mixed-directional, then the
- * algorithm steps for the weak type resolution are not performed,
- * and all levels are set to the paragraph level.
- *
- * If there are no explicit embedding codes, then the (Xn) steps
- * are not performed.
- *
- * If embedding levels are supplied as a parameter, then all
- * explicit embedding codes are ignored, and the (Xn) steps
- * are not performed.
- *
- * White Space types could get the level of the run they belong to,
- * and are checked with a test of (flags&MASK_EMBEDDING) to
- * consider if the paragraph direction should be considered in
- * the flags variable.
- *
- * If there are no White Space types in the paragraph, then
- * (L1) is not necessary in adjustWSLevels().
- */
-
-/* to avoid some conditional statements, use tiny constant arrays */
-static const Flags flagLR[2]={ DIRPROP_FLAG(L), DIRPROP_FLAG(R) };
-static const Flags flagE[2]={ DIRPROP_FLAG(LRE), DIRPROP_FLAG(RLE) };
-static const Flags flagO[2]={ DIRPROP_FLAG(LRO), DIRPROP_FLAG(RLO) };
-
-#define DIRPROP_FLAG_LR(level) flagLR[(level)&1]
-#define DIRPROP_FLAG_E(level)  flagE[(level)&1]
-#define DIRPROP_FLAG_O(level)  flagO[(level)&1]
-
-#define DIR_FROM_STRONG(strong) ((strong)==L ? L : R)
-
-#define NO_OVERRIDE(level)  ((level)&~UBIDI_LEVEL_OVERRIDE)
-
-/* UBiDi object management -------------------------------------------------- */
-
-U_CAPI UBiDi * U_EXPORT2
-ubidi_open(void)
-{
-    UErrorCode errorCode=U_ZERO_ERROR;
-    return ubidi_openSized(0, 0, &errorCode);
-}
-
-U_CAPI UBiDi * U_EXPORT2
-ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode) {
-    UBiDi *pBiDi;
-
-    /* check the argument values */
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return NULL;
-    } else if(maxLength<0 || maxRunCount<0) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;    /* invalid arguments */
-    }
-
-    /* allocate memory for the object */
-    pBiDi=(UBiDi *)uprv_malloc(sizeof(UBiDi));
-    if(pBiDi==NULL) {
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-
-    /* reset the object, all pointers NULL, all flags FALSE, all sizes 0 */
-    uprv_memset(pBiDi, 0, sizeof(UBiDi));
-
-    /* get BiDi properties */
-    pBiDi->bdp=ubidi_getSingleton();
-
-    /* allocate memory for arrays as requested */
-    if(maxLength>0) {
-        if( !getInitialDirPropsMemory(pBiDi, maxLength) ||
-            !getInitialLevelsMemory(pBiDi, maxLength)
-        ) {
-            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        }
-    } else {
-        pBiDi->mayAllocateText=TRUE;
-    }
-
-    if(maxRunCount>0) {
-        if(maxRunCount==1) {
-            /* use simpleRuns[] */
-            pBiDi->runsSize=sizeof(Run);
-        } else if(!getInitialRunsMemory(pBiDi, maxRunCount)) {
-            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        }
-    } else {
-        pBiDi->mayAllocateRuns=TRUE;
-    }
-
-    if(U_SUCCESS(*pErrorCode)) {
-        return pBiDi;
-    } else {
-        ubidi_close(pBiDi);
-        return NULL;
-    }
-}
-
-/*
- * We are allowed to allocate memory if memory==NULL or
- * mayAllocate==TRUE for each array that we need.
- * We also try to grow memory as needed if we
- * allocate it.
- *
- * Assume sizeNeeded>0.
- * If *pMemory!=NULL, then assume *pSize>0.
- *
- * ### this realloc() may unnecessarily copy the old data,
- * which we know we don't need any more;
- * is this the best way to do this??
- */
-U_CFUNC UBool
-ubidi_getMemory(BidiMemoryForAllocation *bidiMem, int32_t *pSize, UBool mayAllocate, int32_t sizeNeeded) {
-    void **pMemory = (void **)bidiMem;
-    /* check for existing memory */
-    if(*pMemory==NULL) {
-        /* we need to allocate memory */
-        if(mayAllocate && (*pMemory=uprv_malloc(sizeNeeded))!=NULL) {
-            *pSize=sizeNeeded;
-            return TRUE;
-        } else {
-            return FALSE;
-        }
-    } else {
-        if(sizeNeeded<=*pSize) {
-            /* there is already enough memory */
-            return TRUE;
-        }
-        else if(!mayAllocate) {
-            /* not enough memory, and we must not allocate */
-            return FALSE;
-        } else {
-            /* we try to grow */
-            void *memory;
-            /* in most cases, we do not need the copy-old-data part of
-             * realloc, but it is needed when adding runs using getRunsMemory()
-             * in setParaRunsOnly()
-             */
-            if((memory=uprv_realloc(*pMemory, sizeNeeded))!=NULL) {
-                *pMemory=memory;
-                *pSize=sizeNeeded;
-                return TRUE;
-            } else {
-                /* we failed to grow */
-                return FALSE;
-            }
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-ubidi_close(UBiDi *pBiDi) {
-    if(pBiDi!=NULL) {
-        pBiDi->pParaBiDi=NULL;          /* in case one tries to reuse this block */
-        if(pBiDi->dirPropsMemory!=NULL) {
-            uprv_free(pBiDi->dirPropsMemory);
-        }
-        if(pBiDi->levelsMemory!=NULL) {
-            uprv_free(pBiDi->levelsMemory);
-        }
-        if(pBiDi->openingsMemory!=NULL) {
-            uprv_free(pBiDi->openingsMemory);
-        }
-        if(pBiDi->parasMemory!=NULL) {
-            uprv_free(pBiDi->parasMemory);
-        }
-        if(pBiDi->runsMemory!=NULL) {
-            uprv_free(pBiDi->runsMemory);
-        }
-        if(pBiDi->isolatesMemory!=NULL) {
-            uprv_free(pBiDi->isolatesMemory);
-        }
-        if(pBiDi->insertPoints.points!=NULL) {
-            uprv_free(pBiDi->insertPoints.points);
-        }
-
-        uprv_free(pBiDi);
-    }
-}
-
-/* set to approximate "inverse BiDi" ---------------------------------------- */
-
-U_CAPI void U_EXPORT2
-ubidi_setInverse(UBiDi *pBiDi, UBool isInverse) {
-    if(pBiDi!=NULL) {
-        pBiDi->isInverse=isInverse;
-        pBiDi->reorderingMode = isInverse ? UBIDI_REORDER_INVERSE_NUMBERS_AS_L
-                                          : UBIDI_REORDER_DEFAULT;
-    }
-}
-
-U_CAPI UBool U_EXPORT2
-ubidi_isInverse(UBiDi *pBiDi) {
-    if(pBiDi!=NULL) {
-        return pBiDi->isInverse;
-    } else {
-        return FALSE;
-    }
-}
-
-/* FOOD FOR THOUGHT: currently the reordering modes are a mixture of
- * algorithm for direct BiDi, algorithm for inverse BiDi and the bizarre
- * concept of RUNS_ONLY which is a double operation.
- * It could be advantageous to divide this into 3 concepts:
- * a) Operation: direct / inverse / RUNS_ONLY
- * b) Direct algorithm: default / NUMBERS_SPECIAL / GROUP_NUMBERS_WITH_R
- * c) Inverse algorithm: default / INVERSE_LIKE_DIRECT / NUMBERS_SPECIAL
- * This would allow combinations not possible today like RUNS_ONLY with
- * NUMBERS_SPECIAL.
- * Also allow to set INSERT_MARKS for the direct step of RUNS_ONLY and
- * REMOVE_CONTROLS for the inverse step.
- * Not all combinations would be supported, and probably not all do make sense.
- * This would need to document which ones are supported and what are the
- * fallbacks for unsupported combinations.
- */
-U_CAPI void U_EXPORT2
-ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode) {
-    if ((pBiDi!=NULL) && (reorderingMode >= UBIDI_REORDER_DEFAULT)
-                        && (reorderingMode < UBIDI_REORDER_COUNT)) {
-        pBiDi->reorderingMode = reorderingMode;
-        pBiDi->isInverse = (UBool)(reorderingMode == UBIDI_REORDER_INVERSE_NUMBERS_AS_L);
-    }
-}
-
-U_CAPI UBiDiReorderingMode U_EXPORT2
-ubidi_getReorderingMode(UBiDi *pBiDi) {
-    if (pBiDi!=NULL) {
-        return pBiDi->reorderingMode;
-    } else {
-        return UBIDI_REORDER_DEFAULT;
-    }
-}
-
-U_CAPI void U_EXPORT2
-ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions) {
-    if (reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) {
-        reorderingOptions&=~UBIDI_OPTION_INSERT_MARKS;
-    }
-    if (pBiDi!=NULL) {
-        pBiDi->reorderingOptions=reorderingOptions;
-    }
-}
-
-U_CAPI uint32_t U_EXPORT2
-ubidi_getReorderingOptions(UBiDi *pBiDi) {
-    if (pBiDi!=NULL) {
-        return pBiDi->reorderingOptions;
-    } else {
-        return 0;
-    }
-}
-
-U_CAPI UBiDiDirection U_EXPORT2
-ubidi_getBaseDirection(const UChar *text,
-int32_t length){
-
-    int32_t i;
-    UChar32 uchar;
-    UCharDirection dir;
-
-    if( text==NULL || length<-1 ){
-        return UBIDI_NEUTRAL;
-    }
-
-    if(length==-1) {
-        length=u_strlen(text);
-    }
-
-    for( i = 0 ; i < length; ) {
-        /* i is incremented by U16_NEXT */
-        U16_NEXT(text, i, length, uchar);
-        dir = u_charDirection(uchar);
-        if( dir == U_LEFT_TO_RIGHT )
-                return UBIDI_LTR;
-        if( dir == U_RIGHT_TO_LEFT || dir ==U_RIGHT_TO_LEFT_ARABIC )
-                return UBIDI_RTL;
-    }
-    return UBIDI_NEUTRAL;
-}
-
-/* perform (P2)..(P3) ------------------------------------------------------- */
-
-/**
- * Returns the directionality of the first strong character
- * after the last B in prologue, if any.
- * Requires prologue!=null.
- */
-static DirProp
-firstL_R_AL(UBiDi *pBiDi) {
-    const UChar *text=pBiDi->prologue;
-    int32_t length=pBiDi->proLength;
-    int32_t i;
-    UChar32 uchar;
-    DirProp dirProp, result=ON;
-    for(i=0; i<length; ) {
-        /* i is incremented by U16_NEXT */
-        U16_NEXT(text, i, length, uchar);
-        dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar);
-        if(result==ON) {
-            if(dirProp==L || dirProp==R || dirProp==AL) {
-                result=dirProp;
-            }
-        } else {
-            if(dirProp==B) {
-                result=ON;
-            }
-        }
-    }
-    return result;
-}
-
-/*
- * Check that there are enough entries in the array pointed to by pBiDi->paras
- */
-static UBool
-checkParaCount(UBiDi *pBiDi) {
-    int32_t count=pBiDi->paraCount;
-    if(pBiDi->paras==pBiDi->simpleParas) {
-        if(count<=SIMPLE_PARAS_COUNT)
-            return TRUE;
-        if(!getInitialParasMemory(pBiDi, SIMPLE_PARAS_COUNT * 2))
-            return FALSE;
-        pBiDi->paras=pBiDi->parasMemory;
-        uprv_memcpy(pBiDi->parasMemory, pBiDi->simpleParas, SIMPLE_PARAS_COUNT * sizeof(Para));
-        return TRUE;
-    }
-    if(!getInitialParasMemory(pBiDi, count * 2))
-        return FALSE;
-    pBiDi->paras=pBiDi->parasMemory;
-    return TRUE;
-}
-
-/*
- * Get the directional properties for the text, calculate the flags bit-set, and
- * determine the paragraph level if necessary (in pBiDi->paras[i].level).
- * FSI initiators are also resolved and their dirProp replaced with LRI or RLI.
- * When encountering an FSI, it is initially replaced with an LRI, which is the
- * default. Only if a strong R or AL is found within its scope will the LRI be
- * replaced by an RLI.
- */
-static UBool
-getDirProps(UBiDi *pBiDi) {
-    const UChar *text=pBiDi->text;
-    DirProp *dirProps=pBiDi->dirPropsMemory;    /* pBiDi->dirProps is const */
-
-    int32_t i=0, originalLength=pBiDi->originalLength;
-    Flags flags=0;      /* collect all directionalities in the text */
-    UChar32 uchar;
-    DirProp dirProp=0, defaultParaLevel=0;  /* initialize to avoid compiler warnings */
-    UBool isDefaultLevel=IS_DEFAULT_LEVEL(pBiDi->paraLevel);
-    /* for inverse BiDi, the default para level is set to RTL if there is a
-       strong R or AL character at either end of the text                            */
-    UBool isDefaultLevelInverse=isDefaultLevel && (UBool)
-            (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT ||
-             pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL);
-    int32_t lastArabicPos=-1;
-    int32_t controlCount=0;
-    UBool removeBiDiControls = (UBool)(pBiDi->reorderingOptions &
-                                       UBIDI_OPTION_REMOVE_CONTROLS);
-
-    typedef enum {
-         NOT_SEEKING_STRONG,            /* 0: not contextual paraLevel, not after FSI */
-         SEEKING_STRONG_FOR_PARA,       /* 1: looking for first strong char in para */
-         SEEKING_STRONG_FOR_FSI,        /* 2: looking for first strong after FSI */
-         LOOKING_FOR_PDI                /* 3: found strong after FSI, looking for PDI */
-    } State;
-    State state;
-    DirProp lastStrong=ON;              /* for default level & inverse BiDi */
-    /* The following stacks are used to manage isolate sequences. Those
-       sequences may be nested, but obviously never more deeply than the
-       maximum explicit embedding level.
-       lastStack is the index of the last used entry in the stack. A value of -1
-       means that there is no open isolate sequence.
-       lastStack is reset to -1 on paragraph boundaries. */
-    /* The following stack contains the position of the initiator of
-       each open isolate sequence */
-    int32_t isolateStartStack[UBIDI_MAX_EXPLICIT_LEVEL+1];
-    /* The following stack contains the last known state before
-       encountering the initiator of an isolate sequence */
-    int8_t  previousStateStack[UBIDI_MAX_EXPLICIT_LEVEL+1];
-    int32_t stackLast=-1;
-
-    if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING)
-        pBiDi->length=0;
-    defaultParaLevel=pBiDi->paraLevel&1;
-    if(isDefaultLevel) {
-        pBiDi->paras[0].level=defaultParaLevel;
-        lastStrong=defaultParaLevel;
-        if(pBiDi->proLength>0 &&                    /* there is a prologue */
-           (dirProp=firstL_R_AL(pBiDi))!=ON) {  /* with a strong character */
-            if(dirProp==L)
-                pBiDi->paras[0].level=0;    /* set the default para level */
-            else
-                pBiDi->paras[0].level=1;    /* set the default para level */
-            state=NOT_SEEKING_STRONG;
-        } else {
-            state=SEEKING_STRONG_FOR_PARA;
-        }
-    } else {
-        pBiDi->paras[0].level=pBiDi->paraLevel;
-        state=NOT_SEEKING_STRONG;
-    }
-    /* count paragraphs and determine the paragraph level (P2..P3) */
-    /*
-     * see comment in ubidi.h:
-     * the UBIDI_DEFAULT_XXX values are designed so that
-     * their bit 0 alone yields the intended default
-     */
-    for( /* i=0 above */ ; i<originalLength; ) {
-        /* i is incremented by U16_NEXT */
-        U16_NEXT(text, i, originalLength, uchar);
-        flags|=DIRPROP_FLAG(dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar));
-        dirProps[i-1]=dirProp;
-        if(uchar>0xffff) {  /* set the lead surrogate's property to BN */
-            flags|=DIRPROP_FLAG(BN);
-            dirProps[i-2]=BN;
-        }
-        if(removeBiDiControls && IS_BIDI_CONTROL_CHAR(uchar))
-            controlCount++;
-        if(dirProp==L) {
-            if(state==SEEKING_STRONG_FOR_PARA) {
-                pBiDi->paras[pBiDi->paraCount-1].level=0;
-                state=NOT_SEEKING_STRONG;
-            }
-            else if(state==SEEKING_STRONG_FOR_FSI) {
-                if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL) {
-                    /* no need for next statement, already set by default */
-                    /* dirProps[isolateStartStack[stackLast]]=LRI; */
-                    flags|=DIRPROP_FLAG(LRI);
-                }
-                state=LOOKING_FOR_PDI;
-            }
-            lastStrong=L;
-            continue;
-        }
-        if(dirProp==R || dirProp==AL) {
-            if(state==SEEKING_STRONG_FOR_PARA) {
-                pBiDi->paras[pBiDi->paraCount-1].level=1;
-                state=NOT_SEEKING_STRONG;
-            }
-            else if(state==SEEKING_STRONG_FOR_FSI) {
-                if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL) {
-                    dirProps[isolateStartStack[stackLast]]=RLI;
-                    flags|=DIRPROP_FLAG(RLI);
-                }
-                state=LOOKING_FOR_PDI;
-            }
-            lastStrong=R;
-            if(dirProp==AL)
-                lastArabicPos=i-1;
-            continue;
-        }
-        if(dirProp>=FSI && dirProp<=RLI) {  /* FSI, LRI or RLI */
-            stackLast++;
-            if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL) {
-                isolateStartStack[stackLast]=i-1;
-                previousStateStack[stackLast]=state;
-            }
-            if(dirProp==FSI) {
-                dirProps[i-1]=LRI;      /* default if no strong char */
-                state=SEEKING_STRONG_FOR_FSI;
-            }
-            else
-                state=LOOKING_FOR_PDI;
-            continue;
-        }
-        if(dirProp==PDI) {
-            if(state==SEEKING_STRONG_FOR_FSI) {
-                if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL) {
-                    /* no need for next statement, already set by default */
-                    /* dirProps[isolateStartStack[stackLast]]=LRI; */
-                    flags|=DIRPROP_FLAG(LRI);
-                }
-            }
-            if(stackLast>=0) {
-                if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL)
-                    state=previousStateStack[stackLast];
-                stackLast--;
-            }
-            continue;
-        }
-        if(dirProp==B) {
-            if(i<originalLength && uchar==CR && text[i]==LF) /* do nothing on the CR */
-                continue;
-            pBiDi->paras[pBiDi->paraCount-1].limit=i;
-            if(isDefaultLevelInverse && lastStrong==R)
-                pBiDi->paras[pBiDi->paraCount-1].level=1;
-            if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) {
-                /* When streaming, we only process whole paragraphs
-                   thus some updates are only done on paragraph boundaries */
-                pBiDi->length=i;        /* i is index to next character */
-                pBiDi->controlCount=controlCount;
-            }
-            if(i<originalLength) {              /* B not last char in text */
-                pBiDi->paraCount++;
-                if(checkParaCount(pBiDi)==FALSE)    /* not enough memory for a new para entry */
-                    return FALSE;
-                if(isDefaultLevel) {
-                    pBiDi->paras[pBiDi->paraCount-1].level=defaultParaLevel;
-                    state=SEEKING_STRONG_FOR_PARA;
-                    lastStrong=defaultParaLevel;
-                } else {
-                    pBiDi->paras[pBiDi->paraCount-1].level=pBiDi->paraLevel;
-                    state=NOT_SEEKING_STRONG;
-                }
-                stackLast=-1;
-            }
-            continue;
-        }
-    }
-    /* Ignore still open isolate sequences with overflow */
-    if(stackLast>UBIDI_MAX_EXPLICIT_LEVEL) {
-        stackLast=UBIDI_MAX_EXPLICIT_LEVEL;
-        state=SEEKING_STRONG_FOR_FSI;   /* to be on the safe side */
-    }
-    /* Resolve direction of still unresolved open FSI sequences */
-    while(stackLast>=0) {
-        if(state==SEEKING_STRONG_FOR_FSI) {
-            /* no need for next statement, already set by default */
-            /* dirProps[isolateStartStack[stackLast]]=LRI; */
-            flags|=DIRPROP_FLAG(LRI);
-            break;
-        }
-        state=previousStateStack[stackLast];
-        stackLast--;
-    }
-    /* When streaming, ignore text after the last paragraph separator */
-    if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) {
-        if(pBiDi->length<originalLength)
-            pBiDi->paraCount--;
-    } else {
-        pBiDi->paras[pBiDi->paraCount-1].limit=originalLength;
-        pBiDi->controlCount=controlCount;
-    }
-    /* For inverse bidi, default para direction is RTL if there is
-       a strong R or AL at either end of the paragraph */
-    if(isDefaultLevelInverse && lastStrong==R) {
-        pBiDi->paras[pBiDi->paraCount-1].level=1;
-    }
-    if(isDefaultLevel) {
-        pBiDi->paraLevel=pBiDi->paras[0].level;
-    }
-    /* The following is needed to resolve the text direction for default level
-       paragraphs containing no strong character */
-    for(i=0; i<pBiDi->paraCount; i++)
-        flags|=DIRPROP_FLAG_LR(pBiDi->paras[i].level);
-
-    if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B))) {
-        flags|=DIRPROP_FLAG(L);
-    }
-    pBiDi->flags=flags;
-    pBiDi->lastArabicPos=lastArabicPos;
-    return TRUE;
-}
-
-/* determine the paragraph level at position index */
-U_CFUNC UBiDiLevel
-ubidi_getParaLevelAtIndex(const UBiDi *pBiDi, int32_t pindex) {
-    int32_t i;
-    for(i=0; i<pBiDi->paraCount; i++)
-        if(pindex<pBiDi->paras[i].limit)
-            break;
-    if(i>=pBiDi->paraCount)
-        i=pBiDi->paraCount-1;
-    return (UBiDiLevel)(pBiDi->paras[i].level);
-}
-
-/* Functions for handling paired brackets ----------------------------------- */
-
-/* In the isoRuns array, the first entry is used for text outside of any
-   isolate sequence.  Higher entries are used for each more deeply nested
-   isolate sequence. isoRunLast is the index of the last used entry.  The
-   openings array is used to note the data of opening brackets not yet
-   matched by a closing bracket, or matched but still susceptible to change
-   level.
-   Each isoRun entry contains the index of the first and
-   one-after-last openings entries for pending opening brackets it
-   contains.  The next openings entry to use is the one-after-last of the
-   most deeply nested isoRun entry.
-   isoRun entries also contain their current embedding level and the last
-   encountered strong character, since these will be needed to resolve
-   the level of paired brackets.  */
-
-static void
-bracketInit(UBiDi *pBiDi, BracketData *bd) {
-    bd->pBiDi=pBiDi;
-    bd->isoRunLast=0;
-    bd->isoRuns[0].start=0;
-    bd->isoRuns[0].limit=0;
-    bd->isoRuns[0].level=GET_PARALEVEL(pBiDi, 0);
-    bd->isoRuns[0].lastStrong=bd->isoRuns[0].lastBase=bd->isoRuns[0].contextDir=GET_PARALEVEL(pBiDi, 0)&1;
-    bd->isoRuns[0].contextPos=0;
-    if(pBiDi->openingsMemory) {
-        bd->openings=pBiDi->openingsMemory;
-        bd->openingsCount=pBiDi->openingsSize / sizeof(Opening);
-    } else {
-        bd->openings=bd->simpleOpenings;
-        bd->openingsCount=SIMPLE_OPENINGS_COUNT;
-    }
-    bd->isNumbersSpecial=bd->pBiDi->reorderingMode==UBIDI_REORDER_NUMBERS_SPECIAL ||
-                         bd->pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL;
-}
-
-/* paragraph boundary */
-static void
-bracketProcessB(BracketData *bd, UBiDiLevel level) {
-    bd->isoRunLast=0;
-    bd->isoRuns[0].limit=0;
-    bd->isoRuns[0].level=level;
-    bd->isoRuns[0].lastStrong=bd->isoRuns[0].lastBase=bd->isoRuns[0].contextDir=level&1;
-    bd->isoRuns[0].contextPos=0;
-}
-
-/* LRE, LRO, RLE, RLO, PDF */
-static void
-bracketProcessBoundary(BracketData *bd, int32_t lastCcPos,
-                       UBiDiLevel contextLevel, UBiDiLevel embeddingLevel) {
-    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
-    DirProp *dirProps=bd->pBiDi->dirProps;
-    if(DIRPROP_FLAG(dirProps[lastCcPos])&MASK_ISO)  /* after an isolate */
-        return;
-    if(NO_OVERRIDE(embeddingLevel)>NO_OVERRIDE(contextLevel))   /* not a PDF */
-        contextLevel=embeddingLevel;
-    pLastIsoRun->limit=pLastIsoRun->start;
-    pLastIsoRun->level=embeddingLevel;
-    pLastIsoRun->lastStrong=pLastIsoRun->lastBase=pLastIsoRun->contextDir=contextLevel&1;
-    pLastIsoRun->contextPos=lastCcPos;
-}
-
-/* LRI or RLI */
-static void
-bracketProcessLRI_RLI(BracketData *bd, UBiDiLevel level) {
-    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
-    int16_t lastLimit;
-    pLastIsoRun->lastBase=ON;
-    lastLimit=pLastIsoRun->limit;
-    bd->isoRunLast++;
-    pLastIsoRun++;
-    pLastIsoRun->start=pLastIsoRun->limit=lastLimit;
-    pLastIsoRun->level=level;
-    pLastIsoRun->lastStrong=pLastIsoRun->lastBase=pLastIsoRun->contextDir=level&1;
-    pLastIsoRun->contextPos=0;
-}
-
-/* PDI */
-static void
-bracketProcessPDI(BracketData *bd) {
-    IsoRun *pLastIsoRun;
-    bd->isoRunLast--;
-    pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
-    pLastIsoRun->lastBase=ON;
-}
-
-/* newly found opening bracket: create an openings entry */
-static UBool                            /* return TRUE if success */
-bracketAddOpening(BracketData *bd, UChar match, int32_t position) {
-    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
-    Opening *pOpening;
-    if(pLastIsoRun->limit>=bd->openingsCount) {  /* no available new entry */
-        UBiDi *pBiDi=bd->pBiDi;
-        if(!getInitialOpeningsMemory(pBiDi, pLastIsoRun->limit * 2))
-            return FALSE;
-        if(bd->openings==bd->simpleOpenings)
-            uprv_memcpy(pBiDi->openingsMemory, bd->simpleOpenings,
-                        SIMPLE_OPENINGS_COUNT * sizeof(Opening));
-        bd->openings=pBiDi->openingsMemory;     /* may have changed */
-        bd->openingsCount=pBiDi->openingsSize / sizeof(Opening);
-    }
-    pOpening=&bd->openings[pLastIsoRun->limit];
-    pOpening->position=position;
-    pOpening->match=match;
-    pOpening->contextDir=pLastIsoRun->contextDir;
-    pOpening->contextPos=pLastIsoRun->contextPos;
-    pOpening->flags=0;
-    pLastIsoRun->limit++;
-    return TRUE;
-}
-
-/* change N0c1 to N0c2 when a preceding bracket is assigned the embedding level */
-static void
-fixN0c(BracketData *bd, int32_t openingIndex, int32_t newPropPosition, DirProp newProp) {
-    /* This function calls itself recursively */
-    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
-    Opening *qOpening;
-    DirProp *dirProps=bd->pBiDi->dirProps;
-    int32_t k, openingPosition, closingPosition;
-    for(k=openingIndex+1, qOpening=&bd->openings[k]; k<pLastIsoRun->limit; k++, qOpening++) {
-        if(qOpening->match>=0)      /* not an N0c match */
-            continue;
-        if(newPropPosition<qOpening->contextPos)
-            break;
-        if(newPropPosition>=qOpening->position)
-            continue;
-        if(newProp==qOpening->contextDir)
-            break;
-        openingPosition=qOpening->position;
-        dirProps[openingPosition]=newProp;
-        closingPosition=-(qOpening->match);
-        dirProps[closingPosition]=newProp;
-        qOpening->match=0;                      /* prevent further changes */
-        fixN0c(bd, k, openingPosition, newProp);
-        fixN0c(bd, k, closingPosition, newProp);
-    }
-}
-
-/* process closing bracket */
-static DirProp              /* return L or R if N0b or N0c, ON if N0d */
-bracketProcessClosing(BracketData *bd, int32_t openIdx, int32_t position) {
-    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
-    Opening *pOpening, *qOpening;
-    UBiDiDirection direction;
-    UBool stable;
-    DirProp newProp;
-    pOpening=&bd->openings[openIdx];
-    direction=pLastIsoRun->level&1;
-    stable=TRUE;            /* assume stable until proved otherwise */
-
-    /* The stable flag is set when brackets are paired and their
-       level is resolved and cannot be changed by what will be
-       found later in the source string.
-       An unstable match can occur only when applying N0c, where
-       the resolved level depends on the preceding context, and
-       this context may be affected by text occurring later.
-       Example: RTL paragraph containing:  abc[(latin) HEBREW]
-       When the closing parenthesis is encountered, it appears
-       that N0c1 must be applied since 'abc' sets an opposite
-       direction context and both parentheses receive level 2.
-       However, when the closing square bracket is processed,
-       N0b applies because of 'HEBREW' being included within the
-       brackets, thus the square brackets are treated like R and
-       receive level 1. However, this changes the preceding
-       context of the opening parenthesis, and it now appears
-       that N0c2 must be applied to the parentheses rather than
-       N0c1. */
-
-    if((direction==0 && pOpening->flags&FOUND_L) ||
-       (direction==1 && pOpening->flags&FOUND_R)) { /* N0b */
-        newProp=direction;
-    }
-    else if(pOpening->flags&(FOUND_L|FOUND_R)) {    /* N0c */
-        /* it is stable if there is no containing pair or in
-           conditions too complicated and not worth checking */
-        stable=(openIdx==pLastIsoRun->start);
-        if(direction!=pOpening->contextDir)
-            newProp=pOpening->contextDir;           /* N0c1 */
-        else
-            newProp=direction;                      /* N0c2 */
-    } else {
-        /* forget this and any brackets nested within this pair */
-        pLastIsoRun->limit=openIdx;
-        return ON;                                  /* N0d */
-    }
-    bd->pBiDi->dirProps[pOpening->position]=newProp;
-    bd->pBiDi->dirProps[position]=newProp;
-    /* Update nested N0c pairs that may be affected */
-    fixN0c(bd, openIdx, pOpening->position, newProp);
-    if(stable) {
-        pLastIsoRun->limit=openIdx; /* forget any brackets nested within this pair */
-        /* remove lower located synonyms if any */
-        while(pLastIsoRun->limit>pLastIsoRun->start &&
-              bd->openings[pLastIsoRun->limit-1].position==pOpening->position)
-            pLastIsoRun->limit--;
-    } else {
-        int32_t k;
-        pOpening->match=-position;
-        /* neutralize lower located synonyms if any */
-        k=openIdx-1;
-        while(k>=pLastIsoRun->start &&
-              bd->openings[k].position==pOpening->position)
-            bd->openings[k--].match=0;
-        /* neutralize any unmatched opening between the current pair;
-           this will also neutralize higher located synonyms if any */
-        for(k=openIdx+1; k<pLastIsoRun->limit; k++) {
-            qOpening=&bd->openings[k];
-            if(qOpening->position>=position)
-                break;
-            if(qOpening->match>0)
-                qOpening->match=0;
-        }
-    }
-    return newProp;
-}
-
-/* handle strong characters, digits and candidates for closing brackets */
-static UBool                            /* return TRUE if success */
-bracketProcessChar(BracketData *bd, int32_t position) {
-    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
-    DirProp *dirProps, dirProp, newProp;
-    UBiDiLevel level;
-    dirProps=bd->pBiDi->dirProps;
-    dirProp=dirProps[position];
-    if(dirProp==ON) {
-        UChar c, match;
-        int32_t idx;
-        /* First see if it is a matching closing bracket. Hopefully, this is
-           more efficient than checking if it is a closing bracket at all */
-        c=bd->pBiDi->text[position];
-        for(idx=pLastIsoRun->limit-1; idx>=pLastIsoRun->start; idx--) {
-            if(bd->openings[idx].match!=c)
-                continue;
-            /* We have a match */
-            newProp=bracketProcessClosing(bd, idx, position);
-            if(newProp==ON) {           /* N0d */
-                c=0;        /* prevent handling as an opening */
-                break;
-            }
-            pLastIsoRun->lastBase=ON;
-            pLastIsoRun->contextDir=newProp;
-            pLastIsoRun->contextPos=position;
-            level=bd->pBiDi->levels[position];
-            if(level&UBIDI_LEVEL_OVERRIDE) {    /* X4, X5 */
-                uint16_t flag;
-                int32_t i;
-                newProp=level&1;
-                pLastIsoRun->lastStrong=newProp;
-                flag=DIRPROP_FLAG(newProp);
-                for(i=pLastIsoRun->start; i<idx; i++)
-                    bd->openings[i].flags|=flag;
-                /* matching brackets are not overridden by LRO/RLO */
-                bd->pBiDi->levels[position]&=~UBIDI_LEVEL_OVERRIDE;
-            }
-            /* matching brackets are not overridden by LRO/RLO */
-            bd->pBiDi->levels[bd->openings[idx].position]&=~UBIDI_LEVEL_OVERRIDE;
-            return TRUE;
-        }
-        /* We get here only if the ON character is not a matching closing
-           bracket or it is a case of N0d */
-        /* Now see if it is an opening bracket */
-        if(c)
-            match=u_getBidiPairedBracket(c);    /* get the matching char */
-        else
-            match=0;
-        if(match!=c &&                  /* has a matching char */
-           ubidi_getPairedBracketType(bd->pBiDi->bdp, c)==U_BPT_OPEN) { /* opening bracket */
-            /* special case: process synonyms
-               create an opening entry for each synonym */
-            if(match==0x232A) {     /* RIGHT-POINTING ANGLE BRACKET */
-                if(!bracketAddOpening(bd, 0x3009, position))
-                    return FALSE;
-            }
-            else if(match==0x3009) {         /* RIGHT ANGLE BRACKET */
-                if(!bracketAddOpening(bd, 0x232A, position))
-                    return FALSE;
-            }
-            if(!bracketAddOpening(bd, match, position))
-                return FALSE;
-        }
-    }
-    level=bd->pBiDi->levels[position];
-    if(level&UBIDI_LEVEL_OVERRIDE) {    /* X4, X5 */
-        newProp=level&1;
-        if(dirProp!=S && dirProp!=WS && dirProp!=ON)
-            dirProps[position]=newProp;
-        pLastIsoRun->lastBase=newProp;
-        pLastIsoRun->lastStrong=newProp;
-        pLastIsoRun->contextDir=newProp;
-        pLastIsoRun->contextPos=position;
-    }
-    else if(dirProp<=R || dirProp==AL) {
-        newProp=DIR_FROM_STRONG(dirProp);
-        pLastIsoRun->lastBase=dirProp;
-        pLastIsoRun->lastStrong=dirProp;
-        pLastIsoRun->contextDir=newProp;
-        pLastIsoRun->contextPos=position;
-    }
-    else if(dirProp==EN) {
-        pLastIsoRun->lastBase=EN;
-        if(pLastIsoRun->lastStrong==L) {
-            newProp=L;                  /* W7 */
-            if(!bd->isNumbersSpecial)
-                dirProps[position]=ENL;
-            pLastIsoRun->contextDir=L;
-            pLastIsoRun->contextPos=position;
-        }
-        else {
-            newProp=R;                  /* N0 */
-            if(pLastIsoRun->lastStrong==AL)
-                dirProps[position]=AN;  /* W2 */
-            else
-                dirProps[position]=ENR;
-            pLastIsoRun->contextDir=R;
-            pLastIsoRun->contextPos=position;
-        }
-    }
-    else if(dirProp==AN) {
-        newProp=R;                      /* N0 */
-        pLastIsoRun->lastBase=AN;
-        pLastIsoRun->contextDir=R;
-        pLastIsoRun->contextPos=position;
-    }
-    else if(dirProp==NSM) {
-        /* if the last real char was ON, change NSM to ON so that it
-           will stay ON even if the last real char is a bracket which
-           may be changed to L or R */
-        newProp=pLastIsoRun->lastBase;
-        if(newProp==ON)
-            dirProps[position]=newProp;
-    }
-    else {
-        newProp=dirProp;
-        pLastIsoRun->lastBase=dirProp;
-    }
-    if(newProp<=R || newProp==AL) {
-        int32_t i;
-        uint16_t flag=DIRPROP_FLAG(DIR_FROM_STRONG(newProp));
-        for(i=pLastIsoRun->start; i<pLastIsoRun->limit; i++)
-            if(position>bd->openings[i].position)
-                bd->openings[i].flags|=flag;
-    }
-    return TRUE;
-}
-
-/* perform (X1)..(X9) ------------------------------------------------------- */
-
-/* determine if the text is mixed-directional or single-directional */
-static UBiDiDirection
-directionFromFlags(UBiDi *pBiDi) {
-    Flags flags=pBiDi->flags;
-    /* if the text contains AN and neutrals, then some neutrals may become RTL */
-    if(!(flags&MASK_RTL || ((flags&DIRPROP_FLAG(AN)) && (flags&MASK_POSSIBLE_N)))) {
-        return UBIDI_LTR;
-    } else if(!(flags&MASK_LTR)) {
-        return UBIDI_RTL;
-    } else {
-        return UBIDI_MIXED;
-    }
-}
-
-/*
- * Resolve the explicit levels as specified by explicit embedding codes.
- * Recalculate the flags to have them reflect the real properties
- * after taking the explicit embeddings into account.
- *
- * The BiDi algorithm is designed to result in the same behavior whether embedding
- * levels are externally specified (from "styled text", supposedly the preferred
- * method) or set by explicit embedding codes (LRx, RLx, PDF, FSI, PDI) in the plain text.
- * That is why (X9) instructs to remove all not-isolate explicit codes (and BN).
- * However, in a real implementation, the removal of these codes and their index
- * positions in the plain text is undesirable since it would result in
- * reallocated, reindexed text.
- * Instead, this implementation leaves the codes in there and just ignores them
- * in the subsequent processing.
- * In order to get the same reordering behavior, positions with a BN or a not-isolate
- * explicit embedding code just get the same level assigned as the last "real"
- * character.
- *
- * Some implementations, not this one, then overwrite some of these
- * directionality properties at "real" same-level-run boundaries by
- * L or R codes so that the resolution of weak types can be performed on the
- * entire paragraph at once instead of having to parse it once more and
- * perform that resolution on same-level-runs.
- * This limits the scope of the implicit rules in effectively
- * the same way as the run limits.
- *
- * Instead, this implementation does not modify these codes, except for
- * paired brackets whose properties (ON) may be replaced by L or R.
- * On one hand, the paragraph has to be scanned for same-level-runs, but
- * on the other hand, this saves another loop to reset these codes,
- * or saves making and modifying a copy of dirProps[].
- *
- *
- * Note that (Pn) and (Xn) changed significantly from version 4 of the BiDi algorithm.
- *
- *
- * Handling the stack of explicit levels (Xn):
- *
- * With the BiDi stack of explicit levels, as pushed with each
- * LRE, RLE, LRO, RLO, LRI, RLI and FSI and popped with each PDF and PDI,
- * the explicit level must never exceed UBIDI_MAX_EXPLICIT_LEVEL.
- *
- * In order to have a correct push-pop semantics even in the case of overflows,
- * overflow counters and a valid isolate counter are used as described in UAX#9
- * section 3.3.2 "Explicit Levels and Directions".
- *
- * This implementation assumes that UBIDI_MAX_EXPLICIT_LEVEL is odd.
- *
- * Returns normally the direction; -1 if there was a memory shortage
- *
- */
-static UBiDiDirection
-resolveExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
-    DirProp *dirProps=pBiDi->dirProps;
-    UBiDiLevel *levels=pBiDi->levels;
-    const UChar *text=pBiDi->text;
-
-    int32_t i=0, length=pBiDi->length;
-    Flags flags=pBiDi->flags;       /* collect all directionalities in the text */
-    DirProp dirProp;
-    UBiDiLevel level=GET_PARALEVEL(pBiDi, 0);
-    UBiDiDirection direction;
-    pBiDi->isolateCount=0;
-
-    if(U_FAILURE(*pErrorCode)) { return UBIDI_LTR; }
-
-    /* determine if the text is mixed-directional or single-directional */
-    direction=directionFromFlags(pBiDi);
-
-    /* we may not need to resolve any explicit levels */
-    if((direction!=UBIDI_MIXED)) {
-        /* not mixed directionality: levels don't matter - trailingWSStart will be 0 */
-        return direction;
-    }
-    if(pBiDi->reorderingMode > UBIDI_REORDER_LAST_LOGICAL_TO_VISUAL) {
-        /* inverse BiDi: mixed, but all characters are at the same embedding level */
-        /* set all levels to the paragraph level */
-        int32_t paraIndex, start, limit;
-        for(paraIndex=0; paraIndex<pBiDi->paraCount; paraIndex++) {
-            if(paraIndex==0)
-                start=0;
-            else
-                start=pBiDi->paras[paraIndex-1].limit;
-            limit=pBiDi->paras[paraIndex].limit;
-            level=pBiDi->paras[paraIndex].level;
-            for(i=start; i<limit; i++)
-                levels[i]=level;
-        }
-        return direction;   /* no bracket matching for inverse BiDi */
-    }
-    if(!(flags&(MASK_EXPLICIT|MASK_ISO))) {
-        /* no embeddings, set all levels to the paragraph level */
-        /* we still have to perform bracket matching */
-        int32_t paraIndex, start, limit;
-        BracketData bracketData;
-        bracketInit(pBiDi, &bracketData);
-        for(paraIndex=0; paraIndex<pBiDi->paraCount; paraIndex++) {
-            if(paraIndex==0)
-                start=0;
-            else
-                start=pBiDi->paras[paraIndex-1].limit;
-            limit=pBiDi->paras[paraIndex].limit;
-            level=pBiDi->paras[paraIndex].level;
-            for(i=start; i<limit; i++) {
-                levels[i]=level;
-                dirProp=dirProps[i];
-                if(dirProp==BN)
-                    continue;
-                if(dirProp==B) {
-                    if((i+1)<length) {
-                        if(text[i]==CR && text[i+1]==LF)
-                            continue;   /* skip CR when followed by LF */
-                        bracketProcessB(&bracketData, level);
-                    }
-                    continue;
-                }
-                if(!bracketProcessChar(&bracketData, i)) {
-                    *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-                    return UBIDI_LTR;
-                }
-            }
-        }
-        return direction;
-    }
-    {
-        /* continue to perform (Xn) */
-
-        /* (X1) level is set for all codes, embeddingLevel keeps track of the push/pop operations */
-        /* both variables may carry the UBIDI_LEVEL_OVERRIDE flag to indicate the override status */
-        UBiDiLevel embeddingLevel=level, newLevel;
-        UBiDiLevel previousLevel=level;     /* previous level for regular (not CC) characters */
-        int32_t lastCcPos=0;                /* index of last effective LRx,RLx, PDx */
-
-        /* The following stack remembers the embedding level and the ISOLATE flag of level runs.
-           stackLast points to its current entry. */
-        uint16_t stack[UBIDI_MAX_EXPLICIT_LEVEL+2];   /* we never push anything >=UBIDI_MAX_EXPLICIT_LEVEL
-                                                        but we need one more entry as base */
-        uint32_t stackLast=0;
-        int32_t overflowIsolateCount=0;
-        int32_t overflowEmbeddingCount=0;
-        int32_t validIsolateCount=0;
-        BracketData bracketData;
-        bracketInit(pBiDi, &bracketData);
-        stack[0]=level;     /* initialize base entry to para level, no override, no isolate */
-
-        /* recalculate the flags */
-        flags=0;
-
-        for(i=0; i<length; ++i) {
-            dirProp=dirProps[i];
-            switch(dirProp) {
-            case LRE:
-            case RLE:
-            case LRO:
-            case RLO:
-                /* (X2, X3, X4, X5) */
-                flags|=DIRPROP_FLAG(BN);
-                levels[i]=previousLevel;
-                if (dirProp==LRE || dirProp==LRO)
-                    /* least greater even level */
-                    newLevel=(UBiDiLevel)((embeddingLevel+2)&~(UBIDI_LEVEL_OVERRIDE|1));
-                else
-                    /* least greater odd level */
-                    newLevel=(UBiDiLevel)((NO_OVERRIDE(embeddingLevel)+1)|1);
-                if(newLevel<=UBIDI_MAX_EXPLICIT_LEVEL && overflowIsolateCount==0 &&
-                                                         overflowEmbeddingCount==0) {
-                    lastCcPos=i;
-                    embeddingLevel=newLevel;
-                    if(dirProp==LRO || dirProp==RLO)
-                        embeddingLevel|=UBIDI_LEVEL_OVERRIDE;
-                    stackLast++;
-                    stack[stackLast]=embeddingLevel;
-                    /* we don't need to set UBIDI_LEVEL_OVERRIDE off for LRE and RLE
-                       since this has already been done for newLevel which is
-                       the source for embeddingLevel.
-                     */
-                } else {
-                    if(overflowIsolateCount==0)
-                        overflowEmbeddingCount++;
-                }
-                break;
-            case PDF:
-                /* (X7) */
-                flags|=DIRPROP_FLAG(BN);
-                levels[i]=previousLevel;
-                /* handle all the overflow cases first */
-                if(overflowIsolateCount) {
-                    break;
-                }
-                if(overflowEmbeddingCount) {
-                    overflowEmbeddingCount--;
-                    break;
-                }
-                if(stackLast>0 && stack[stackLast]<ISOLATE) {   /* not an isolate entry */
-                    lastCcPos=i;
-                    stackLast--;
-                    embeddingLevel=(UBiDiLevel)stack[stackLast];
-                }
-                break;
-            case LRI:
-            case RLI:
-                flags|=(DIRPROP_FLAG(ON)|DIRPROP_FLAG_LR(embeddingLevel));
-                levels[i]=NO_OVERRIDE(embeddingLevel);
-                if(NO_OVERRIDE(embeddingLevel)!=NO_OVERRIDE(previousLevel)) {
-                    bracketProcessBoundary(&bracketData, lastCcPos,
-                                           previousLevel, embeddingLevel);
-                    flags|=DIRPROP_FLAG_MULTI_RUNS;
-                }
-                previousLevel=embeddingLevel;
-                /* (X5a, X5b) */
-                if(dirProp==LRI)
-                    /* least greater even level */
-                    newLevel=(UBiDiLevel)((embeddingLevel+2)&~(UBIDI_LEVEL_OVERRIDE|1));
-                else
-                    /* least greater odd level */
-                    newLevel=(UBiDiLevel)((NO_OVERRIDE(embeddingLevel)+1)|1);
-                if(newLevel<=UBIDI_MAX_EXPLICIT_LEVEL && overflowIsolateCount==0 &&
-                                                         overflowEmbeddingCount==0) {
-                    flags|=DIRPROP_FLAG(dirProp);
-                    lastCcPos=i;
-                    validIsolateCount++;
-                    if(validIsolateCount>pBiDi->isolateCount)
-                        pBiDi->isolateCount=validIsolateCount;
-                    embeddingLevel=newLevel;
-                    /* we can increment stackLast without checking because newLevel
-                       will exceed UBIDI_MAX_EXPLICIT_LEVEL before stackLast overflows */
-                    stackLast++;
-                    stack[stackLast]=embeddingLevel+ISOLATE;
-                    bracketProcessLRI_RLI(&bracketData, embeddingLevel);
-                } else {
-                    /* make it WS so that it is handled by adjustWSLevels() */
-                    dirProps[i]=WS;
-                    overflowIsolateCount++;
-                }
-                break;
-            case PDI:
-                if(NO_OVERRIDE(embeddingLevel)!=NO_OVERRIDE(previousLevel)) {
-                    bracketProcessBoundary(&bracketData, lastCcPos,
-                                           previousLevel, embeddingLevel);
-                    flags|=DIRPROP_FLAG_MULTI_RUNS;
-                }
-                /* (X6a) */
-                if(overflowIsolateCount) {
-                    overflowIsolateCount--;
-                    /* make it WS so that it is handled by adjustWSLevels() */
-                    dirProps[i]=WS;
-                }
-                else if(validIsolateCount) {
-                    flags|=DIRPROP_FLAG(PDI);
-                    lastCcPos=i;
-                    overflowEmbeddingCount=0;
-                    while(stack[stackLast]<ISOLATE) /* pop embedding entries */
-                        stackLast--;                /* until the last isolate entry */
-                    stackLast--;                    /* pop also the last isolate entry */
-                    validIsolateCount--;
-                    bracketProcessPDI(&bracketData);
-                } else
-                    /* make it WS so that it is handled by adjustWSLevels() */
-                    dirProps[i]=WS;
-                embeddingLevel=(UBiDiLevel)stack[stackLast]&~ISOLATE;
-                flags|=(DIRPROP_FLAG(ON)|DIRPROP_FLAG_LR(embeddingLevel));
-                previousLevel=embeddingLevel;
-                levels[i]=NO_OVERRIDE(embeddingLevel);
-                break;
-            case B:
-                flags|=DIRPROP_FLAG(B);
-                levels[i]=GET_PARALEVEL(pBiDi, i);
-                if((i+1)<length) {
-                    if(text[i]==CR && text[i+1]==LF)
-                        break;          /* skip CR when followed by LF */
-                    overflowEmbeddingCount=overflowIsolateCount=0;
-                    validIsolateCount=0;
-                    stackLast=0;
-                    previousLevel=embeddingLevel=GET_PARALEVEL(pBiDi, i+1);
-                    stack[0]=embeddingLevel; /* initialize base entry to para level, no override, no isolate */
-                    bracketProcessB(&bracketData, embeddingLevel);
-                }
-                break;
-            case BN:
-                /* BN, LRE, RLE, and PDF are supposed to be removed (X9) */
-                /* they will get their levels set correctly in adjustWSLevels() */
-                levels[i]=previousLevel;
-                flags|=DIRPROP_FLAG(BN);
-                break;
-            default:
-                /* all other types are normal characters and get the "real" level */
-                if(NO_OVERRIDE(embeddingLevel)!=NO_OVERRIDE(previousLevel)) {
-                    bracketProcessBoundary(&bracketData, lastCcPos,
-                                           previousLevel, embeddingLevel);
-                    flags|=DIRPROP_FLAG_MULTI_RUNS;
-                    if(embeddingLevel&UBIDI_LEVEL_OVERRIDE)
-                        flags|=DIRPROP_FLAG_O(embeddingLevel);
-                    else
-                        flags|=DIRPROP_FLAG_E(embeddingLevel);
-                }
-                previousLevel=embeddingLevel;
-                levels[i]=embeddingLevel;
-                if(!bracketProcessChar(&bracketData, i))
-                    return -1;
-                /* the dirProp may have been changed in bracketProcessChar() */
-                flags|=DIRPROP_FLAG(dirProps[i]);
-                break;
-            }
-        }
-        if(flags&MASK_EMBEDDING)
-            flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel);
-        if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B)))
-            flags|=DIRPROP_FLAG(L);
-        /* again, determine if the text is mixed-directional or single-directional */
-        pBiDi->flags=flags;
-        direction=directionFromFlags(pBiDi);
-    }
-    return direction;
-}
-
-/*
- * Use a pre-specified embedding levels array:
- *
- * Adjust the directional properties for overrides (->LEVEL_OVERRIDE),
- * ignore all explicit codes (X9),
- * and check all the preset levels.
- *
- * Recalculate the flags to have them reflect the real properties
- * after taking the explicit embeddings into account.
- */
-static UBiDiDirection
-checkExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
-    DirProp *dirProps=pBiDi->dirProps;
-    DirProp dirProp;
-    UBiDiLevel *levels=pBiDi->levels;
-    int32_t isolateCount=0;
-
-    int32_t i, length=pBiDi->length;
-    Flags flags=0;  /* collect all directionalities in the text */
-    UBiDiLevel level;
-    pBiDi->isolateCount=0;
-
-    for(i=0; i<length; ++i) {
-        level=levels[i];
-        dirProp=dirProps[i];
-        if(dirProp==LRI || dirProp==RLI) {
-            isolateCount++;
-            if(isolateCount>pBiDi->isolateCount)
-                pBiDi->isolateCount=isolateCount;
-        }
-        else if(dirProp==PDI)
-            isolateCount--;
-        else if(dirProp==B)
-            isolateCount=0;
-        if(level&UBIDI_LEVEL_OVERRIDE) {
-            /* keep the override flag in levels[i] but adjust the flags */
-            level&=~UBIDI_LEVEL_OVERRIDE;     /* make the range check below simpler */
-            flags|=DIRPROP_FLAG_O(level);
-        } else {
-            /* set the flags */
-            flags|=DIRPROP_FLAG_E(level)|DIRPROP_FLAG(dirProp);
-        }
-        if((level<GET_PARALEVEL(pBiDi, i) &&
-            !((0==level)&&(dirProp==B))) ||
-           (UBIDI_MAX_EXPLICIT_LEVEL<level)) {
-            /* level out of bounds */
-            *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-            return UBIDI_LTR;
-        }
-    }
-    if(flags&MASK_EMBEDDING)
-        flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel);
-    /* determine if the text is mixed-directional or single-directional */
-    pBiDi->flags=flags;
-    return directionFromFlags(pBiDi);
-}
-
-/******************************************************************
- The Properties state machine table
-*******************************************************************
-
- All table cells are 8 bits:
-      bits 0..4:  next state
-      bits 5..7:  action to perform (if > 0)
-
- Cells may be of format "n" where n represents the next state
- (except for the rightmost column).
- Cells may also be of format "s(x,y)" where x represents an action
- to perform and y represents the next state.
-
-*******************************************************************
- Definitions and type for properties state table
-*******************************************************************
-*/
-#define IMPTABPROPS_COLUMNS 16
-#define IMPTABPROPS_RES (IMPTABPROPS_COLUMNS - 1)
-#define GET_STATEPROPS(cell) ((cell)&0x1f)
-#define GET_ACTIONPROPS(cell) ((cell)>>5)
-#define s(action, newState) ((uint8_t)(newState+(action<<5)))
-
-static const uint8_t groupProp[] =          /* dirProp regrouped */
-{
-/*  L   R   EN  ES  ET  AN  CS  B   S   WS  ON  LRE LRO AL  RLE RLO PDF NSM BN  FSI LRI RLI PDI ENL ENR */
-    0,  1,  2,  7,  8,  3,  9,  6,  5,  4,  4,  10, 10, 12, 10, 10, 10, 11, 10, 4,  4,  4,  4,  13, 14
-};
-enum { DirProp_L=0, DirProp_R=1, DirProp_EN=2, DirProp_AN=3, DirProp_ON=4, DirProp_S=5, DirProp_B=6 }; /* reduced dirProp */
-
-/******************************************************************
-
-      PROPERTIES  STATE  TABLE
-
- In table impTabProps,
-      - the ON column regroups ON and WS, FSI, RLI, LRI and PDI
-      - the BN column regroups BN, LRE, RLE, LRO, RLO, PDF
-      - the Res column is the reduced property assigned to a run
-
- Action 1: process current run1, init new run1
-        2: init new run2
-        3: process run1, process run2, init new run1
-        4: process run1, set run1=run2, init new run2
-
- Notes:
-  1) This table is used in resolveImplicitLevels().
-  2) This table triggers actions when there is a change in the Bidi
-     property of incoming characters (action 1).
-  3) Most such property sequences are processed immediately (in
-     fact, passed to processPropertySeq().
-  4) However, numbers are assembled as one sequence. This means
-     that undefined situations (like CS following digits, until
-     it is known if the next char will be a digit) are held until
-     following chars define them.
-     Example: digits followed by CS, then comes another CS or ON;
-              the digits will be processed, then the CS assigned
-              as the start of an ON sequence (action 3).
-  5) There are cases where more than one sequence must be
-     processed, for instance digits followed by CS followed by L:
-     the digits must be processed as one sequence, and the CS
-     must be processed as an ON sequence, all this before starting
-     assembling chars for the opening L sequence.
-
-
-*/
-static const uint8_t impTabProps[][IMPTABPROPS_COLUMNS] =
-{
-/*                        L ,     R ,    EN ,    AN ,    ON ,     S ,     B ,    ES ,    ET ,    CS ,    BN ,   NSM ,    AL ,   ENL ,   ENR , Res */
-/* 0 Init        */ {     1 ,     2 ,     4 ,     5 ,     7 ,    15 ,    17 ,     7 ,     9 ,     7 ,     0 ,     7 ,     3 ,    18 ,    21 , DirProp_ON },
-/* 1 L           */ {     1 , s(1,2), s(1,4), s(1,5), s(1,7),s(1,15),s(1,17), s(1,7), s(1,9), s(1,7),     1 ,     1 , s(1,3),s(1,18),s(1,21),  DirProp_L },
-/* 2 R           */ { s(1,1),     2 , s(1,4), s(1,5), s(1,7),s(1,15),s(1,17), s(1,7), s(1,9), s(1,7),     2 ,     2 , s(1,3),s(1,18),s(1,21),  DirProp_R },
-/* 3 AL          */ { s(1,1), s(1,2), s(1,6), s(1,6), s(1,8),s(1,16),s(1,17), s(1,8), s(1,8), s(1,8),     3 ,     3 ,     3 ,s(1,18),s(1,21),  DirProp_R },
-/* 4 EN          */ { s(1,1), s(1,2),     4 , s(1,5), s(1,7),s(1,15),s(1,17),s(2,10),    11 ,s(2,10),     4 ,     4 , s(1,3),    18 ,    21 , DirProp_EN },
-/* 5 AN          */ { s(1,1), s(1,2), s(1,4),     5 , s(1,7),s(1,15),s(1,17), s(1,7), s(1,9),s(2,12),     5 ,     5 , s(1,3),s(1,18),s(1,21), DirProp_AN },
-/* 6 AL:EN/AN    */ { s(1,1), s(1,2),     6 ,     6 , s(1,8),s(1,16),s(1,17), s(1,8), s(1,8),s(2,13),     6 ,     6 , s(1,3),    18 ,    21 , DirProp_AN },
-/* 7 ON          */ { s(1,1), s(1,2), s(1,4), s(1,5),     7 ,s(1,15),s(1,17),     7 ,s(2,14),     7 ,     7 ,     7 , s(1,3),s(1,18),s(1,21), DirProp_ON },
-/* 8 AL:ON       */ { s(1,1), s(1,2), s(1,6), s(1,6),     8 ,s(1,16),s(1,17),     8 ,     8 ,     8 ,     8 ,     8 , s(1,3),s(1,18),s(1,21), DirProp_ON },
-/* 9 ET          */ { s(1,1), s(1,2),     4 , s(1,5),     7 ,s(1,15),s(1,17),     7 ,     9 ,     7 ,     9 ,     9 , s(1,3),    18 ,    21 , DirProp_ON },
-/*10 EN+ES/CS    */ { s(3,1), s(3,2),     4 , s(3,5), s(4,7),s(3,15),s(3,17), s(4,7),s(4,14), s(4,7),    10 , s(4,7), s(3,3),    18 ,    21 , DirProp_EN },
-/*11 EN+ET       */ { s(1,1), s(1,2),     4 , s(1,5), s(1,7),s(1,15),s(1,17), s(1,7),    11 , s(1,7),    11 ,    11 , s(1,3),    18 ,    21 , DirProp_EN },
-/*12 AN+CS       */ { s(3,1), s(3,2), s(3,4),     5 , s(4,7),s(3,15),s(3,17), s(4,7),s(4,14), s(4,7),    12 , s(4,7), s(3,3),s(3,18),s(3,21), DirProp_AN },
-/*13 AL:EN/AN+CS */ { s(3,1), s(3,2),     6 ,     6 , s(4,8),s(3,16),s(3,17), s(4,8), s(4,8), s(4,8),    13 , s(4,8), s(3,3),    18 ,    21 , DirProp_AN },
-/*14 ON+ET       */ { s(1,1), s(1,2), s(4,4), s(1,5),     7 ,s(1,15),s(1,17),     7 ,    14 ,     7 ,    14 ,    14 , s(1,3),s(4,18),s(4,21), DirProp_ON },
-/*15 S           */ { s(1,1), s(1,2), s(1,4), s(1,5), s(1,7),    15 ,s(1,17), s(1,7), s(1,9), s(1,7),    15 , s(1,7), s(1,3),s(1,18),s(1,21),  DirProp_S },
-/*16 AL:S        */ { s(1,1), s(1,2), s(1,6), s(1,6), s(1,8),    16 ,s(1,17), s(1,8), s(1,8), s(1,8),    16 , s(1,8), s(1,3),s(1,18),s(1,21),  DirProp_S },
-/*17 B           */ { s(1,1), s(1,2), s(1,4), s(1,5), s(1,7),s(1,15),    17 , s(1,7), s(1,9), s(1,7),    17 , s(1,7), s(1,3),s(1,18),s(1,21),  DirProp_B },
-/*18 ENL         */ { s(1,1), s(1,2),    18 , s(1,5), s(1,7),s(1,15),s(1,17),s(2,19),    20 ,s(2,19),    18 ,    18 , s(1,3),    18 ,    21 ,  DirProp_L },
-/*19 ENL+ES/CS   */ { s(3,1), s(3,2),    18 , s(3,5), s(4,7),s(3,15),s(3,17), s(4,7),s(4,14), s(4,7),    19 , s(4,7), s(3,3),    18 ,    21 ,  DirProp_L },
-/*20 ENL+ET      */ { s(1,1), s(1,2),    18 , s(1,5), s(1,7),s(1,15),s(1,17), s(1,7),    20 , s(1,7),    20 ,    20 , s(1,3),    18 ,    21 ,  DirProp_L },
-/*21 ENR         */ { s(1,1), s(1,2),    21 , s(1,5), s(1,7),s(1,15),s(1,17),s(2,22),    23 ,s(2,22),    21 ,    21 , s(1,3),    18 ,    21 , DirProp_AN },
-/*22 ENR+ES/CS   */ { s(3,1), s(3,2),    21 , s(3,5), s(4,7),s(3,15),s(3,17), s(4,7),s(4,14), s(4,7),    22 , s(4,7), s(3,3),    18 ,    21 , DirProp_AN },
-/*23 ENR+ET      */ { s(1,1), s(1,2),    21 , s(1,5), s(1,7),s(1,15),s(1,17), s(1,7),    23 , s(1,7),    23 ,    23 , s(1,3),    18 ,    21 , DirProp_AN }
-};
-
-/*  we must undef macro s because the levels tables have a different
- *  structure (4 bits for action and 4 bits for next state.
- */
-#undef s
-
-/******************************************************************
- The levels state machine tables
-*******************************************************************
-
- All table cells are 8 bits:
-      bits 0..3:  next state
-      bits 4..7:  action to perform (if > 0)
-
- Cells may be of format "n" where n represents the next state
- (except for the rightmost column).
- Cells may also be of format "s(x,y)" where x represents an action
- to perform and y represents the next state.
-
- This format limits each table to 16 states each and to 15 actions.
-
-*******************************************************************
- Definitions and type for levels state tables
-*******************************************************************
-*/
-#define IMPTABLEVELS_COLUMNS (DirProp_B + 2)
-#define IMPTABLEVELS_RES (IMPTABLEVELS_COLUMNS - 1)
-#define GET_STATE(cell) ((cell)&0x0f)
-#define GET_ACTION(cell) ((cell)>>4)
-#define s(action, newState) ((uint8_t)(newState+(action<<4)))
-
-typedef uint8_t ImpTab[][IMPTABLEVELS_COLUMNS];
-typedef uint8_t ImpAct[];
-
-/* FOOD FOR THOUGHT: each ImpTab should have its associated ImpAct,
- * instead of having a pair of ImpTab and a pair of ImpAct.
- */
-typedef struct ImpTabPair {
-    const void * pImpTab[2];
-    const void * pImpAct[2];
-} ImpTabPair;
-
-/******************************************************************
-
-      LEVELS  STATE  TABLES
-
- In all levels state tables,
-      - state 0 is the initial state
-      - the Res column is the increment to add to the text level
-        for this property sequence.
-
- The impAct arrays for each table of a pair map the local action
- numbers of the table to the total list of actions. For instance,
- action 2 in a given table corresponds to the action number which
- appears in entry [2] of the impAct array for that table.
- The first entry of all impAct arrays must be 0.
-
- Action 1: init conditional sequence
-        2: prepend conditional sequence to current sequence
-        3: set ON sequence to new level - 1
-        4: init EN/AN/ON sequence
-        5: fix EN/AN/ON sequence followed by R
-        6: set previous level sequence to level 2
-
- Notes:
-  1) These tables are used in processPropertySeq(). The input
-     is property sequences as determined by resolveImplicitLevels.
-  2) Most such property sequences are processed immediately
-     (levels are assigned).
-  3) However, some sequences cannot be assigned a final level till
-     one or more following sequences are received. For instance,
-     ON following an R sequence within an even-level paragraph.
-     If the following sequence is R, the ON sequence will be
-     assigned basic run level+1, and so will the R sequence.
-  4) S is generally handled like ON, since its level will be fixed
-     to paragraph level in adjustWSLevels().
-
-*/
-
-static const ImpTab impTabL_DEFAULT =   /* Even paragraph level */
-/*  In this table, conditional sequences receive the lower possible level
-    until proven otherwise.
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 : init       */ {     0 ,     1 ,     0 ,     2 ,     0 ,     0 ,     0 ,  0 },
-/* 1 : R          */ {     0 ,     1 ,     3 ,     3 , s(1,4), s(1,4),     0 ,  1 },
-/* 2 : AN         */ {     0 ,     1 ,     0 ,     2 , s(1,5), s(1,5),     0 ,  2 },
-/* 3 : R+EN/AN    */ {     0 ,     1 ,     3 ,     3 , s(1,4), s(1,4),     0 ,  2 },
-/* 4 : R+ON       */ {     0 , s(2,1), s(3,3), s(3,3),     4 ,     4 ,     0 ,  0 },
-/* 5 : AN+ON      */ {     0 , s(2,1),     0 , s(3,2),     5 ,     5 ,     0 ,  0 }
-};
-static const ImpTab impTabR_DEFAULT =   /* Odd  paragraph level */
-/*  In this table, conditional sequences receive the lower possible level
-    until proven otherwise.
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 : init       */ {     1 ,     0 ,     2 ,     2 ,     0 ,     0 ,     0 ,  0 },
-/* 1 : L          */ {     1 ,     0 ,     1 ,     3 , s(1,4), s(1,4),     0 ,  1 },
-/* 2 : EN/AN      */ {     1 ,     0 ,     2 ,     2 ,     0 ,     0 ,     0 ,  1 },
-/* 3 : L+AN       */ {     1 ,     0 ,     1 ,     3 ,     5 ,     5 ,     0 ,  1 },
-/* 4 : L+ON       */ { s(2,1),     0 , s(2,1),     3 ,     4 ,     4 ,     0 ,  0 },
-/* 5 : L+AN+ON    */ {     1 ,     0 ,     1 ,     3 ,     5 ,     5 ,     0 ,  0 }
-};
-static const ImpAct impAct0 = {0,1,2,3,4};
-static const ImpTabPair impTab_DEFAULT = {{&impTabL_DEFAULT,
-                                           &impTabR_DEFAULT},
-                                          {&impAct0, &impAct0}};
-
-static const ImpTab impTabL_NUMBERS_SPECIAL =   /* Even paragraph level */
-/*  In this table, conditional sequences receive the lower possible level
-    until proven otherwise.
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 : init       */ {     0 ,     2 , s(1,1), s(1,1),     0 ,     0 ,     0 ,  0 },
-/* 1 : L+EN/AN    */ {     0 , s(4,2),     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
-/* 2 : R          */ {     0 ,     2 ,     4 ,     4 , s(1,3), s(1,3),     0 ,  1 },
-/* 3 : R+ON       */ {     0 , s(2,2), s(3,4), s(3,4),     3 ,     3 ,     0 ,  0 },
-/* 4 : R+EN/AN    */ {     0 ,     2 ,     4 ,     4 , s(1,3), s(1,3),     0 ,  2 }
-};
-static const ImpTabPair impTab_NUMBERS_SPECIAL = {{&impTabL_NUMBERS_SPECIAL,
-                                                   &impTabR_DEFAULT},
-                                                  {&impAct0, &impAct0}};
-
-static const ImpTab impTabL_GROUP_NUMBERS_WITH_R =
-/*  In this table, EN/AN+ON sequences receive levels as if associated with R
-    until proven that there is L or sor/eor on both sides. AN is handled like EN.
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 init         */ {     0 ,     3 , s(1,1), s(1,1),     0 ,     0 ,     0 ,  0 },
-/* 1 EN/AN        */ { s(2,0),     3 ,     1 ,     1 ,     2 , s(2,0), s(2,0),  2 },
-/* 2 EN/AN+ON     */ { s(2,0),     3 ,     1 ,     1 ,     2 , s(2,0), s(2,0),  1 },
-/* 3 R            */ {     0 ,     3 ,     5 ,     5 , s(1,4),     0 ,     0 ,  1 },
-/* 4 R+ON         */ { s(2,0),     3 ,     5 ,     5 ,     4 , s(2,0), s(2,0),  1 },
-/* 5 R+EN/AN      */ {     0 ,     3 ,     5 ,     5 , s(1,4),     0 ,     0 ,  2 }
-};
-static const ImpTab impTabR_GROUP_NUMBERS_WITH_R =
-/*  In this table, EN/AN+ON sequences receive levels as if associated with R
-    until proven that there is L on both sides. AN is handled like EN.
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 init         */ {     2 ,     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
-/* 1 EN/AN        */ {     2 ,     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  1 },
-/* 2 L            */ {     2 ,     0 , s(1,4), s(1,4), s(1,3),     0 ,     0 ,  1 },
-/* 3 L+ON         */ { s(2,2),     0 ,     4 ,     4 ,     3 ,     0 ,     0 ,  0 },
-/* 4 L+EN/AN      */ { s(2,2),     0 ,     4 ,     4 ,     3 ,     0 ,     0 ,  1 }
-};
-static const ImpTabPair impTab_GROUP_NUMBERS_WITH_R = {
-                        {&impTabL_GROUP_NUMBERS_WITH_R,
-                         &impTabR_GROUP_NUMBERS_WITH_R},
-                        {&impAct0, &impAct0}};
-
-
-static const ImpTab impTabL_INVERSE_NUMBERS_AS_L =
-/*  This table is identical to the Default LTR table except that EN and AN are
-    handled like L.
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 : init       */ {     0 ,     1 ,     0 ,     0 ,     0 ,     0 ,     0 ,  0 },
-/* 1 : R          */ {     0 ,     1 ,     0 ,     0 , s(1,4), s(1,4),     0 ,  1 },
-/* 2 : AN         */ {     0 ,     1 ,     0 ,     0 , s(1,5), s(1,5),     0 ,  2 },
-/* 3 : R+EN/AN    */ {     0 ,     1 ,     0 ,     0 , s(1,4), s(1,4),     0 ,  2 },
-/* 4 : R+ON       */ { s(2,0),     1 , s(2,0), s(2,0),     4 ,     4 , s(2,0),  1 },
-/* 5 : AN+ON      */ { s(2,0),     1 , s(2,0), s(2,0),     5 ,     5 , s(2,0),  1 }
-};
-static const ImpTab impTabR_INVERSE_NUMBERS_AS_L =
-/*  This table is identical to the Default RTL table except that EN and AN are
-    handled like L.
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 : init       */ {     1 ,     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
-/* 1 : L          */ {     1 ,     0 ,     1 ,     1 , s(1,4), s(1,4),     0 ,  1 },
-/* 2 : EN/AN      */ {     1 ,     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  1 },
-/* 3 : L+AN       */ {     1 ,     0 ,     1 ,     1 ,     5 ,     5 ,     0 ,  1 },
-/* 4 : L+ON       */ { s(2,1),     0 , s(2,1), s(2,1),     4 ,     4 ,     0 ,  0 },
-/* 5 : L+AN+ON    */ {     1 ,     0 ,     1 ,     1 ,     5 ,     5 ,     0 ,  0 }
-};
-static const ImpTabPair impTab_INVERSE_NUMBERS_AS_L = {
-                        {&impTabL_INVERSE_NUMBERS_AS_L,
-                         &impTabR_INVERSE_NUMBERS_AS_L},
-                        {&impAct0, &impAct0}};
-
-static const ImpTab impTabR_INVERSE_LIKE_DIRECT =   /* Odd  paragraph level */
-/*  In this table, conditional sequences receive the lower possible level
-    until proven otherwise.
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 : init       */ {     1 ,     0 ,     2 ,     2 ,     0 ,     0 ,     0 ,  0 },
-/* 1 : L          */ {     1 ,     0 ,     1 ,     2 , s(1,3), s(1,3),     0 ,  1 },
-/* 2 : EN/AN      */ {     1 ,     0 ,     2 ,     2 ,     0 ,     0 ,     0 ,  1 },
-/* 3 : L+ON       */ { s(2,1), s(3,0),     6 ,     4 ,     3 ,     3 , s(3,0),  0 },
-/* 4 : L+ON+AN    */ { s(2,1), s(3,0),     6 ,     4 ,     5 ,     5 , s(3,0),  3 },
-/* 5 : L+AN+ON    */ { s(2,1), s(3,0),     6 ,     4 ,     5 ,     5 , s(3,0),  2 },
-/* 6 : L+ON+EN    */ { s(2,1), s(3,0),     6 ,     4 ,     3 ,     3 , s(3,0),  1 }
-};
-static const ImpAct impAct1 = {0,1,13,14};
-/* FOOD FOR THOUGHT: in LTR table below, check case "JKL 123abc"
- */
-static const ImpTabPair impTab_INVERSE_LIKE_DIRECT = {
-                        {&impTabL_DEFAULT,
-                         &impTabR_INVERSE_LIKE_DIRECT},
-                        {&impAct0, &impAct1}};
-
-static const ImpTab impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS =
-/*  The case handled in this table is (visually):  R EN L
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 : init       */ {     0 , s(6,3),     0 ,     1 ,     0 ,     0 ,     0 ,  0 },
-/* 1 : L+AN       */ {     0 , s(6,3),     0 ,     1 , s(1,2), s(3,0),     0 ,  4 },
-/* 2 : L+AN+ON    */ { s(2,0), s(6,3), s(2,0),     1 ,     2 , s(3,0), s(2,0),  3 },
-/* 3 : R          */ {     0 , s(6,3), s(5,5), s(5,6), s(1,4), s(3,0),     0 ,  3 },
-/* 4 : R+ON       */ { s(3,0), s(4,3), s(5,5), s(5,6),     4 , s(3,0), s(3,0),  3 },
-/* 5 : R+EN       */ { s(3,0), s(4,3),     5 , s(5,6), s(1,4), s(3,0), s(3,0),  4 },
-/* 6 : R+AN       */ { s(3,0), s(4,3), s(5,5),     6 , s(1,4), s(3,0), s(3,0),  4 }
-};
-static const ImpTab impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS =
-/*  The cases handled in this table are (visually):  R EN L
-                                                     R L AN L
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 : init       */ { s(1,3),     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
-/* 1 : R+EN/AN    */ { s(2,3),     0 ,     1 ,     1 ,     2 , s(4,0),     0 ,  1 },
-/* 2 : R+EN/AN+ON */ { s(2,3),     0 ,     1 ,     1 ,     2 , s(4,0),     0 ,  0 },
-/* 3 : L          */ {     3 ,     0 ,     3 , s(3,6), s(1,4), s(4,0),     0 ,  1 },
-/* 4 : L+ON       */ { s(5,3), s(4,0),     5 , s(3,6),     4 , s(4,0), s(4,0),  0 },
-/* 5 : L+ON+EN    */ { s(5,3), s(4,0),     5 , s(3,6),     4 , s(4,0), s(4,0),  1 },
-/* 6 : L+AN       */ { s(5,3), s(4,0),     6 ,     6 ,     4 , s(4,0), s(4,0),  3 }
-};
-static const ImpAct impAct2 = {0,1,2,5,6,7,8};
-static const ImpAct impAct3 = {0,1,9,10,11,12};
-static const ImpTabPair impTab_INVERSE_LIKE_DIRECT_WITH_MARKS = {
-                        {&impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS,
-                         &impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS},
-                        {&impAct2, &impAct3}};
-
-static const ImpTabPair impTab_INVERSE_FOR_NUMBERS_SPECIAL = {
-                        {&impTabL_NUMBERS_SPECIAL,
-                         &impTabR_INVERSE_LIKE_DIRECT},
-                        {&impAct0, &impAct1}};
-
-static const ImpTab impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS =
-/*  The case handled in this table is (visually):  R EN L
-*/
-{
-/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
-/* 0 : init       */ {     0 , s(6,2),     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
-/* 1 : L+EN/AN    */ {     0 , s(6,2),     1 ,     1 ,     0 , s(3,0),     0 ,  4 },
-/* 2 : R          */ {     0 , s(6,2), s(5,4), s(5,4), s(1,3), s(3,0),     0 ,  3 },
-/* 3 : R+ON       */ { s(3,0), s(4,2), s(5,4), s(5,4),     3 , s(3,0), s(3,0),  3 },
-/* 4 : R+EN/AN    */ { s(3,0), s(4,2),     4 ,     4 , s(1,3), s(3,0), s(3,0),  4 }
-};
-static const ImpTabPair impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS = {
-                        {&impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS,
-                         &impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS},
-                        {&impAct2, &impAct3}};
-
-#undef s
-
-typedef struct {
-    const ImpTab * pImpTab;             /* level table pointer          */
-    const ImpAct * pImpAct;             /* action map array             */
-    int32_t startON;                    /* start of ON sequence         */
-    int32_t startL2EN;                  /* start of level 2 sequence    */
-    int32_t lastStrongRTL;              /* index of last found R or AL  */
-    int32_t state;                      /* current state                */
-    int32_t runStart;                   /* start position of the run    */
-    UBiDiLevel runLevel;                /* run level before implicit solving */
-} LevState;
-
-/*------------------------------------------------------------------------*/
-
-static void
-addPoint(UBiDi *pBiDi, int32_t pos, int32_t flag)
-  /* param pos:     position where to insert
-     param flag:    one of LRM_BEFORE, LRM_AFTER, RLM_BEFORE, RLM_AFTER
-  */
-{
-#define FIRSTALLOC  10
-    Point point;
-    InsertPoints * pInsertPoints=&(pBiDi->insertPoints);
-
-    if (pInsertPoints->capacity == 0)
-    {
-        pInsertPoints->points=uprv_malloc(sizeof(Point)*FIRSTALLOC);
-        if (pInsertPoints->points == NULL)
-        {
-            pInsertPoints->errorCode=U_MEMORY_ALLOCATION_ERROR;
-            return;
-        }
-        pInsertPoints->capacity=FIRSTALLOC;
-    }
-    if (pInsertPoints->size >= pInsertPoints->capacity) /* no room for new point */
-    {
-        void * savePoints=pInsertPoints->points;
-        pInsertPoints->points=uprv_realloc(pInsertPoints->points,
-                                           pInsertPoints->capacity*2*sizeof(Point));
-        if (pInsertPoints->points == NULL)
-        {
-            pInsertPoints->points=savePoints;
-            pInsertPoints->errorCode=U_MEMORY_ALLOCATION_ERROR;
-            return;
-        }
-        else  pInsertPoints->capacity*=2;
-    }
-    point.pos=pos;
-    point.flag=flag;
-    pInsertPoints->points[pInsertPoints->size]=point;
-    pInsertPoints->size++;
-#undef FIRSTALLOC
-}
-
-static void
-setLevelsOutsideIsolates(UBiDi *pBiDi, int32_t start, int32_t limit, UBiDiLevel level)
-{
-    DirProp *dirProps=pBiDi->dirProps, dirProp;
-    UBiDiLevel *levels=pBiDi->levels;
-    int32_t isolateCount=0, k;
-    for(k=start; k<limit; k++) {
-        dirProp=dirProps[k];
-        if(dirProp==PDI)
-            isolateCount--;
-        if(isolateCount==0)
-            levels[k]=level;
-        if(dirProp==LRI || dirProp==RLI)
-            isolateCount++;
-    }
-}
-
-/* perform rules (Wn), (Nn), and (In) on a run of the text ------------------ */
-
-/*
- * This implementation of the (Wn) rules applies all rules in one pass.
- * In order to do so, it needs a look-ahead of typically 1 character
- * (except for W5: sequences of ET) and keeps track of changes
- * in a rule Wp that affect a later Wq (p<q).
- *
- * The (Nn) and (In) rules are also performed in that same single loop,
- * but effectively one iteration behind for white space.
- *
- * Since all implicit rules are performed in one step, it is not necessary
- * to actually store the intermediate directional properties in dirProps[].
- */
-
-static void
-processPropertySeq(UBiDi *pBiDi, LevState *pLevState, uint8_t _prop,
-                   int32_t start, int32_t limit) {
-    uint8_t cell, oldStateSeq, actionSeq;
-    const ImpTab * pImpTab=pLevState->pImpTab;
-    const ImpAct * pImpAct=pLevState->pImpAct;
-    UBiDiLevel * levels=pBiDi->levels;
-    UBiDiLevel level, addLevel;
-    InsertPoints * pInsertPoints;
-    int32_t start0, k;
-
-    start0=start;                           /* save original start position */
-    oldStateSeq=(uint8_t)pLevState->state;
-    cell=(*pImpTab)[oldStateSeq][_prop];
-    pLevState->state=GET_STATE(cell);       /* isolate the new state */
-    actionSeq=(*pImpAct)[GET_ACTION(cell)]; /* isolate the action */
-    addLevel=(*pImpTab)[pLevState->state][IMPTABLEVELS_RES];
-
-    if(actionSeq) {
-        switch(actionSeq) {
-        case 1:                         /* init ON seq */
-            pLevState->startON=start0;
-            break;
-
-        case 2:                         /* prepend ON seq to current seq */
-            start=pLevState->startON;
-            break;
-
-        case 3:                         /* EN/AN after R+ON */
-            level=pLevState->runLevel+1;
-            setLevelsOutsideIsolates(pBiDi, pLevState->startON, start0, level);
-            break;
-
-        case 4:                         /* EN/AN before R for NUMBERS_SPECIAL */
-            level=pLevState->runLevel+2;
-            setLevelsOutsideIsolates(pBiDi, pLevState->startON, start0, level);
-            break;
-
-        case 5:                         /* L or S after possible relevant EN/AN */
-            /* check if we had EN after R/AL */
-            if (pLevState->startL2EN >= 0) {
-                addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE);
-            }
-            pLevState->startL2EN=-1;  /* not within previous if since could also be -2 */
-            /* check if we had any relevant EN/AN after R/AL */
-            pInsertPoints=&(pBiDi->insertPoints);
-            if ((pInsertPoints->capacity == 0) ||
-                (pInsertPoints->size <= pInsertPoints->confirmed))
-            {
-                /* nothing, just clean up */
-                pLevState->lastStrongRTL=-1;
-                /* check if we have a pending conditional segment */
-                level=(*pImpTab)[oldStateSeq][IMPTABLEVELS_RES];
-                if ((level & 1) && (pLevState->startON > 0)) {  /* after ON */
-                    start=pLevState->startON;   /* reset to basic run level */
-                }
-                if (_prop == DirProp_S)                /* add LRM before S */
-                {
-                    addPoint(pBiDi, start0, LRM_BEFORE);
-                    pInsertPoints->confirmed=pInsertPoints->size;
-                }
-                break;
-            }
-            /* reset previous RTL cont to level for LTR text */
-            for (k=pLevState->lastStrongRTL+1; k<start0; k++)
-            {
-                /* reset odd level, leave runLevel+2 as is */
-                levels[k]=(levels[k] - 2) & ~1;
-            }
-            /* mark insert points as confirmed */
-            pInsertPoints->confirmed=pInsertPoints->size;
-            pLevState->lastStrongRTL=-1;
-            if (_prop == DirProp_S)            /* add LRM before S */
-            {
-                addPoint(pBiDi, start0, LRM_BEFORE);
-                pInsertPoints->confirmed=pInsertPoints->size;
-            }
-            break;
-
-        case 6:                         /* R/AL after possible relevant EN/AN */
-            /* just clean up */
-            pInsertPoints=&(pBiDi->insertPoints);
-            if (pInsertPoints->capacity > 0)
-                /* remove all non confirmed insert points */
-                pInsertPoints->size=pInsertPoints->confirmed;
-            pLevState->startON=-1;
-            pLevState->startL2EN=-1;
-            pLevState->lastStrongRTL=limit - 1;
-            break;
-
-        case 7:                         /* EN/AN after R/AL + possible cont */
-            /* check for real AN */
-            if ((_prop == DirProp_AN) && (pBiDi->dirProps[start0] == AN) &&
-                (pBiDi->reorderingMode!=UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL))
-            {
-                /* real AN */
-                if (pLevState->startL2EN == -1) /* if no relevant EN already found */
-                {
-                    /* just note the righmost digit as a strong RTL */
-                    pLevState->lastStrongRTL=limit - 1;
-                    break;
-                }
-                if (pLevState->startL2EN >= 0)  /* after EN, no AN */
-                {
-                    addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE);
-                    pLevState->startL2EN=-2;
-                }
-                /* note AN */
-                addPoint(pBiDi, start0, LRM_BEFORE);
-                break;
-            }
-            /* if first EN/AN after R/AL */
-            if (pLevState->startL2EN == -1) {
-                pLevState->startL2EN=start0;
-            }
-            break;
-
-        case 8:                         /* note location of latest R/AL */
-            pLevState->lastStrongRTL=limit - 1;
-            pLevState->startON=-1;
-            break;
-
-        case 9:                         /* L after R+ON/EN/AN */
-            /* include possible adjacent number on the left */
-            for (k=start0-1; k>=0 && !(levels[k]&1); k--);
-            if(k>=0) {
-                addPoint(pBiDi, k, RLM_BEFORE);             /* add RLM before */
-                pInsertPoints=&(pBiDi->insertPoints);
-                pInsertPoints->confirmed=pInsertPoints->size;   /* confirm it */
-            }
-            pLevState->startON=start0;
-            break;
-
-        case 10:                        /* AN after L */
-            /* AN numbers between L text on both sides may be trouble. */
-            /* tentatively bracket with LRMs; will be confirmed if followed by L */
-            addPoint(pBiDi, start0, LRM_BEFORE);    /* add LRM before */
-            addPoint(pBiDi, start0, LRM_AFTER);     /* add LRM after  */
-            break;
-
-        case 11:                        /* R after L+ON/EN/AN */
-            /* false alert, infirm LRMs around previous AN */
-            pInsertPoints=&(pBiDi->insertPoints);
-            pInsertPoints->size=pInsertPoints->confirmed;
-            if (_prop == DirProp_S)            /* add RLM before S */
-            {
-                addPoint(pBiDi, start0, RLM_BEFORE);
-                pInsertPoints->confirmed=pInsertPoints->size;
-            }
-            break;
-
-        case 12:                        /* L after L+ON/AN */
-            level=pLevState->runLevel + addLevel;
-            for(k=pLevState->startON; k<start0; k++) {
-                if (levels[k]<level)
-                    levels[k]=level;
-            }
-            pInsertPoints=&(pBiDi->insertPoints);
-            pInsertPoints->confirmed=pInsertPoints->size;   /* confirm inserts */
-            pLevState->startON=start0;
-            break;
-
-        case 13:                        /* L after L+ON+EN/AN/ON */
-            level=pLevState->runLevel;
-            for(k=start0-1; k>=pLevState->startON; k--) {
-                if(levels[k]==level+3) {
-                    while(levels[k]==level+3) {
-                        levels[k--]-=2;
-                    }
-                    while(levels[k]==level) {
-                        k--;
-                    }
-                }
-                if(levels[k]==level+2) {
-                    levels[k]=level;
-                    continue;
-                }
-                levels[k]=level+1;
-            }
-            break;
-
-        case 14:                        /* R after L+ON+EN/AN/ON */
-            level=pLevState->runLevel+1;
-            for(k=start0-1; k>=pLevState->startON; k--) {
-                if(levels[k]>level) {
-                    levels[k]-=2;
-                }
-            }
-            break;
-
-        default:                        /* we should never get here */
-            U_ASSERT(FALSE);
-            break;
-        }
-    }
-    if((addLevel) || (start < start0)) {
-        level=pLevState->runLevel + addLevel;
-        if(start>=pLevState->runStart) {
-            for(k=start; k<limit; k++) {
-                levels[k]=level;
-            }
-        } else {
-            setLevelsOutsideIsolates(pBiDi, start, limit, level);
-        }
-    }
-}
-
-/**
- * Returns the directionality of the last strong character at the end of the prologue, if any.
- * Requires prologue!=null.
- */
-static DirProp
-lastL_R_AL(UBiDi *pBiDi) {
-    const UChar *text=pBiDi->prologue;
-    int32_t length=pBiDi->proLength;
-    int32_t i;
-    UChar32 uchar;
-    DirProp dirProp;
-    for(i=length; i>0; ) {
-        /* i is decremented by U16_PREV */
-        U16_PREV(text, 0, i, uchar);
-        dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar);
-        if(dirProp==L) {
-            return DirProp_L;
-        }
-        if(dirProp==R || dirProp==AL) {
-            return DirProp_R;
-        }
-        if(dirProp==B) {
-            return DirProp_ON;
-        }
-    }
-    return DirProp_ON;
-}
-
-/**
- * Returns the directionality of the first strong character, or digit, in the epilogue, if any.
- * Requires epilogue!=null.
- */
-static DirProp
-firstL_R_AL_EN_AN(UBiDi *pBiDi) {
-    const UChar *text=pBiDi->epilogue;
-    int32_t length=pBiDi->epiLength;
-    int32_t i;
-    UChar32 uchar;
-    DirProp dirProp;
-    for(i=0; i<length; ) {
-        /* i is incremented by U16_NEXT */
-        U16_NEXT(text, i, length, uchar);
-        dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar);
-        if(dirProp==L) {
-            return DirProp_L;
-        }
-        if(dirProp==R || dirProp==AL) {
-            return DirProp_R;
-        }
-        if(dirProp==EN) {
-            return DirProp_EN;
-        }
-        if(dirProp==AN) {
-            return DirProp_AN;
-        }
-    }
-    return DirProp_ON;
-}
-
-static void
-resolveImplicitLevels(UBiDi *pBiDi,
-                      int32_t start, int32_t limit,
-                      DirProp sor, DirProp eor) {
-    const DirProp *dirProps=pBiDi->dirProps;
-    DirProp dirProp;
-    LevState levState;
-    int32_t i, start1, start2;
-    uint16_t oldStateImp, stateImp, actionImp;
-    uint8_t gprop, resProp, cell;
-    UBool inverseRTL;
-    DirProp nextStrongProp=R;
-    int32_t nextStrongPos=-1;
-
-    /* check for RTL inverse BiDi mode */
-    /* FOOD FOR THOUGHT: in case of RTL inverse BiDi, it would make sense to
-     * loop on the text characters from end to start.
-     * This would need a different properties state table (at least different
-     * actions) and different levels state tables (maybe very similar to the
-     * LTR corresponding ones.
-     */
-    inverseRTL=(UBool)
-        ((start<pBiDi->lastArabicPos) && (GET_PARALEVEL(pBiDi, start) & 1) &&
-         (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT  ||
-          pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL));
-
-    /* initialize for property and levels state tables */
-    levState.startL2EN=-1;              /* used for INVERSE_LIKE_DIRECT_WITH_MARKS */
-    levState.lastStrongRTL=-1;          /* used for INVERSE_LIKE_DIRECT_WITH_MARKS */
-    levState.runStart=start;
-    levState.runLevel=pBiDi->levels[start];
-    levState.pImpTab=(const ImpTab*)((pBiDi->pImpTabPair)->pImpTab)[levState.runLevel&1];
-    levState.pImpAct=(const ImpAct*)((pBiDi->pImpTabPair)->pImpAct)[levState.runLevel&1];
-    if(start==0 && pBiDi->proLength>0) {
-        DirProp lastStrong=lastL_R_AL(pBiDi);
-        if(lastStrong!=DirProp_ON) {
-            sor=lastStrong;
-        }
-    }
-    /* The isolates[] entries contain enough information to
-       resume the bidi algorithm in the same state as it was
-       when it was interrupted by an isolate sequence. */
-    if(dirProps[start]==PDI  && pBiDi->isolateCount >= 0) {
-        levState.startON=pBiDi->isolates[pBiDi->isolateCount].startON;
-        start1=pBiDi->isolates[pBiDi->isolateCount].start1;
-        stateImp=pBiDi->isolates[pBiDi->isolateCount].stateImp;
-        levState.state=pBiDi->isolates[pBiDi->isolateCount].state;
-        pBiDi->isolateCount--;
-    } else {
-        levState.startON=-1;
-        start1=start;
-        if(dirProps[start]==NSM)
-            stateImp = 1 + sor;
-        else
-            stateImp=0;
-        levState.state=0;
-        processPropertySeq(pBiDi, &levState, sor, start, start);
-    }
-    start2=start;                       /* to make Java compiler happy */
-
-    for(i=start; i<=limit; i++) {
-        if(i>=limit) {
-            int32_t k;
-            for(k=limit-1; k>start&&(DIRPROP_FLAG(dirProps[k])&MASK_BN_EXPLICIT); k--);
-            dirProp=dirProps[k];
-            if(dirProp==LRI || dirProp==RLI)
-                break;      /* no forced closing for sequence ending with LRI/RLI */
-            gprop=eor;
-        } else {
-            DirProp prop, prop1;
-            prop=dirProps[i];
-            if(prop==B) {
-                pBiDi->isolateCount=-1; /* current isolates stack entry == none */
-            }
-            if(inverseRTL) {
-                if(prop==AL) {
-                    /* AL before EN does not make it AN */
-                    prop=R;
-                } else if(prop==EN) {
-                    if(nextStrongPos<=i) {
-                        /* look for next strong char (L/R/AL) */
-                        int32_t j;
-                        nextStrongProp=R;   /* set default */
-                        nextStrongPos=limit;
-                        for(j=i+1; j<limit; j++) {
-                            prop1=dirProps[j];
-                            if(prop1==L || prop1==R || prop1==AL) {
-                                nextStrongProp=prop1;
-                                nextStrongPos=j;
-                                break;
-                            }
-                        }
-                    }
-                    if(nextStrongProp==AL) {
-                        prop=AN;
-                    }
-                }
-            }
-            gprop=groupProp[prop];
-        }
-        oldStateImp=stateImp;
-        cell=impTabProps[oldStateImp][gprop];
-        stateImp=GET_STATEPROPS(cell);      /* isolate the new state */
-        actionImp=GET_ACTIONPROPS(cell);    /* isolate the action */
-        if((i==limit) && (actionImp==0)) {
-            /* there is an unprocessed sequence if its property == eor   */
-            actionImp=1;                    /* process the last sequence */
-        }
-        if(actionImp) {
-            resProp=impTabProps[oldStateImp][IMPTABPROPS_RES];
-            switch(actionImp) {
-            case 1:             /* process current seq1, init new seq1 */
-                processPropertySeq(pBiDi, &levState, resProp, start1, i);
-                start1=i;
-                break;
-            case 2:             /* init new seq2 */
-                start2=i;
-                break;
-            case 3:             /* process seq1, process seq2, init new seq1 */
-                processPropertySeq(pBiDi, &levState, resProp, start1, start2);
-                processPropertySeq(pBiDi, &levState, DirProp_ON, start2, i);
-                start1=i;
-                break;
-            case 4:             /* process seq1, set seq1=seq2, init new seq2 */
-                processPropertySeq(pBiDi, &levState, resProp, start1, start2);
-                start1=start2;
-                start2=i;
-                break;
-            default:            /* we should never get here */
-                U_ASSERT(FALSE);
-                break;
-            }
-        }
-    }
-
-    /* flush possible pending sequence, e.g. ON */
-    if(limit==pBiDi->length && pBiDi->epiLength>0) {
-        DirProp firstStrong=firstL_R_AL_EN_AN(pBiDi);
-        if(firstStrong!=DirProp_ON) {
-            eor=firstStrong;
-        }
-    }
-
-    /* look for the last char not a BN or LRE/RLE/LRO/RLO/PDF */
-    for(i=limit-1; i>start&&(DIRPROP_FLAG(dirProps[i])&MASK_BN_EXPLICIT); i--);
-    dirProp=dirProps[i];
-    if((dirProp==LRI || dirProp==RLI) && limit<pBiDi->length) {
-        pBiDi->isolateCount++;
-        pBiDi->isolates[pBiDi->isolateCount].stateImp=stateImp;
-        pBiDi->isolates[pBiDi->isolateCount].state=levState.state;
-        pBiDi->isolates[pBiDi->isolateCount].start1=start1;
-        pBiDi->isolates[pBiDi->isolateCount].startON=levState.startON;
-    }
-    else
-        processPropertySeq(pBiDi, &levState, eor, limit, limit);
-}
-
-/* perform (L1) and (X9) ---------------------------------------------------- */
-
-/*
- * Reset the embedding levels for some non-graphic characters (L1).
- * This function also sets appropriate levels for BN, and
- * explicit embedding types that are supposed to have been removed
- * from the paragraph in (X9).
- */
-static void
-adjustWSLevels(UBiDi *pBiDi) {
-    const DirProp *dirProps=pBiDi->dirProps;
-    UBiDiLevel *levels=pBiDi->levels;
-    int32_t i;
-
-    if(pBiDi->flags&MASK_WS) {
-        UBool orderParagraphsLTR=pBiDi->orderParagraphsLTR;
-        Flags flag;
-
-        i=pBiDi->trailingWSStart;
-        while(i>0) {
-            /* reset a sequence of WS/BN before eop and B/S to the paragraph paraLevel */
-            while(i>0 && (flag=DIRPROP_FLAG(dirProps[--i]))&MASK_WS) {
-                if(orderParagraphsLTR&&(flag&DIRPROP_FLAG(B))) {
-                    levels[i]=0;
-                } else {
-                    levels[i]=GET_PARALEVEL(pBiDi, i);
-                }
-            }
-
-            /* reset BN to the next character's paraLevel until B/S, which restarts above loop */
-            /* here, i+1 is guaranteed to be <length */
-            while(i>0) {
-                flag=DIRPROP_FLAG(dirProps[--i]);
-                if(flag&MASK_BN_EXPLICIT) {
-                    levels[i]=levels[i+1];
-                } else if(orderParagraphsLTR&&(flag&DIRPROP_FLAG(B))) {
-                    levels[i]=0;
-                    break;
-                } else if(flag&MASK_B_S) {
-                    levels[i]=GET_PARALEVEL(pBiDi, i);
-                    break;
-                }
-            }
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-ubidi_setContext(UBiDi *pBiDi,
-                 const UChar *prologue, int32_t proLength,
-                 const UChar *epilogue, int32_t epiLength,
-                 UErrorCode *pErrorCode) {
-    /* check the argument values */
-    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
-    if(pBiDi==NULL || proLength<-1 || epiLength<-1 ||
-       (prologue==NULL && proLength!=0) || (epilogue==NULL && epiLength!=0)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    if(proLength==-1) {
-        pBiDi->proLength=u_strlen(prologue);
-    } else {
-        pBiDi->proLength=proLength;
-    }
-    if(epiLength==-1) {
-        pBiDi->epiLength=u_strlen(epilogue);
-    } else {
-        pBiDi->epiLength=epiLength;
-    }
-    pBiDi->prologue=prologue;
-    pBiDi->epilogue=epilogue;
-}
-
-static void
-setParaSuccess(UBiDi *pBiDi) {
-    pBiDi->proLength=0;                 /* forget the last context */
-    pBiDi->epiLength=0;
-    pBiDi->pParaBiDi=pBiDi;             /* mark successful setPara */
-}
-
-#define BIDI_MIN(x, y)   ((x)<(y) ? (x) : (y))
-#define BIDI_ABS(x)      ((x)>=0  ? (x) : (-(x)))
-
-static void
-setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length,
-                UBiDiLevel paraLevel, UErrorCode *pErrorCode) {
-    void *runsOnlyMemory = NULL;
-    int32_t *visualMap;
-    UChar *visualText;
-    int32_t saveLength, saveTrailingWSStart;
-    const UBiDiLevel *levels;
-    UBiDiLevel *saveLevels;
-    UBiDiDirection saveDirection;
-    UBool saveMayAllocateText;
-    Run *runs;
-    int32_t visualLength, i, j, visualStart, logicalStart,
-            runCount, runLength, addedRuns, insertRemove,
-            start, limit, step, indexOddBit, logicalPos,
-            index0, index1;
-    uint32_t saveOptions;
-
-    pBiDi->reorderingMode=UBIDI_REORDER_DEFAULT;
-    if(length==0) {
-        ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode);
-        goto cleanup3;
-    }
-    /* obtain memory for mapping table and visual text */
-    runsOnlyMemory=uprv_malloc(length*(sizeof(int32_t)+sizeof(UChar)+sizeof(UBiDiLevel)));
-    if(runsOnlyMemory==NULL) {
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        goto cleanup3;
-    }
-    visualMap=runsOnlyMemory;
-    visualText=(UChar *)&visualMap[length];
-    saveLevels=(UBiDiLevel *)&visualText[length];
-    saveOptions=pBiDi->reorderingOptions;
-    if(saveOptions & UBIDI_OPTION_INSERT_MARKS) {
-        pBiDi->reorderingOptions&=~UBIDI_OPTION_INSERT_MARKS;
-        pBiDi->reorderingOptions|=UBIDI_OPTION_REMOVE_CONTROLS;
-    }
-    paraLevel&=1;                       /* accept only 0 or 1 */
-    ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        goto cleanup3;
-    }
-    /* we cannot access directly pBiDi->levels since it is not yet set if
-     * direction is not MIXED
-     */
-    levels=ubidi_getLevels(pBiDi, pErrorCode);
-    uprv_memcpy(saveLevels, levels, (size_t)pBiDi->length*sizeof(UBiDiLevel));
-    saveTrailingWSStart=pBiDi->trailingWSStart;
-    saveLength=pBiDi->length;
-    saveDirection=pBiDi->direction;
-
-    /* FOOD FOR THOUGHT: instead of writing the visual text, we could use
-     * the visual map and the dirProps array to drive the second call
-     * to ubidi_setPara (but must make provision for possible removal of
-     * BiDi controls.  Alternatively, only use the dirProps array via
-     * customized classifier callback.
-     */
-    visualLength=ubidi_writeReordered(pBiDi, visualText, length,
-                                      UBIDI_DO_MIRRORING, pErrorCode);
-    ubidi_getVisualMap(pBiDi, visualMap, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        goto cleanup2;
-    }
-    pBiDi->reorderingOptions=saveOptions;
-
-    pBiDi->reorderingMode=UBIDI_REORDER_INVERSE_LIKE_DIRECT;
-    paraLevel^=1;
-    /* Because what we did with reorderingOptions, visualText may be shorter
-     * than the original text. But we don't want the levels memory to be
-     * reallocated shorter than the original length, since we need to restore
-     * the levels as after the first call to ubidi_setpara() before returning.
-     * We will force mayAllocateText to FALSE before the second call to
-     * ubidi_setpara(), and will restore it afterwards.
-     */
-    saveMayAllocateText=pBiDi->mayAllocateText;
-    pBiDi->mayAllocateText=FALSE;
-    ubidi_setPara(pBiDi, visualText, visualLength, paraLevel, NULL, pErrorCode);
-    pBiDi->mayAllocateText=saveMayAllocateText;
-    ubidi_getRuns(pBiDi, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        goto cleanup1;
-    }
-    /* check if some runs must be split, count how many splits */
-    addedRuns=0;
-    runCount=pBiDi->runCount;
-    runs=pBiDi->runs;
-    visualStart=0;
-    for(i=0; i<runCount; i++, visualStart+=runLength) {
-        runLength=runs[i].visualLimit-visualStart;
-        if(runLength<2) {
-            continue;
-        }
-        logicalStart=GET_INDEX(runs[i].logicalStart);
-        for(j=logicalStart+1; j<logicalStart+runLength; j++) {
-            index0=visualMap[j];
-            index1=visualMap[j-1];
-            if((BIDI_ABS(index0-index1)!=1) || (saveLevels[index0]!=saveLevels[index1])) {
-                addedRuns++;
-            }
-        }
-    }
-    if(addedRuns) {
-        if(getRunsMemory(pBiDi, runCount+addedRuns)) {
-            if(runCount==1) {
-                /* because we switch from UBiDi.simpleRuns to UBiDi.runs */
-                pBiDi->runsMemory[0]=runs[0];
-            }
-            runs=pBiDi->runs=pBiDi->runsMemory;
-            pBiDi->runCount+=addedRuns;
-        } else {
-            goto cleanup1;
-        }
-    }
-    /* split runs which are not consecutive in source text */
-    for(i=runCount-1; i>=0; i--) {
-        runLength= i==0 ? runs[0].visualLimit :
-                          runs[i].visualLimit-runs[i-1].visualLimit;
-        logicalStart=runs[i].logicalStart;
-        indexOddBit=GET_ODD_BIT(logicalStart);
-        logicalStart=GET_INDEX(logicalStart);
-        if(runLength<2) {
-            if(addedRuns) {
-                runs[i+addedRuns]=runs[i];
-            }
-            logicalPos=visualMap[logicalStart];
-            runs[i+addedRuns].logicalStart=MAKE_INDEX_ODD_PAIR(logicalPos,
-                                            saveLevels[logicalPos]^indexOddBit);
-            continue;
-        }
-        if(indexOddBit) {
-            start=logicalStart;
-            limit=logicalStart+runLength-1;
-            step=1;
-        } else {
-            start=logicalStart+runLength-1;
-            limit=logicalStart;
-            step=-1;
-        }
-        for(j=start; j!=limit; j+=step) {
-            index0=visualMap[j];
-            index1=visualMap[j+step];
-            if((BIDI_ABS(index0-index1)!=1) || (saveLevels[index0]!=saveLevels[index1])) {
-                logicalPos=BIDI_MIN(visualMap[start], index0);
-                runs[i+addedRuns].logicalStart=MAKE_INDEX_ODD_PAIR(logicalPos,
-                                            saveLevels[logicalPos]^indexOddBit);
-                runs[i+addedRuns].visualLimit=runs[i].visualLimit;
-                runs[i].visualLimit-=BIDI_ABS(j-start)+1;
-                insertRemove=runs[i].insertRemove&(LRM_AFTER|RLM_AFTER);
-                runs[i+addedRuns].insertRemove=insertRemove;
-                runs[i].insertRemove&=~insertRemove;
-                start=j+step;
-                addedRuns--;
-            }
-        }
-        if(addedRuns) {
-            runs[i+addedRuns]=runs[i];
-        }
-        logicalPos=BIDI_MIN(visualMap[start], visualMap[limit]);
-        runs[i+addedRuns].logicalStart=MAKE_INDEX_ODD_PAIR(logicalPos,
-                                            saveLevels[logicalPos]^indexOddBit);
-    }
-
-  cleanup1:
-    /* restore initial paraLevel */
-    pBiDi->paraLevel^=1;
-  cleanup2:
-    /* restore real text */
-    pBiDi->text=text;
-    pBiDi->length=saveLength;
-    pBiDi->originalLength=length;
-    pBiDi->direction=saveDirection;
-    /* the saved levels should never excess levelsSize, but we check anyway */
-    if(saveLength>pBiDi->levelsSize) {
-        saveLength=pBiDi->levelsSize;
-    }
-    uprv_memcpy(pBiDi->levels, saveLevels, (size_t)saveLength*sizeof(UBiDiLevel));
-    pBiDi->trailingWSStart=saveTrailingWSStart;
-    if(pBiDi->runCount>1) {
-        pBiDi->direction=UBIDI_MIXED;
-    }
-  cleanup3:
-    /* free memory for mapping table and visual text */
-    uprv_free(runsOnlyMemory);
-
-    pBiDi->reorderingMode=UBIDI_REORDER_RUNS_ONLY;
-}
-
-/* ubidi_setPara ------------------------------------------------------------ */
-
-U_CAPI void U_EXPORT2
-ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
-              UBiDiLevel paraLevel, UBiDiLevel *embeddingLevels,
-              UErrorCode *pErrorCode) {
-    UBiDiDirection direction;
-    DirProp *dirProps;
-
-    /* check the argument values */
-    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
-    if(pBiDi==NULL || text==NULL || length<-1 ||
-       (paraLevel>UBIDI_MAX_EXPLICIT_LEVEL && paraLevel<UBIDI_DEFAULT_LTR)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    if(length==-1) {
-        length=u_strlen(text);
-    }
-
-    /* special treatment for RUNS_ONLY mode */
-    if(pBiDi->reorderingMode==UBIDI_REORDER_RUNS_ONLY) {
-        setParaRunsOnly(pBiDi, text, length, paraLevel, pErrorCode);
-        return;
-    }
-
-    /* initialize the UBiDi structure */
-    pBiDi->pParaBiDi=NULL;          /* mark unfinished setPara */
-    pBiDi->text=text;
-    pBiDi->length=pBiDi->originalLength=pBiDi->resultLength=length;
-    pBiDi->paraLevel=paraLevel;
-    pBiDi->direction=paraLevel&1;
-    pBiDi->paraCount=1;
-
-    pBiDi->dirProps=NULL;
-    pBiDi->levels=NULL;
-    pBiDi->runs=NULL;
-    pBiDi->insertPoints.size=0;         /* clean up from last call */
-    pBiDi->insertPoints.confirmed=0;    /* clean up from last call */
-
-    /*
-     * Save the original paraLevel if contextual; otherwise, set to 0.
-     */
-    pBiDi->defaultParaLevel=IS_DEFAULT_LEVEL(paraLevel);
-
-    if(length==0) {
-        /*
-         * For an empty paragraph, create a UBiDi object with the paraLevel and
-         * the flags and the direction set but without allocating zero-length arrays.
-         * There is nothing more to do.
-         */
-        if(IS_DEFAULT_LEVEL(paraLevel)) {
-            pBiDi->paraLevel&=1;
-            pBiDi->defaultParaLevel=0;
-        }
-        pBiDi->flags=DIRPROP_FLAG_LR(paraLevel);
-        pBiDi->runCount=0;
-        pBiDi->paraCount=0;
-        setParaSuccess(pBiDi);          /* mark successful setPara */
-        return;
-    }
-
-    pBiDi->runCount=-1;
-
-    /* allocate paras memory */
-    if(pBiDi->parasMemory)
-        pBiDi->paras=pBiDi->parasMemory;
-    else
-        pBiDi->paras=pBiDi->simpleParas;
-
-    /*
-     * Get the directional properties,
-     * the flags bit-set, and
-     * determine the paragraph level if necessary.
-     */
-    if(getDirPropsMemory(pBiDi, length)) {
-        pBiDi->dirProps=pBiDi->dirPropsMemory;
-        if(!getDirProps(pBiDi)) {
-            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-            return;
-        }
-    } else {
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        return;
-    }
-    dirProps=pBiDi->dirProps;
-    /* the processed length may have changed if UBIDI_OPTION_STREAMING */
-    length= pBiDi->length;
-    pBiDi->trailingWSStart=length;  /* the levels[] will reflect the WS run */
-
-    /* are explicit levels specified? */
-    if(embeddingLevels==NULL) {
-        /* no: determine explicit levels according to the (Xn) rules */\
-        if(getLevelsMemory(pBiDi, length)) {
-            pBiDi->levels=pBiDi->levelsMemory;
-            direction=resolveExplicitLevels(pBiDi, pErrorCode);
-            if(U_FAILURE(*pErrorCode)) {
-                return;
-            }
-        } else {
-            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-            return;
-        }
-    } else {
-        /* set BN for all explicit codes, check that all levels are 0 or paraLevel..UBIDI_MAX_EXPLICIT_LEVEL */
-        pBiDi->levels=embeddingLevels;
-        direction=checkExplicitLevels(pBiDi, pErrorCode);
-        if(U_FAILURE(*pErrorCode)) {
-            return;
-        }
-    }
-
-    /* allocate isolate memory */
-    if(pBiDi->isolateCount<=SIMPLE_ISOLATES_COUNT)
-        pBiDi->isolates=pBiDi->simpleIsolates;
-    else
-        if((int32_t)(pBiDi->isolateCount*sizeof(Isolate))<=pBiDi->isolatesSize)
-            pBiDi->isolates=pBiDi->isolatesMemory;
-        else {
-            if(getInitialIsolatesMemory(pBiDi, pBiDi->isolateCount)) {
-                pBiDi->isolates=pBiDi->isolatesMemory;
-            } else {
-                *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-                return;
-            }
-        }
-    pBiDi->isolateCount=-1;             /* current isolates stack entry == none */
-
-    /*
-     * The steps after (X9) in the UBiDi algorithm are performed only if
-     * the paragraph text has mixed directionality!
-     */
-    pBiDi->direction=direction;
-    switch(direction) {
-    case UBIDI_LTR:
-        /* all levels are implicitly at paraLevel (important for ubidi_getLevels()) */
-        pBiDi->trailingWSStart=0;
-        break;
-    case UBIDI_RTL:
-        /* all levels are implicitly at paraLevel (important for ubidi_getLevels()) */
-        pBiDi->trailingWSStart=0;
-        break;
-    default:
-        /*
-         *  Choose the right implicit state table
-         */
-        switch(pBiDi->reorderingMode) {
-        case UBIDI_REORDER_DEFAULT:
-            pBiDi->pImpTabPair=&impTab_DEFAULT;
-            break;
-        case UBIDI_REORDER_NUMBERS_SPECIAL:
-            pBiDi->pImpTabPair=&impTab_NUMBERS_SPECIAL;
-            break;
-        case UBIDI_REORDER_GROUP_NUMBERS_WITH_R:
-            pBiDi->pImpTabPair=&impTab_GROUP_NUMBERS_WITH_R;
-            break;
-        case UBIDI_REORDER_INVERSE_NUMBERS_AS_L:
-            pBiDi->pImpTabPair=&impTab_INVERSE_NUMBERS_AS_L;
-            break;
-        case UBIDI_REORDER_INVERSE_LIKE_DIRECT:
-            if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) {
-                pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT_WITH_MARKS;
-            } else {
-                pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT;
-            }
-            break;
-        case UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL:
-            if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) {
-                pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS;
-            } else {
-                pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL;
-            }
-            break;
-        default:
-            /* we should never get here */
-            U_ASSERT(FALSE);
-            break;
-        }
-        /*
-         * If there are no external levels specified and there
-         * are no significant explicit level codes in the text,
-         * then we can treat the entire paragraph as one run.
-         * Otherwise, we need to perform the following rules on runs of
-         * the text with the same embedding levels. (X10)
-         * "Significant" explicit level codes are ones that actually
-         * affect non-BN characters.
-         * Examples for "insignificant" ones are empty embeddings
-         * LRE-PDF, LRE-RLE-PDF-PDF, etc.
-         */
-        if(embeddingLevels==NULL && pBiDi->paraCount<=1 &&
-                                   !(pBiDi->flags&DIRPROP_FLAG_MULTI_RUNS)) {
-            resolveImplicitLevels(pBiDi, 0, length,
-                                    GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, 0)),
-                                    GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, length-1)));
-        } else {
-            /* sor, eor: start and end types of same-level-run */
-            UBiDiLevel *levels=pBiDi->levels;
-            int32_t start, limit=0;
-            UBiDiLevel level, nextLevel;
-            DirProp sor, eor;
-
-            /* determine the first sor and set eor to it because of the loop body (sor=eor there) */
-            level=GET_PARALEVEL(pBiDi, 0);
-            nextLevel=levels[0];
-            if(level<nextLevel) {
-                eor=GET_LR_FROM_LEVEL(nextLevel);
-            } else {
-                eor=GET_LR_FROM_LEVEL(level);
-            }
-
-            do {
-                /* determine start and limit of the run (end points just behind the run) */
-
-                /* the values for this run's start are the same as for the previous run's end */
-                start=limit;
-                level=nextLevel;
-                if((start>0) && (dirProps[start-1]==B)) {
-                    /* except if this is a new paragraph, then set sor = para level */
-                    sor=GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, start));
-                } else {
-                    sor=eor;
-                }
-
-                /* search for the limit of this run */
-                while((++limit<length) &&
-                      ((levels[limit]==level) ||
-                       (DIRPROP_FLAG(dirProps[limit])&MASK_BN_EXPLICIT))) {}
-
-                /* get the correct level of the next run */
-                if(limit<length) {
-                    nextLevel=levels[limit];
-                } else {
-                    nextLevel=GET_PARALEVEL(pBiDi, length-1);
-                }
-
-                /* determine eor from max(level, nextLevel); sor is last run's eor */
-                if(NO_OVERRIDE(level)<NO_OVERRIDE(nextLevel)) {
-                    eor=GET_LR_FROM_LEVEL(nextLevel);
-                } else {
-                    eor=GET_LR_FROM_LEVEL(level);
-                }
-
-                /* if the run consists of overridden directional types, then there
-                   are no implicit types to be resolved */
-                if(!(level&UBIDI_LEVEL_OVERRIDE)) {
-                    resolveImplicitLevels(pBiDi, start, limit, sor, eor);
-                } else {
-                    /* remove the UBIDI_LEVEL_OVERRIDE flags */
-                    do {
-                        levels[start++]&=~UBIDI_LEVEL_OVERRIDE;
-                    } while(start<limit);
-                }
-            } while(limit<length);
-        }
-        /* check if we got any memory shortage while adding insert points */
-        if (U_FAILURE(pBiDi->insertPoints.errorCode))
-        {
-            *pErrorCode=pBiDi->insertPoints.errorCode;
-            return;
-        }
-        /* reset the embedding levels for some non-graphic characters (L1), (X9) */
-        adjustWSLevels(pBiDi);
-        break;
-    }
-    /* add RLM for inverse Bidi with contextual orientation resolving
-     * to RTL which would not round-trip otherwise
-     */
-    if((pBiDi->defaultParaLevel>0) &&
-       (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) &&
-       ((pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT) ||
-        (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL))) {
-        int32_t i, j, start, last;
-        UBiDiLevel level;
-        DirProp dirProp;
-        for(i=0; i<pBiDi->paraCount; i++) {
-            last=(pBiDi->paras[i].limit)-1;
-            level=pBiDi->paras[i].level;
-            if(level==0)
-                continue;           /* LTR paragraph */
-            start= i==0 ? 0 : pBiDi->paras[i-1].limit;
-            for(j=last; j>=start; j--) {
-                dirProp=dirProps[j];
-                if(dirProp==L) {
-                    if(j<last) {
-                        while(dirProps[last]==B) {
-                            last--;
-                        }
-                    }
-                    addPoint(pBiDi, last, RLM_BEFORE);
-                    break;
-                }
-                if(DIRPROP_FLAG(dirProp) & MASK_R_AL) {
-                    break;
-                }
-            }
-        }
-    }
-
-    if(pBiDi->reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) {
-        pBiDi->resultLength -= pBiDi->controlCount;
-    } else {
-        pBiDi->resultLength += pBiDi->insertPoints.size;
-    }
-    setParaSuccess(pBiDi);              /* mark successful setPara */
-}
-
-U_CAPI void U_EXPORT2
-ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR) {
-    if(pBiDi!=NULL) {
-        pBiDi->orderParagraphsLTR=orderParagraphsLTR;
-    }
-}
-
-U_CAPI UBool U_EXPORT2
-ubidi_isOrderParagraphsLTR(UBiDi *pBiDi) {
-    if(pBiDi!=NULL) {
-        return pBiDi->orderParagraphsLTR;
-    } else {
-        return FALSE;
-    }
-}
-
-U_CAPI UBiDiDirection U_EXPORT2
-ubidi_getDirection(const UBiDi *pBiDi) {
-    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
-        return pBiDi->direction;
-    } else {
-        return UBIDI_LTR;
-    }
-}
-
-U_CAPI const UChar * U_EXPORT2
-ubidi_getText(const UBiDi *pBiDi) {
-    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
-        return pBiDi->text;
-    } else {
-        return NULL;
-    }
-}
-
-U_CAPI int32_t U_EXPORT2
-ubidi_getLength(const UBiDi *pBiDi) {
-    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
-        return pBiDi->originalLength;
-    } else {
-        return 0;
-    }
-}
-
-U_CAPI int32_t U_EXPORT2
-ubidi_getProcessedLength(const UBiDi *pBiDi) {
-    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
-        return pBiDi->length;
-    } else {
-        return 0;
-    }
-}
-
-U_CAPI int32_t U_EXPORT2
-ubidi_getResultLength(const UBiDi *pBiDi) {
-    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
-        return pBiDi->resultLength;
-    } else {
-        return 0;
-    }
-}
-
-/* paragraphs API functions ------------------------------------------------- */
-
-U_CAPI UBiDiLevel U_EXPORT2
-ubidi_getParaLevel(const UBiDi *pBiDi) {
-    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
-        return pBiDi->paraLevel;
-    } else {
-        return 0;
-    }
-}
-
-U_CAPI int32_t U_EXPORT2
-ubidi_countParagraphs(UBiDi *pBiDi) {
-    if(!IS_VALID_PARA_OR_LINE(pBiDi)) {
-        return 0;
-    } else {
-        return pBiDi->paraCount;
-    }
-}
-
-U_CAPI void U_EXPORT2
-ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex,
-                          int32_t *pParaStart, int32_t *pParaLimit,
-                          UBiDiLevel *pParaLevel, UErrorCode *pErrorCode) {
-    int32_t paraStart;
-
-    /* check the argument values */
-    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
-    RETURN_VOID_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode);
-    RETURN_VOID_IF_BAD_RANGE(paraIndex, 0, pBiDi->paraCount, *pErrorCode);
-
-    pBiDi=pBiDi->pParaBiDi;             /* get Para object if Line object */
-    if(paraIndex) {
-        paraStart=pBiDi->paras[paraIndex-1].limit;
-    } else {
-        paraStart=0;
-    }
-    if(pParaStart!=NULL) {
-        *pParaStart=paraStart;
-    }
-    if(pParaLimit!=NULL) {
-        *pParaLimit=pBiDi->paras[paraIndex].limit;
-    }
-    if(pParaLevel!=NULL) {
-        *pParaLevel=GET_PARALEVEL(pBiDi, paraStart);
-    }
-}
-
-U_CAPI int32_t U_EXPORT2
-ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex,
-                          int32_t *pParaStart, int32_t *pParaLimit,
-                          UBiDiLevel *pParaLevel, UErrorCode *pErrorCode) {
-    int32_t paraIndex;
-
-    /* check the argument values */
-    /* pErrorCode will be checked by the call to ubidi_getParagraphByIndex */
-    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, -1);
-    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1);
-    pBiDi=pBiDi->pParaBiDi;             /* get Para object if Line object */
-    RETURN_IF_BAD_RANGE(charIndex, 0, pBiDi->length, *pErrorCode, -1);
-
-    for(paraIndex=0; charIndex>=pBiDi->paras[paraIndex].limit; paraIndex++);
-    ubidi_getParagraphByIndex(pBiDi, paraIndex, pParaStart, pParaLimit, pParaLevel, pErrorCode);
-    return paraIndex;
-}
-
-U_CAPI void U_EXPORT2
-ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
-                       const void *newContext, UBiDiClassCallback **oldFn,
-                       const void **oldContext, UErrorCode *pErrorCode)
-{
-    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
-    if(pBiDi==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    if( oldFn )
-    {
-        *oldFn = pBiDi->fnClassCallback;
-    }
-    if( oldContext )
-    {
-        *oldContext = pBiDi->coClassCallback;
-    }
-    pBiDi->fnClassCallback = newFn;
-    pBiDi->coClassCallback = newContext;
-}
-
-U_CAPI void U_EXPORT2
-ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context)
-{
-    if(pBiDi==NULL) {
-        return;
-    }
-    if( fn )
-    {
-        *fn = pBiDi->fnClassCallback;
-    }
-    if( context )
-    {
-        *context = pBiDi->coClassCallback;
-    }
-}
-
-U_CAPI UCharDirection U_EXPORT2
-ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c)
-{
-    UCharDirection dir;
-
-    if( pBiDi->fnClassCallback == NULL ||
-        (dir = (*pBiDi->fnClassCallback)(pBiDi->coClassCallback, c)) == U_BIDI_CLASS_DEFAULT )
-    {
-        dir = ubidi_getClass(pBiDi->bdp, c);
-    }
-    if(dir >= U_CHAR_DIRECTION_COUNT) {
-        dir = ON;
-    }
-    return dir;
-}
diff --git a/source/common/ubidi_props.c b/source/common/ubidi_props.c
deleted file mode 100644 (file)
index 7c7a6ce..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2004-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  ubidi_props.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2004dec30
-*   created by: Markus W. Scherer
-*
-*   Low-level Unicode bidi/shaping properties access.
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/uset.h"
-#include "unicode/udata.h" /* UDataInfo */
-#include "ucmndata.h" /* DataHeader */
-#include "udatamem.h"
-#include "uassert.h"
-#include "cmemory.h"
-#include "utrie2.h"
-#include "ubidi_props.h"
-#include "ucln_cmn.h"
-
-struct UBiDiProps {
-    UDataMemory *mem;
-    const int32_t *indexes;
-    const uint32_t *mirrors;
-    const uint8_t *jgArray;
-    const uint8_t *jgArray2;
-
-    UTrie2 trie;
-    uint8_t formatVersion[4];
-};
-
-/* ubidi_props_data.h is machine-generated by genbidi --csource */
-#define INCLUDED_FROM_UBIDI_PROPS_C
-#include "ubidi_props_data.h"
-
-/* UBiDiProps singleton ----------------------------------------------------- */
-
-U_CFUNC const UBiDiProps *
-ubidi_getSingleton() {
-    return &ubidi_props_singleton;
-}
-
-/* set of property starts for UnicodeSet ------------------------------------ */
-
-static UBool U_CALLCONV
-_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 end, uint32_t value) {
-    /* add the start code point to the USet */
-    const USetAdder *sa=(const USetAdder *)context;
-    sa->add(sa->set, start);
-    return TRUE;
-}
-
-U_CFUNC void
-ubidi_addPropertyStarts(const UBiDiProps *bdp, const USetAdder *sa, UErrorCode *pErrorCode) {
-    int32_t i, length;
-    UChar32 c, start, limit;
-
-    const uint8_t *jgArray;
-    uint8_t prev, jg;
-
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-
-    /* add the start code point of each same-value range of the trie */
-    utrie2_enum(&bdp->trie, NULL, _enumPropertyStartsRange, sa);
-
-    /* add the code points from the bidi mirroring table */
-    length=bdp->indexes[UBIDI_IX_MIRROR_LENGTH];
-    for(i=0; i<length; ++i) {
-        c=UBIDI_GET_MIRROR_CODE_POINT(bdp->mirrors[i]);
-        sa->addRange(sa->set, c, c+1);
-    }
-
-    /* add the code points from the Joining_Group array where the value changes */
-    start=bdp->indexes[UBIDI_IX_JG_START];
-    limit=bdp->indexes[UBIDI_IX_JG_LIMIT];
-    jgArray=bdp->jgArray;
-    for(;;) {
-        prev=0;
-        while(start<limit) {
-            jg=*jgArray++;
-            if(jg!=prev) {
-                sa->add(sa->set, start);
-                prev=jg;
-            }
-            ++start;
-        }
-        if(prev!=0) {
-            /* add the limit code point if the last value was not 0 (it is now start==limit) */
-            sa->add(sa->set, limit);
-        }
-        if(limit==bdp->indexes[UBIDI_IX_JG_LIMIT]) {
-            /* switch to the second Joining_Group range */
-            start=bdp->indexes[UBIDI_IX_JG_START2];
-            limit=bdp->indexes[UBIDI_IX_JG_LIMIT2];
-            jgArray=bdp->jgArray2;
-        } else {
-            break;
-        }
-    }
-
-    /* add code points with hardcoded properties, plus the ones following them */
-
-    /* (none right now) */
-}
-
-/* property access functions ------------------------------------------------ */
-
-U_CFUNC int32_t
-ubidi_getMaxValue(const UBiDiProps *bdp, UProperty which) {
-    int32_t max;
-
-    if(bdp==NULL) {
-        return -1;
-    }
-
-    max=bdp->indexes[UBIDI_MAX_VALUES_INDEX];
-    switch(which) {
-    case UCHAR_BIDI_CLASS:
-        return (max&UBIDI_CLASS_MASK);
-    case UCHAR_JOINING_GROUP:
-        return (max&UBIDI_MAX_JG_MASK)>>UBIDI_MAX_JG_SHIFT;
-    case UCHAR_JOINING_TYPE:
-        return (max&UBIDI_JT_MASK)>>UBIDI_JT_SHIFT;
-    case UCHAR_BIDI_PAIRED_BRACKET_TYPE:
-        return (max&UBIDI_BPT_MASK)>>UBIDI_BPT_SHIFT;
-    default:
-        return -1; /* undefined */
-    }
-}
-
-U_CAPI UCharDirection
-ubidi_getClass(const UBiDiProps *bdp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
-    return (UCharDirection)UBIDI_GET_CLASS(props);
-}
-
-U_CFUNC UBool
-ubidi_isMirrored(const UBiDiProps *bdp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
-    return (UBool)UBIDI_GET_FLAG(props, UBIDI_IS_MIRRORED_SHIFT);
-}
-
-static UChar32
-getMirror(const UBiDiProps *bdp, UChar32 c, uint16_t props) {
-    int32_t delta=UBIDI_GET_MIRROR_DELTA(props);
-    if(delta!=UBIDI_ESC_MIRROR_DELTA) {
-        return c+delta;
-    } else {
-        /* look for mirror code point in the mirrors[] table */
-        const uint32_t *mirrors;
-        uint32_t m;
-        int32_t i, length;
-        UChar32 c2;
-
-        mirrors=bdp->mirrors;
-        length=bdp->indexes[UBIDI_IX_MIRROR_LENGTH];
-
-        /* linear search */
-        for(i=0; i<length; ++i) {
-            m=mirrors[i];
-            c2=UBIDI_GET_MIRROR_CODE_POINT(m);
-            if(c==c2) {
-                /* found c, return its mirror code point using the index in m */
-                return UBIDI_GET_MIRROR_CODE_POINT(mirrors[UBIDI_GET_MIRROR_INDEX(m)]);
-            } else if(c<c2) {
-                break;
-            }
-        }
-
-        /* c not found, return it itself */
-        return c;
-    }
-}
-
-U_CFUNC UChar32
-ubidi_getMirror(const UBiDiProps *bdp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
-    return getMirror(bdp, c, props);
-}
-
-U_CFUNC UBool
-ubidi_isBidiControl(const UBiDiProps *bdp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
-    return (UBool)UBIDI_GET_FLAG(props, UBIDI_BIDI_CONTROL_SHIFT);
-}
-
-U_CFUNC UBool
-ubidi_isJoinControl(const UBiDiProps *bdp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
-    return (UBool)UBIDI_GET_FLAG(props, UBIDI_JOIN_CONTROL_SHIFT);
-}
-
-U_CFUNC UJoiningType
-ubidi_getJoiningType(const UBiDiProps *bdp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
-    return (UJoiningType)((props&UBIDI_JT_MASK)>>UBIDI_JT_SHIFT);
-}
-
-U_CFUNC UJoiningGroup
-ubidi_getJoiningGroup(const UBiDiProps *bdp, UChar32 c) {
-    UChar32 start, limit;
-
-    start=bdp->indexes[UBIDI_IX_JG_START];
-    limit=bdp->indexes[UBIDI_IX_JG_LIMIT];
-    if(start<=c && c<limit) {
-        return (UJoiningGroup)bdp->jgArray[c-start];
-    }
-    start=bdp->indexes[UBIDI_IX_JG_START2];
-    limit=bdp->indexes[UBIDI_IX_JG_LIMIT2];
-    if(start<=c && c<limit) {
-        return (UJoiningGroup)bdp->jgArray2[c-start];
-    }
-    return U_JG_NO_JOINING_GROUP;
-}
-
-U_CFUNC UBidiPairedBracketType
-ubidi_getPairedBracketType(const UBiDiProps *bdp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
-    return (UBidiPairedBracketType)((props&UBIDI_BPT_MASK)>>UBIDI_BPT_SHIFT);
-}
-
-U_CFUNC UChar32
-ubidi_getPairedBracket(const UBiDiProps *bdp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
-    if((props&UBIDI_BPT_MASK)==0) {
-        return c;
-    } else {
-        return getMirror(bdp, c, props);
-    }
-}
-
-/* public API (see uchar.h) ------------------------------------------------- */
-
-U_CFUNC UCharDirection
-u_charDirection(UChar32 c) {   
-    return ubidi_getClass(&ubidi_props_singleton, c);
-}
-
-U_CFUNC UBool
-u_isMirrored(UChar32 c) {
-    return ubidi_isMirrored(&ubidi_props_singleton, c);
-}
-
-U_CFUNC UChar32
-u_charMirror(UChar32 c) {
-    return ubidi_getMirror(&ubidi_props_singleton, c);
-}
-
-U_STABLE UChar32 U_EXPORT2
-u_getBidiPairedBracket(UChar32 c) {
-    return ubidi_getPairedBracket(&ubidi_props_singleton, c);
-}
index 4312230..69e8853 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ubidi_props.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 685d2b1..8d6856d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (C) 1999-2016, International Business Machines
 
 static const UVersionInfo ubidi_props_dataVersion={9,0,0,0};
 
-static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x5df0,0x5a78,0x1a,0x620,0x8c0,0x10ac0,0x10af0,0,0,0,0,0,0,0,0x5802b6};
+static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x6060,0x5ce8,0x1a,0x620,0x8c0,0x10ac0,0x10af0,0,0,0,0,0,0,0,0x5802b6};
 
-static const uint16_t ubidi_props_trieIndex[11572]={
+static const uint16_t ubidi_props_trieIndex[11884]={
 0x36a,0x372,0x37a,0x382,0x39a,0x3a2,0x3aa,0x3b2,0x38a,0x392,0x38a,0x392,0x38a,0x392,0x38a,0x392,
 0x38a,0x392,0x38a,0x392,0x3b8,0x3c0,0x3c8,0x3d0,0x3d8,0x3e0,0x3dc,0x3e4,0x3ec,0x3f4,0x3ef,0x3f7,
 0x38a,0x392,0x38a,0x392,0x3ff,0x407,0x38a,0x392,0x38a,0x392,0x38a,0x392,0x40d,0x415,0x41d,0x425,
 0x42d,0x435,0x43d,0x445,0x44b,0x453,0x45b,0x463,0x46b,0x473,0x479,0x481,0x489,0x491,0x499,0x4a1,
-0x4ad,0x4a9,0x4b5,0x41f,0x41f,0x4c5,0x4cd,0x4bd,0x4d5,0x4d7,0x4df,0x4e7,0x4ef,0x4f0,0x4f8,0x500,
-0x508,0x4f0,0x510,0x515,0x508,0x4f0,0x51d,0x525,0x4ef,0x52a,0x532,0x4e7,0x537,0x38a,0x53f,0x543,
-0x54b,0x54c,0x554,0x55c,0x4ef,0x564,0x56c,0x4e7,0x4ef,0x38a,0x4f8,0x4e7,0x38a,0x38a,0x572,0x38a,
-0x38a,0x578,0x580,0x38a,0x38a,0x584,0x58c,0x38a,0x590,0x597,0x38a,0x59f,0x5a7,0x5ae,0x536,0x38a,
-0x38a,0x5b6,0x5be,0x5c6,0x5ce,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x5d6,0x38a,0x5de,0x38a,0x38a,0x38a,
-0x5e6,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x5ee,0x38a,0x38a,0x38a,0x5f6,0x5f6,0x4fc,0x4fc,0x38a,0x5fc,0x604,0x5de,
-0x61a,0x60c,0x60c,0x622,0x629,0x612,0x38a,0x38a,0x38a,0x631,0x639,0x38a,0x38a,0x38a,0x63b,0x643,
-0x64b,0x38a,0x652,0x65a,0x38a,0x662,0x38a,0x38a,0x66a,0x66d,0x537,0x675,0x401,0x67d,0x38a,0x684,
-0x38a,0x689,0x38a,0x38a,0x38a,0x38a,0x68f,0x697,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x3d8,0x69f,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x6a7,0x6af,0x6b3,
-0x6cb,0x6d1,0x6bb,0x6c3,0x6d9,0x6e1,0x6e5,0x5b1,0x6ed,0x6f5,0x6fd,0x38a,0x705,0x643,0x643,0x643,
-0x715,0x71d,0x725,0x72d,0x732,0x73a,0x742,0x70d,0x74a,0x752,0x38a,0x758,0x75f,0x643,0x643,0x765,
-0x643,0x562,0x76a,0x643,0x772,0x38a,0x38a,0x640,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,
-0x643,0x643,0x643,0x643,0x643,0x77a,0x643,0x643,0x643,0x643,0x643,0x780,0x643,0x643,0x788,0x790,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x643,0x643,0x643,0x7a0,0x7a7,0x7af,0x798,
-0x7bf,0x7c7,0x7cf,0x7d6,0x7de,0x7e6,0x7ed,0x7b7,0x643,0x643,0x643,0x7f5,0x7fb,0x801,0x809,0x80e,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x815,0x38a,0x38a,0x38a,0x81d,0x38a,0x38a,0x38a,0x3d8,
-0x825,0x82d,0x834,0x38a,0x83c,0x643,0x643,0x646,0x643,0x643,0x643,0x643,0x643,0x643,0x843,0x849,
-0x859,0x851,0x38a,0x38a,0x861,0x5e6,0x38a,0x3b1,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x81c,
-0x3bf,0x38a,0x838,0x869,0x38a,0x871,0x80e,0x38a,0x38a,0x38a,0x38a,0x879,0x38a,0x38a,0x63b,0x3b0,
+0x4ad,0x4a9,0x4b5,0x4bd,0x41f,0x4cd,0x4d5,0x4c5,0x4dd,0x4df,0x4e7,0x4ef,0x4f7,0x4f8,0x500,0x508,
+0x510,0x4f8,0x518,0x51d,0x510,0x4f8,0x525,0x52d,0x4f7,0x535,0x53d,0x4ef,0x542,0x38a,0x54a,0x54e,
+0x556,0x557,0x55f,0x567,0x4f7,0x56f,0x577,0x4ef,0x57f,0x581,0x500,0x4ef,0x38a,0x38a,0x589,0x38a,
+0x38a,0x58f,0x597,0x38a,0x38a,0x59b,0x5a3,0x38a,0x5a7,0x5ae,0x38a,0x5b6,0x5be,0x5c5,0x541,0x38a,
+0x38a,0x5cd,0x5d5,0x5dd,0x5e5,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x5ed,0x38a,0x5f5,0x38a,0x38a,0x38a,
+0x5fd,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x605,0x38a,0x38a,0x38a,0x60d,0x60d,0x504,0x504,0x38a,0x613,0x61b,0x5f5,
+0x631,0x623,0x623,0x639,0x640,0x629,0x38a,0x38a,0x38a,0x648,0x650,0x38a,0x38a,0x38a,0x652,0x65a,
+0x662,0x38a,0x669,0x671,0x38a,0x679,0x38a,0x38a,0x681,0x684,0x542,0x68c,0x401,0x694,0x38a,0x69b,
+0x38a,0x6a0,0x38a,0x38a,0x38a,0x38a,0x6a6,0x6ae,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x3d8,0x6b6,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x6be,0x6c6,0x6ca,
+0x6e2,0x6e8,0x6d2,0x6da,0x6f0,0x6f8,0x6fc,0x5c8,0x704,0x70c,0x714,0x38a,0x71c,0x65a,0x65a,0x65a,
+0x72c,0x734,0x73c,0x744,0x749,0x751,0x759,0x724,0x761,0x769,0x38a,0x76f,0x776,0x65a,0x65a,0x65a,
+0x65a,0x56d,0x77c,0x65a,0x784,0x38a,0x38a,0x657,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x78c,0x65a,0x65a,0x65a,0x65a,0x65a,0x792,0x65a,0x65a,0x79a,0x7a2,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x65a,0x65a,0x65a,0x65a,0x7b2,0x7b9,0x7c1,0x7aa,
+0x7d1,0x7d9,0x7e1,0x7e8,0x7f0,0x7f8,0x7ff,0x7c9,0x65a,0x65a,0x65a,0x807,0x80d,0x813,0x81b,0x820,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x827,0x38a,0x38a,0x38a,0x82f,0x38a,0x38a,0x38a,0x3d8,
+0x837,0x83f,0x76c,0x38a,0x842,0x65a,0x65a,0x65d,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x849,0x84f,
+0x85f,0x857,0x38a,0x38a,0x867,0x5fd,0x38a,0x3b1,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x65a,0x82e,
+0x3bf,0x38a,0x86f,0x877,0x38a,0x87f,0x820,0x38a,0x38a,0x38a,0x38a,0x887,0x38a,0x38a,0x652,0x3b0,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
@@ -54,7 +54,7 @@ static const uint16_t ubidi_props_trieIndex[11572]={
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x643,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x65a,0x65a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
@@ -98,10 +98,10 @@ static const uint16_t ubidi_props_trieIndex[11572]={
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x838,0x643,0x562,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x880,0x38a,0x38a,0x885,0x54c,0x38a,0x38a,0x592,0x643,0x63a,0x38a,0x38a,0x88d,0x38a,0x38a,0x38a,
-0x895,0x89c,0x60c,0x8a4,0x38a,0x38a,0x8ab,0x8b3,0x38a,0x8ba,0x8c1,0x38a,0x4d5,0x8c6,0x38a,0x4ee,
-0x38a,0x8ce,0x8d6,0x4f0,0x38a,0x8da,0x4ef,0x8e2,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x8e9,
+0x38a,0x38a,0x38a,0x38a,0x86f,0x65a,0x56d,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x88e,0x38a,0x38a,0x893,0x557,0x38a,0x38a,0x5a9,0x65a,0x651,0x38a,0x38a,0x89b,0x38a,0x38a,0x38a,
+0x8a3,0x8aa,0x623,0x8b2,0x38a,0x38a,0x8b9,0x8c1,0x38a,0x8c8,0x8cf,0x38a,0x4dd,0x8d4,0x38a,0x4f6,
+0x38a,0x8dc,0x8e4,0x4f8,0x38a,0x8e8,0x4f7,0x8f0,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x8f7,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
@@ -141,100 +141,100 @@ static const uint16_t ubidi_props_trieIndex[11572]={
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x8fd,0x8f1,0x8f5,0x489,0x489,0x489,0x489,0x489,
-0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x905,0x489,0x489,0x489,0x489,0x90d,0x911,
-0x919,0x921,0x925,0x92d,0x489,0x489,0x489,0x931,0x939,0x37a,0x941,0x949,0x38a,0x38a,0x38a,0x951,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x90b,0x8ff,0x903,0x489,0x489,0x489,0x489,0x489,
+0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x913,0x489,0x489,0x489,0x489,0x91b,0x91f,
+0x927,0x92f,0x933,0x93b,0x489,0x489,0x489,0x93f,0x947,0x37a,0x94f,0x957,0x38a,0x38a,0x38a,0x95f,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0xe28,0xe28,0xe68,0xea8,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xee0,0xf20,0xf60,0xf70,0xfb0,0xfbc,
 0xe28,0xe28,0xffc,0xe28,0xe28,0xe28,0x1034,0x1074,0x10b4,0x10f4,0x112c,0x116c,0x11ac,0x11e4,0x1224,0x1264,
-0xa40,0xa80,0xac0,0xafa,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb23,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb60,0x1a0,0x1a0,0xb95,0xbd5,0xc15,0xc55,0xc95,0xcd5,
+0xa40,0xa80,0xac0,0xafa,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb25,0x1a0,0x1a0,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb62,0x1a0,0x1a0,0xb97,0xbd7,0xc17,0xc57,0xc97,0xcd7,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
-0xd55,0xd65,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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0xd57,0xd67,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,0xd17,
 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,0xd15,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
 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,0xd15,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x959,0x38a,0x643,0x643,0x961,0x5e6,0x38a,0x4e8,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x969,0x38a,0x38a,0x38a,0x970,0x38a,0x38a,0x38a,0x38a,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x967,0x38a,0x65a,0x65a,0x96f,0x5fd,0x38a,0x4f0,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x977,0x38a,0x38a,0x38a,0x97e,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x978,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
-0x980,0x984,0x41f,0x41f,0x41f,0x41f,0x994,0x98c,0x41f,0x99c,0x41f,0x41f,0x9a4,0x9aa,0x41f,0x41f,
+0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x986,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
+0x98e,0x992,0x41f,0x41f,0x41f,0x41f,0x9a2,0x99a,0x41f,0x9aa,0x41f,0x41f,0x9b2,0x9b8,0x41f,0x41f,
 0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
-0x41f,0x41f,0x41f,0x9b2,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
-0x4ef,0x8ad,0x9ba,0x9c1,0x401,0x9c4,0x38a,0x38a,0x4d5,0x9cc,0x38a,0x9d2,0x401,0x9d7,0x5f8,0x38a,
-0x38a,0x9df,0x38a,0x38a,0x38a,0x38a,0x81d,0x9e7,0x401,0x4f0,0x54b,0x9ee,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x8ad,0x9f6,0x38a,0x38a,0x9fa,0xa02,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa06,0xa0e,0x38a,
-0x38a,0xa16,0x54b,0x832,0x38a,0xa1e,0x38a,0x38a,0x5d6,0xa26,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x41f,0x41f,0x41f,0x9c0,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
+0x4f7,0x8bb,0x9c8,0x9cf,0x401,0x9d2,0x38a,0x38a,0x4dd,0x9da,0x38a,0x9e0,0x401,0x9e5,0x60f,0x38a,
+0x38a,0x9ed,0x38a,0x38a,0x38a,0x38a,0x82f,0x9f5,0x401,0x4f8,0x556,0x9fc,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x8bb,0xa04,0x38a,0x38a,0xa08,0xa10,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa14,0xa1c,0x38a,
+0x38a,0xa24,0x556,0xa2c,0x38a,0xa32,0x38a,0x38a,0x5ed,0xa3a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa42,0xa46,0xa4e,0x38a,0xa55,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa5c,0x38a,0x38a,0xa64,0xa6a,
+0x38a,0x38a,0x38a,0xa70,0xa78,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa7c,0x38a,0xa82,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa2a,0x38a,0x38a,0xa32,0xa38,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa3e,0x38a,0xa44,0x38a,0x38a,0x38a,
+0x38a,0xa88,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa4a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x511,0xa90,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0xa97,0xa9f,0xaa5,0x38a,0x38a,0x65a,0x65a,0xaad,0x38a,0x38a,0x38a,0x38a,0x38a,0x65a,
+0x65a,0xab5,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xabb,0x38a,0xac2,
+0x38a,0xabe,0x38a,0xac5,0x38a,0xacd,0xad1,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x3d8,0xad9,0x3d8,0xae0,0xae7,0xaef,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x509,0xa52,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0xa59,0xa61,0xa67,0x38a,0x38a,0x643,0x643,0xa6f,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x643,0x767,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xaf7,0xaff,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa71,0x38a,0xa78,0x38a,0xa74,
-0x38a,0xa7b,0x38a,0xa83,0xa87,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x3d8,0xa8f,0x3d8,0xa96,0xa9d,0xaa5,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0xaad,0xab5,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0xabd,0x41f,0xac5,0xac5,0xacc,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0xb07,0x41f,0xb0f,
+0xb0f,0xb16,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
 0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
-0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
-0x41f,0x41f,0x41f,0x41f,0x41f,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0xad4,0x41f,0x41f,0x41f,
-0x41f,0x41f,0x41f,0x41f,0x41f,0x643,0xadc,0x643,0x643,0x646,0xae1,0xae5,0x843,0xaed,0x38a,0x38a,
-0xaf3,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x643,0x643,
-0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,
-0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x768,0xafb,0x643,0x643,0x643,
-0x646,0x643,0x643,0x830,0x38a,0xadc,0x643,0xb03,0x643,0xb0b,0x845,0x38a,0x38a,0xb1b,0xb23,0xb2b,
-0x38a,0x844,0x38a,0x5e6,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0xb1e,0x41f,
+0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x65a,0xb26,0x65a,0x65a,0x65d,0xb2b,0xb2f,0x849,0xb37,
+0x38a,0x38a,0xb3d,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x76d,0x38a,0x38a,0x38a,0x38a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
+0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0xb45,0xb4d,0x65a,
+0x65a,0x65a,0x65d,0x65a,0x65a,0xb45,0x38a,0xb26,0x65a,0xb55,0x65a,0xb5d,0x84b,0x38a,0x38a,0xb26,
+0xb61,0xb69,0x65f,0x65c,0x38a,0xb71,0x56d,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0xb13,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xb79,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0xb13,0xb3b,0xb33,0xb33,0xb33,0xb3c,0xb3c,0xb3c,0xb3c,0x3d8,0x3d8,0x3d8,
-0x3d8,0x3d8,0x3d8,0x3d8,0xb44,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,
-0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,
-0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,
-0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,
-0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0x369,0x369,0x369,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xb79,0xb89,0xb81,0xb81,0xb81,0xb8a,0xb8a,0xb8a,0xb8a,0x3d8,
+0x3d8,0x3d8,0x3d8,0x3d8,0x3d8,0x3d8,0xb92,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,
+0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,
+0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,
+0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,
+0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0x369,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,
@@ -319,6 +319,8 @@ static const uint16_t ubidi_props_trieIndex[11572]={
 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,1,1,1,0xb1,0xb1,0xb1,
+1,1,1,1,0xd,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,1,1,
 1,1,1,1,0xb1,0xb1,5,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,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,
@@ -346,400 +348,417 @@ static const uint16_t ubidi_props_trieIndex[11572]={
 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,0,0,
+0,0,0,0,0,4,0,0,0,0,0,0,0,0,0x11,0x11,
+0x11,0x11,0x11,0x11,0,0,0,0,0,0,0,0,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,0,0xb1,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,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,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,
-0,0,0,0,0,0,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,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,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,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,0xb1,0xb1,0xb1,0,0xb1,0,
+0,0,0,0,0,0,0,0,0,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,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,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,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,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,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,0x11,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,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x11,
+0x11,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,0,0xb1,0xb1,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,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,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+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,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,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,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,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,
+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,0,0,0,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,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,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,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,
 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,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,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+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,
-0,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,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,0,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,0,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,
-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,
+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,0,0,0,0,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,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
+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,0,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,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,0,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,0xb1,0xb1,0xb1,0xb1,0xb1,0,
-0xb1,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,0,0,0,0,
-0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0,0,0,0xb1,0,0xb1,
-0xb1,0xb1,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,0xb1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,
-0xb1,0,0,0,0xb1,0xb1,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,0xb1,0xb1,0xb1,0xb1,0xb1,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,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,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,
-0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0xa,0xa,0,0xa,0xa,0xa,0xa,
-6,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,9,0xb2,0xb2,0xb2,0xb2,
-0xb2,0x12,0x814,0x815,0x813,0x816,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,2,0,0,0,
-2,2,2,2,2,2,3,3,0xa,0x310a,0xf20a,0,9,9,9,9,
-9,9,9,9,9,9,9,0xb2,0x412,0x432,0x8a0,0x8a1,0xa,0xa,0xa,0xa,
-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,
-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,
-0xb1,0xb1,0xb1,0xb1,0xa,0xa,0,0xa,0xa,0xa,0xa,0,0xa,0xa,0,0,
-0,0,0,0,0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,0,
-0,0,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0,0xa,0,0xa,0,0,
-0,0,4,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,
-0,0,0,0,0x100a,0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,
-0xa,0xa,0,0,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,0xa,0xa,0xa,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
-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,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,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,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,
-0x100a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0x100a,0x100a,0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
-0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
-0x300a,0xf00a,0x300a,0xf00a,0x100a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,
-0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0x900a,0x100a,
-0x900a,0x900a,0x100a,0x900a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
-0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0x300a,0xf00a,0x300a,0xf00a,0x900a,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0x300a,0xf00a,
-0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,
+0,0,0xb1,0,0xb1,0xb1,0,0,0,0xb1,0,0xb1,0xb1,0xb1,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,0xb1,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,0xb1,0,0,0,
+0xb1,0xb1,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,0x11,0x11,
+0x11,0x11,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,0,
+0,0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,0,0,0,0,
+0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0xa,0xa,0,0xa,0xa,0xa,0xa,6,0x310a,0xf20a,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,9,0xb2,0xb2,0xb2,0xb2,0xb2,0x12,0x814,0x815,
+0x813,0x816,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,2,0,0,0,2,2,2,2,
+2,2,3,3,0xa,0x310a,0xf20a,0,9,9,9,9,9,9,9,9,
+9,9,9,0xb2,0x412,0x432,0x8a0,0x8a1,0xa,0xa,0xa,0xa,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,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,
+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,0xb1,0xb1,0xb1,0xb1,
+0xa,0xa,0,0xa,0xa,0xa,0xa,0,0xa,0xa,0,0,0,0,0,0,
+0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,
+0xa,0xa,0xa,0xa,0,0xa,0,0xa,0,0xa,0,0,0,0,4,0,
+0,0,0,0,0,0,0,0,0,0,0xa,0xa,0,0,0,0,
+0x100a,0xa,0xa,0xa,0xa,0,0,0,0,0,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,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,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,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,0,0,0,0,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,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,
-0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0x100a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a,0xa,0x300a,0xf00a,0xa,0x500a,0x100a,0xd00a,0xa,0xa,
-0xa,0xa,0xa,0x100a,0x100a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x100a,0x300a,0xf00a,0xa,
-0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,
+0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,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,0x100a,
+0x100a,0x100a,0x100a,0xa,0x100a,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,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,
+0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,
+0x100a,0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,
+0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
+0x100a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0x900a,0x100a,0x900a,0x900a,0x100a,0x900a,
+0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0xa,0xa,0xa,
+0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,
+0xf00a,0x900a,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
+0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,
 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0x100a,0xa,0x100a,0x100a,0x100a,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0x100a,0x900a,0x100a,0x100a,0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0xa,0xa,
-0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x710a,0x320a,0xf10a,
-0xb20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,
-0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0x100a,
-0x300a,0xf00a,0xa,0xa,0xa,0x100a,0xa,0xa,0xa,0xa,0x100a,0x300a,0xf00a,0x300a,0xf00a,0xa,
-0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0x900a,
-0x900a,0x900a,0x100a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0xa,0xa,0xa,0xa,0x100a,
-0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x100a,0xa,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,
-0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,
-0x100a,0xa,0x100a,0xa,0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,
-0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,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,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,0,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,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,2,2,2,2,2,2,2,2,
+2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+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,0xa,0xa,0xa,
-0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,
-0xa,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,0x100a,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,
-0xa,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,
-0x100a,0x100a,0x100a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,
-0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x100a,0xa,0xa,0x300a,0xf00a,
-0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0x100a,0x100a,0x100a,
-0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,
-0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,
-0x100a,0xa,0x900a,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,
+0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a,0xa,
+0x300a,0xf00a,0xa,0x500a,0x100a,0xd00a,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0x300a,0xf00a,0xa,
+0xa,0xa,0xa,0xa,0x100a,0x300a,0xf00a,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x310a,0xf20a,
+0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x100a,0x100a,0x100a,0xa,0xa,
+0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x900a,0x100a,0x100a,
+0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,
+0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x710a,0x320a,0xf10a,0xb20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,
+0xf20a,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,
+0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0xa,0xa,0xa,0x100a,0xa,0xa,
+0xa,0xa,0x100a,0x300a,0xf00a,0x300a,0xf00a,0xa,0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,
+0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0x900a,0x900a,0x900a,0x100a,0xa,0xa,0xa,0xa,0xa,
+0x300a,0xf00a,0x100a,0xa,0xa,0xa,0xa,0x100a,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x100a,
+0xa,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,
+0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,
+0x100a,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0x100a,0xa,0x100a,0xa,0xa,0x100a,0xa,0x300a,
+0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,
+0x300a,0xf00a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,
+0x100a,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0x300a,
+0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x100a,0x100a,0x100a,
+0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,
+0x100a,0x300a,0xf00a,0x100a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0x300a,
+0xf00a,0x100a,0x100a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,
+0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,
+0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x900a,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,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,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
-0,0,0,0,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,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,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,
+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,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,0,0,0,0,0,0,0,0,
+0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
 0,0,0,0,0,0,0,0,0,0,0,0,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,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,
+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,
 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,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,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,0xb1,0xb1,
-0xb1,0xb1,0,0,0xa,0,0,0,0,0,0xa,0xa,0,0,0,0,
-0,0xa,0xa,0xa,9,0xa,0xa,0xa,0xa,0,0,0,0x310a,0xf20a,0x310a,0xf20a,
-0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,
-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,0xb1,0xb1,0xa,
-0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0xa,0xa,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,0,0,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,0xb1,0xb1,0xb1,0xb1,0,0,0xa,0,0,0,
+0,0,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa,9,0xa,0xa,0xa,
+0xa,0,0,0,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,
+0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0xa,0xa,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,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,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,
+0,0,0,0,0,0xb1,0xb1,0xa,0xa,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,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,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xa,0xa,0,0,0,0,0,0,0,0,0xa,0,0,0,
+0,0,0,0,0,0,0,0,0xa,0xa,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,0,0,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,0xb1,0,0,0,0,0xb1,
+0,0,0,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xa,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,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,0xb1,0,
+0,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,0xb1,0xb1,0,
+0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,
+4,4,0,0,0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0,0xa,0xa,0xa,0xa,
+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,0xb1,0xb1,0,0xa,0xa,0xa,0xa,0,0,0,0,
-0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,
-0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-0x40,0x40,0x60,0,0xa,0xa,0xa,0xa,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,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,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,0xb1,
+0,0,0,0,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,0xb1,0,0,0xb1,0xb1,
-0xb1,0xb1,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,
-0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0xb1,0xb1,0,
-0,0,0,0,0,0,0,0,0,0,0,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,0xb1,0,0xb1,0xb1,0xb1,0,0,0xb1,
-0xb1,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,
-0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1,0,
-0,0,0,0,0,0,0,0,0,0xb1,0,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,1,1,1,1,1,1,1,1,1,3,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,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,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,1,0xb1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+0,0,0,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,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0,0,0,
+0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,
+0,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,
+0,0,0,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,
+0xb1,0,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0xb1,0xb1,
+0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,
+0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,
+0,0xb1,0,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,1,1,1,1,
+1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,0xd,0xd,0xd,0xd,
+0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,1,0xb1,1,0xd,0xd,0xd,0xd,
 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xd,0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
-0x12,0x12,0x12,0x12,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xa,0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,
-0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,6,0xa,6,0,0xa,6,0xa,0xa,0xa,0x310a,0xf20a,0x310a,
-0xf20a,0x310a,0xf20a,4,0xa,0xa,3,3,0x300a,0xf00a,0xa,0,0xa,4,4,0xa,
-0,0,0,0,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xd,0xd,0xd,0xd,
+0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x12,0x12,0x12,0x12,
+0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xd,0xd,0xd,0xd,
+0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xd,0xd,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,6,0xa,6,0,
+0xa,6,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,4,0xa,0xa,3,3,
+0x300a,0xf00a,0xa,0,0xa,4,4,0xa,0,0,0,0,0xd,0xd,0xd,0xd,
 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xb2,0,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,0x310a,0xf20a,0xa,0x310a,0xf20a,0xa,0xa,0,0,0,0,0,0,
+0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xb2,0,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,4,4,0xa,0xa,0xa,4,4,0,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xaa,0xaa,0xaa,
-0xa,0xa,0x12,0x12,0,0xa,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0x510a,0xa,0xd20a,0xa,0x310a,0xf20a,0xa,0x310a,0xf20a,
+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,4,4,0xa,0xa,
+0xa,4,4,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0x12,0x12,0x12,0x12,
+0x12,0x12,0x12,0x12,0x12,0xaa,0xaa,0xaa,0xa,0xa,0x12,0x12,0,0xa,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,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0,0,0,0,0xb1,2,2,2,2,2,2,2,2,2,2,2,
+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,0,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0xb1,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,0,0,0,0,
-0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,
+2,2,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,0,0xb1,0xb1,
+0xb1,0xb1,0xb1,0,0,0,0,0,1,1,1,1,1,1,1,1,
 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xa,
-1,0xb1,0xb1,0xb1,1,0xb1,0xb1,1,1,1,1,1,0xb1,0xb1,0xb1,0xb1,
+1,1,1,1,1,1,1,0xa,1,0xb1,0xb1,0xb1,1,0xb1,0xb1,1,
+1,1,1,1,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,1,1,1,1,0xb1,0xb1,0xb1,1,1,1,1,0xb1,
-0x41,0x81,1,1,0x81,0xb1,0xb1,1,1,1,1,0x41,0x41,0x41,0x41,0x81,
+0xb1,0xb1,0xb1,1,1,1,1,0xb1,0x41,0x81,1,1,0x81,0xb1,0xb1,1,
+1,1,1,0x41,0x41,0x41,0x41,0x81,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x81,1,0x81,
+1,0x81,0x81,1,1,0x61,0x81,0x81,0x81,0x81,0x81,0x41,0x41,0x41,0x41,0x61,
+0x41,0x41,0x41,0x41,0x41,0x81,0x41,0x41,1,1,1,1,1,1,1,1,
 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-0x41,0x41,0x41,0x41,0x41,0x81,1,0x81,1,0x81,0x81,1,1,0x61,0x81,0x81,
-0x81,0x81,0x81,0x41,0x41,0x41,0x41,0x61,0x41,0x41,0x41,0x41,0x41,0x81,0x41,0x41,
+1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x41,0x81,0x41,0x81,0x81,0x81,0x41,0x41,
+0x41,0x81,0x41,0x41,0x81,0x41,0x81,0x81,0x41,0x81,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,0x81,0x81,0x81,0x81,0x41,0x41,1,
 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0x41,0x81,0x41,0x81,0x81,0x81,0x41,0x41,0x41,0x81,0x41,0x41,0x81,0x41,0x81,0x81,
-0x41,0x81,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,0x81,0x81,0x81,0x81,0x41,0x41,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,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,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,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,0,0,0,0,0,0,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,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,0,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,0xa0,0,0,0,0,0,0,0,0,0,0xb1,
+0xb1,0xb1,0xb1,0xb1,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,0,
-0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0xa0,0,0,
-0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,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,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,0,0,0xb1,0xb1,0xb1,0,0,0xb1,0,0xb1,0xb1,0,0,0,0,
+0,0,0xb1,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,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,0,0,0,0,0,0,0,0,0,0xb1,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,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,0,0,0xb1,0xb1,0xb1,0,0,
-0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0xb1,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,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,0xb1,0xb1,0,0xb1,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,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,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,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,0xb1,0xb1,0,0,
-0,0,0,0,0xb1,0xb1,0,0xb1,0xb1,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,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,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,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,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xa0,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,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,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,
+0,0,0,0,0,0,0,0,0,0x11,0x11,0x11,0x11,0x11,0x11,0,
+0,0x11,0x11,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0x11,0x11,0x11,0x11,0x11,
+0x11,0,0,0x11,0x11,0x11,0x11,0,0,0,0,0,0,0,0,0x11,
+0,0,0,0,0,0,0,0,0,0x11,0x11,0x11,0x11,0x11,0x11,0,
+0,0x11,0x11,0x11,0,0,0,0,0,0,0,0,0,0,0x11,0x11,
+0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0x11,0x11,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,0xb2,0xb2,0xb2,0xb2,0,0,0,0,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,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,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,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,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,
-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,0,0,0,0x100a,
+0,0x11,0x11,0x11,0x11,0x11,0x11,0,0,0,0x11,0,0x11,0x11,0,0x11,
+0x11,0x11,0x11,0x11,0x11,0x11,0,0x11,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0x100a,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x100a,
-0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,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,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,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,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,0xb1,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,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,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,
-0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,1,1,1,1,
-1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+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,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,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,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,0,0,0,0,0,0x100a,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0x100a,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0x100a,0,0,0,0,0,0,0,0,
+0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+2,2,2,2,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,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,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,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,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,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,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,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,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,0xb1,0xb1,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,
-0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
+0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xb1,0xb1,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,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,
+0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,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,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,0,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,2,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,
+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,0,0,0,0,0,0,0,
+0,0,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,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,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,0,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,2,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,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,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,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,0,0,0,0,
+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,
+0xa,0xa,0xa,0xa,0xa,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,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,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,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,0,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0xa,0,0,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,0,0,0,0,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xb2,0xb2,0xb2,0xb2,
+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,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,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,
+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,
-0,0,0,0
+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
 };
 
 static const uint32_t ubidi_props_mirrors[26]={
@@ -809,13 +828,13 @@ static const UBiDiProps ubidi_props_singleton={
     ubidi_props_trieIndex+3496,
     NULL,
     3496,
-    8076,
+    8388,
     0x1a0,
     0xe28,
     0x0,
     0x0,
     0x110000,
-    0x2d30,
+    0x2e68,
     NULL, 0, FALSE, FALSE, 0, NULL
   },
   { 2,2,0,0 }
index a62d8b2..fd64fac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ubidiimp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ubidiln.c b/source/common/ubidiln.c
deleted file mode 100644 (file)
index 688ca4c..0000000
+++ /dev/null
@@ -1,1349 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1999-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*   file name:  ubidiln.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 1999aug06
-*   created by: Markus W. Scherer, updated by Matitiahu Allouche
-*/
-
-#include "cmemory.h"
-#include "unicode/utypes.h"
-#include "unicode/ustring.h"
-#include "unicode/uchar.h"
-#include "unicode/ubidi.h"
-#include "ubidiimp.h"
-#include "uassert.h"
-
-/*
- * General remarks about the functions in this file:
- *
- * These functions deal with the aspects of potentially mixed-directional
- * text in a single paragraph or in a line of a single paragraph
- * which has already been processed according to
- * the Unicode 6.3 BiDi algorithm as defined in
- * http://www.unicode.org/unicode/reports/tr9/ , version 28,
- * also described in The Unicode Standard, Version 6.3.0 .
- *
- * This means that there is a UBiDi object with a levels
- * and a dirProps array.
- * paraLevel and direction are also set.
- * Only if the length of the text is zero, then levels==dirProps==NULL.
- *
- * The overall directionality of the paragraph
- * or line is used to bypass the reordering steps if possible.
- * Even purely RTL text does not need reordering there because
- * the ubidi_getLogical/VisualIndex() functions can compute the
- * index on the fly in such a case.
- *
- * The implementation of the access to same-level-runs and of the reordering
- * do attempt to provide better performance and less memory usage compared to
- * a direct implementation of especially rule (L2) with an array of
- * one (32-bit) integer per text character.
- *
- * Here, the levels array is scanned as soon as necessary, and a vector of
- * same-level-runs is created. Reordering then is done on this vector.
- * For each run of text positions that were resolved to the same level,
- * only 8 bytes are stored: the first text position of the run and the visual
- * position behind the run after reordering.
- * One sign bit is used to hold the directionality of the run.
- * This is inefficient if there are many very short runs. If the average run
- * length is <2, then this uses more memory.
- *
- * In a further attempt to save memory, the levels array is never changed
- * after all the resolution rules (Xn, Wn, Nn, In).
- * Many functions have to consider the field trailingWSStart:
- * if it is less than length, then there is an implicit trailing run
- * at the paraLevel,
- * which is not reflected in the levels array.
- * This allows a line UBiDi object to use the same levels array as
- * its paragraph parent object.
- *
- * When a UBiDi object is created for a line of a paragraph, then the
- * paragraph's levels and dirProps arrays are reused by way of setting
- * a pointer into them, not by copying. This again saves memory and forbids to
- * change the now shared levels for (L1).
- */
-
-/* handle trailing WS (L1) -------------------------------------------------- */
-
-/*
- * setTrailingWSStart() sets the start index for a trailing
- * run of WS in the line. This is necessary because we do not modify
- * the paragraph's levels array that we just point into.
- * Using trailingWSStart is another form of performing (L1).
- *
- * To make subsequent operations easier, we also include the run
- * before the WS if it is at the paraLevel - we merge the two here.
- *
- * This function is called only from ubidi_setLine(), so pBiDi->paraLevel is
- * set correctly for the line even when contextual multiple paragraphs.
- */
-static void
-setTrailingWSStart(UBiDi *pBiDi) {
-    /* pBiDi->direction!=UBIDI_MIXED */
-
-    const DirProp *dirProps=pBiDi->dirProps;
-    UBiDiLevel *levels=pBiDi->levels;
-    int32_t start=pBiDi->length;
-    UBiDiLevel paraLevel=pBiDi->paraLevel;
-
-    /* If the line is terminated by a block separator, all preceding WS etc...
-       are already set to paragraph level.
-       Setting trailingWSStart to pBidi->length will avoid changing the
-       level of B chars from 0 to paraLevel in ubidi_getLevels when
-       orderParagraphsLTR==TRUE.
-     */
-    if(dirProps[start-1]==B) {
-        pBiDi->trailingWSStart=start;   /* currently == pBiDi->length */
-        return;
-    }
-    /* go backwards across all WS, BN, explicit codes */
-    while(start>0 && DIRPROP_FLAG(dirProps[start-1])&MASK_WS) {
-        --start;
-    }
-
-    /* if the WS run can be merged with the previous run then do so here */
-    while(start>0 && levels[start-1]==paraLevel) {
-        --start;
-    }
-
-    pBiDi->trailingWSStart=start;
-}
-
-/* ubidi_setLine ------------------------------------------------------------ */
-
-U_CAPI void U_EXPORT2
-ubidi_setLine(const UBiDi *pParaBiDi,
-              int32_t start, int32_t limit,
-              UBiDi *pLineBiDi,
-              UErrorCode *pErrorCode) {
-    int32_t length;
-
-    /* check the argument values */
-    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
-    RETURN_VOID_IF_NOT_VALID_PARA(pParaBiDi, *pErrorCode);
-    RETURN_VOID_IF_BAD_RANGE(start, 0, limit, *pErrorCode);
-    RETURN_VOID_IF_BAD_RANGE(limit, 0, pParaBiDi->length+1, *pErrorCode);
-    if(pLineBiDi==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    if(ubidi_getParagraph(pParaBiDi, start, NULL, NULL, NULL, pErrorCode) !=
-       ubidi_getParagraph(pParaBiDi, limit-1, NULL, NULL, NULL, pErrorCode)) {
-        /* the line crosses a paragraph boundary */
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    /* set the values in pLineBiDi from its pParaBiDi parent */
-    pLineBiDi->pParaBiDi=NULL;          /* mark unfinished setLine */
-    pLineBiDi->text=pParaBiDi->text+start;
-    length=pLineBiDi->length=limit-start;
-    pLineBiDi->resultLength=pLineBiDi->originalLength=length;
-    pLineBiDi->paraLevel=GET_PARALEVEL(pParaBiDi, start);
-    pLineBiDi->paraCount=pParaBiDi->paraCount;
-    pLineBiDi->runs=NULL;
-    pLineBiDi->flags=0;
-    pLineBiDi->reorderingMode=pParaBiDi->reorderingMode;
-    pLineBiDi->reorderingOptions=pParaBiDi->reorderingOptions;
-    pLineBiDi->controlCount=0;
-    if(pParaBiDi->controlCount>0) {
-        int32_t j;
-        for(j=start; j<limit; j++) {
-            if(IS_BIDI_CONTROL_CHAR(pParaBiDi->text[j])) {
-                pLineBiDi->controlCount++;
-            }
-        }
-        pLineBiDi->resultLength-=pLineBiDi->controlCount;
-    }
-
-    pLineBiDi->dirProps=pParaBiDi->dirProps+start;
-    pLineBiDi->levels=pParaBiDi->levels+start;
-    pLineBiDi->runCount=-1;
-
-    if(pParaBiDi->direction!=UBIDI_MIXED) {
-        /* the parent is already trivial */
-        pLineBiDi->direction=pParaBiDi->direction;
-
-        /*
-         * The parent's levels are all either
-         * implicitly or explicitly ==paraLevel;
-         * do the same here.
-         */
-        if(pParaBiDi->trailingWSStart<=start) {
-            pLineBiDi->trailingWSStart=0;
-        } else if(pParaBiDi->trailingWSStart<limit) {
-            pLineBiDi->trailingWSStart=pParaBiDi->trailingWSStart-start;
-        } else {
-            pLineBiDi->trailingWSStart=length;
-        }
-    } else {
-        const UBiDiLevel *levels=pLineBiDi->levels;
-        int32_t i, trailingWSStart;
-        UBiDiLevel level;
-
-        setTrailingWSStart(pLineBiDi);
-        trailingWSStart=pLineBiDi->trailingWSStart;
-
-        /* recalculate pLineBiDi->direction */
-        if(trailingWSStart==0) {
-            /* all levels are at paraLevel */
-            pLineBiDi->direction=(UBiDiDirection)(pLineBiDi->paraLevel&1);
-        } else {
-            /* get the level of the first character */
-            level=(UBiDiLevel)(levels[0]&1);
-
-            /* if there is anything of a different level, then the line is mixed */
-            if(trailingWSStart<length && (pLineBiDi->paraLevel&1)!=level) {
-                /* the trailing WS is at paraLevel, which differs from levels[0] */
-                pLineBiDi->direction=UBIDI_MIXED;
-            } else {
-                /* see if levels[1..trailingWSStart-1] have the same direction as levels[0] and paraLevel */
-                i=1;
-                for(;;) {
-                    if(i==trailingWSStart) {
-                        /* the direction values match those in level */
-                        pLineBiDi->direction=(UBiDiDirection)level;
-                        break;
-                    } else if((levels[i]&1)!=level) {
-                        pLineBiDi->direction=UBIDI_MIXED;
-                        break;
-                    }
-                    ++i;
-                }
-            }
-        }
-
-        switch(pLineBiDi->direction) {
-        case UBIDI_LTR:
-            /* make sure paraLevel is even */
-            pLineBiDi->paraLevel=(UBiDiLevel)((pLineBiDi->paraLevel+1)&~1);
-
-            /* all levels are implicitly at paraLevel (important for ubidi_getLevels()) */
-            pLineBiDi->trailingWSStart=0;
-            break;
-        case UBIDI_RTL:
-            /* make sure paraLevel is odd */
-            pLineBiDi->paraLevel|=1;
-
-            /* all levels are implicitly at paraLevel (important for ubidi_getLevels()) */
-            pLineBiDi->trailingWSStart=0;
-            break;
-        default:
-            break;
-        }
-    }
-    pLineBiDi->pParaBiDi=pParaBiDi;     /* mark successful setLine */
-    return;
-}
-
-U_CAPI UBiDiLevel U_EXPORT2
-ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex) {
-    /* return paraLevel if in the trailing WS run, otherwise the real level */
-    if(!IS_VALID_PARA_OR_LINE(pBiDi) || charIndex<0 || pBiDi->length<=charIndex) {
-        return 0;
-    } else if(pBiDi->direction!=UBIDI_MIXED || charIndex>=pBiDi->trailingWSStart) {
-        return GET_PARALEVEL(pBiDi, charIndex);
-    } else {
-        return pBiDi->levels[charIndex];
-    }
-}
-
-U_CAPI const UBiDiLevel * U_EXPORT2
-ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
-    int32_t start, length;
-
-    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, NULL);
-    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, NULL);
-    if((length=pBiDi->length)<=0) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-    if((start=pBiDi->trailingWSStart)==length) {
-        /* the current levels array reflects the WS run */
-        return pBiDi->levels;
-    }
-
-    /*
-     * After the previous if(), we know that the levels array
-     * has an implicit trailing WS run and therefore does not fully
-     * reflect itself all the levels.
-     * This must be a UBiDi object for a line, and
-     * we need to create a new levels array.
-     */
-    if(getLevelsMemory(pBiDi, length)) {
-        UBiDiLevel *levels=pBiDi->levelsMemory;
-
-        if(start>0 && levels!=pBiDi->levels) {
-            uprv_memcpy(levels, pBiDi->levels, start);
-        }
-        /* pBiDi->paraLevel is ok even if contextual multiple paragraphs,
-           since pBidi is a line object                                     */
-        uprv_memset(levels+start, pBiDi->paraLevel, length-start);
-
-        /* this new levels array is set for the line and reflects the WS run */
-        pBiDi->trailingWSStart=length;
-        return pBiDi->levels=levels;
-    } else {
-        /* out of memory */
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-}
-
-U_CAPI void U_EXPORT2
-ubidi_getLogicalRun(const UBiDi *pBiDi, int32_t logicalPosition,
-                    int32_t *pLogicalLimit, UBiDiLevel *pLevel) {
-    UErrorCode errorCode;
-    int32_t runCount, visualStart, logicalLimit, logicalFirst, i;
-    Run iRun;
-
-    errorCode=U_ZERO_ERROR;
-    RETURN_VOID_IF_BAD_RANGE(logicalPosition, 0, pBiDi->length, errorCode);
-    /* ubidi_countRuns will check VALID_PARA_OR_LINE */
-    runCount=ubidi_countRuns((UBiDi *)pBiDi, &errorCode);
-    if(U_FAILURE(errorCode)) {
-        return;
-    }
-    /* this is done based on runs rather than on levels since levels have
-       a special interpretation when UBIDI_REORDER_RUNS_ONLY
-     */
-    visualStart=logicalLimit=0;
-    iRun=pBiDi->runs[0];
-
-    for(i=0; i<runCount; i++) {
-        iRun = pBiDi->runs[i];
-        logicalFirst=GET_INDEX(iRun.logicalStart);
-        logicalLimit=logicalFirst+iRun.visualLimit-visualStart;
-        if((logicalPosition>=logicalFirst) &&
-           (logicalPosition<logicalLimit)) {
-            break;
-        }
-        visualStart = iRun.visualLimit;
-    }
-    if(pLogicalLimit) {
-        *pLogicalLimit=logicalLimit;
-    }
-    if(pLevel) {
-        if(pBiDi->reorderingMode==UBIDI_REORDER_RUNS_ONLY) {
-            *pLevel=(UBiDiLevel)GET_ODD_BIT(iRun.logicalStart);
-        }
-        else if(pBiDi->direction!=UBIDI_MIXED || logicalPosition>=pBiDi->trailingWSStart) {
-            *pLevel=GET_PARALEVEL(pBiDi, logicalPosition);
-        } else {
-        *pLevel=pBiDi->levels[logicalPosition];
-        }
-    }
-}
-
-/* runs API functions ------------------------------------------------------- */
-
-U_CAPI int32_t U_EXPORT2
-ubidi_countRuns(UBiDi *pBiDi, UErrorCode *pErrorCode) {
-    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, -1);
-    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1);
-    ubidi_getRuns(pBiDi, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        return -1;
-    }
-    return pBiDi->runCount;
-}
-
-U_CAPI UBiDiDirection U_EXPORT2
-ubidi_getVisualRun(UBiDi *pBiDi, int32_t runIndex,
-                   int32_t *pLogicalStart, int32_t *pLength)
-{
-    int32_t start;
-    UErrorCode errorCode = U_ZERO_ERROR;
-    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, errorCode, UBIDI_LTR);
-    ubidi_getRuns(pBiDi, &errorCode);
-    if(U_FAILURE(errorCode)) {
-        return UBIDI_LTR;
-    }
-    RETURN_IF_BAD_RANGE(runIndex, 0, pBiDi->runCount, errorCode, UBIDI_LTR);
-
-    start=pBiDi->runs[runIndex].logicalStart;
-    if(pLogicalStart!=NULL) {
-        *pLogicalStart=GET_INDEX(start);
-    }
-    if(pLength!=NULL) {
-        if(runIndex>0) {
-            *pLength=pBiDi->runs[runIndex].visualLimit-
-                     pBiDi->runs[runIndex-1].visualLimit;
-        } else {
-            *pLength=pBiDi->runs[0].visualLimit;
-        }
-    }
-    return (UBiDiDirection)GET_ODD_BIT(start);
-}
-
-/* in trivial cases there is only one trivial run; called by ubidi_getRuns() */
-static void
-getSingleRun(UBiDi *pBiDi, UBiDiLevel level) {
-    /* simple, single-run case */
-    pBiDi->runs=pBiDi->simpleRuns;
-    pBiDi->runCount=1;
-
-    /* fill and reorder the single run */
-    pBiDi->runs[0].logicalStart=MAKE_INDEX_ODD_PAIR(0, level);
-    pBiDi->runs[0].visualLimit=pBiDi->length;
-    pBiDi->runs[0].insertRemove=0;
-}
-
-/* reorder the runs array (L2) ---------------------------------------------- */
-
-/*
- * Reorder the same-level runs in the runs array.
- * Here, runCount>1 and maxLevel>=minLevel>=paraLevel.
- * All the visualStart fields=logical start before reordering.
- * The "odd" bits are not set yet.
- *
- * Reordering with this data structure lends itself to some handy shortcuts:
- *
- * Since each run is moved but not modified, and since at the initial maxLevel
- * each sequence of same-level runs consists of only one run each, we
- * don't need to do anything there and can predecrement maxLevel.
- * In many simple cases, the reordering is thus done entirely in the
- * index mapping.
- * Also, reordering occurs only down to the lowest odd level that occurs,
- * which is minLevel|1. However, if the lowest level itself is odd, then
- * in the last reordering the sequence of the runs at this level or higher
- * will be all runs, and we don't need the elaborate loop to search for them.
- * This is covered by ++minLevel instead of minLevel|=1 followed
- * by an extra reorder-all after the reorder-some loop.
- * About a trailing WS run:
- * Such a run would need special treatment because its level is not
- * reflected in levels[] if this is not a paragraph object.
- * Instead, all characters from trailingWSStart on are implicitly at
- * paraLevel.
- * However, for all maxLevel>paraLevel, this run will never be reordered
- * and does not need to be taken into account. maxLevel==paraLevel is only reordered
- * if minLevel==paraLevel is odd, which is done in the extra segment.
- * This means that for the main reordering loop we don't need to consider
- * this run and can --runCount. If it is later part of the all-runs
- * reordering, then runCount is adjusted accordingly.
- */
-static void
-reorderLine(UBiDi *pBiDi, UBiDiLevel minLevel, UBiDiLevel maxLevel) {
-    Run *runs, tempRun;
-    UBiDiLevel *levels;
-    int32_t firstRun, endRun, limitRun, runCount;
-
-    /* nothing to do? */
-    if(maxLevel<=(minLevel|1)) {
-        return;
-    }
-
-    /*
-     * Reorder only down to the lowest odd level
-     * and reorder at an odd minLevel in a separate, simpler loop.
-     * See comments above for why minLevel is always incremented.
-     */
-    ++minLevel;
-
-    runs=pBiDi->runs;
-    levels=pBiDi->levels;
-    runCount=pBiDi->runCount;
-
-    /* do not include the WS run at paraLevel<=old minLevel except in the simple loop */
-    if(pBiDi->trailingWSStart<pBiDi->length) {
-        --runCount;
-    }
-
-    while(--maxLevel>=minLevel) {
-        firstRun=0;
-
-        /* loop for all sequences of runs */
-        for(;;) {
-            /* look for a sequence of runs that are all at >=maxLevel */
-            /* look for the first run of such a sequence */
-            while(firstRun<runCount && levels[runs[firstRun].logicalStart]<maxLevel) {
-                ++firstRun;
-            }
-            if(firstRun>=runCount) {
-                break;  /* no more such runs */
-            }
-
-            /* look for the limit run of such a sequence (the run behind it) */
-            for(limitRun=firstRun; ++limitRun<runCount && levels[runs[limitRun].logicalStart]>=maxLevel;) {}
-
-            /* Swap the entire sequence of runs from firstRun to limitRun-1. */
-            endRun=limitRun-1;
-            while(firstRun<endRun) {
-                tempRun = runs[firstRun];
-                runs[firstRun]=runs[endRun];
-                runs[endRun]=tempRun;
-                ++firstRun;
-                --endRun;
-            }
-
-            if(limitRun==runCount) {
-                break;  /* no more such runs */
-            } else {
-                firstRun=limitRun+1;
-            }
-        }
-    }
-
-    /* now do maxLevel==old minLevel (==odd!), see above */
-    if(!(minLevel&1)) {
-        firstRun=0;
-
-        /* include the trailing WS run in this complete reordering */
-        if(pBiDi->trailingWSStart==pBiDi->length) {
-            --runCount;
-        }
-
-        /* Swap the entire sequence of all runs. (endRun==runCount) */
-        while(firstRun<runCount) {
-            tempRun=runs[firstRun];
-            runs[firstRun]=runs[runCount];
-            runs[runCount]=tempRun;
-            ++firstRun;
-            --runCount;
-        }
-    }
-}
-
-/* compute the runs array --------------------------------------------------- */
-
-static int32_t getRunFromLogicalIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode) {
-    Run *runs=pBiDi->runs;
-    int32_t runCount=pBiDi->runCount, visualStart=0, i, length, logicalStart;
-
-    for(i=0; i<runCount; i++) {
-        length=runs[i].visualLimit-visualStart;
-        logicalStart=GET_INDEX(runs[i].logicalStart);
-        if((logicalIndex>=logicalStart) && (logicalIndex<(logicalStart+length))) {
-            return i;
-        }
-        visualStart+=length;
-    }
-    /* we should never get here */
-    U_ASSERT(FALSE);
-    *pErrorCode = U_INVALID_STATE_ERROR;
-    return 0;
-}
-
-/*
- * Compute the runs array from the levels array.
- * After ubidi_getRuns() returns TRUE, runCount is guaranteed to be >0
- * and the runs are reordered.
- * Odd-level runs have visualStart on their visual right edge and
- * they progress visually to the left.
- * If option UBIDI_OPTION_INSERT_MARKS is set, insertRemove will contain the
- * sum of appropriate LRM/RLM_BEFORE/AFTER flags.
- * If option UBIDI_OPTION_REMOVE_CONTROLS is set, insertRemove will contain the
- * negative number of BiDi control characters within this run.
- */
-U_CFUNC UBool
-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)..
-     */
-    if (pBiDi->runCount>=0) {
-        return TRUE;
-    }
-
-    if(pBiDi->direction!=UBIDI_MIXED) {
-        /* simple, single-run case - this covers length==0 */
-        /* pBiDi->paraLevel is ok even for contextual multiple paragraphs */
-        getSingleRun(pBiDi, pBiDi->paraLevel);
-    } else /* UBIDI_MIXED, length>0 */ {
-        /* mixed directionality */
-        int32_t length=pBiDi->length, limit;
-        UBiDiLevel *levels=pBiDi->levels;
-        int32_t i, runCount;
-        UBiDiLevel level=UBIDI_DEFAULT_LTR;   /* initialize with no valid level */
-        /*
-         * If there are WS characters at the end of the line
-         * and the run preceding them has a level different from
-         * paraLevel, then they will form their own run at paraLevel (L1).
-         * Count them separately.
-         * We need some special treatment for this in order to not
-         * modify the levels array which a line UBiDi object shares
-         * with its paragraph parent and its other line siblings.
-         * In other words, for the trailing WS, it may be
-         * levels[]!=paraLevel but we have to treat it like it were so.
-         */
-        limit=pBiDi->trailingWSStart;
-        /* count the runs, there is at least one non-WS run, and limit>0 */
-        runCount=0;
-        for(i=0; i<limit; ++i) {
-            /* increment runCount at the start of each run */
-            if(levels[i]!=level) {
-                ++runCount;
-                level=levels[i];
-            }
-        }
-
-        /*
-         * We don't need to see if the last run can be merged with a trailing
-         * WS run because setTrailingWSStart() would have done that.
-         */
-        if(runCount==1 && limit==length) {
-            /* There is only one non-WS run and no trailing WS-run. */
-            getSingleRun(pBiDi, levels[0]);
-        } else /* runCount>1 || limit<length */ {
-            /* allocate and set the runs */
-            Run *runs;
-            int32_t runIndex, start;
-            UBiDiLevel minLevel=UBIDI_MAX_EXPLICIT_LEVEL+1, maxLevel=0;
-
-            /* now, count a (non-mergeable) WS run */
-            if(limit<length) {
-                ++runCount;
-            }
-
-            /* runCount>1 */
-            if(getRunsMemory(pBiDi, runCount)) {
-                runs=pBiDi->runsMemory;
-            } else {
-                return FALSE;
-            }
-
-            /* set the runs */
-            /* FOOD FOR THOUGHT: this could be optimized, e.g.:
-             * 464->444, 484->444, 575->555, 595->555
-             * However, that would take longer. Check also how it would
-             * interact with BiDi control removal and inserting Marks.
-             */
-            runIndex=0;
-
-            /* search for the run limits and initialize visualLimit values with the run lengths */
-            i=0;
-            do {
-                /* prepare this run */
-                start=i;
-                level=levels[i];
-                if(level<minLevel) {
-                    minLevel=level;
-                }
-                if(level>maxLevel) {
-                    maxLevel=level;
-                }
-
-                /* look for the run limit */
-                while(++i<limit && levels[i]==level) {}
-
-                /* i is another run limit */
-                runs[runIndex].logicalStart=start;
-                runs[runIndex].visualLimit=i-start;
-                runs[runIndex].insertRemove=0;
-                ++runIndex;
-            } while(i<limit);
-
-            if(limit<length) {
-                /* there is a separate WS run */
-                runs[runIndex].logicalStart=limit;
-                runs[runIndex].visualLimit=length-limit;
-                /* For the trailing WS run, pBiDi->paraLevel is ok even
-                   if contextual multiple paragraphs.                   */
-                if(pBiDi->paraLevel<minLevel) {
-                    minLevel=pBiDi->paraLevel;
-                }
-            }
-
-            /* set the object fields */
-            pBiDi->runs=runs;
-            pBiDi->runCount=runCount;
-
-            reorderLine(pBiDi, minLevel, maxLevel);
-
-            /* now add the direction flags and adjust the visualLimit's to be just that */
-            /* this loop will also handle the trailing WS run */
-            limit=0;
-            for(i=0; i<runCount; ++i) {
-                ADD_ODD_BIT_FROM_LEVEL(runs[i].logicalStart, levels[runs[i].logicalStart]);
-                limit+=runs[i].visualLimit;
-                runs[i].visualLimit=limit;
-            }
-
-            /* Set the "odd" bit for the trailing WS run. */
-            /* For a RTL paragraph, it will be the *first* run in visual order. */
-            /* For the trailing WS run, pBiDi->paraLevel is ok even if
-               contextual multiple paragraphs.                          */
-            if(runIndex<runCount) {
-                int32_t trailingRun = ((pBiDi->paraLevel & 1) != 0)? 0 : runIndex;
-
-                ADD_ODD_BIT_FROM_LEVEL(runs[trailingRun].logicalStart, pBiDi->paraLevel);
-            }
-        }
-    }
-
-    /* handle insert LRM/RLM BEFORE/AFTER run */
-    if(pBiDi->insertPoints.size>0) {
-        Point *point, *start=pBiDi->insertPoints.points,
-                      *limit=start+pBiDi->insertPoints.size;
-        int32_t runIndex;
-        for(point=start; point<limit; point++) {
-            runIndex=getRunFromLogicalIndex(pBiDi, point->pos, pErrorCode);
-            pBiDi->runs[runIndex].insertRemove|=point->flag;
-        }
-    }
-
-    /* handle remove BiDi control characters */
-    if(pBiDi->controlCount>0) {
-        int32_t runIndex;
-        const UChar *start=pBiDi->text, *limit=start+pBiDi->length, *pu;
-        for(pu=start; pu<limit; pu++) {
-            if(IS_BIDI_CONTROL_CHAR(*pu)) {
-                runIndex=getRunFromLogicalIndex(pBiDi, (int32_t)(pu-start), pErrorCode);
-                pBiDi->runs[runIndex].insertRemove--;
-            }
-        }
-    }
-
-    return TRUE;
-}
-
-static UBool
-prepareReorder(const UBiDiLevel *levels, int32_t length,
-               int32_t *indexMap,
-               UBiDiLevel *pMinLevel, UBiDiLevel *pMaxLevel) {
-    int32_t start;
-    UBiDiLevel level, minLevel, maxLevel;
-
-    if(levels==NULL || length<=0) {
-        return FALSE;
-    }
-
-    /* determine minLevel and maxLevel */
-    minLevel=UBIDI_MAX_EXPLICIT_LEVEL+1;
-    maxLevel=0;
-    for(start=length; start>0;) {
-        level=levels[--start];
-        if(level>UBIDI_MAX_EXPLICIT_LEVEL+1) {
-            return FALSE;
-        }
-        if(level<minLevel) {
-            minLevel=level;
-        }
-        if(level>maxLevel) {
-            maxLevel=level;
-        }
-    }
-    *pMinLevel=minLevel;
-    *pMaxLevel=maxLevel;
-
-    /* initialize the index map */
-    for(start=length; start>0;) {
-        --start;
-        indexMap[start]=start;
-    }
-
-    return TRUE;
-}
-
-/* reorder a line based on a levels array (L2) ------------------------------ */
-
-U_CAPI void U_EXPORT2
-ubidi_reorderLogical(const UBiDiLevel *levels, int32_t length, int32_t *indexMap) {
-    int32_t start, limit, sumOfSosEos;
-    UBiDiLevel minLevel = 0, maxLevel = 0;
-
-    if(indexMap==NULL || !prepareReorder(levels, length, indexMap, &minLevel, &maxLevel)) {
-        return;
-    }
-
-    /* nothing to do? */
-    if(minLevel==maxLevel && (minLevel&1)==0) {
-        return;
-    }
-
-    /* reorder only down to the lowest odd level */
-    minLevel|=1;
-
-    /* loop maxLevel..minLevel */
-    do {
-        start=0;
-
-        /* loop for all sequences of levels to reorder at the current maxLevel */
-        for(;;) {
-            /* look for a sequence of levels that are all at >=maxLevel */
-            /* look for the first index of such a sequence */
-            while(start<length && levels[start]<maxLevel) {
-                ++start;
-            }
-            if(start>=length) {
-                break;  /* no more such sequences */
-            }
-
-            /* look for the limit of such a sequence (the index behind it) */
-            for(limit=start; ++limit<length && levels[limit]>=maxLevel;) {}
-
-            /*
-             * sos=start of sequence, eos=end of sequence
-             *
-             * The closed (inclusive) interval from sos to eos includes all the logical
-             * and visual indexes within this sequence. They are logically and
-             * visually contiguous and in the same range.
-             *
-             * For each run, the new visual index=sos+eos-old visual index;
-             * we pre-add sos+eos into sumOfSosEos ->
-             * new visual index=sumOfSosEos-old visual index;
-             */
-            sumOfSosEos=start+limit-1;
-
-            /* reorder each index in the sequence */
-            do {
-                indexMap[start]=sumOfSosEos-indexMap[start];
-            } while(++start<limit);
-
-            /* start==limit */
-            if(limit==length) {
-                break;  /* no more such sequences */
-            } else {
-                start=limit+1;
-            }
-        }
-    } while(--maxLevel>=minLevel);
-}
-
-U_CAPI void U_EXPORT2
-ubidi_reorderVisual(const UBiDiLevel *levels, int32_t length, int32_t *indexMap) {
-    int32_t start, end, limit, temp;
-    UBiDiLevel minLevel = 0, maxLevel = 0;
-
-    if(indexMap==NULL || !prepareReorder(levels, length, indexMap, &minLevel, &maxLevel)) {
-        return;
-    }
-
-    /* nothing to do? */
-    if(minLevel==maxLevel && (minLevel&1)==0) {
-        return;
-    }
-
-    /* reorder only down to the lowest odd level */
-    minLevel|=1;
-
-    /* loop maxLevel..minLevel */
-    do {
-        start=0;
-
-        /* loop for all sequences of levels to reorder at the current maxLevel */
-        for(;;) {
-            /* look for a sequence of levels that are all at >=maxLevel */
-            /* look for the first index of such a sequence */
-            while(start<length && levels[start]<maxLevel) {
-                ++start;
-            }
-            if(start>=length) {
-                break;  /* no more such runs */
-            }
-
-            /* look for the limit of such a sequence (the index behind it) */
-            for(limit=start; ++limit<length && levels[limit]>=maxLevel;) {}
-
-            /*
-             * Swap the entire interval of indexes from start to limit-1.
-             * We don't need to swap the levels for the purpose of this
-             * algorithm: the sequence of levels that we look at does not
-             * move anyway.
-             */
-            end=limit-1;
-            while(start<end) {
-                temp=indexMap[start];
-                indexMap[start]=indexMap[end];
-                indexMap[end]=temp;
-
-                ++start;
-                --end;
-            }
-
-            if(limit==length) {
-                break;  /* no more such sequences */
-            } else {
-                start=limit+1;
-            }
-        }
-    } while(--maxLevel>=minLevel);
-}
-
-/* API functions for logical<->visual mapping ------------------------------- */
-
-U_CAPI int32_t U_EXPORT2
-ubidi_getVisualIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode) {
-    int32_t visualIndex=UBIDI_MAP_NOWHERE;
-    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, -1);
-    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1);
-    RETURN_IF_BAD_RANGE(logicalIndex, 0, pBiDi->length, *pErrorCode, -1);
-
-    /* we can do the trivial cases without the runs array */
-    switch(pBiDi->direction) {
-    case UBIDI_LTR:
-        visualIndex=logicalIndex;
-        break;
-    case UBIDI_RTL:
-        visualIndex=pBiDi->length-logicalIndex-1;
-        break;
-    default:
-        if(!ubidi_getRuns(pBiDi, pErrorCode)) {
-            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-            return -1;
-        } else {
-            Run *runs=pBiDi->runs;
-            int32_t i, visualStart=0, offset, length;
-
-            /* linear search for the run, search on the visual runs */
-            for(i=0; i<pBiDi->runCount; ++i) {
-                length=runs[i].visualLimit-visualStart;
-                offset=logicalIndex-GET_INDEX(runs[i].logicalStart);
-                if(offset>=0 && offset<length) {
-                    if(IS_EVEN_RUN(runs[i].logicalStart)) {
-                        /* LTR */
-                        visualIndex=visualStart+offset;
-                    } else {
-                        /* RTL */
-                        visualIndex=visualStart+length-offset-1;
-                    }
-                    break;          /* exit for loop */
-                }
-                visualStart+=length;
-            }
-            if(i>=pBiDi->runCount) {
-                return UBIDI_MAP_NOWHERE;
-            }
-        }
-    }
-
-    if(pBiDi->insertPoints.size>0) {
-        /* add the number of added marks until the calculated visual index */
-        Run *runs=pBiDi->runs;
-        int32_t i, length, insertRemove;
-        int32_t visualStart=0, markFound=0;
-        for(i=0; ; i++, visualStart+=length) {
-            length=runs[i].visualLimit-visualStart;
-            insertRemove=runs[i].insertRemove;
-            if(insertRemove & (LRM_BEFORE|RLM_BEFORE)) {
-                markFound++;
-            }
-            /* is it the run containing the visual index? */
-            if(visualIndex<runs[i].visualLimit) {
-                return visualIndex+markFound;
-            }
-            if(insertRemove & (LRM_AFTER|RLM_AFTER)) {
-                markFound++;
-            }
-        }
-    }
-    else if(pBiDi->controlCount>0) {
-        /* subtract the number of controls until the calculated visual index */
-        Run *runs=pBiDi->runs;
-        int32_t i, j, start, limit, length, insertRemove;
-        int32_t visualStart=0, controlFound=0;
-        UChar uchar=pBiDi->text[logicalIndex];
-        /* is the logical index pointing to a control ? */
-        if(IS_BIDI_CONTROL_CHAR(uchar)) {
-            return UBIDI_MAP_NOWHERE;
-        }
-        /* loop on runs */
-        for(i=0; ; i++, visualStart+=length) {
-            length=runs[i].visualLimit-visualStart;
-            insertRemove=runs[i].insertRemove;
-            /* calculated visual index is beyond this run? */
-            if(visualIndex>=runs[i].visualLimit) {
-                controlFound-=insertRemove;
-                continue;
-            }
-            /* calculated visual index must be within current run */
-            if(insertRemove==0) {
-                return visualIndex-controlFound;
-            }
-            if(IS_EVEN_RUN(runs[i].logicalStart)) {
-                /* LTR: check from run start to logical index */
-                start=runs[i].logicalStart;
-                limit=logicalIndex;
-            } else {
-                /* RTL: check from logical index to run end */
-                start=logicalIndex+1;
-                limit=GET_INDEX(runs[i].logicalStart)+length;
-            }
-            for(j=start; j<limit; j++) {
-                uchar=pBiDi->text[j];
-                if(IS_BIDI_CONTROL_CHAR(uchar)) {
-                    controlFound++;
-                }
-            }
-            return visualIndex-controlFound;
-        }
-    }
-
-    return visualIndex;
-}
-
-U_CAPI int32_t U_EXPORT2
-ubidi_getLogicalIndex(UBiDi *pBiDi, int32_t visualIndex, UErrorCode *pErrorCode) {
-    Run *runs;
-    int32_t i, runCount, start;
-    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, -1);
-    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1);
-    RETURN_IF_BAD_RANGE(visualIndex, 0, pBiDi->resultLength, *pErrorCode, -1);
-    /* we can do the trivial cases without the runs array */
-    if(pBiDi->insertPoints.size==0 && pBiDi->controlCount==0) {
-        if(pBiDi->direction==UBIDI_LTR) {
-            return visualIndex;
-        }
-        else if(pBiDi->direction==UBIDI_RTL) {
-            return pBiDi->length-visualIndex-1;
-        }
-    }
-    if(!ubidi_getRuns(pBiDi, pErrorCode)) {
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        return -1;
-    }
-
-    runs=pBiDi->runs;
-    runCount=pBiDi->runCount;
-    if(pBiDi->insertPoints.size>0) {
-        /* handle inserted LRM/RLM */
-        int32_t markFound=0, insertRemove;
-        int32_t visualStart=0, length;
-        runs=pBiDi->runs;
-        /* subtract number of marks until visual index */
-        for(i=0; ; i++, visualStart+=length) {
-            length=runs[i].visualLimit-visualStart;
-            insertRemove=runs[i].insertRemove;
-            if(insertRemove&(LRM_BEFORE|RLM_BEFORE)) {
-                if(visualIndex<=(visualStart+markFound)) {
-                    return UBIDI_MAP_NOWHERE;
-                }
-                markFound++;
-            }
-            /* is adjusted visual index within this run? */
-            if(visualIndex<(runs[i].visualLimit+markFound)) {
-                visualIndex-=markFound;
-                break;
-            }
-            if(insertRemove&(LRM_AFTER|RLM_AFTER)) {
-                if(visualIndex==(visualStart+length+markFound)) {
-                    return UBIDI_MAP_NOWHERE;
-                }
-                markFound++;
-            }
-        }
-    }
-    else if(pBiDi->controlCount>0) {
-        /* handle removed BiDi control characters */
-        int32_t controlFound=0, insertRemove, length;
-        int32_t logicalStart, logicalEnd, visualStart=0, j, k;
-        UChar uchar;
-        UBool evenRun;
-        /* add number of controls until visual index */
-        for(i=0; ; i++, visualStart+=length) {
-            length=runs[i].visualLimit-visualStart;
-            insertRemove=runs[i].insertRemove;
-            /* is adjusted visual index beyond current run? */
-            if(visualIndex>=(runs[i].visualLimit-controlFound+insertRemove)) {
-                controlFound-=insertRemove;
-                continue;
-            }
-            /* adjusted visual index is within current run */
-            if(insertRemove==0) {
-                visualIndex+=controlFound;
-                break;
-            }
-            /* count non-control chars until visualIndex */
-            logicalStart=runs[i].logicalStart;
-            evenRun=IS_EVEN_RUN(logicalStart);
-            REMOVE_ODD_BIT(logicalStart);
-            logicalEnd=logicalStart+length-1;
-            for(j=0; j<length; j++) {
-                k= evenRun ? logicalStart+j : logicalEnd-j;
-                uchar=pBiDi->text[k];
-                if(IS_BIDI_CONTROL_CHAR(uchar)) {
-                    controlFound++;
-                }
-                if((visualIndex+controlFound)==(visualStart+j)) {
-                    break;
-                }
-            }
-            visualIndex+=controlFound;
-            break;
-        }
-    }
-    /* handle all cases */
-    if(runCount<=10) {
-        /* linear search for the run */
-        for(i=0; visualIndex>=runs[i].visualLimit; ++i) {}
-    } else {
-        /* binary search for the run */
-        int32_t begin=0, limit=runCount;
-
-        /* the middle if() is guaranteed to find the run, we don't need a loop limit */
-        for(;;) {
-            i=(begin+limit)/2;
-            if(visualIndex>=runs[i].visualLimit) {
-                begin=i+1;
-            } else if(i==0 || visualIndex>=runs[i-1].visualLimit) {
-                break;
-            } else {
-                limit=i;
-            }
-        }
-    }
-
-    start=runs[i].logicalStart;
-    if(IS_EVEN_RUN(start)) {
-        /* LTR */
-        /* the offset in runs[i] is visualIndex-runs[i-1].visualLimit */
-        if(i>0) {
-            visualIndex-=runs[i-1].visualLimit;
-        }
-        return start+visualIndex;
-    } else {
-        /* RTL */
-        return GET_INDEX(start)+runs[i].visualLimit-visualIndex-1;
-    }
-}
-
-U_CAPI void U_EXPORT2
-ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
-    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
-    /* ubidi_countRuns() checks for VALID_PARA_OR_LINE */
-    ubidi_countRuns(pBiDi, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        /* no op */
-    } else if(indexMap==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-    } else {
-        /* fill a logical-to-visual index map using the runs[] */
-        int32_t visualStart, visualLimit, i, j, k;
-        int32_t logicalStart, logicalLimit;
-        Run *runs=pBiDi->runs;
-        if (pBiDi->length<=0) {
-            return;
-        }
-        if (pBiDi->length>pBiDi->resultLength) {
-            uprv_memset(indexMap, 0xFF, pBiDi->length*sizeof(int32_t));
-        }
-
-        visualStart=0;
-        for(j=0; j<pBiDi->runCount; ++j) {
-            logicalStart=GET_INDEX(runs[j].logicalStart);
-            visualLimit=runs[j].visualLimit;
-            if(IS_EVEN_RUN(runs[j].logicalStart)) {
-                do { /* LTR */
-                    indexMap[logicalStart++]=visualStart++;
-                } while(visualStart<visualLimit);
-            } else {
-                logicalStart+=visualLimit-visualStart;  /* logicalLimit */
-                do { /* RTL */
-                    indexMap[--logicalStart]=visualStart++;
-                } while(visualStart<visualLimit);
-            }
-            /* visualStart==visualLimit; */
-        }
-
-        if(pBiDi->insertPoints.size>0) {
-            int32_t markFound=0, runCount=pBiDi->runCount;
-            int32_t length, insertRemove;
-            visualStart=0;
-            /* add number of marks found until each index */
-            for(i=0; i<runCount; i++, visualStart+=length) {
-                length=runs[i].visualLimit-visualStart;
-                insertRemove=runs[i].insertRemove;
-                if(insertRemove&(LRM_BEFORE|RLM_BEFORE)) {
-                    markFound++;
-                }
-                if(markFound>0) {
-                    logicalStart=GET_INDEX(runs[i].logicalStart);
-                    logicalLimit=logicalStart+length;
-                    for(j=logicalStart; j<logicalLimit; j++) {
-                        indexMap[j]+=markFound;
-                    }
-                }
-                if(insertRemove&(LRM_AFTER|RLM_AFTER)) {
-                    markFound++;
-                }
-            }
-        }
-        else if(pBiDi->controlCount>0) {
-            int32_t controlFound=0, runCount=pBiDi->runCount;
-            int32_t length, insertRemove;
-            UBool evenRun;
-            UChar uchar;
-            visualStart=0;
-            /* subtract number of controls found until each index */
-            for(i=0; i<runCount; i++, visualStart+=length) {
-                length=runs[i].visualLimit-visualStart;
-                insertRemove=runs[i].insertRemove;
-                /* no control found within previous runs nor within this run */
-                if((controlFound-insertRemove)==0) {
-                    continue;
-                }
-                logicalStart=runs[i].logicalStart;
-                evenRun=IS_EVEN_RUN(logicalStart);
-                REMOVE_ODD_BIT(logicalStart);
-                logicalLimit=logicalStart+length;
-                /* if no control within this run */
-                if(insertRemove==0) {
-                    for(j=logicalStart; j<logicalLimit; j++) {
-                        indexMap[j]-=controlFound;
-                    }
-                    continue;
-                }
-                for(j=0; j<length; j++) {
-                    k= evenRun ? logicalStart+j : logicalLimit-j-1;
-                    uchar=pBiDi->text[k];
-                    if(IS_BIDI_CONTROL_CHAR(uchar)) {
-                        controlFound++;
-                        indexMap[k]=UBIDI_MAP_NOWHERE;
-                        continue;
-                    }
-                    indexMap[k]-=controlFound;
-                }
-            }
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
-    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
-    if(indexMap==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    /* ubidi_countRuns() checks for VALID_PARA_OR_LINE */
-    ubidi_countRuns(pBiDi, pErrorCode);
-    if(U_SUCCESS(*pErrorCode)) {
-        /* fill a visual-to-logical index map using the runs[] */
-        Run *runs=pBiDi->runs, *runsLimit=runs+pBiDi->runCount;
-        int32_t logicalStart, visualStart, visualLimit, *pi=indexMap;
-
-        if (pBiDi->resultLength<=0) {
-            return;
-        }
-        visualStart=0;
-        for(; runs<runsLimit; ++runs) {
-            logicalStart=runs->logicalStart;
-            visualLimit=runs->visualLimit;
-            if(IS_EVEN_RUN(logicalStart)) {
-                do { /* LTR */
-                    *pi++ = logicalStart++;
-                } while(++visualStart<visualLimit);
-            } else {
-                REMOVE_ODD_BIT(logicalStart);
-                logicalStart+=visualLimit-visualStart;  /* logicalLimit */
-                do { /* RTL */
-                    *pi++ = --logicalStart;
-                } while(++visualStart<visualLimit);
-            }
-            /* visualStart==visualLimit; */
-        }
-
-        if(pBiDi->insertPoints.size>0) {
-            int32_t markFound=0, runCount=pBiDi->runCount;
-            int32_t insertRemove, i, j, k;
-            runs=pBiDi->runs;
-            /* count all inserted marks */
-            for(i=0; i<runCount; i++) {
-                insertRemove=runs[i].insertRemove;
-                if(insertRemove&(LRM_BEFORE|RLM_BEFORE)) {
-                    markFound++;
-                }
-                if(insertRemove&(LRM_AFTER|RLM_AFTER)) {
-                    markFound++;
-                }
-            }
-            /* move back indexes by number of preceding marks */
-            k=pBiDi->resultLength;
-            for(i=runCount-1; i>=0 && markFound>0; i--) {
-                insertRemove=runs[i].insertRemove;
-                if(insertRemove&(LRM_AFTER|RLM_AFTER)) {
-                    indexMap[--k]= UBIDI_MAP_NOWHERE;
-                    markFound--;
-                }
-                visualStart= i>0 ? runs[i-1].visualLimit : 0;
-                for(j=runs[i].visualLimit-1; j>=visualStart && markFound>0; j--) {
-                    indexMap[--k]=indexMap[j];
-                }
-                if(insertRemove&(LRM_BEFORE|RLM_BEFORE)) {
-                    indexMap[--k]= UBIDI_MAP_NOWHERE;
-                    markFound--;
-                }
-            }
-        }
-        else if(pBiDi->controlCount>0) {
-            int32_t runCount=pBiDi->runCount, logicalEnd;
-            int32_t insertRemove, length, i, j, k, m;
-            UChar uchar;
-            UBool evenRun;
-            runs=pBiDi->runs;
-            visualStart=0;
-            /* move forward indexes by number of preceding controls */
-            k=0;
-            for(i=0; i<runCount; i++, visualStart+=length) {
-                length=runs[i].visualLimit-visualStart;
-                insertRemove=runs[i].insertRemove;
-                /* if no control found yet, nothing to do in this run */
-                if((insertRemove==0)&&(k==visualStart)) {
-                    k+=length;
-                    continue;
-                }
-                /* if no control in this run */
-                if(insertRemove==0) {
-                    visualLimit=runs[i].visualLimit;
-                    for(j=visualStart; j<visualLimit; j++) {
-                        indexMap[k++]=indexMap[j];
-                    }
-                    continue;
-                }
-                logicalStart=runs[i].logicalStart;
-                evenRun=IS_EVEN_RUN(logicalStart);
-                REMOVE_ODD_BIT(logicalStart);
-                logicalEnd=logicalStart+length-1;
-                for(j=0; j<length; j++) {
-                    m= evenRun ? logicalStart+j : logicalEnd-j;
-                    uchar=pBiDi->text[m];
-                    if(!IS_BIDI_CONTROL_CHAR(uchar)) {
-                        indexMap[k++]=m;
-                    }
-                }
-            }
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-ubidi_invertMap(const int32_t *srcMap, int32_t *destMap, int32_t length) {
-    if(srcMap!=NULL && destMap!=NULL && length>0) {
-        const int32_t *pi;
-        int32_t destLength=-1, count=0;
-        /* find highest value and count positive indexes in srcMap */
-        pi=srcMap+length;
-        while(pi>srcMap) {
-            if(*--pi>destLength) {
-                destLength=*pi;
-            }
-            if(*pi>=0) {
-                count++;
-            }
-        }
-        destLength++;           /* add 1 for origin 0 */
-        if(count<destLength) {
-            /* we must fill unmatched destMap entries with -1 */
-            uprv_memset(destMap, 0xFF, destLength*sizeof(int32_t));
-        }
-        pi=srcMap+length;
-        while(length>0) {
-            if(*--pi>=0) {
-                destMap[*pi]=--length;
-            } else {
-                --length;
-            }
-        }
-    }
-}
diff --git a/source/common/ubiditransform.c b/source/common/ubiditransform.c
deleted file mode 100644 (file)
index 5f83a2b..0000000
+++ /dev/null
@@ -1,528 +0,0 @@
-/*
-******************************************************************************
-*
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*
-******************************************************************************
-*   file name:  ubiditransform.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2016jul24
-*   created by: Lina Kemmel
-*
-*/
-
-#include "cmemory.h"
-#include "unicode/ubidi.h"
-#include "unicode/ustring.h"
-#include "unicode/ushape.h"
-#include "unicode/utf16.h"
-#include "ustr_imp.h"
-#include "unicode/ubiditransform.h"
-
-/* Some convenience defines */
-#define LTR                     UBIDI_LTR
-#define RTL                     UBIDI_RTL
-#define LOGICAL                 UBIDI_LOGICAL
-#define VISUAL                  UBIDI_VISUAL
-#define SHAPE_LOGICAL           U_SHAPE_TEXT_DIRECTION_LOGICAL
-#define SHAPE_VISUAL            U_SHAPE_TEXT_DIRECTION_VISUAL_LTR
-
-#define CHECK_LEN(STR, LEN, ERROR) { \
-        if (LEN == 0) return 0; \
-        if (LEN < -1) { *(ERROR) = U_ILLEGAL_ARGUMENT_ERROR; return 0; } \
-        if (LEN == -1) LEN = u_strlen(STR); \
-    } 
-
-#define MAX_ACTIONS     7
-
-/**
- * Typedef for a pointer to a function, which performs some operation (such as
- * reordering, setting "inverse" mode, character mirroring, etc.). Return value
- * indicates whether the text was changed in the course of this operation or
- * not.
- */
-typedef UBool (*UBiDiAction)(UBiDiTransform *, UErrorCode *);
-
-/**
- * Structure that holds a predefined reordering scheme, including the following
- * information:
- * <ul>
- * <li>an input base direction,</li>
- * <li>an input order,</li>
- * <li>an output base direction,</li>
- * <li>an output order,</li>
- * <li>a digit shaping direction,</li>
- * <li>a letter shaping direction,</li>
- * <li>a base direction that should be applied when the reordering engine is
- *     invoked (which can not always be derived from the caller-defined
- *     options),</li>
- * <li>an array of pointers to functions that accomplish the bidi layout
- *     transformation.</li>
- * </ul>
- */
-typedef struct {
-    UBiDiLevel        inLevel;               /* input level */
-    UBiDiOrder        inOrder;               /* input order */
-    UBiDiLevel        outLevel;              /* output level */
-    UBiDiOrder        outOrder;              /* output order */
-    uint32_t          digitsDir;             /* digit shaping direction */
-    uint32_t          lettersDir;            /* letter shaping direction */
-    UBiDiLevel        baseLevel;             /* paragraph level to be used with setPara */
-    const UBiDiAction actions[MAX_ACTIONS];  /* array of pointers to functions carrying out the transformation */
-} ReorderingScheme;
-
-struct UBiDiTransform {
-    UBiDi                   *pBidi;             /* pointer to a UBiDi object */
-    const ReorderingScheme  *pActiveScheme;     /* effective reordering scheme */
-    UChar                   *src;               /* input text */
-    UChar                   *dest;              /* output text */
-    uint32_t                srcLength;          /* input text length - not really needed as we are zero-terminated and can u_strlen */
-    uint32_t                srcSize;            /* input text capacity excluding the trailing zero */
-    uint32_t                destSize;           /* output text capacity */
-    uint32_t                *pDestLength;       /* number of UChars written to dest */
-    uint32_t                reorderingOptions;  /* reordering options - currently only suppot DO_MIRRORING */
-    uint32_t                digits;             /* digit option for ArabicShaping */
-    uint32_t                letters;            /* letter option for ArabicShaping */
-};
-
-U_DRAFT UBiDiTransform* U_EXPORT2
-ubiditransform_open(UErrorCode *pErrorCode)
-{
-    UBiDiTransform *pBiDiTransform = NULL;
-    if (U_SUCCESS(*pErrorCode)) {
-        pBiDiTransform = (UBiDiTransform*) uprv_calloc(1, sizeof(UBiDiTransform));
-        if (pBiDiTransform == NULL) {
-            *pErrorCode = U_MEMORY_ALLOCATION_ERROR;
-        }
-    }
-    return pBiDiTransform;
-}
-
-U_DRAFT void U_EXPORT2
-ubiditransform_close(UBiDiTransform *pBiDiTransform)
-{
-    if (pBiDiTransform != NULL) {
-        if (pBiDiTransform->pBidi != NULL) {
-            ubidi_close(pBiDiTransform->pBidi);
-        }
-        if (pBiDiTransform->src != NULL) {
-            uprv_free(pBiDiTransform->src);
-        }
-        uprv_free(pBiDiTransform);
-    }
-}
-
-/**
- * Performs Bidi resolution of text.
- * 
- * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
- * @param pErrorCode Pointer to the error code value.
- *
- * @return Whether or not this function modifies the text. Besides the return
- * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
- */
-static UBool
-action_resolve(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
-{
-    ubidi_setPara(pTransform->pBidi, pTransform->src, pTransform->srcLength,
-            pTransform->pActiveScheme->baseLevel, NULL, pErrorCode);
-    return FALSE;
-}
-
-/**
- * Performs basic reordering of text (Logical -> Visual LTR).
- * 
- * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
- * @param pErrorCode Pointer to the error code value.
- *
- * @return Whether or not this function modifies the text. Besides the return
- * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
- */
-static UBool
-action_reorder(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
-{
-    ubidi_writeReordered(pTransform->pBidi, pTransform->dest, pTransform->destSize,
-            pTransform->reorderingOptions, pErrorCode);
-
-    *pTransform->pDestLength = pTransform->srcLength;
-    pTransform->reorderingOptions = UBIDI_REORDER_DEFAULT;
-    return TRUE;
-}
-
-/**
- * Sets "inverse" mode on the <code>UBiDi</code> object.
- * 
- * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
- * @param pErrorCode Pointer to the error code value.
- *
- * @return Whether or not this function modifies the text. Besides the return
- * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
- */
-static UBool
-action_setInverse(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
-{
-    ubidi_setInverse(pTransform->pBidi, TRUE);
-    ubidi_setReorderingMode(pTransform->pBidi, UBIDI_REORDER_INVERSE_LIKE_DIRECT);
-    return FALSE;
-}
-
-/**
- * Sets "runs only" reordering mode indicating a Logical LTR <-> Logical RTL
- * transformation.
- * 
- * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
- * @param pErrorCode Pointer to the error code value.
- *
- * @return Whether or not this function modifies the text. Besides the return
- * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
- */
-static UBool
-action_setRunsOnly(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
-{
-    ubidi_setReorderingMode(pTransform->pBidi, UBIDI_REORDER_RUNS_ONLY);
-    return FALSE;
-}
-
-/**
- * Performs string reverse.
- * 
- * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
- * @param pErrorCode Pointer to the error code value.
- *
- * @return Whether or not this function modifies the text. Besides the return
- * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
- */
-static UBool
-action_reverse(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
-{
-    ubidi_writeReverse(pTransform->src, pTransform->srcLength,
-            pTransform->dest, pTransform->destSize,
-            UBIDI_REORDER_DEFAULT, pErrorCode);
-    *pTransform->pDestLength = pTransform->srcLength;
-    return TRUE;
-}
-
-/**
- * Applies a new value to the text that serves as input at the current
- * processing step. This value is identical to the original one when we begin
- * the processing, but usually changes as the transformation progresses.
- * 
- * @param pTransform A pointer to the <code>UBiDiTransform</code> structure.
- * @param newSrc A pointer whose value is to be used as input text.
- * @param newLength A length of the new text in <code>UChar</code>s.
- * @param newSize A new source capacity in <code>UChar</code>s.
- * @param pErrorCode Pointer to the error code value.
- */
-static void
-updateSrc(UBiDiTransform *pTransform, const UChar *newSrc, uint32_t newLength,
-        uint32_t newSize, UErrorCode *pErrorCode)
-{
-    if (newSize < newLength) {
-        *pErrorCode = U_BUFFER_OVERFLOW_ERROR;
-        return;
-    }
-    if (newSize > pTransform->srcSize) {
-        newSize += 50; // allocate slightly more than needed right now
-        if (pTransform->src != NULL) {
-            uprv_free(pTransform->src);
-            pTransform->src = NULL;
-        }
-        pTransform->src = (UChar *)uprv_malloc(newSize * sizeof(UChar));
-        if (pTransform->src == NULL) {
-            *pErrorCode = U_MEMORY_ALLOCATION_ERROR;
-            //pTransform->srcLength = pTransform->srcSize = 0;
-            return;
-        }
-        pTransform->srcSize = newSize;
-    }
-    u_strncpy(pTransform->src, newSrc, newLength);
-    pTransform->srcLength = u_terminateUChars(pTransform->src,
-               pTransform->srcSize, newLength, pErrorCode);
-}
-
-/**
- * Calls a lower level shaping function.
- * 
- * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
- * @param options Shaping options.
- * @param pErrorCode Pointer to the error code value.
- */
-static void
-doShape(UBiDiTransform *pTransform, uint32_t options, UErrorCode *pErrorCode)
-{
-    *pTransform->pDestLength = u_shapeArabic(pTransform->src,
-            pTransform->srcLength, pTransform->dest, pTransform->destSize,
-            options, pErrorCode);
-}
-
-/**
- * Performs digit and letter shaping.
- * 
- * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
- * @param pErrorCode Pointer to the error code value.
- *
- * @return Whether or not this function modifies the text. Besides the return
- * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
- */
-static UBool
-action_shapeArabic(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
-{
-    if ((pTransform->letters | pTransform->digits) == 0) {
-        return FALSE;
-    }
-    if (pTransform->pActiveScheme->lettersDir == pTransform->pActiveScheme->digitsDir) {
-        doShape(pTransform, pTransform->letters | pTransform->digits | pTransform->pActiveScheme->lettersDir,
-                pErrorCode);
-    } else {
-        doShape(pTransform, pTransform->digits | pTransform->pActiveScheme->digitsDir, pErrorCode);
-        if (U_SUCCESS(*pErrorCode)) {
-            updateSrc(pTransform, pTransform->dest, *pTransform->pDestLength,
-                    *pTransform->pDestLength, pErrorCode);
-            doShape(pTransform, pTransform->letters | pTransform->pActiveScheme->lettersDir,
-                    pErrorCode);
-        }
-    }
-    return TRUE;
-}
-
-/**
- * Performs character mirroring.
- * 
- * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
- * @param pErrorCode Pointer to the error code value.
- *
- * @return Whether or not this function modifies the text. Besides the return
- * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
- */
-static UBool
-action_mirror(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
-{
-    UChar32 c;
-    uint32_t i = 0, j = 0;
-    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);
-    } while (i < pTransform->srcLength);
-    
-    *pTransform->pDestLength = pTransform->srcLength;
-    pTransform->reorderingOptions = UBIDI_REORDER_DEFAULT;
-    return TRUE;
-}
-
-/**
- * All possible reordering schemes.
- *
- */
-static const ReorderingScheme Schemes[] =
-{
-    /* 0: Logical LTR => Visual LTR */
-    {LTR, LOGICAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
-            {action_shapeArabic, action_resolve, action_reorder, NULL}},
-    /* 1: Logical RTL => Visual LTR */
-    {RTL, LOGICAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
-            {action_resolve, action_reorder, action_shapeArabic, NULL}},
-    /* 2: Logical LTR => Visual RTL */
-    {LTR, LOGICAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
-            {action_shapeArabic, action_resolve, action_reorder, action_reverse, NULL}},
-    /* 3: Logical RTL => Visual RTL */
-    {RTL, LOGICAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
-            {action_resolve, action_reorder, action_shapeArabic, action_reverse, NULL}},
-    /* 4: Visual LTR => Logical RTL */
-    {LTR, VISUAL, RTL, LOGICAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
-            {action_shapeArabic, action_setInverse, action_resolve, action_reorder, NULL}},
-    /* 5: Visual RTL => Logical RTL */
-    {RTL, VISUAL, RTL, LOGICAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
-            {action_reverse, action_shapeArabic, action_setInverse, action_resolve, action_reorder, NULL}},
-    /* 6: Visual LTR => Logical LTR */
-    {LTR, VISUAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
-            {action_setInverse, action_resolve, action_reorder, action_shapeArabic, NULL}},
-    /* 7: Visual RTL => Logical LTR */
-    {RTL, VISUAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
-            {action_reverse, action_setInverse, action_resolve, action_reorder, action_shapeArabic, NULL}},
-    /* 8: Logical LTR => Logical RTL */
-    {LTR, LOGICAL, RTL, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
-            {action_shapeArabic, action_resolve, action_mirror, action_setRunsOnly, action_resolve, action_reorder, NULL}},
-    /* 9: Logical RTL => Logical LTR */
-    {RTL, LOGICAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, RTL,
-            {action_resolve, action_mirror, action_setRunsOnly, action_resolve, action_reorder, action_shapeArabic, NULL}},
-    /* 10: Visual LTR => Visual RTL */
-    {LTR, VISUAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
-            {action_shapeArabic, action_setInverse, action_resolve, action_mirror, action_reverse, NULL}},
-    /* 11: Visual RTL => Visual LTR */
-    {RTL, VISUAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
-            {action_reverse, action_shapeArabic, action_setInverse, action_resolve, action_mirror, NULL}},
-    /* 12: Logical LTR => Logical LTR */
-    {LTR, LOGICAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
-            {action_resolve, action_mirror, action_shapeArabic, NULL}},
-    /* 13: Logical RTL => Logical RTL */
-    {RTL, LOGICAL, RTL, LOGICAL, SHAPE_VISUAL, SHAPE_LOGICAL, RTL,
-            {action_resolve, action_mirror, action_shapeArabic, NULL}},
-    /* 14: Visual LTR => Visual LTR */
-    {LTR, VISUAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
-            {action_resolve, action_mirror, action_shapeArabic, NULL}},
-    /* 15: Visual RTL => Visual RTL */
-    {RTL, VISUAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
-            {action_reverse, action_resolve, action_mirror, action_shapeArabic, action_reverse, NULL}}
-};
-
-static const uint32_t nSchemes = sizeof(Schemes) / sizeof(*Schemes);
-
-/**
- * When the direction option is <code>UBIDI_DEFAULT_LTR</code> or
- * <code>UBIDI_DEFAULT_RTL</code>, resolve the base direction according to that
- * of the first strong bidi character.
- */
-static void
-resolveBaseDirection(const UChar *text, uint32_t length,
-        UBiDiLevel *pInLevel, UBiDiLevel *pOutLevel)
-{
-    switch (*pInLevel) {
-        case UBIDI_DEFAULT_LTR:
-        case UBIDI_DEFAULT_RTL: {
-            UBiDiLevel level = ubidi_getBaseDirection(text, length);
-            *pInLevel = level != UBIDI_NEUTRAL ? level
-                    : *pInLevel == UBIDI_DEFAULT_RTL ? RTL : LTR;
-            break;
-        }
-        default:
-            *pInLevel &= 1;
-            break;
-    }
-    switch (*pOutLevel) {
-        case UBIDI_DEFAULT_LTR:
-        case UBIDI_DEFAULT_RTL:
-            *pOutLevel = *pInLevel;
-            break;
-        default:
-            *pOutLevel &= 1;
-            break;
-    }
-}
-
-/**
- * Finds a valid <code>ReorderingScheme</code> matching the
- * caller-defined scheme.
- * 
- * @return A valid <code>ReorderingScheme</code> object or NULL
- */
-static const ReorderingScheme*
-findMatchingScheme(UBiDiLevel inLevel, UBiDiLevel outLevel,
-        UBiDiOrder inOrder, UBiDiOrder outOrder)
-{
-    uint32_t i;
-    for (i = 0; i < nSchemes; i++) {
-        const ReorderingScheme *pScheme = Schemes + i;
-        if (inLevel == pScheme->inLevel && outLevel == pScheme->outLevel
-                && inOrder == pScheme->inOrder && outOrder == pScheme->outOrder) {
-            return pScheme;
-        }
-    }
-    return NULL;
-}
-
-U_DRAFT uint32_t U_EXPORT2
-ubiditransform_transform(UBiDiTransform *pBiDiTransform,
-            const UChar *src, int32_t srcLength,
-            UChar *dest, int32_t destSize,
-            UBiDiLevel inParaLevel, UBiDiOrder inOrder,
-            UBiDiLevel outParaLevel, UBiDiOrder outOrder,
-            UBiDiMirroring doMirroring, uint32_t shapingOptions,
-            UErrorCode *pErrorCode)
-{
-    uint32_t destLength = 0;
-    UBool textChanged = FALSE;
-    const UBiDiTransform *pOrigTransform = pBiDiTransform;
-    const UBiDiAction *action = NULL;
-
-    if (U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if (src == NULL || dest == NULL) {
-        *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-    CHECK_LEN(src, srcLength, pErrorCode);
-    CHECK_LEN(dest, destSize, pErrorCode);
-
-    if (pBiDiTransform == NULL) {
-        pBiDiTransform = ubiditransform_open(pErrorCode);
-        if (U_FAILURE(*pErrorCode)) {
-            return 0;
-        }
-    }
-    /* Current limitation: in multiple paragraphs will be resolved according
-       to the 1st paragraph */
-    resolveBaseDirection(src, srcLength, &inParaLevel, &outParaLevel);
-
-    pBiDiTransform->pActiveScheme = findMatchingScheme(inParaLevel, outParaLevel,
-            inOrder, outOrder);
-    if (pBiDiTransform->pActiveScheme == NULL) {
-        goto cleanup;
-    }
-    pBiDiTransform->reorderingOptions = doMirroring ? UBIDI_DO_MIRRORING
-            : UBIDI_REORDER_DEFAULT;
-
-    /* Ignore TEXT_DIRECTION_* flags, as we apply our own depending on the text
-       scheme at the time shaping is invoked. */
-    shapingOptions &= ~U_SHAPE_TEXT_DIRECTION_MASK;
-    pBiDiTransform->digits = shapingOptions & ~U_SHAPE_LETTERS_MASK;
-    pBiDiTransform->letters = shapingOptions & ~U_SHAPE_DIGITS_MASK;
-
-    updateSrc(pBiDiTransform, src, srcLength, destSize > srcLength ? destSize : srcLength, pErrorCode);
-    if (U_FAILURE(*pErrorCode)) {
-        goto cleanup;
-    }
-    if (pBiDiTransform->pBidi == NULL) {
-        pBiDiTransform->pBidi = ubidi_openSized(0, 0, pErrorCode);
-        if (U_FAILURE(*pErrorCode)) {
-            goto cleanup;
-        }
-    }
-    pBiDiTransform->dest = dest;
-    pBiDiTransform->destSize = destSize;
-    pBiDiTransform->pDestLength = &destLength;
-
-    /* Checking for U_SUCCESS() within the loop to bail out on first failure. */
-    for (action = pBiDiTransform->pActiveScheme->actions; *action && U_SUCCESS(*pErrorCode); action++) {
-        if ((*action)(pBiDiTransform, pErrorCode)) {
-            if (action + 1) {
-                updateSrc(pBiDiTransform, pBiDiTransform->dest, *pBiDiTransform->pDestLength,
-                        *pBiDiTransform->pDestLength, pErrorCode);
-            }
-            textChanged = TRUE;
-        }
-    }
-    ubidi_setInverse(pBiDiTransform->pBidi, FALSE);
-
-    if (!textChanged && U_SUCCESS(*pErrorCode)) {
-        /* Text was not changed - just copy src to dest */
-        if (destSize < srcLength) {
-            *pErrorCode = U_BUFFER_OVERFLOW_ERROR;
-        } else {
-            u_strncpy(dest, src, srcLength);
-            destLength = srcLength;
-        }
-    }
-cleanup:
-    if (pOrigTransform != pBiDiTransform) {
-        ubiditransform_close(pBiDiTransform);
-    } else {
-        pBiDiTransform->dest = NULL;
-        pBiDiTransform->pDestLength = NULL;
-        pBiDiTransform->srcLength = 0;
-        pBiDiTransform->destSize = 0;
-    }
-    return U_FAILURE(*pErrorCode) ? 0 : destLength;
-}
diff --git a/source/common/ubidiwrt.c b/source/common/ubidiwrt.c
deleted file mode 100644 (file)
index 1d0c36a..0000000
+++ /dev/null
@@ -1,640 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 2000-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*   file name:  ubidiwrt.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 1999aug06
-*   created by: Markus W. Scherer, updated by Matitiahu Allouche
-*
-* This file contains implementations for BiDi functions that use
-* the core algorithm and core API to write reordered text.
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/ustring.h"
-#include "unicode/uchar.h"
-#include "unicode/ubidi.h"
-#include "unicode/utf16.h"
-#include "cmemory.h"
-#include "ustr_imp.h"
-#include "ubidiimp.h"
-
-/*
- * The function implementations in this file are designed
- * for UTF-16 and UTF-32, not for UTF-8.
- *
- * Assumptions that are not true for UTF-8:
- * - Any code point always needs the same number of code units
- *   ("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
- */
-#if UTF_SIZE==8
-# error reimplement ubidi_writeReordered() for UTF-8, see comment above
-#endif
-
-#define IS_COMBINING(type) ((1UL<<(type))&(1UL<<U_NON_SPACING_MARK|1UL<<U_COMBINING_SPACING_MARK|1UL<<U_ENCLOSING_MARK))
-
-/*
- * When we have UBIDI_OUTPUT_REVERSE set on ubidi_writeReordered(), then we
- * semantically write RTL runs in reverse and later reverse them again.
- * Instead, we actually write them in forward order to begin with.
- * However, if the RTL run was to be mirrored, we need to mirror here now
- * since the implicit second reversal must not do it.
- * It looks strange to do mirroring in LTR output, but it is only because
- * we are writing RTL output in reverse.
- */
-static int32_t
-doWriteForward(const UChar *src, int32_t srcLength,
-               UChar *dest, int32_t destSize,
-               uint16_t options,
-               UErrorCode *pErrorCode) {
-    /* optimize for several combinations of options */
-    switch(options&(UBIDI_REMOVE_BIDI_CONTROLS|UBIDI_DO_MIRRORING)) {
-    case 0: {
-        /* simply copy the LTR run to the destination */
-        int32_t length=srcLength;
-        if(destSize<length) {
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            return srcLength;
-        }
-        do {
-            *dest++=*src++;
-        } while(--length>0);
-        return srcLength;
-    }
-    case UBIDI_DO_MIRRORING: {
-        /* do mirroring */
-        int32_t i=0, j=0;
-        UChar32 c;
-
-        if(destSize<srcLength) {
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            return srcLength;
-        }
-        do {
-            U16_NEXT(src, i, srcLength, c);
-            c=u_charMirror(c);
-            U16_APPEND_UNSAFE(dest, j, c);
-        } while(i<srcLength);
-        return srcLength;
-    }
-    case UBIDI_REMOVE_BIDI_CONTROLS: {
-        /* copy the LTR run and remove any BiDi control characters */
-        int32_t remaining=destSize;
-        UChar c;
-        do {
-            c=*src++;
-            if(!IS_BIDI_CONTROL_CHAR(c)) {
-                if(--remaining<0) {
-                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-
-                    /* preflight the length */
-                    while(--srcLength>0) {
-                        c=*src++;
-                        if(!IS_BIDI_CONTROL_CHAR(c)) {
-                            --remaining;
-                        }
-                    }
-                    return destSize-remaining;
-                }
-                *dest++=c;
-            }
-        } while(--srcLength>0);
-        return destSize-remaining;
-    }
-    default: {
-        /* remove BiDi control characters and do mirroring */
-        int32_t remaining=destSize;
-        int32_t i, j=0;
-        UChar32 c;
-        do {
-            i=0;
-            U16_NEXT(src, i, srcLength, c);
-            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);
-            }
-        } while(srcLength>0);
-        return j;
-    }
-    } /* end of switch */
-}
-
-static int32_t
-doWriteReverse(const UChar *src, int32_t srcLength,
-               UChar *dest, int32_t destSize,
-               uint16_t options,
-               UErrorCode *pErrorCode) {
-    /*
-     * RTL run -
-     *
-     * RTL runs need to be copied to the destination in reverse order
-     * of code points, not code units, to keep Unicode characters intact.
-     *
-     * The general strategy for this is to read the source text
-     * in backward order, collect all code units for a code point
-     * (and optionally following combining characters, see below),
-     * and copy all these code units in ascending order
-     * to the destination for this run.
-     *
-     * Several options request whether combining characters
-     * should be kept after their base characters,
-     * whether BiDi control characters should be removed, and
-     * whether characters should be replaced by their mirror-image
-     * equivalent Unicode characters.
-     */
-    int32_t i, j;
-    UChar32 c;
-
-    /* optimize for several combinations of options */
-    switch(options&(UBIDI_REMOVE_BIDI_CONTROLS|UBIDI_DO_MIRRORING|UBIDI_KEEP_BASE_COMBINING)) {
-    case 0:
-        /*
-         * With none of the "complicated" options set, the destination
-         * run will have the same length as the source run,
-         * and there is no mirroring and no keeping combining characters
-         * with their base characters.
-         */
-        if(destSize<srcLength) {
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            return srcLength;
-        }
-        destSize=srcLength;
-
-        /* preserve character integrity */
-        do {
-            /* i is always after the last code unit known to need to be kept in this segment */
-            i=srcLength;
-
-            /* collect code units for one base character */
-            U16_BACK_1(src, 0, srcLength);
-
-            /* copy this base character */
-            j=srcLength;
-            do {
-                *dest++=src[j++];
-            } while(j<i);
-        } while(srcLength>0);
-        break;
-    case UBIDI_KEEP_BASE_COMBINING:
-        /*
-         * Here, too, the destination
-         * run will have the same length as the source run,
-         * and there is no mirroring.
-         * We do need to keep combining characters with their base characters.
-         */
-        if(destSize<srcLength) {
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            return srcLength;
-        }
-        destSize=srcLength;
-
-        /* preserve character integrity */
-        do {
-            /* i is always after the last code unit known to need to be kept in this segment */
-            i=srcLength;
-
-            /* collect code units and modifier letters for one base character */
-            do {
-                U16_PREV(src, 0, srcLength, c);
-            } while(srcLength>0 && IS_COMBINING(u_charType(c)));
-
-            /* copy this "user character" */
-            j=srcLength;
-            do {
-                *dest++=src[j++];
-            } while(j<i);
-        } while(srcLength>0);
-        break;
-    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.
-         */
-        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;
-            UChar ch;
-
-            i=0;
-            do {
-                ch=*src++;
-                if(!IS_BIDI_CONTROL_CHAR(ch)) {
-                    ++i;
-                }
-            } while(--length>0);
-            src-=srcLength;
-        }
-
-        if(destSize<i) {
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            return i;
-        }
-        destSize=i;
-
-        /* preserve character integrity */
-        do {
-            /* i is always after the last code unit known to need to be kept in this segment */
-            i=srcLength;
-
-            /* collect code units for one base character */
-            U16_PREV(src, 0, srcLength, c);
-            if(options&UBIDI_KEEP_BASE_COMBINING) {
-                /* collect modifier letters for this base character */
-                while(srcLength>0 && 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" */
-            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;
-            }
-            while(j<i) {
-                *dest++=src[j++];
-            }
-        } while(srcLength>0);
-        break;
-    } /* end of switch */
-
-    return destSize;
-}
-
-U_CAPI int32_t U_EXPORT2
-ubidi_writeReverse(const UChar *src, int32_t srcLength,
-                   UChar *dest, int32_t destSize,
-                   uint16_t options,
-                   UErrorCode *pErrorCode) {
-    int32_t destLength;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    /* more error checking */
-    if( src==NULL || srcLength<-1 ||
-        destSize<0 || (destSize>0 && dest==NULL))
-    {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* do input and output overlap? */
-    if( dest!=NULL &&
-        ((src>=dest && src<dest+destSize) ||
-         (dest>=src && dest<src+srcLength)))
-    {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    if(srcLength==-1) {
-        srcLength=u_strlen(src);
-    }
-    if(srcLength>0) {
-        destLength=doWriteReverse(src, srcLength, dest, destSize, options, pErrorCode);
-    } else {
-        /* nothing to do */
-        destLength=0;
-    }
-
-    return u_terminateUChars(dest, destSize, destLength, pErrorCode);
-}
-
-U_CAPI int32_t U_EXPORT2
-ubidi_writeReordered(UBiDi *pBiDi,
-                     UChar *dest, int32_t destSize,
-                     uint16_t options,
-                     UErrorCode *pErrorCode) {
-    const UChar *text;
-    UChar *saveDest;
-    int32_t length, destCapacity;
-    int32_t run, runCount, logicalStart, runLength;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    /* more error checking */
-    if( pBiDi==NULL ||
-        (text=pBiDi->text)==NULL || (length=pBiDi->length)<0 ||
-        destSize<0 || (destSize>0 && dest==NULL))
-    {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* do input and output overlap? */
-    if( dest!=NULL &&
-        ((text>=dest && text<dest+destSize) ||
-         (dest>=text && dest<text+pBiDi->originalLength)))
-    {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    if(length==0) {
-        /* nothing to do */
-        return u_terminateUChars(dest, destSize, 0, pErrorCode);
-    }
-
-    runCount=ubidi_countRuns(pBiDi, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    /* destSize shrinks, later destination length=destCapacity-destSize */
-    saveDest=dest;
-    destCapacity=destSize;
-
-    /*
-     * Option "insert marks" implies UBIDI_INSERT_LRM_FOR_NUMERIC if the
-     * reordering mode (checked below) is appropriate.
-     */
-    if(pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) {
-        options|=UBIDI_INSERT_LRM_FOR_NUMERIC;
-        options&=~UBIDI_REMOVE_BIDI_CONTROLS;
-    }
-    /*
-     * Option "remove controls" implies UBIDI_REMOVE_BIDI_CONTROLS
-     * and cancels UBIDI_INSERT_LRM_FOR_NUMERIC.
-     */
-    if(pBiDi->reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) {
-        options|=UBIDI_REMOVE_BIDI_CONTROLS;
-        options&=~UBIDI_INSERT_LRM_FOR_NUMERIC;
-    }
-    /*
-     * If we do not perform the "inverse BiDi" algorithm, then we
-     * don't need to insert any LRMs, and don't need to test for it.
-     */
-    if((pBiDi->reorderingMode != UBIDI_REORDER_INVERSE_NUMBERS_AS_L) &&
-       (pBiDi->reorderingMode != UBIDI_REORDER_INVERSE_LIKE_DIRECT)  &&
-       (pBiDi->reorderingMode != UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL) &&
-       (pBiDi->reorderingMode != UBIDI_REORDER_RUNS_ONLY)) {
-        options&=~UBIDI_INSERT_LRM_FOR_NUMERIC;
-    }
-    /*
-     * Iterate through all visual runs and copy the run text segments to
-     * the destination, according to the options.
-     *
-     * The tests for where to insert LRMs ignore the fact that there may be
-     * BN codes or non-BMP code points at the beginning and end of a run;
-     * they may insert LRMs unnecessarily but the tests are faster this way
-     * (this would have to be improved for UTF-8).
-     *
-     * Note that the only errors that are set by doWriteXY() are buffer overflow
-     * errors. Ignore them until the end, and continue for preflighting.
-     */
-    if(!(options&UBIDI_OUTPUT_REVERSE)) {
-        /* forward output */
-        if(!(options&UBIDI_INSERT_LRM_FOR_NUMERIC)) {
-            /* do not insert BiDi controls */
-            for(run=0; run<runCount; ++run) {
-                if(UBIDI_LTR==ubidi_getVisualRun(pBiDi, run, &logicalStart, &runLength)) {
-                    runLength=doWriteForward(text+logicalStart, runLength,
-                                             dest, destSize,
-                                             (uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
-                } else {
-                    runLength=doWriteReverse(text+logicalStart, runLength,
-                                             dest, destSize,
-                                             options, pErrorCode);
-                }
-                if(dest!=NULL) {
-                  dest+=runLength;
-                }
-                destSize-=runLength;
-            }
-        } else {
-            /* insert BiDi controls for "inverse BiDi" */
-            const DirProp *dirProps=pBiDi->dirProps;
-            const UChar *src;
-            UChar uc;
-            UBiDiDirection dir;
-            int32_t markFlag;
-
-            for(run=0; run<runCount; ++run) {
-                dir=ubidi_getVisualRun(pBiDi, run, &logicalStart, &runLength);
-                src=text+logicalStart;
-                /* check if something relevant in insertPoints */
-                markFlag=pBiDi->runs[run].insertRemove;
-                if(markFlag<0) {        /* BiDi controls count */
-                    markFlag=0;
-                }
-
-                if(UBIDI_LTR==dir) {
-                    if((pBiDi->isInverse) &&
-                       (/*run>0 &&*/ dirProps[logicalStart]!=L)) {
-                        markFlag |= LRM_BEFORE;
-                    }
-                    if (markFlag & LRM_BEFORE) {
-                        uc=LRM_CHAR;
-                    }
-                    else if (markFlag & RLM_BEFORE) {
-                        uc=RLM_CHAR;
-                    }
-                    else  uc=0;
-                    if(uc) {
-                        if(destSize>0) {
-                            *dest++=uc;
-                        }
-                        --destSize;
-                    }
-
-                    runLength=doWriteForward(src, runLength,
-                                             dest, destSize,
-                                             (uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
-                    if(dest!=NULL) {
-                      dest+=runLength;
-                    }
-                    destSize-=runLength;
-
-                    if((pBiDi->isInverse) &&
-                       (/*run<runCount-1 &&*/ dirProps[logicalStart+runLength-1]!=L)) {
-                        markFlag |= LRM_AFTER;
-                    }
-                    if (markFlag & LRM_AFTER) {
-                        uc=LRM_CHAR;
-                    }
-                    else if (markFlag & RLM_AFTER) {
-                        uc=RLM_CHAR;
-                    }
-                    else  uc=0;
-                    if(uc) {
-                        if(destSize>0) {
-                            *dest++=uc;
-                        }
-                        --destSize;
-                    }
-                } else {                /* RTL run */
-                    if((pBiDi->isInverse) &&
-                       (/*run>0 &&*/ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart+runLength-1])))) {
-                        markFlag |= RLM_BEFORE;
-                    }
-                    if (markFlag & LRM_BEFORE) {
-                        uc=LRM_CHAR;
-                    }
-                    else if (markFlag & RLM_BEFORE) {
-                        uc=RLM_CHAR;
-                    }
-                    else  uc=0;
-                    if(uc) {
-                        if(destSize>0) {
-                            *dest++=uc;
-                        }
-                        --destSize;
-                    }
-
-                    runLength=doWriteReverse(src, runLength,
-                                             dest, destSize,
-                                             options, pErrorCode);
-                    if(dest!=NULL) {
-                      dest+=runLength;
-                    }
-                    destSize-=runLength;
-
-                    if((pBiDi->isInverse) &&
-                       (/*run<runCount-1 &&*/ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart])))) {
-                        markFlag |= RLM_AFTER;
-                    }
-                    if (markFlag & LRM_AFTER) {
-                        uc=LRM_CHAR;
-                    }
-                    else if (markFlag & RLM_AFTER) {
-                        uc=RLM_CHAR;
-                    }
-                    else  uc=0;
-                    if(uc) {
-                        if(destSize>0) {
-                            *dest++=uc;
-                        }
-                        --destSize;
-                    }
-                }
-            }
-        }
-    } else {
-        /* reverse output */
-        if(!(options&UBIDI_INSERT_LRM_FOR_NUMERIC)) {
-            /* do not insert BiDi controls */
-            for(run=runCount; --run>=0;) {
-                if(UBIDI_LTR==ubidi_getVisualRun(pBiDi, run, &logicalStart, &runLength)) {
-                    runLength=doWriteReverse(text+logicalStart, runLength,
-                                             dest, destSize,
-                                             (uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
-                } else {
-                    runLength=doWriteForward(text+logicalStart, runLength,
-                                             dest, destSize,
-                                             options, pErrorCode);
-                }
-                if(dest!=NULL) {
-                  dest+=runLength;
-                }
-                destSize-=runLength;
-            }
-        } else {
-            /* insert BiDi controls for "inverse BiDi" */
-            const DirProp *dirProps=pBiDi->dirProps;
-            const UChar *src;
-            UBiDiDirection dir;
-
-            for(run=runCount; --run>=0;) {
-                /* reverse output */
-                dir=ubidi_getVisualRun(pBiDi, run, &logicalStart, &runLength);
-                src=text+logicalStart;
-
-                if(UBIDI_LTR==dir) {
-                    if(/*run<runCount-1 &&*/ dirProps[logicalStart+runLength-1]!=L) {
-                        if(destSize>0) {
-                            *dest++=LRM_CHAR;
-                        }
-                        --destSize;
-                    }
-
-                    runLength=doWriteReverse(src, runLength,
-                                             dest, destSize,
-                                             (uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
-                    if(dest!=NULL) {
-                      dest+=runLength;
-                    }
-                    destSize-=runLength;
-
-                    if(/*run>0 &&*/ dirProps[logicalStart]!=L) {
-                        if(destSize>0) {
-                            *dest++=LRM_CHAR;
-                        }
-                        --destSize;
-                    }
-                } else {
-                    if(/*run<runCount-1 &&*/ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart]))) {
-                        if(destSize>0) {
-                            *dest++=RLM_CHAR;
-                        }
-                        --destSize;
-                    }
-
-                    runLength=doWriteForward(src, runLength,
-                                             dest, destSize,
-                                             options, pErrorCode);
-                    if(dest!=NULL) {
-                      dest+=runLength;
-                    }
-                    destSize-=runLength;
-
-                    if(/*run>0 &&*/ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart+runLength-1]))) {
-                        if(destSize>0) {
-                            *dest++=RLM_CHAR;
-                        }
-                        --destSize;
-                    }
-                }
-            }
-        }
-    }
-
-    return u_terminateUChars(saveDest, destCapacity, destCapacity-destSize, pErrorCode);
-}
index b02c966..f8bdf5a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -20,6 +20,7 @@
 #include "unicode/rbbi.h"
 #include "rbbirb.h"
 #include "uassert.h"
+#include "cmemory.h"
 
 U_NAMESPACE_USE
 
@@ -119,7 +120,28 @@ ubrk_openRules(  const UChar        *rules,
 }
 
 
-
+U_CAPI UBreakIterator* U_EXPORT2
+ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
+                     const UChar *  text, int32_t textLength,
+                     UErrorCode *   status)
+{
+    if (U_FAILURE(*status)) {
+        return NULL;
+    }
+    if (rulesLength < 0) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+    LocalPointer<RuleBasedBreakIterator> lpRBBI(new RuleBasedBreakIterator(binaryRules, rulesLength, *status), *status);
+    if (U_FAILURE(*status)) {
+        return NULL;
+    }
+    UBreakIterator *uBI = reinterpret_cast<UBreakIterator *>(lpRBBI.orphan());
+    if (text != NULL) {
+        ubrk_setText(uBI, text, textLength, status);
+    }
+    return uBI;
+}
 
 
 U_CAPI UBreakIterator * U_EXPORT2
@@ -288,7 +310,8 @@ ubrk_getLocaleByType(const UBreakIterator *bi,
 }
 
 
-void ubrk_refreshUText(UBreakIterator *bi,
+U_CAPI void U_EXPORT2
+ubrk_refreshUText(UBreakIterator *bi,
                        UText          *text,
                        UErrorCode     *status)
 {
@@ -296,6 +319,39 @@ void ubrk_refreshUText(UBreakIterator *bi,
     bii->refreshInputText(text, *status);
 }
 
+U_CAPI int32_t U_EXPORT2
+ubrk_getBinaryRules(UBreakIterator *bi,
+                    uint8_t *       binaryRules, int32_t rulesCapacity,
+                    UErrorCode *    status)
+{
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+    if ((binaryRules == NULL && rulesCapacity > 0) || rulesCapacity < 0) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+    RuleBasedBreakIterator* rbbi;
+    if ((rbbi = dynamic_cast<RuleBasedBreakIterator*>(reinterpret_cast<BreakIterator*>(bi))) == NULL) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+    uint32_t rulesLength;
+    const uint8_t * returnedRules = rbbi->getBinaryRules(rulesLength);
+    if (rulesLength > INT32_MAX) {
+        *status = U_INDEX_OUTOFBOUNDS_ERROR;
+        return 0;
+    }
+    if (binaryRules != NULL) { // if not preflighting
+        // Here we know rulesLength <= INT32_MAX and rulesCapacity >= 0, can cast safely
+        if ((int32_t)rulesLength > rulesCapacity) {
+            *status = U_BUFFER_OVERFLOW_ERROR;
+        } else {
+            uprv_memcpy(binaryRules, returnedRules, rulesLength);
+        }
+    }
+    return (int32_t)rulesLength;
+}
 
 
 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
index 36ca668..8197f66 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 97ded9e..706d728 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucase.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -46,13 +46,6 @@ struct UCaseProps {
 #define INCLUDED_FROM_UCASE_CPP
 #include "ucase_props_data.h"
 
-/* UCaseProps singleton ----------------------------------------------------- */
-
-U_CAPI const UCaseProps * U_EXPORT2
-ucase_getSingleton() {
-    return &ucase_props_singleton;
-}
-
 /* set of property starts for UnicodeSet ------------------------------------ */
 
 static UBool U_CALLCONV
@@ -64,13 +57,13 @@ _enumPropertyStartsRange(const void *context, UChar32 start, UChar32 /*end*/, ui
 }
 
 U_CFUNC void U_EXPORT2
-ucase_addPropertyStarts(const UCaseProps *csp, const USetAdder *sa, UErrorCode *pErrorCode) {
+ucase_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
     if(U_FAILURE(*pErrorCode)) {
         return;
     }
 
     /* add the start code point of each same-value range of the trie */
-    utrie2_enum(&csp->trie, NULL, _enumPropertyStartsRange, sa);
+    utrie2_enum(&ucase_props_singleton.trie, NULL, _enumPropertyStartsRange, sa);
 
     /* add code points with hardcoded properties, plus the ones following them */
 
@@ -133,14 +126,14 @@ static const uint8_t flagsOffset[256]={
 /* simple case mappings ----------------------------------------------------- */
 
 U_CAPI UChar32 U_EXPORT2
-ucase_tolower(const UCaseProps *csp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+ucase_tolower(UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)>=UCASE_UPPER) {
             c+=UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
+        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
         uint16_t excWord=*pe++;
         if(HAS_SLOT(excWord, UCASE_EXC_LOWER)) {
             GET_SLOT_VALUE(excWord, UCASE_EXC_LOWER, pe, c);
@@ -150,14 +143,14 @@ ucase_tolower(const UCaseProps *csp, UChar32 c) {
 }
 
 U_CAPI UChar32 U_EXPORT2
-ucase_toupper(const UCaseProps *csp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+ucase_toupper(UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)==UCASE_LOWER) {
             c+=UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
+        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
         uint16_t excWord=*pe++;
         if(HAS_SLOT(excWord, UCASE_EXC_UPPER)) {
             GET_SLOT_VALUE(excWord, UCASE_EXC_UPPER, pe, c);
@@ -167,14 +160,14 @@ ucase_toupper(const UCaseProps *csp, UChar32 c) {
 }
 
 U_CAPI UChar32 U_EXPORT2
-ucase_totitle(const UCaseProps *csp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+ucase_totitle(UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)==UCASE_LOWER) {
             c+=UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
+        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
         uint16_t excWord=*pe++;
         int32_t idx;
         if(HAS_SLOT(excWord, UCASE_EXC_TITLE)) {
@@ -198,7 +191,7 @@ static const UChar iDotTilde[3] = { 0x69, 0x307, 0x303 };
 
 
 U_CFUNC void U_EXPORT2
-ucase_addCaseClosure(const UCaseProps *csp, UChar32 c, const USetAdder *sa) {
+ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
     uint16_t props;
 
     /*
@@ -229,7 +222,7 @@ ucase_addCaseClosure(const UCaseProps *csp, UChar32 c, const USetAdder *sa) {
         break;
     }
 
-    props=UTRIE2_GET16(&csp->trie, c);
+    props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)!=UCASE_NONE) {
             /* add the one simple case mapping, no matter what type it is */
@@ -243,7 +236,7 @@ ucase_addCaseClosure(const UCaseProps *csp, UChar32 c, const USetAdder *sa) {
          * c has exceptions, so there may be multiple simple and/or
          * full case mappings. Add them all.
          */
-        const uint16_t *pe0, *pe=GET_EXCEPTIONS(csp, props);
+        const uint16_t *pe0, *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
         const UChar *closure;
         uint16_t excWord=*pe++;
         int32_t idx, closureLength, fullLength, length;
@@ -338,10 +331,10 @@ strcmpMax(const UChar *s, int32_t length, const UChar *t, int32_t max) {
 }
 
 U_CFUNC UBool U_EXPORT2
-ucase_addStringCaseClosure(const UCaseProps *csp, const UChar *s, int32_t length, const USetAdder *sa) {
+ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa) {
     int32_t i, start, limit, result, unfoldRows, unfoldRowWidth, unfoldStringWidth;
 
-    if(csp->unfold==NULL || s==NULL) {
+    if(ucase_props_singleton.unfold==NULL || s==NULL) {
         return FALSE; /* no reverse case folding data, or no string */
     }
     if(length<=1) {
@@ -355,7 +348,7 @@ ucase_addStringCaseClosure(const UCaseProps *csp, const UChar *s, int32_t length
         return FALSE;
     }
 
-    const uint16_t *unfold=csp->unfold;
+    const uint16_t *unfold=ucase_props_singleton.unfold;
     unfoldRows=unfold[UCASE_UNFOLD_ROWS];
     unfoldRowWidth=unfold[UCASE_UNFOLD_ROW_WIDTH];
     unfoldStringWidth=unfold[UCASE_UNFOLD_STRING_WIDTH];
@@ -381,7 +374,7 @@ ucase_addStringCaseClosure(const UCaseProps *csp, const UChar *s, int32_t length
             for(i=unfoldStringWidth; i<unfoldRowWidth && p[i]!=0;) {
                 U16_NEXT_UNSAFE(p, i, c);
                 sa->add(sa->set, c);
-                ucase_addCaseClosure(csp, c, sa);
+                ucase_addCaseClosure(c, sa);
             }
             return TRUE;
         } else if(result<0) {
@@ -430,38 +423,38 @@ U_NAMESPACE_END
 
 /** @return UCASE_NONE, UCASE_LOWER, UCASE_UPPER, UCASE_TITLE */
 U_CAPI int32_t U_EXPORT2
-ucase_getType(const UCaseProps *csp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+ucase_getType(UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     return UCASE_GET_TYPE(props);
 }
 
 /** @return same as ucase_getType() and set bit 2 if c is case-ignorable */
 U_CAPI int32_t U_EXPORT2
-ucase_getTypeOrIgnorable(const UCaseProps *csp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+ucase_getTypeOrIgnorable(UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     return UCASE_GET_TYPE_AND_IGNORABLE(props);
 }
 
 /** @return UCASE_NO_DOT, UCASE_SOFT_DOTTED, UCASE_ABOVE, UCASE_OTHER_ACCENT */
 static inline int32_t
-getDotType(const UCaseProps *csp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+getDotType(UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         return props&UCASE_DOT_MASK;
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
+        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
         return (*pe>>UCASE_EXC_DOT_SHIFT)&UCASE_DOT_MASK;
     }
 }
 
 U_CAPI UBool U_EXPORT2
-ucase_isSoftDotted(const UCaseProps *csp, UChar32 c) {
-    return (UBool)(getDotType(csp, c)==UCASE_SOFT_DOTTED);
+ucase_isSoftDotted(UChar32 c) {
+    return (UBool)(getDotType(c)==UCASE_SOFT_DOTTED);
 }
 
 U_CAPI UBool U_EXPORT2
-ucase_isCaseSensitive(const UCaseProps *csp, UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+ucase_isCaseSensitive(UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     return (UBool)((props&UCASE_SENSITIVE)!=0);
 }
 
@@ -545,12 +538,10 @@ ucase_isCaseSensitive(const UCaseProps *csp, UChar32 c) {
  *     zero or more case-ignorable characters.
  */
 
-#define is_a(c) ((c)=='a' || (c)=='A')
 #define is_d(c) ((c)=='d' || (c)=='D')
 #define is_e(c) ((c)=='e' || (c)=='E')
 #define is_i(c) ((c)=='i' || (c)=='I')
 #define is_l(c) ((c)=='l' || (c)=='L')
-#define is_n(c) ((c)=='n' || (c)=='N')
 #define is_r(c) ((c)=='r' || (c)=='R')
 #define is_t(c) ((c)=='t' || (c)=='T')
 #define is_u(c) ((c)=='u' || (c)=='U')
@@ -565,16 +556,7 @@ ucase_isCaseSensitive(const UCaseProps *csp, UChar32 c) {
  * Accepts both 2- and 3-letter codes and accepts case variants.
  */
 U_CFUNC int32_t
-ucase_getCaseLocale(const char *locale, int32_t *locCache) {
-    int32_t result;
-    char c;
-
-    if(locCache!=NULL && (result=*locCache)!=UCASE_LOC_UNKNOWN) {
-        return result;
-    }
-
-    result=UCASE_LOC_ROOT;
-
+ucase_getCaseLocale(const char *locale) {
     /*
      * This function used to use uloc_getLanguage(), but the current code
      * removes the dependency of this low-level code on uloc implementation code
@@ -584,73 +566,149 @@ ucase_getCaseLocale(const char *locale, int32_t *locCache) {
      * Because this code does not want to depend on uloc, the caller must
      * pass in a non-NULL locale, i.e., may need to call uloc_getDefault().
      */
-    c=*locale++;
-    if(is_t(c)) {
-        /* tr or tur? */
+    char c=*locale++;
+    // Fastpath for English "en" which is often used for default (=root locale) case mappings,
+    // and for Chinese "zh": Very common but no special case mapping behavior.
+    // Then check lowercase vs. uppercase to reduce the number of comparisons
+    // for other locales without special behavior.
+    if(c=='e') {
+        /* el or ell? */
         c=*locale++;
-        if(is_u(c)) {
+        if(is_l(c)) {
             c=*locale++;
-        }
-        if(is_r(c)) {
-            c=*locale;
+            if(is_l(c)) {
+                c=*locale;
+            }
             if(is_sep(c)) {
-                result=UCASE_LOC_TURKISH;
+                return UCASE_LOC_GREEK;
             }
         }
-    } else if(is_a(c)) {
-        /* az or aze? */
-        c=*locale++;
-        if(is_z(c)) {
+        // en, es, ... -> root
+    } else if(c=='z') {
+        return UCASE_LOC_ROOT;
+#if U_CHARSET_FAMILY==U_ASCII_FAMILY
+    } else if(c>='a') {  // ASCII a-z = 0x61..0x7a, after A-Z
+#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY
+    } else if(c<='z') {  // EBCDIC a-z = 0x81..0xa9 with two gaps, before A-Z
+#else
+#   error Unknown charset family!
+#endif
+        // lowercase c
+        if(c=='t') {
+            /* tr or tur? */
             c=*locale++;
-            if(is_e(c)) {
+            if(is_u(c)) {
+                c=*locale++;
+            }
+            if(is_r(c)) {
                 c=*locale;
+                if(is_sep(c)) {
+                    return UCASE_LOC_TURKISH;
+                }
             }
-            if(is_sep(c)) {
-                result=UCASE_LOC_TURKISH;
+        } else if(c=='a') {
+            /* az or aze? */
+            c=*locale++;
+            if(is_z(c)) {
+                c=*locale++;
+                if(is_e(c)) {
+                    c=*locale;
+                }
+                if(is_sep(c)) {
+                    return UCASE_LOC_TURKISH;
+                }
             }
-        }
-    } else if(is_l(c)) {
-        /* lt or lit? */
-        c=*locale++;
-        if(is_i(c)) {
+        } else if(c=='l') {
+            /* lt or lit? */
             c=*locale++;
-        }
-        if(is_t(c)) {
-            c=*locale;
-            if(is_sep(c)) {
-                result=UCASE_LOC_LITHUANIAN;
+            if(is_i(c)) {
+                c=*locale++;
             }
-        }
-    } else if(is_e(c)) {
-        /* el or ell? */
-        c=*locale++;
-        if(is_l(c)) {
+            if(is_t(c)) {
+                c=*locale;
+                if(is_sep(c)) {
+                    return UCASE_LOC_LITHUANIAN;
+                }
+            }
+        } else if(c=='n') {
+            /* nl or nld? */
             c=*locale++;
             if(is_l(c)) {
+                c=*locale++;
+                if(is_d(c)) {
+                    c=*locale;
+                }
+                if(is_sep(c)) {
+                    return UCASE_LOC_DUTCH;
+                }
+            }
+        }
+    } else {
+        // uppercase c
+        // Same code as for lowercase c but also check for 'E'.
+        if(c=='T') {
+            /* tr or tur? */
+            c=*locale++;
+            if(is_u(c)) {
+                c=*locale++;
+            }
+            if(is_r(c)) {
                 c=*locale;
+                if(is_sep(c)) {
+                    return UCASE_LOC_TURKISH;
+                }
             }
-            if(is_sep(c)) {
-                result=UCASE_LOC_GREEK;
+        } else if(c=='A') {
+            /* az or aze? */
+            c=*locale++;
+            if(is_z(c)) {
+                c=*locale++;
+                if(is_e(c)) {
+                    c=*locale;
+                }
+                if(is_sep(c)) {
+                    return UCASE_LOC_TURKISH;
+                }
             }
-        }
-    } else if(is_n(c)) {
-        /* nl or nld? */
-        c=*locale++;
-        if(is_l(c)) {
+        } else if(c=='L') {
+            /* lt or lit? */
             c=*locale++;
-            if(is_d(c)) {
+            if(is_i(c)) {
+                c=*locale++;
+            }
+            if(is_t(c)) {
                 c=*locale;
+                if(is_sep(c)) {
+                    return UCASE_LOC_LITHUANIAN;
+                }
             }
-            if(is_sep(c)) {
-                result=UCASE_LOC_DUTCH;
+        } else if(c=='E') {
+            /* el or ell? */
+            c=*locale++;
+            if(is_l(c)) {
+                c=*locale++;
+                if(is_l(c)) {
+                    c=*locale;
+                }
+                if(is_sep(c)) {
+                    return UCASE_LOC_GREEK;
+                }
+            }
+        } else if(c=='N') {
+            /* nl or nld? */
+            c=*locale++;
+            if(is_l(c)) {
+                c=*locale++;
+                if(is_d(c)) {
+                    c=*locale;
+                }
+                if(is_sep(c)) {
+                    return UCASE_LOC_DUTCH;
+                }
             }
         }
     }
-
-    if(locCache!=NULL) {
-        *locCache=result;
-    }
-    return result;
+    return UCASE_LOC_ROOT;
 }
 
 /*
@@ -662,7 +720,7 @@ ucase_getCaseLocale(const char *locale, int32_t *locCache) {
  * it is also cased or not.
  */
 static UBool
-isFollowedByCasedLetter(const UCaseProps *csp, UCaseContextIterator *iter, void *context, int8_t dir) {
+isFollowedByCasedLetter(UCaseContextIterator *iter, void *context, int8_t dir) {
     UChar32 c;
 
     if(iter==NULL) {
@@ -670,7 +728,7 @@ isFollowedByCasedLetter(const UCaseProps *csp, UCaseContextIterator *iter, void
     }
 
     for(/* dir!=0 sets direction */; (c=iter(context, dir))>=0; dir=0) {
-        int32_t type=ucase_getTypeOrIgnorable(csp, c);
+        int32_t type=ucase_getTypeOrIgnorable(c);
         if(type&4) {
             /* case-ignorable, continue with the loop */
         } else if(type!=UCASE_NONE) {
@@ -685,7 +743,7 @@ isFollowedByCasedLetter(const UCaseProps *csp, UCaseContextIterator *iter, void
 
 /* Is preceded by Soft_Dotted character with no intervening cc=230 ? */
 static UBool
-isPrecededBySoftDotted(const UCaseProps *csp, UCaseContextIterator *iter, void *context) {
+isPrecededBySoftDotted(UCaseContextIterator *iter, void *context) {
     UChar32 c;
     int32_t dotType;
     int8_t dir;
@@ -695,7 +753,7 @@ isPrecededBySoftDotted(const UCaseProps *csp, UCaseContextIterator *iter, void *
     }
 
     for(dir=-1; (c=iter(context, dir))>=0; dir=0) {
-        dotType=getDotType(csp, c);
+        dotType=getDotType(c);
         if(dotType==UCASE_SOFT_DOTTED) {
             return TRUE; /* preceded by TYPE_i */
         } else if(dotType!=UCASE_OTHER_ACCENT) {
@@ -742,7 +800,7 @@ isPrecededBySoftDotted(const UCaseProps *csp, UCaseContextIterator *iter, void *
 
 /* Is preceded by base character 'I' with no intervening cc=230 ? */
 static UBool
-isPrecededBy_I(const UCaseProps *csp, UCaseContextIterator *iter, void *context) {
+isPrecededBy_I(UCaseContextIterator *iter, void *context) {
     UChar32 c;
     int32_t dotType;
     int8_t dir;
@@ -755,7 +813,7 @@ isPrecededBy_I(const UCaseProps *csp, UCaseContextIterator *iter, void *context)
         if(c==0x49) {
             return TRUE; /* preceded by I */
         }
-        dotType=getDotType(csp, c);
+        dotType=getDotType(c);
         if(dotType!=UCASE_OTHER_ACCENT) {
             return FALSE; /* preceded by different base character (not I), or intervening cc==230 */
         }
@@ -766,7 +824,7 @@ isPrecededBy_I(const UCaseProps *csp, UCaseContextIterator *iter, void *context)
 
 /* Is followed by one or more cc==230 ? */
 static UBool
-isFollowedByMoreAbove(const UCaseProps *csp, UCaseContextIterator *iter, void *context) {
+isFollowedByMoreAbove(UCaseContextIterator *iter, void *context) {
     UChar32 c;
     int32_t dotType;
     int8_t dir;
@@ -776,7 +834,7 @@ isFollowedByMoreAbove(const UCaseProps *csp, UCaseContextIterator *iter, void *c
     }
 
     for(dir=1; (c=iter(context, dir))>=0; dir=0) {
-        dotType=getDotType(csp, c);
+        dotType=getDotType(c);
         if(dotType==UCASE_ABOVE) {
             return TRUE; /* at least one cc==230 following */
         } else if(dotType!=UCASE_OTHER_ACCENT) {
@@ -789,7 +847,7 @@ isFollowedByMoreAbove(const UCaseProps *csp, UCaseContextIterator *iter, void *c
 
 /* Is followed by a dot above (without cc==230 in between) ? */
 static UBool
-isFollowedByDotAbove(const UCaseProps *csp, UCaseContextIterator *iter, void *context) {
+isFollowedByDotAbove(UCaseContextIterator *iter, void *context) {
     UChar32 c;
     int32_t dotType;
     int8_t dir;
@@ -802,7 +860,7 @@ isFollowedByDotAbove(const UCaseProps *csp, UCaseContextIterator *iter, void *co
         if(c==0x307) {
             return TRUE;
         }
-        dotType=getDotType(csp, c);
+        dotType=getDotType(c);
         if(dotType!=UCASE_OTHER_ACCENT) {
             return FALSE; /* next base character or cc==230 in between */
         }
@@ -812,20 +870,20 @@ isFollowedByDotAbove(const UCaseProps *csp, UCaseContextIterator *iter, void *co
 }
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullLower(const UCaseProps *csp, UChar32 c,
+ucase_toFullLower(UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  const char *locale, int32_t *locCache) {
+                  int32_t loc) {
     // The sign of the result has meaning, input must be non-negative so that it can be returned as is.
     U_ASSERT(c >= 0);
     UChar32 result=c;
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)>=UCASE_UPPER) {
             result=c+UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(csp, props), *pe2;
+        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props), *pe2;
         uint16_t excWord=*pe++;
         int32_t full;
 
@@ -833,7 +891,6 @@ ucase_toFullLower(const UCaseProps *csp, UChar32 c,
 
         if(excWord&UCASE_EXC_CONDITIONAL_SPECIAL) {
             /* use hardcoded conditions and mappings */
-            int32_t loc=ucase_getCaseLocale(locale, locCache);
 
             /*
              * Test for conditional mappings first
@@ -844,7 +901,7 @@ ucase_toFullLower(const UCaseProps *csp, UChar32 c,
             if( loc==UCASE_LOC_LITHUANIAN &&
                     /* base characters, find accents above */
                     (((c==0x49 || c==0x4a || c==0x12e) &&
-                        isFollowedByMoreAbove(csp, iter, context)) ||
+                        isFollowedByMoreAbove(iter, context)) ||
                     /* precomposed with accent above, no need to find one */
                     (c==0xcc || c==0xcd || c==0x128))
             ) {
@@ -896,7 +953,7 @@ ucase_toFullLower(const UCaseProps *csp, UChar32 c,
                     0130; 0069; 0130; 0130; az # LATIN CAPITAL LETTER I WITH DOT ABOVE
                  */
                 return 0x69;
-            } else if(loc==UCASE_LOC_TURKISH && c==0x307 && isPrecededBy_I(csp, iter, context)) {
+            } else if(loc==UCASE_LOC_TURKISH && c==0x307 && isPrecededBy_I(iter, context)) {
                 /*
                     # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
                     # This matches the behavior of the canonically equivalent I-dot_above
@@ -905,7 +962,7 @@ ucase_toFullLower(const UCaseProps *csp, UChar32 c,
                     0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
                  */
                 return 0; /* remove the dot (continue without output) */
-            } else if(loc==UCASE_LOC_TURKISH && c==0x49 && !isFollowedByDotAbove(csp, iter, context)) {
+            } else if(loc==UCASE_LOC_TURKISH && c==0x49 && !isFollowedByDotAbove(iter, context)) {
                 /*
                     # When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
 
@@ -922,8 +979,8 @@ ucase_toFullLower(const UCaseProps *csp, UChar32 c,
                 *pString=iDot;
                 return 2;
             } else if(  c==0x3a3 &&
-                        !isFollowedByCasedLetter(csp, iter, context, 1) &&
-                        isFollowedByCasedLetter(csp, iter, context, -1) /* -1=preceded */
+                        !isFollowedByCasedLetter(iter, context, 1) &&
+                        isFollowedByCasedLetter(iter, context, -1) /* -1=preceded */
             ) {
                 /* greek capital sigma maps depending on surrounding cased letters (see SpecialCasing.txt) */
                 /*
@@ -957,21 +1014,21 @@ ucase_toFullLower(const UCaseProps *csp, UChar32 c,
 
 /* internal */
 static int32_t
-toUpperOrTitle(const UCaseProps *csp, UChar32 c,
+toUpperOrTitle(UChar32 c,
                UCaseContextIterator *iter, void *context,
                const UChar **pString,
-               const char *locale, int32_t *locCache,
+               int32_t loc,
                UBool upperNotTitle) {
     // The sign of the result has meaning, input must be non-negative so that it can be returned as is.
     U_ASSERT(c >= 0);
     UChar32 result=c;
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)==UCASE_LOWER) {
             result=c+UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(csp, props), *pe2;
+        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props), *pe2;
         uint16_t excWord=*pe++;
         int32_t full, idx;
 
@@ -979,8 +1036,6 @@ toUpperOrTitle(const UCaseProps *csp, UChar32 c,
 
         if(excWord&UCASE_EXC_CONDITIONAL_SPECIAL) {
             /* use hardcoded conditions and mappings */
-            int32_t loc=ucase_getCaseLocale(locale, locCache);
-
             if(loc==UCASE_LOC_TURKISH && c==0x69) {
                 /*
                     # Turkish and Azeri
@@ -994,7 +1049,7 @@ toUpperOrTitle(const UCaseProps *csp, UChar32 c,
                     0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
                 */
                 return 0x130;
-            } else if(loc==UCASE_LOC_LITHUANIAN && c==0x307 && isPrecededBySoftDotted(csp, iter, context)) {
+            } else if(loc==UCASE_LOC_LITHUANIAN && c==0x307 && isPrecededBySoftDotted(iter, context)) {
                 /*
                     # Lithuanian
 
@@ -1052,19 +1107,19 @@ toUpperOrTitle(const UCaseProps *csp, UChar32 c,
 }
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullUpper(const UCaseProps *csp, UChar32 c,
+ucase_toFullUpper(UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  const char *locale, int32_t *locCache) {
-    return toUpperOrTitle(csp, c, iter, context, pString, locale, locCache, TRUE);
+                  int32_t caseLocale) {
+    return toUpperOrTitle(c, iter, context, pString, caseLocale, TRUE);
 }
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullTitle(const UCaseProps *csp, UChar32 c,
+ucase_toFullTitle(UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  const char *locale, int32_t *locCache) {
-    return toUpperOrTitle(csp, c, iter, context, pString, locale, locCache, FALSE);
+                  int32_t caseLocale) {
+    return toUpperOrTitle(c, iter, context, pString, caseLocale, FALSE);
 }
 
 /* case folding ------------------------------------------------------------- */
@@ -1110,14 +1165,14 @@ ucase_toFullTitle(const UCaseProps *csp, UChar32 c,
 
 /* return the simple case folding mapping for c */
 U_CAPI UChar32 U_EXPORT2
-ucase_fold(const UCaseProps *csp, UChar32 c, uint32_t options) {
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+ucase_fold(UChar32 c, uint32_t options) {
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)>=UCASE_UPPER) {
             c+=UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
+        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
         uint16_t excWord=*pe++;
         int32_t idx;
         if(excWord&UCASE_EXC_CONDITIONAL_FOLD) {
@@ -1170,19 +1225,19 @@ ucase_fold(const UCaseProps *csp, UChar32 c, uint32_t options) {
  */
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullFolding(const UCaseProps *csp, UChar32 c,
+ucase_toFullFolding(UChar32 c,
                     const UChar **pString,
                     uint32_t options) {
     // The sign of the result has meaning, input must be non-negative so that it can be returned as is.
     U_ASSERT(c >= 0);
     UChar32 result=c;
-    uint16_t props=UTRIE2_GET16(&csp->trie, c);
+    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)>=UCASE_UPPER) {
             result=c+UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(csp, props), *pe2;
+        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props), *pe2;
         uint16_t excWord=*pe++;
         int32_t full, idx;
 
@@ -1244,66 +1299,59 @@ ucase_toFullFolding(const UCaseProps *csp, UChar32 c,
 
 /* case mapping properties API ---------------------------------------------- */
 
-#define GET_CASE_PROPS() &ucase_props_singleton
-
 /* public API (see uchar.h) */
 
 U_CAPI UBool U_EXPORT2
 u_isULowercase(UChar32 c) {
-    return (UBool)(UCASE_LOWER==ucase_getType(GET_CASE_PROPS(), c));
+    return (UBool)(UCASE_LOWER==ucase_getType(c));
 }
 
 U_CAPI UBool U_EXPORT2
 u_isUUppercase(UChar32 c) {
-    return (UBool)(UCASE_UPPER==ucase_getType(GET_CASE_PROPS(), c));
+    return (UBool)(UCASE_UPPER==ucase_getType(c));
 }
 
 /* Transforms the Unicode character to its lower case equivalent.*/
 U_CAPI UChar32 U_EXPORT2
 u_tolower(UChar32 c) {
-    return ucase_tolower(GET_CASE_PROPS(), c);
+    return ucase_tolower(c);
 }
     
 /* Transforms the Unicode character to its upper case equivalent.*/
 U_CAPI UChar32 U_EXPORT2
 u_toupper(UChar32 c) {
-    return ucase_toupper(GET_CASE_PROPS(), c);
+    return ucase_toupper(c);
 }
 
 /* Transforms the Unicode character to its title case equivalent.*/
 U_CAPI UChar32 U_EXPORT2
 u_totitle(UChar32 c) {
-    return ucase_totitle(GET_CASE_PROPS(), c);
+    return ucase_totitle(c);
 }
 
 /* return the simple case folding mapping for c */
 U_CAPI UChar32 U_EXPORT2
 u_foldCase(UChar32 c, uint32_t options) {
-    return ucase_fold(GET_CASE_PROPS(), c, options);
+    return ucase_fold(c, options);
 }
 
 U_CFUNC int32_t U_EXPORT2
 ucase_hasBinaryProperty(UChar32 c, UProperty which) {
     /* case mapping properties */
     const UChar *resultString;
-    int32_t locCache;
-    const UCaseProps *csp=GET_CASE_PROPS();
-    if(csp==NULL) {
-        return FALSE;
-    }
     switch(which) {
     case UCHAR_LOWERCASE:
-        return (UBool)(UCASE_LOWER==ucase_getType(csp, c));
+        return (UBool)(UCASE_LOWER==ucase_getType(c));
     case UCHAR_UPPERCASE:
-        return (UBool)(UCASE_UPPER==ucase_getType(csp, c));
+        return (UBool)(UCASE_UPPER==ucase_getType(c));
     case UCHAR_SOFT_DOTTED:
-        return ucase_isSoftDotted(csp, c);
+        return ucase_isSoftDotted(c);
     case UCHAR_CASE_SENSITIVE:
-        return ucase_isCaseSensitive(csp, c);
+        return ucase_isCaseSensitive(c);
     case UCHAR_CASED:
-        return (UBool)(UCASE_NONE!=ucase_getType(csp, c));
+        return (UBool)(UCASE_NONE!=ucase_getType(c));
     case UCHAR_CASE_IGNORABLE:
-        return (UBool)(ucase_getTypeOrIgnorable(csp, c)>>2);
+        return (UBool)(ucase_getTypeOrIgnorable(c)>>2);
     /*
      * Note: The following Changes_When_Xyz are defined as testing whether
      * the NFD form of the input changes when Xyz-case-mapped.
@@ -1317,21 +1365,17 @@ ucase_hasBinaryProperty(UChar32 c, UProperty which) {
      * start sets for normalization and case mappings.
      */
     case UCHAR_CHANGES_WHEN_LOWERCASED:
-        locCache=UCASE_LOC_ROOT;
-        return (UBool)(ucase_toFullLower(csp, c, NULL, NULL, &resultString, "", &locCache)>=0);
+        return (UBool)(ucase_toFullLower(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
     case UCHAR_CHANGES_WHEN_UPPERCASED:
-        locCache=UCASE_LOC_ROOT;
-        return (UBool)(ucase_toFullUpper(csp, c, NULL, NULL, &resultString, "", &locCache)>=0);
+        return (UBool)(ucase_toFullUpper(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
     case UCHAR_CHANGES_WHEN_TITLECASED:
-        locCache=UCASE_LOC_ROOT;
-        return (UBool)(ucase_toFullTitle(csp, c, NULL, NULL, &resultString, "", &locCache)>=0);
+        return (UBool)(ucase_toFullTitle(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
     /* case UCHAR_CHANGES_WHEN_CASEFOLDED: -- in uprops.c */
     case UCHAR_CHANGES_WHEN_CASEMAPPED:
-        locCache=UCASE_LOC_ROOT;
         return (UBool)(
-            ucase_toFullLower(csp, c, NULL, NULL, &resultString, "", &locCache)>=0 ||
-            ucase_toFullUpper(csp, c, NULL, NULL, &resultString, "", &locCache)>=0 ||
-            ucase_toFullTitle(csp, c, NULL, NULL, &resultString, "", &locCache)>=0);
+            ucase_toFullLower(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0 ||
+            ucase_toFullUpper(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0 ||
+            ucase_toFullTitle(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
     default:
         return FALSE;
     }
index 29ea71a..e15bae6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucase.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -37,18 +37,8 @@ U_NAMESPACE_END
 
 /* library API -------------------------------------------------------------- */
 
-U_CDECL_BEGIN
-
-struct UCaseProps;
-typedef struct UCaseProps UCaseProps;
-
-U_CDECL_END
-
-U_CAPI const UCaseProps * U_EXPORT2
-ucase_getSingleton(void);
-
 U_CFUNC void U_EXPORT2
-ucase_addPropertyStarts(const UCaseProps *csp, const USetAdder *sa, UErrorCode *pErrorCode);
+ucase_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode);
 
 /**
  * Requires non-NULL locale ID but otherwise does the equivalent of
@@ -56,7 +46,7 @@ ucase_addPropertyStarts(const UCaseProps *csp, const USetAdder *sa, UErrorCode *
  * Accepts both 2- and 3-letter codes and accepts case variants.
  */
 U_CFUNC int32_t
-ucase_getCaseLocale(const char *locale, int32_t *locCache);
+ucase_getCaseLocale(const char *locale);
 
 /* Casing locale types for ucase_getCaseLocale */
 enum {
@@ -87,16 +77,16 @@ enum {
 /* single-code point functions */
 
 U_CAPI UChar32 U_EXPORT2
-ucase_tolower(const UCaseProps *csp, UChar32 c);
+ucase_tolower(UChar32 c);
 
 U_CAPI UChar32 U_EXPORT2
-ucase_toupper(const UCaseProps *csp, UChar32 c);
+ucase_toupper(UChar32 c);
 
 U_CAPI UChar32 U_EXPORT2
-ucase_totitle(const UCaseProps *csp, UChar32 c);
+ucase_totitle(UChar32 c);
 
 U_CAPI UChar32 U_EXPORT2
-ucase_fold(const UCaseProps *csp, UChar32 c, uint32_t options);
+ucase_fold(UChar32 c, uint32_t options);
 
 /**
  * Adds all simple case mappings and the full case folding for c to sa,
@@ -108,7 +98,7 @@ ucase_fold(const UCaseProps *csp, UChar32 c, uint32_t options);
  * - for k include the Kelvin sign
  */
 U_CFUNC void U_EXPORT2
-ucase_addCaseClosure(const UCaseProps *csp, UChar32 c, const USetAdder *sa);
+ucase_addCaseClosure(UChar32 c, const USetAdder *sa);
 
 /**
  * Maps the string to single code points and adds the associated case closure
@@ -123,7 +113,7 @@ ucase_addCaseClosure(const UCaseProps *csp, UChar32 c, const USetAdder *sa);
  * @return TRUE if the string was found
  */
 U_CFUNC UBool U_EXPORT2
-ucase_addStringCaseClosure(const UCaseProps *csp, const UChar *s, int32_t length, const USetAdder *sa);
+ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa);
 
 #ifdef __cplusplus
 U_NAMESPACE_BEGIN
@@ -157,17 +147,17 @@ U_NAMESPACE_END
 
 /** @return UCASE_NONE, UCASE_LOWER, UCASE_UPPER, UCASE_TITLE */
 U_CAPI int32_t U_EXPORT2
-ucase_getType(const UCaseProps *csp, UChar32 c);
+ucase_getType(UChar32 c);
 
 /** @return like ucase_getType() but also sets UCASE_IGNORABLE if c is case-ignorable */
 U_CAPI int32_t U_EXPORT2
-ucase_getTypeOrIgnorable(const UCaseProps *csp, UChar32 c);
+ucase_getTypeOrIgnorable(UChar32 c);
 
 U_CAPI UBool U_EXPORT2
-ucase_isSoftDotted(const UCaseProps *csp, UChar32 c);
+ucase_isSoftDotted(UChar32 c);
 
 U_CAPI UBool U_EXPORT2
-ucase_isCaseSensitive(const UCaseProps *csp, UChar32 c);
+ucase_isCaseSensitive(UChar32 c);
 
 /* string case mapping functions */
 
@@ -240,10 +230,7 @@ enum {
  * @param context Pointer to be passed into iter.
  * @param pString If the mapping result is a string, then the pointer is
  *                written to *pString.
- * @param locale Locale ID for locale-dependent mappings.
- * @param locCache Initialize to 0; may be used to cache the result of parsing
- *                 the locale ID for subsequent calls.
- *                 Can be NULL.
+ * @param caseLocale Case locale value from ucase_getCaseLocale().
  * @return Output code point or string length, see UCASE_MAX_STRING_LENGTH.
  *
  * @see UCaseContextIterator
@@ -251,25 +238,25 @@ enum {
  * @internal
  */
 U_CAPI int32_t U_EXPORT2
-ucase_toFullLower(const UCaseProps *csp, UChar32 c,
+ucase_toFullLower(UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  const char *locale, int32_t *locCache);
+                  int32_t caseLocale);
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullUpper(const UCaseProps *csp, UChar32 c,
+ucase_toFullUpper(UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  const char *locale, int32_t *locCache);
+                  int32_t caseLocale);
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullTitle(const UCaseProps *csp, UChar32 c,
+ucase_toFullTitle(UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  const char *locale, int32_t *locCache);
+                  int32_t caseLocale);
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullFolding(const UCaseProps *csp, UChar32 c,
+ucase_toFullFolding(UChar32 c,
                     const UChar **pString,
                     uint32_t options);
 
@@ -283,10 +270,10 @@ U_CDECL_BEGIN
  * @internal
  */
 typedef int32_t U_CALLCONV
-UCaseMapFull(const UCaseProps *csp, UChar32 c,
+UCaseMapFull(UChar32 c,
              UCaseContextIterator *iter, void *context,
              const UChar **pString,
-             const char *locale, int32_t *locCache);
+             int32_t caseLocale);
 
 U_CDECL_END
 
index aa51bac..3663592 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (C) 1999-2016, International Business Machines
index 0576a26..391140d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucasemap.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -20,6 +20,8 @@
 
 #include "unicode/utypes.h"
 #include "unicode/brkiter.h"
+#include "unicode/casemap.h"
+#include "unicode/edits.h"
 #include "unicode/ubrk.h"
 #include "unicode/uloc.h"
 #include "unicode/ustring.h"
 #include "unicode/utf16.h"
 #include "cmemory.h"
 #include "cstring.h"
+#include "uassert.h"
 #include "ucase.h"
+#include "ucasemap_imp.h"
 #include "ustr_imp.h"
 
+U_NAMESPACE_BEGIN
+
+namespace {
+
+// TODO: share with UTF-16? inline in ucasemap_imp.h?
+int32_t checkOverflowAndEditsError(int32_t destIndex, int32_t destCapacity,
+                                   Edits *edits, UErrorCode &errorCode) {
+    if (U_SUCCESS(errorCode)) {
+        if (destIndex > destCapacity) {
+            errorCode = U_BUFFER_OVERFLOW_ERROR;
+        } else if (edits != NULL) {
+            edits->copyErrorTo(errorCode);
+        }
+    }
+    return destIndex;
+}
+
+}  // namespace
+
+U_NAMESPACE_END
+
 U_NAMESPACE_USE
 
 /* UCaseMap service object -------------------------------------------------- */
 
+UCaseMap::UCaseMap(const char *localeID, uint32_t opts, UErrorCode *pErrorCode) :
+#if !UCONFIG_NO_BREAK_ITERATION
+        iter(NULL),
+#endif
+        caseLocale(UCASE_LOC_UNKNOWN), options(opts) {
+    ucasemap_setLocale(this, localeID, pErrorCode);
+}
+
+UCaseMap::~UCaseMap() {
+#if !UCONFIG_NO_BREAK_ITERATION
+    delete iter;
+#endif
+}
+
 U_CAPI UCaseMap * U_EXPORT2
 ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode) {
-    UCaseMap *csm;
-
     if(U_FAILURE(*pErrorCode)) {
         return NULL;
     }
-
-    csm=(UCaseMap *)uprv_malloc(sizeof(UCaseMap));
+    UCaseMap *csm = new UCaseMap(locale, options, pErrorCode);
     if(csm==NULL) {
+        *pErrorCode = U_MEMORY_ALLOCATION_ERROR;
         return NULL;
-    }
-    uprv_memset(csm, 0, sizeof(UCaseMap));
-
-    csm->csp=ucase_getSingleton();
-    ucasemap_setLocale(csm, locale, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        uprv_free(csm);
+    } else if (U_FAILURE(*pErrorCode)) {
+        delete csm;
         return NULL;
     }
-
-    csm->options=options;
     return csm;
 }
 
 U_CAPI void U_EXPORT2
 ucasemap_close(UCaseMap *csm) {
-    if(csm!=NULL) {
-#if !UCONFIG_NO_BREAK_ITERATION
-        // Do not call ubrk_close() so that we do not depend on all of the BreakIterator code.
-        delete reinterpret_cast<BreakIterator *>(csm->iter);
-#endif
-        uprv_free(csm);
-    }
+    delete csm;
 }
 
 U_CAPI const char * U_EXPORT2
@@ -87,13 +111,16 @@ ucasemap_getOptions(const UCaseMap *csm) {
 
 U_CAPI void U_EXPORT2
 ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode) {
-    int32_t length;
-
     if(U_FAILURE(*pErrorCode)) {
         return;
     }
+    if (locale != NULL && *locale == 0) {
+        csm->locale[0] = 0;
+        csm->caseLocale = UCASE_LOC_ROOT;
+        return;
+    }
 
-    length=uloc_getName(locale, csm->locale, (int32_t)sizeof(csm->locale), pErrorCode);
+    int32_t length=uloc_getName(locale, csm->locale, (int32_t)sizeof(csm->locale), pErrorCode);
     if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR || length==sizeof(csm->locale)) {
         *pErrorCode=U_ZERO_ERROR;
         /* we only really need the language code for case mappings */
@@ -102,27 +129,32 @@ ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode) {
     if(length==sizeof(csm->locale)) {
         *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
     }
-    csm->locCache=0;
     if(U_SUCCESS(*pErrorCode)) {
-        ucase_getCaseLocale(csm->locale, &csm->locCache);
+        csm->caseLocale=UCASE_LOC_UNKNOWN;
+        csm->caseLocale = ucase_getCaseLocale(csm->locale);
     } else {
         csm->locale[0]=0;
+        csm->caseLocale = UCASE_LOC_ROOT;
     }
 }
 
 U_CAPI void U_EXPORT2
-ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode * /*pErrorCode*/) {
+ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode) {
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
     csm->options=options;
 }
 
 /* UTF-8 string case mappings ----------------------------------------------- */
 
-/* TODO(markus): Move to a new, separate utf8case.c file. */
+/* TODO(markus): Move to a new, separate utf8case.cpp file. */
 
 /* append a full case mapping result, see UCASE_MAX_STRING_LENGTH */
 static inline int32_t
 appendResult(uint8_t *dest, int32_t destIndex, int32_t destCapacity,
-             int32_t result, const UChar *s) {
+             int32_t result, const UChar *s,
+             int32_t cpLength, uint32_t options, icu::Edits *edits) {
     UChar32 c;
     int32_t length;
     UErrorCode errorCode;
@@ -130,86 +162,126 @@ appendResult(uint8_t *dest, int32_t destIndex, int32_t destCapacity,
     /* decode the result */
     if(result<0) {
         /* (not) original code point */
+        if(edits!=NULL) {
+            edits->addUnchanged(cpLength);
+            if(options & UCASEMAP_OMIT_UNCHANGED_TEXT) {
+                return destIndex;
+            }
+        }
         c=~result;
-        length=U8_LENGTH(c);
-    } else if(result<=UCASE_MAX_STRING_LENGTH) {
-        c=U_SENTINEL;
-        length=result;
+        if(destIndex<destCapacity && c<=0x7f) {  // ASCII slightly-fastpath
+            dest[destIndex++]=(uint8_t)c;
+            return destIndex;
+        }
+        length=cpLength;
     } else {
-        c=result;
-        length=U8_LENGTH(c);
+        if(result<=UCASE_MAX_STRING_LENGTH) {
+            // string: "result" is the UTF-16 length
+            errorCode=U_ZERO_ERROR;
+            if(destIndex<destCapacity) {
+                u_strToUTF8((char *)(dest+destIndex), destCapacity-destIndex, &length,
+                            s, result, &errorCode);
+            } else {
+                u_strToUTF8(NULL, 0, &length, s, result, &errorCode);
+            }
+            if(U_FAILURE(errorCode) && errorCode != U_BUFFER_OVERFLOW_ERROR) {
+                return -1;
+            }
+            if(length>(INT32_MAX-destIndex)) {
+                return -1;  // integer overflow
+            }
+            if(edits!=NULL) {
+                edits->addReplace(cpLength, length);
+            }
+            // We might have an overflow, but we know the actual length.
+            return destIndex+length;
+        } else if(destIndex<destCapacity && result<=0x7f) {  // ASCII slightly-fastpath
+            dest[destIndex++]=(uint8_t)result;
+            if(edits!=NULL) {
+                edits->addReplace(cpLength, 1);
+            }
+            return destIndex;
+        } else {
+            c=result;
+            length=U8_LENGTH(c);
+            if(edits!=NULL) {
+                edits->addReplace(cpLength, length);
+            }
+        }
     }
+    // c>=0 single code point
     if(length>(INT32_MAX-destIndex)) {
         return -1;  // integer overflow
     }
 
     if(destIndex<destCapacity) {
         /* append the result */
-        if(c>=0) {
-            /* code point */
-            UBool isError=FALSE;
-            U8_APPEND(dest, destIndex, destCapacity, c, isError);
-            if(isError) {
-                /* overflow, nothing written */
-                destIndex+=length;
-            }
-        } else {
-            /* string */
-            int32_t destLength;
-            errorCode=U_ZERO_ERROR;
-            u_strToUTF8(
-                (char *)(dest+destIndex), destCapacity-destIndex, &destLength,
-                s, length,
-                &errorCode);
-            if(U_FAILURE(errorCode) && errorCode != U_BUFFER_OVERFLOW_ERROR) {
-                return -1;
-            }
-            if(destLength>(INT32_MAX-destIndex)) {
-                return -1;  // integer overflow
-            }
-            destIndex+=destLength;
-            /* we might have an overflow, but we know the actual length */
+        UBool isError=FALSE;
+        U8_APPEND(dest, destIndex, destCapacity, c, isError);
+        if(isError) {
+            /* overflow, nothing written */
+            destIndex+=length;
         }
     } else {
         /* preflight */
-        if(c>=0) {
-            destIndex+=length;
-        } else {
-            int32_t destLength;
-            errorCode=U_ZERO_ERROR;
-            u_strToUTF8(
-                NULL, 0, &destLength,
-                s, length,
-                &errorCode);
-            if(U_FAILURE(errorCode) && errorCode != U_BUFFER_OVERFLOW_ERROR) {
-                return -1;
-            }
-            if(destLength>(INT32_MAX-destIndex)) {
-                return -1;  // integer overflow
-            }
-            destIndex+=destLength;
-        }
+        destIndex+=length;
     }
     return destIndex;
 }
 
 static inline int32_t
-appendUChar(uint8_t *dest, int32_t destIndex, int32_t destCapacity, UChar c) {
-    int32_t length=U8_LENGTH(c);
-    if(length>(INT32_MAX-destIndex)) {
+appendASCII(uint8_t *dest, int32_t destIndex, int32_t destCapacity, uint8_t c) {
+    if(destIndex<destCapacity) {
+        dest[destIndex]=c;
+    } else if(destIndex==INT32_MAX) {
+        return -1;  // integer overflow
+    }
+    return destIndex+1;
+}
+
+// See unicode/utf8.h U8_APPEND_UNSAFE().
+static inline uint8_t getTwoByteLead(UChar32 c) { return (uint8_t)((c >> 6) | 0xc0); }
+static inline uint8_t getTwoByteTrail(UChar32 c) { return (uint8_t)((c & 0x3f) | 0x80); }
+
+static inline int32_t
+appendTwoBytes(uint8_t *dest, int32_t destIndex, int32_t destCapacity, UChar32 c) {
+    U_ASSERT(0x370 <= c && c <= 0x3ff);  // 2-byte UTF-8, main Greek block
+    if(2>(INT32_MAX-destIndex)) {
         return -1;  // integer overflow
     }
-    int32_t limit=destIndex+length;
+    int32_t limit=destIndex+2;
     if(limit<=destCapacity) {
-        U8_APPEND_UNSAFE(dest, destIndex, c);
+        dest+=destIndex;
+        dest[0]=getTwoByteLead(c);
+        dest[1]=getTwoByteTrail(c);
     }
     return limit;
 }
 
 static inline int32_t
-appendString(uint8_t *dest, int32_t destIndex, int32_t destCapacity,
-             const uint8_t *s, int32_t length) {
+appendTwoBytes(uint8_t *dest, int32_t destIndex, int32_t destCapacity, const char *s) {
+    if(2>(INT32_MAX-destIndex)) {
+        return -1;  // integer overflow
+    }
+    int32_t limit=destIndex+2;
+    if(limit<=destCapacity) {
+        dest+=destIndex;
+        dest[0]=(uint8_t)s[0];
+        dest[1]=(uint8_t)s[1];
+    }
+    return limit;
+}
+
+static inline int32_t
+appendUnchanged(uint8_t *dest, int32_t destIndex, int32_t destCapacity,
+                const uint8_t *s, int32_t length, uint32_t options, icu::Edits *edits) {
     if(length>0) {
+        if(edits!=NULL) {
+            edits->addUnchanged(length);
+            if(options & UCASEMAP_OMIT_UNCHANGED_TEXT) {
+                return destIndex;
+            }
+        }
         if(length>(INT32_MAX-destIndex)) {
             return -1;  // integer overflow
         }
@@ -258,93 +330,77 @@ utf8_caseContextIterator(void *context, int8_t dir) {
  * context [0..srcLength[ into account.
  */
 static int32_t
-_caseMap(const UCaseMap *csm, UCaseMapFull *map,
+_caseMap(int32_t caseLocale, uint32_t options, UCaseMapFull *map,
          uint8_t *dest, int32_t destCapacity,
          const uint8_t *src, UCaseContext *csc,
          int32_t srcStart, int32_t srcLimit,
-         UErrorCode *pErrorCode) {
-    const UChar *s = NULL;
-    UChar32 c, c2 = 0;
-    int32_t srcIndex, destIndex;
-    int32_t locCache;
-
-    locCache=csm->locCache;
-
+         icu::Edits *edits,
+         UErrorCode &errorCode) {
     /* case mapping loop */
-    srcIndex=srcStart;
-    destIndex=0;
+    int32_t srcIndex=srcStart;
+    int32_t destIndex=0;
     while(srcIndex<srcLimit) {
-        csc->cpStart=srcIndex;
+        int32_t cpStart;
+        csc->cpStart=cpStart=srcIndex;
+        UChar32 c;
         U8_NEXT(src, srcIndex, srcLimit, c);
         csc->cpLimit=srcIndex;
         if(c<0) {
             // Malformed UTF-8.
-            destIndex=appendString(dest, destIndex, destCapacity, src+csc->cpStart, srcIndex-csc->cpStart);
+            destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                      src+cpStart, srcIndex-cpStart, options, edits);
             if(destIndex<0) {
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                 return 0;
             }
             continue;
         }
-        c=map(csm->csp, c, utf8_caseContextIterator, csc, &s, csm->locale, &locCache);
-        if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0x7f : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0x7f)) {
-            /* fast path version of appendResult() for ASCII results */
-            dest[destIndex++]=(uint8_t)c2;
-        } else {
-            destIndex=appendResult(dest, destIndex, destCapacity, c, s);
-            if(destIndex<0) {
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                return 0;
-            }
+        const UChar *s;
+        c=map(c, utf8_caseContextIterator, csc, &s, caseLocale);
+        destIndex = appendResult(dest, destIndex, destCapacity, c, s,
+                                 srcIndex - cpStart, options, edits);
+        if (destIndex < 0) {
+            errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
+            return 0;
         }
     }
 
-    if(destIndex>destCapacity) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
     return destIndex;
 }
 
 #if !UCONFIG_NO_BREAK_ITERATION
 
 U_CFUNC int32_t U_CALLCONV
-ucasemap_internalUTF8ToTitle(const UCaseMap *csm,
-         uint8_t *dest, int32_t destCapacity,
-         const uint8_t *src, int32_t srcLength,
-         UErrorCode *pErrorCode) {
-    const UChar *s;
-    UChar32 c;
-    int32_t prev, titleStart, titleLimit, idx, destIndex;
-    UBool isFirstIndex;
-
-    if(U_FAILURE(*pErrorCode)) {
+ucasemap_internalUTF8ToTitle(
+        int32_t caseLocale, uint32_t options, BreakIterator *iter,
+        uint8_t *dest, int32_t destCapacity,
+        const uint8_t *src, int32_t srcLength,
+        icu::Edits *edits,
+        UErrorCode &errorCode) {
+    if(U_FAILURE(errorCode)) {
         return 0;
     }
 
-    // Use the C++ abstract base class to minimize dependencies.
-    // TODO: Change UCaseMap.iter to store a BreakIterator directly.
-    BreakIterator *bi=reinterpret_cast<BreakIterator *>(csm->iter);
-
     /* set up local variables */
-    int32_t locCache=csm->locCache;
     UCaseContext csc=UCASECONTEXT_INITIALIZER;
     csc.p=(void *)src;
     csc.limit=srcLength;
-    destIndex=0;
-    prev=0;
-    isFirstIndex=TRUE;
+    int32_t destIndex=0;
+    int32_t prev=0;
+    UBool isFirstIndex=TRUE;
 
     /* titlecasing loop */
     while(prev<srcLength) {
         /* find next index where to titlecase */
+        int32_t index;
         if(isFirstIndex) {
             isFirstIndex=FALSE;
-            idx=bi->first();
+            index=iter->first();
         } else {
-            idx=bi->next();
+            index=iter->next();
         }
-        if(idx==UBRK_DONE || idx>srcLength) {
-            idx=srcLength;
+        if(index==UBRK_DONE || index>srcLength) {
+            index=srcLength;
         }
 
         /*
@@ -360,29 +416,32 @@ ucasemap_internalUTF8ToTitle(const UCaseMap *csm,
          * b) first case letter (titlecase)         [titleStart..titleLimit[
          * c) subsequent characters (lowercase)                 [titleLimit..index[
          */
-        if(prev<idx) {
+        if(prev<index) {
             /* find and copy uncased characters [prev..titleStart[ */
-            titleStart=titleLimit=prev;
-            U8_NEXT(src, titleLimit, idx, c);
-            if((csm->options&U_TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCASE_NONE==ucase_getType(csm->csp, c)) {
+            int32_t titleStart=prev;
+            int32_t titleLimit=prev;
+            UChar32 c;
+            U8_NEXT(src, titleLimit, index, c);
+            if((options&U_TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCASE_NONE==ucase_getType(c)) {
                 /* Adjust the titlecasing index (titleStart) to the next cased character. */
                 for(;;) {
                     titleStart=titleLimit;
-                    if(titleLimit==idx) {
+                    if(titleLimit==index) {
                         /*
                          * only uncased characters in [prev..index[
                          * stop with titleStart==titleLimit==index
                          */
                         break;
                     }
-                    U8_NEXT(src, titleLimit, idx, c);
-                    if(UCASE_NONE!=ucase_getType(csm->csp, c)) {
+                    U8_NEXT(src, titleLimit, index, c);
+                    if(UCASE_NONE!=ucase_getType(c)) {
                         break; /* cased letter at [titleStart..titleLimit[ */
                     }
                 }
-                destIndex=appendString(dest, destIndex, destCapacity, src+prev, titleStart-prev);
+                destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                          src+prev, titleStart-prev, options, edits);
                 if(destIndex<0) {
-                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
             }
@@ -392,47 +451,69 @@ ucasemap_internalUTF8ToTitle(const UCaseMap *csm,
                 if(c>=0) {
                     csc.cpStart=titleStart;
                     csc.cpLimit=titleLimit;
-                    c=ucase_toFullTitle(csm->csp, c, utf8_caseContextIterator, &csc, &s, csm->locale, &locCache);
-                    destIndex=appendResult(dest, destIndex, destCapacity, c, s);
+                    const UChar *s;
+                    c=ucase_toFullTitle(c, utf8_caseContextIterator, &csc, &s, caseLocale);
+                    destIndex=appendResult(dest, destIndex, destCapacity, c, s,
+                                           titleLimit-titleStart, options, edits);
                 } else {
                     // Malformed UTF-8.
-                    destIndex=appendString(dest, destIndex, destCapacity, src+titleStart, titleLimit-titleStart);
+                    destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                              src+titleStart, titleLimit-titleStart, options, edits);
                 }
                 if(destIndex<0) {
-                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
 
                 /* Special case Dutch IJ titlecasing */
-                if (titleStart+1 < idx &&
-                        ucase_getCaseLocale(csm->locale, &locCache) == UCASE_LOC_DUTCH &&
-                        (src[titleStart] == 0x0049 || src[titleStart] == 0x0069) &&
-                        (src[titleStart+1] == 0x004A || src[titleStart+1] == 0x006A)) {
-                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x004A);
-                    titleLimit++;
+                if (titleStart+1 < index &&
+                        caseLocale == UCASE_LOC_DUTCH &&
+                        (src[titleStart] == 0x0049 || src[titleStart] == 0x0069)) {
+                    if (src[titleStart+1] == 0x006A) {
+                        destIndex=appendASCII(dest, destIndex, destCapacity, 0x004A);
+                        if(destIndex<0) {
+                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                            return 0;
+                        }
+                        if(edits!=NULL) {
+                            edits->addReplace(1, 1);
+                        }
+                        titleLimit++;
+                    } else if (src[titleStart+1] == 0x004A) {
+                        // Keep the capital J from getting lowercased.
+                        destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                                  src+titleStart+1, 1, options, edits);
+                        if(destIndex<0) {
+                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                            return 0;
+                        }
+                        titleLimit++;
+                    }
                 }
+
                 /* lowercase [titleLimit..index[ */
-                if(titleLimit<idx) {
-                    if((csm->options&U_TITLECASE_NO_LOWERCASE)==0) {
+                if(titleLimit<index) {
+                    if((options&U_TITLECASE_NO_LOWERCASE)==0) {
                         /* Normal operation: Lowercase the rest of the word. */
                         destIndex+=
                             _caseMap(
-                                csm, ucase_toFullLower,
+                                caseLocale, options, ucase_toFullLower,
                                 dest+destIndex, destCapacity-destIndex,
                                 src, &csc,
-                                titleLimit, idx,
-                                pErrorCode);
-                        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
-                            *pErrorCode=U_ZERO_ERROR;
+                                titleLimit, index,
+                                edits, errorCode);
+                        if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
+                            errorCode=U_ZERO_ERROR;
                         }
-                        if(U_FAILURE(*pErrorCode)) {
+                        if(U_FAILURE(errorCode)) {
                             return destIndex;
                         }
                     } else {
                         /* Optionally just copy the rest of the word unchanged. */
-                        destIndex=appendString(dest, destIndex, destCapacity, src+titleLimit, idx-titleLimit);
+                        destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                                  src+titleLimit, index-titleLimit, options, edits);
                         if(destIndex<0) {
-                            *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                             return 0;
                         }
                     }
@@ -440,13 +521,10 @@ ucasemap_internalUTF8ToTitle(const UCaseMap *csm,
             }
         }
 
-        prev=idx;
+        prev=index;
     }
 
-    if(destIndex>destCapacity) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-    return destIndex;
+    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
 }
 
 #endif
@@ -454,11 +532,11 @@ ucasemap_internalUTF8ToTitle(const UCaseMap *csm,
 U_NAMESPACE_BEGIN
 namespace GreekUpper {
 
-UBool isFollowedByCasedLetter(const UCaseProps *csp, const uint8_t *s, int32_t i, int32_t length) {
+UBool isFollowedByCasedLetter(const uint8_t *s, int32_t i, int32_t length) {
     while (i < length) {
         UChar32 c;
         U8_NEXT(s, i, length, c);
-        int32_t type = ucase_getTypeOrIgnorable(csp, c);
+        int32_t type = ucase_getTypeOrIgnorable(c);
         if ((type & UCASE_IGNORABLE) != 0) {
             // Case-ignorable, continue with the loop.
         } else if (type != UCASE_NONE) {
@@ -471,11 +549,11 @@ UBool isFollowedByCasedLetter(const UCaseProps *csp, const uint8_t *s, int32_t i
 }
 
 // Keep this consistent with the UTF-16 version in ustrcase.cpp and the Java version in CaseMap.java.
-int32_t toUpper(const UCaseMap *csm,
+int32_t toUpper(uint32_t options,
                 uint8_t *dest, int32_t destCapacity,
                 const uint8_t *src, int32_t srcLength,
-                UErrorCode *pErrorCode) {
-    int32_t locCache = UCASE_LOC_GREEK;
+                Edits *edits,
+                UErrorCode &errorCode) {
     int32_t destIndex=0;
     uint32_t state = 0;
     for (int32_t i = 0; i < srcLength;) {
@@ -483,7 +561,7 @@ int32_t toUpper(const UCaseMap *csm,
         UChar32 c;
         U8_NEXT(src, nextIndex, srcLength, c);
         uint32_t nextState = 0;
-        int32_t type = ucase_getTypeOrIgnorable(csm->csp, c);
+        int32_t type = ucase_getTypeOrIgnorable(c);
         if ((type & UCASE_IGNORABLE) != 0) {
             // c is case-ignorable
             nextState |= (state & AFTER_CASED);
@@ -533,7 +611,7 @@ int32_t toUpper(const UCaseMap *csm,
                     (data & HAS_ACCENT) != 0 &&
                     numYpogegrammeni == 0 &&
                     (state & AFTER_CASED) == 0 &&
-                    !isFollowedByCasedLetter(csm->csp, src, nextIndex, srcLength)) {
+                    !isFollowedByCasedLetter(src, nextIndex, srcLength)) {
                 // Keep disjunctive "or" with (only) a tonos.
                 // We use the same "word boundary" conditions as for the Final_Sigma test.
                 if (i == nextIndex) {
@@ -551,40 +629,75 @@ int32_t toUpper(const UCaseMap *csm,
                     data &= ~HAS_EITHER_DIALYTIKA;
                 }
             }
-            destIndex=appendUChar(dest, destIndex, destCapacity, (UChar)upper);
-            if (destIndex >= 0 && (data & HAS_EITHER_DIALYTIKA) != 0) {
-                destIndex=appendUChar(dest, destIndex, destCapacity, 0x308);  // restore or add a dialytika
-            }
-            if (destIndex >= 0 && addTonos) {
-                destIndex=appendUChar(dest, destIndex, destCapacity, 0x301);
-            }
-            while (destIndex >= 0 && numYpogegrammeni > 0) {
-                destIndex=appendUChar(dest, destIndex, destCapacity, 0x399);
-                --numYpogegrammeni;
-            }
-            if(destIndex<0) {
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                return 0;
+
+            UBool change = TRUE;
+            if (edits != NULL) {
+                // Find out first whether we are changing the text.
+                U_ASSERT(0x370 <= upper && upper <= 0x3ff);  // 2-byte UTF-8, main Greek block
+                change = (i + 2) > nextIndex ||
+                        src[i] != getTwoByteLead(upper) || src[i + 1] != getTwoByteTrail(upper) ||
+                        numYpogegrammeni > 0;
+                int32_t i2 = i + 2;
+                if ((data & HAS_EITHER_DIALYTIKA) != 0) {
+                    change |= (i2 + 2) > nextIndex ||
+                            src[i2] != (uint8_t)u8"\u0308"[0] ||
+                            src[i2 + 1] != (uint8_t)u8"\u0308"[1];
+                    i2 += 2;
+                }
+                if (addTonos) {
+                    change |= (i2 + 2) > nextIndex ||
+                            src[i2] != (uint8_t)u8"\u0301"[0] ||
+                            src[i2 + 1] != (uint8_t)u8"\u0301"[1];
+                    i2 += 2;
+                }
+                int32_t oldLength = nextIndex - i;
+                int32_t newLength = (i2 - i) + numYpogegrammeni * 2;  // 2 bytes per U+0399
+                change |= oldLength != newLength;
+                if (change) {
+                    if (edits != NULL) {
+                        edits->addReplace(oldLength, newLength);
+                    }
+                } else {
+                    if (edits != NULL) {
+                        edits->addUnchanged(oldLength);
+                    }
+                    // Write unchanged text?
+                    change = (options & UCASEMAP_OMIT_UNCHANGED_TEXT) == 0;
+                }
             }
-        } else if(c>=0) {
-            const UChar *s;
-            UChar32 c2 = 0;
-            c=ucase_toFullUpper(csm->csp, c, NULL, NULL, &s, csm->locale, &locCache);
-            if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0x7f : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0x7f)) {
-                /* fast path version of appendResult() for ASCII results */
-                dest[destIndex++]=(uint8_t)c2;
-            } else {
-                destIndex=appendResult(dest, destIndex, destCapacity, c, s);
+
+            if (change) {
+                destIndex=appendTwoBytes(dest, destIndex, destCapacity, upper);
+                if (destIndex >= 0 && (data & HAS_EITHER_DIALYTIKA) != 0) {
+                    destIndex=appendTwoBytes(dest, destIndex, destCapacity, u8"\u0308");  // restore or add a dialytika
+                }
+                if (destIndex >= 0 && addTonos) {
+                    destIndex=appendTwoBytes(dest, destIndex, destCapacity, u8"\u0301");
+                }
+                while (destIndex >= 0 && numYpogegrammeni > 0) {
+                    destIndex=appendTwoBytes(dest, destIndex, destCapacity, u8"\u0399");
+                    --numYpogegrammeni;
+                }
                 if(destIndex<0) {
-                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
             }
+        } else if(c>=0) {
+            const UChar *s;
+            c=ucase_toFullUpper(c, NULL, NULL, &s, UCASE_LOC_GREEK);
+            destIndex = appendResult(dest, destIndex, destCapacity, c, s,
+                                     nextIndex - i, options, edits);
+            if (destIndex < 0) {
+                errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
+                return 0;
+            }
         } else {
             // Malformed UTF-8.
-            destIndex=appendString(dest, destIndex, destCapacity, src+i, nextIndex-i);
+            destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                      src+i, nextIndex-i, options, edits);
             if(destIndex<0) {
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                 return 0;
             }
         }
@@ -592,9 +705,6 @@ int32_t toUpper(const UCaseMap *csm,
         state = nextState;
     }
 
-    if(destIndex>destCapacity) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
     return destIndex;
 }
 
@@ -602,102 +712,92 @@ int32_t toUpper(const UCaseMap *csm,
 U_NAMESPACE_END
 
 static int32_t U_CALLCONV
-ucasemap_internalUTF8ToLower(const UCaseMap *csm,
+ucasemap_internalUTF8ToLower(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
                              uint8_t *dest, int32_t destCapacity,
                              const uint8_t *src, int32_t srcLength,
-                             UErrorCode *pErrorCode) {
+                             icu::Edits *edits,
+                             UErrorCode &errorCode) {
     UCaseContext csc=UCASECONTEXT_INITIALIZER;
     csc.p=(void *)src;
     csc.limit=srcLength;
-    return _caseMap(
-        csm, ucase_toFullLower,
+    int32_t destIndex = _caseMap(
+        caseLocale, options, ucase_toFullLower,
         dest, destCapacity,
         src, &csc, 0, srcLength,
-        pErrorCode);
+        edits, errorCode);
+    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
 }
 
 static int32_t U_CALLCONV
-ucasemap_internalUTF8ToUpper(const UCaseMap *csm,
+ucasemap_internalUTF8ToUpper(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
                              uint8_t *dest, int32_t destCapacity,
                              const uint8_t *src, int32_t srcLength,
-                             UErrorCode *pErrorCode) {
-    int32_t locCache = csm->locCache;
-    if (ucase_getCaseLocale(csm->locale, &locCache) == UCASE_LOC_GREEK) {
-        return GreekUpper::toUpper(csm, dest, destCapacity, src, srcLength, pErrorCode);
+                             icu::Edits *edits,
+                             UErrorCode &errorCode) {
+    int32_t destIndex;
+    if (caseLocale == UCASE_LOC_GREEK) {
+        destIndex = GreekUpper::toUpper(options, dest, destCapacity,
+                                        src, srcLength, edits, errorCode);
+    } else {
+        UCaseContext csc=UCASECONTEXT_INITIALIZER;
+        csc.p=(void *)src;
+        csc.limit=srcLength;
+        destIndex = _caseMap(
+            caseLocale, options, ucase_toFullUpper,
+            dest, destCapacity,
+            src, &csc, 0, srcLength,
+            edits, errorCode);
     }
-    UCaseContext csc=UCASECONTEXT_INITIALIZER;
-    csc.p=(void *)src;
-    csc.limit=srcLength;
-    return _caseMap(
-        csm, ucase_toFullUpper,
-        dest, destCapacity,
-        src, &csc, 0, srcLength,
-        pErrorCode);
+    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
 }
 
-static int32_t
-utf8_foldCase(const UCaseProps *csp,
-              uint8_t *dest, int32_t destCapacity,
-              const uint8_t *src, int32_t srcLength,
-              uint32_t options,
-              UErrorCode *pErrorCode) {
-    int32_t srcIndex, destIndex;
-
-    const UChar *s;
-    UChar32 c, c2;
-    int32_t start;
-
+static int32_t U_CALLCONV
+ucasemap_internalUTF8Fold(int32_t /* caseLocale */, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
+                          uint8_t *dest, int32_t destCapacity,
+                          const uint8_t *src, int32_t srcLength,
+                          icu::Edits *edits,
+                          UErrorCode &errorCode) {
     /* case mapping loop */
-    srcIndex=destIndex=0;
-    while(srcIndex<srcLength) {
-        start=srcIndex;
+    int32_t srcIndex = 0;
+    int32_t destIndex = 0;
+    while (srcIndex < srcLength) {
+        int32_t cpStart = srcIndex;
+        UChar32 c;
         U8_NEXT(src, srcIndex, srcLength, c);
         if(c<0) {
             // Malformed UTF-8.
-            destIndex=appendString(dest, destIndex, destCapacity, src+start, srcIndex-start);
+            destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                      src+cpStart, srcIndex-cpStart, options, edits);
             if(destIndex<0) {
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                 return 0;
             }
             continue;
         }
-        c=ucase_toFullFolding(csp, c, &s, options);
-        if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0x7f : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0x7f)) {
-            /* fast path version of appendResult() for ASCII results */
-            dest[destIndex++]=(uint8_t)c2;
-        } else {
-            destIndex=appendResult(dest, destIndex, destCapacity, c, s);
-            if(destIndex<0) {
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                return 0;
-            }
+        const UChar *s;
+        c = ucase_toFullFolding(c, &s, options);
+        destIndex = appendResult(dest, destIndex, destCapacity, c, s,
+                                 srcIndex - cpStart, options, edits);
+        if (destIndex < 0) {
+            errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
+            return 0;
         }
     }
 
-    if(destIndex>destCapacity) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-    return destIndex;
-}
-
-static int32_t U_CALLCONV
-ucasemap_internalUTF8Fold(const UCaseMap *csm,
-                          uint8_t *dest, int32_t destCapacity,
-                          const uint8_t *src, int32_t srcLength,
-                          UErrorCode *pErrorCode) {
-    return utf8_foldCase(csm->csp, dest, destCapacity, src, srcLength, csm->options, pErrorCode);
+    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
 }
 
 U_CFUNC int32_t
-ucasemap_mapUTF8(const UCaseMap *csm,
+ucasemap_mapUTF8(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
                  uint8_t *dest, int32_t destCapacity,
                  const uint8_t *src, int32_t srcLength,
                  UTF8CaseMapper *stringCaseMapper,
-                 UErrorCode *pErrorCode) {
+                 icu::Edits *edits,
+                 UErrorCode &errorCode) {
     int32_t destLength;
 
     /* check argument values */
-    if(U_FAILURE(*pErrorCode)) {
+    if(U_FAILURE(errorCode)) {
         return 0;
     }
     if( destCapacity<0 ||
@@ -705,7 +805,7 @@ ucasemap_mapUTF8(const UCaseMap *csm,
         src==NULL ||
         srcLength<-1
     ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
 
@@ -719,12 +819,16 @@ ucasemap_mapUTF8(const UCaseMap *csm,
         ((src>=dest && src<(dest+destCapacity)) ||
          (dest>=src && dest<(src+srcLength)))
     ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
 
-    destLength=stringCaseMapper(csm, dest, destCapacity, src, srcLength, pErrorCode);
-    return u_terminateChars((char *)dest, destCapacity, destLength, pErrorCode);
+    if(edits!=NULL) {
+        edits->reset();
+    }
+    destLength=stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
+                                dest, destCapacity, src, srcLength, edits, errorCode);
+    return u_terminateChars((char *)dest, destCapacity, destLength, &errorCode);
 }
 
 /* public API functions */
@@ -734,10 +838,11 @@ ucasemap_utf8ToLower(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
                      UErrorCode *pErrorCode) {
-    return ucasemap_mapUTF8(csm,
-                   (uint8_t *)dest, destCapacity,
-                   (const uint8_t *)src, srcLength,
-                   ucasemap_internalUTF8ToLower, pErrorCode);
+    return ucasemap_mapUTF8(
+        csm->caseLocale, csm->options, UCASEMAP_BREAK_ITERATOR_NULL
+        (uint8_t *)dest, destCapacity,
+        (const uint8_t *)src, srcLength,
+        ucasemap_internalUTF8ToLower, NULL, *pErrorCode);
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -745,10 +850,11 @@ ucasemap_utf8ToUpper(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
                      UErrorCode *pErrorCode) {
-    return ucasemap_mapUTF8(csm,
-                   (uint8_t *)dest, destCapacity,
-                   (const uint8_t *)src, srcLength,
-                   ucasemap_internalUTF8ToUpper, pErrorCode);
+    return ucasemap_mapUTF8(
+        csm->caseLocale, csm->options, UCASEMAP_BREAK_ITERATOR_NULL
+        (uint8_t *)dest, destCapacity,
+        (const uint8_t *)src, srcLength,
+        ucasemap_internalUTF8ToUpper, NULL, *pErrorCode);
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -756,8 +862,49 @@ ucasemap_utf8FoldCase(const UCaseMap *csm,
                       char *dest, int32_t destCapacity,
                       const char *src, int32_t srcLength,
                       UErrorCode *pErrorCode) {
-    return ucasemap_mapUTF8(csm,
-                   (uint8_t *)dest, destCapacity,
-                   (const uint8_t *)src, srcLength,
-                   ucasemap_internalUTF8Fold, pErrorCode);
+    return ucasemap_mapUTF8(
+        UCASE_LOC_ROOT, csm->options, UCASEMAP_BREAK_ITERATOR_NULL
+        (uint8_t *)dest, destCapacity,
+        (const uint8_t *)src, srcLength,
+        ucasemap_internalUTF8Fold, NULL, *pErrorCode);
+}
+
+U_NAMESPACE_BEGIN
+
+int32_t CaseMap::utf8ToLower(
+        const char *locale, uint32_t options,
+        const char *src, int32_t srcLength,
+        char *dest, int32_t destCapacity, Edits *edits,
+        UErrorCode &errorCode) {
+    return ucasemap_mapUTF8(
+        ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
+        (uint8_t *)dest, destCapacity,
+        (const uint8_t *)src, srcLength,
+        ucasemap_internalUTF8ToLower, edits, errorCode);
 }
+
+int32_t CaseMap::utf8ToUpper(
+        const char *locale, uint32_t options,
+        const char *src, int32_t srcLength,
+        char *dest, int32_t destCapacity, Edits *edits,
+        UErrorCode &errorCode) {
+    return ucasemap_mapUTF8(
+        ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
+        (uint8_t *)dest, destCapacity,
+        (const uint8_t *)src, srcLength,
+        ucasemap_internalUTF8ToUpper, edits, errorCode);
+}
+
+int32_t CaseMap::utf8Fold(
+        uint32_t options,
+        const char *src, int32_t srcLength,
+        char *dest, int32_t destCapacity, Edits *edits,
+        UErrorCode &errorCode) {
+    return ucasemap_mapUTF8(
+        UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL
+        (uint8_t *)dest, destCapacity,
+        (const uint8_t *)src, srcLength,
+        ucasemap_internalUTF8Fold, edits, errorCode);
+}
+
+U_NAMESPACE_END
index ab61e21..a253850 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucasemap_titlecase_brkiter.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 
 #include "unicode/brkiter.h"
 #include "unicode/ubrk.h"
+#include "unicode/casemap.h"
 #include "unicode/ucasemap.h"
 #include "cmemory.h"
 #include "ucase.h"
-#include "ustr_imp.h"
+#include "ucasemap_imp.h"
+
+U_NAMESPACE_BEGIN
+
+int32_t CaseMap::utf8ToTitle(
+        const char *locale, uint32_t options, BreakIterator *iter,
+        const char *src, int32_t srcLength,
+        char *dest, int32_t destCapacity, Edits *edits,
+        UErrorCode &errorCode) {
+    if (U_FAILURE(errorCode)) {
+        return 0;
+    }
+    UText utext=UTEXT_INITIALIZER;
+    utext_openUTF8(&utext, src, srcLength, &errorCode);
+    LocalPointer<BreakIterator> ownedIter;
+    if(iter==NULL) {
+        iter=BreakIterator::createWordInstance(Locale(locale), errorCode);
+        ownedIter.adoptInstead(iter);
+    }
+    if(U_FAILURE(errorCode)) {
+        utext_close(&utext);
+        return 0;
+    }
+    iter->setText(&utext, errorCode);
+    int32_t length=ucasemap_mapUTF8(
+        ustrcase_getCaseLocale(locale), options, iter,
+        (uint8_t *)dest, destCapacity,
+        (const uint8_t *)src, srcLength,
+        ucasemap_internalUTF8ToTitle, edits, errorCode);
+    utext_close(&utext);
+    return length;
+}
+
+U_NAMESPACE_END
 
 U_NAMESPACE_USE
 
 U_CAPI const UBreakIterator * U_EXPORT2
 ucasemap_getBreakIterator(const UCaseMap *csm) {
-    return csm->iter;
+    return reinterpret_cast<UBreakIterator *>(csm->iter);
 }
 
 U_CAPI void U_EXPORT2
-ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode * /*pErrorCode*/) {
-    // Do not call ubrk_close() so that we do not depend on all of the BreakIterator code.
-    delete reinterpret_cast<BreakIterator *>(csm->iter);
-    csm->iter=iterToAdopt;
+ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode) {
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+    delete csm->iter;
+    csm->iter=reinterpret_cast<BreakIterator *>(iterToAdopt);
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -47,21 +83,23 @@ ucasemap_utf8ToTitle(UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
                      UErrorCode *pErrorCode) {
-    UText utext=UTEXT_INITIALIZER;
-    utext_openUTF8(&utext, (const char *)src, srcLength, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
+    if (U_FAILURE(*pErrorCode)) {
         return 0;
     }
+    UText utext=UTEXT_INITIALIZER;
+    utext_openUTF8(&utext, (const char *)src, srcLength, pErrorCode);
     if(csm->iter==NULL) {
-        csm->iter=ubrk_open(UBRK_WORD, csm->locale,
-                            NULL, 0,
-                            pErrorCode);
+        csm->iter=BreakIterator::createWordInstance(Locale(csm->locale), *pErrorCode);
+    }
+    if (U_FAILURE(*pErrorCode)) {
+        return 0;
     }
-    ubrk_setUText(csm->iter, &utext, pErrorCode);
-    int32_t length=ucasemap_mapUTF8(csm,
-                   (uint8_t *)dest, destCapacity,
-                   (const uint8_t *)src, srcLength,
-                   ucasemap_internalUTF8ToTitle, pErrorCode);
+    csm->iter->setText(&utext, *pErrorCode);
+    int32_t length=ucasemap_mapUTF8(
+            csm->caseLocale, csm->options, csm->iter,
+            (uint8_t *)dest, destCapacity,
+            (const uint8_t *)src, srcLength,
+            ucasemap_internalUTF8ToTitle, NULL, *pErrorCode);
     utext_close(&utext);
     return length;
 }
diff --git a/source/common/ucat.c b/source/common/ucat.c
deleted file mode 100644 (file)
index cfd8b53..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-**********************************************************************
-* Copyright (c) 2003, International Business Machines
-* Corporation and others.  All Rights Reserved.
-**********************************************************************
-* Author: Alan Liu
-* Created: March 19 2003
-* Since: ICU 2.6
-**********************************************************************
-*/
-#include "unicode/ucat.h"
-#include "unicode/ustring.h"
-#include "cstring.h"
-#include "uassert.h"
-
-/* Separator between set_num and msg_num */
-static const char SEPARATOR = '%';
-
-/* Maximum length of a set_num/msg_num key, incl. terminating zero.
- * Longest possible key is "-2147483648%-2147483648" */
-#define MAX_KEY_LEN (24)
-
-/**
- * Fill in buffer with a set_num/msg_num key string, given the numeric
- * values. Numeric values must be >= 0. Buffer must be of length
- * MAX_KEY_LEN or more.
- */
-static char*
-_catkey(char* buffer, int32_t set_num, int32_t msg_num) {
-    int32_t i = 0;
-    i = T_CString_integerToString(buffer, set_num, 10);
-    buffer[i++] = SEPARATOR;
-    T_CString_integerToString(buffer+i, msg_num, 10);
-    return buffer;
-}
-
-U_CAPI u_nl_catd U_EXPORT2
-u_catopen(const char* name, const char* locale, UErrorCode* ec) {
-    return (u_nl_catd) ures_open(name, locale, ec);
-}
-
-U_CAPI void U_EXPORT2
-u_catclose(u_nl_catd catd) {
-    ures_close((UResourceBundle*) catd); /* may be NULL */
-}
-
-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) {
-
-    char key[MAX_KEY_LEN];
-    const UChar* result;
-
-    if (ec == NULL || U_FAILURE(*ec)) {
-        goto ERROR;
-    }
-
-    result = ures_getStringByKey((const UResourceBundle*) catd,
-                                 _catkey(key, set_num, msg_num),
-                                 len, ec);
-    if (U_FAILURE(*ec)) {
-        goto ERROR;
-    }
-
-    return result;
-
- ERROR:
-    /* In case of any failure, return s */
-    if (len != NULL) {
-        *len = u_strlen(s);
-    }
-    return s;
-}
-
-/*eof*/
diff --git a/source/common/uchar.c b/source/common/uchar.c
deleted file mode 100644 (file)
index 496df86..0000000
+++ /dev/null
@@ -1,733 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-********************************************************************************
-*   Copyright (C) 1996-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-********************************************************************************
-*
-* File UCHAR.C
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   04/02/97    aliu        Creation.
-*   4/15/99     Madhu       Updated all the function definitions for C Implementation
-*   5/20/99     Madhu       Added the function u_getVersion()
-*   8/19/1999   srl         Upgraded scripts to Unicode3.0 
-*   11/11/1999  weiv        added u_isalnum(), cleaned comments
-*   01/11/2000  helena      Renamed u_getVersion to u_getUnicodeVersion.
-*   06/20/2000  helena      OS/400 port changes; mostly typecast.
-******************************************************************************
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/uchar.h"
-#include "unicode/uscript.h"
-#include "unicode/udata.h"
-#include "uassert.h"
-#include "cmemory.h"
-#include "ucln_cmn.h"
-#include "utrie2.h"
-#include "udataswp.h"
-#include "uprops.h"
-#include "ustr_imp.h"
-
-/* uchar_props_data.h is machine-generated by genprops --csource */
-#define INCLUDED_FROM_UCHAR_C
-#include "uchar_props_data.h"
-
-/* constants and macros for access to the data ------------------------------ */
-
-/* getting a uint32_t properties word from the data */
-#define GET_PROPS(c, result) ((result)=UTRIE2_GET16(&propsTrie, c));
-
-U_CFUNC UBool
-uprv_haveProperties(UErrorCode *pErrorCode) {
-    if(U_FAILURE(*pErrorCode)) {
-        return FALSE;
-    }
-    return TRUE;
-}
-
-/* API functions ------------------------------------------------------------ */
-
-/* Gets the Unicode character's general category.*/
-U_CAPI int8_t U_EXPORT2
-u_charType(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (int8_t)GET_CATEGORY(props);
-}
-
-/* Enumerate all code points with their general categories. */
-struct _EnumTypeCallback {
-    UCharEnumTypeRange *enumRange;
-    const void *context;
-};
-
-static uint32_t U_CALLCONV
-_enumTypeValue(const void *context, uint32_t value) {
-    return GET_CATEGORY(value);
-}
-
-static UBool U_CALLCONV
-_enumTypeRange(const void *context, UChar32 start, UChar32 end, uint32_t value) {
-    /* just cast the value to UCharCategory */
-    return ((struct _EnumTypeCallback *)context)->
-        enumRange(((struct _EnumTypeCallback *)context)->context,
-                  start, end+1, (UCharCategory)value);
-}
-
-U_CAPI void U_EXPORT2
-u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context) {
-    struct _EnumTypeCallback callback;
-
-    if(enumRange==NULL) {
-        return;
-    }
-
-    callback.enumRange=enumRange;
-    callback.context=context;
-    utrie2_enum(&propsTrie, _enumTypeValue, _enumTypeRange, &callback);
-}
-
-/* Checks if ch is a lower case letter.*/
-U_CAPI UBool U_EXPORT2
-u_islower(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)(GET_CATEGORY(props)==U_LOWERCASE_LETTER);
-}
-
-/* Checks if ch is an upper case letter.*/
-U_CAPI UBool U_EXPORT2
-u_isupper(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)(GET_CATEGORY(props)==U_UPPERCASE_LETTER);
-}
-
-/* Checks if ch is a title case letter; usually upper case letters.*/
-U_CAPI UBool U_EXPORT2
-u_istitle(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)(GET_CATEGORY(props)==U_TITLECASE_LETTER);
-}
-
-/* Checks if ch is a decimal digit. */
-U_CAPI UBool U_EXPORT2
-u_isdigit(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)(GET_CATEGORY(props)==U_DECIMAL_DIGIT_NUMBER);
-}
-
-U_CAPI UBool U_EXPORT2
-u_isxdigit(UChar32 c) {
-    uint32_t props;
-
-    /* check ASCII and Fullwidth ASCII a-fA-F */
-    if(
-        (c<=0x66 && c>=0x41 && (c<=0x46 || c>=0x61)) ||
-        (c>=0xff21 && c<=0xff46 && (c<=0xff26 || c>=0xff41))
-    ) {
-        return TRUE;
-    }
-
-    GET_PROPS(c, props);
-    return (UBool)(GET_CATEGORY(props)==U_DECIMAL_DIGIT_NUMBER);
-}
-
-/* Checks if the Unicode character is a letter.*/
-U_CAPI UBool U_EXPORT2
-u_isalpha(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)((CAT_MASK(props)&U_GC_L_MASK)!=0);
-}
-
-U_CAPI UBool U_EXPORT2
-u_isUAlphabetic(UChar32 c) {
-    return (u_getUnicodeProperties(c, 1)&U_MASK(UPROPS_ALPHABETIC))!=0;
-}
-
-/* Checks if c is a letter or a decimal digit */
-U_CAPI UBool U_EXPORT2
-u_isalnum(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)((CAT_MASK(props)&(U_GC_L_MASK|U_GC_ND_MASK))!=0);
-}
-
-/**
- * Checks if c is alphabetic, or a decimal digit; implements UCHAR_POSIX_ALNUM.
- * @internal
- */
-U_CFUNC UBool
-u_isalnumPOSIX(UChar32 c) {
-    return (UBool)(u_isUAlphabetic(c) || u_isdigit(c));
-}
-
-/* Checks if ch is a unicode character with assigned character type.*/
-U_CAPI UBool U_EXPORT2
-u_isdefined(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)(GET_CATEGORY(props)!=0);
-}
-
-/* Checks if the Unicode character is a base form character that can take a diacritic.*/
-U_CAPI UBool U_EXPORT2
-u_isbase(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)((CAT_MASK(props)&(U_GC_L_MASK|U_GC_N_MASK|U_GC_MC_MASK|U_GC_ME_MASK))!=0);
-}
-
-/* Checks if the Unicode character is a control character.*/
-U_CAPI UBool U_EXPORT2
-u_iscntrl(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)((CAT_MASK(props)&(U_GC_CC_MASK|U_GC_CF_MASK|U_GC_ZL_MASK|U_GC_ZP_MASK))!=0);
-}
-
-U_CAPI UBool U_EXPORT2
-u_isISOControl(UChar32 c) {
-    return (uint32_t)c<=0x9f && (c<=0x1f || c>=0x7f);
-}
-
-/* Some control characters that are used as space. */
-#define IS_THAT_CONTROL_SPACE(c) \
-    (c<=0x9f && ((c>=TAB && c<=CR) || (c>=0x1c && c <=0x1f) || c==NL))
-
-/* Java has decided that U+0085 New Line is not whitespace any more. */
-#define IS_THAT_ASCII_CONTROL_SPACE(c) \
-    (c<=0x1f && c>=TAB && (c<=CR || c>=0x1c))
-
-/* Checks if the Unicode character is a space character.*/
-U_CAPI UBool U_EXPORT2
-u_isspace(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)((CAT_MASK(props)&U_GC_Z_MASK)!=0 || IS_THAT_CONTROL_SPACE(c));
-}
-
-U_CAPI UBool U_EXPORT2
-u_isJavaSpaceChar(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)((CAT_MASK(props)&U_GC_Z_MASK)!=0);
-}
-
-/* Checks if the Unicode character is a whitespace character.*/
-U_CAPI UBool U_EXPORT2
-u_isWhitespace(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)(
-                ((CAT_MASK(props)&U_GC_Z_MASK)!=0 &&
-                    c!=NBSP && c!=FIGURESP && c!=NNBSP) || /* exclude no-break spaces */
-                IS_THAT_ASCII_CONTROL_SPACE(c)
-           );
-}
-
-U_CAPI UBool U_EXPORT2
-u_isblank(UChar32 c) {
-    if((uint32_t)c<=0x9f) {
-        return c==9 || c==0x20; /* TAB or SPACE */
-    } else {
-        /* Zs */
-        uint32_t props;
-        GET_PROPS(c, props);
-        return (UBool)(GET_CATEGORY(props)==U_SPACE_SEPARATOR);
-    }
-}
-
-U_CAPI UBool U_EXPORT2
-u_isUWhiteSpace(UChar32 c) {
-    return (u_getUnicodeProperties(c, 1)&U_MASK(UPROPS_WHITE_SPACE))!=0;
-}
-
-/* Checks if the Unicode character is printable.*/
-U_CAPI UBool U_EXPORT2
-u_isprint(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    /* comparing ==0 returns FALSE for the categories mentioned */
-    return (UBool)((CAT_MASK(props)&U_GC_C_MASK)==0);
-}
-
-/**
- * Checks if c is in \p{graph}\p{blank} - \p{cntrl}.
- * Implements UCHAR_POSIX_PRINT.
- * @internal
- */
-U_CFUNC UBool
-u_isprintPOSIX(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    /*
-     * The only cntrl character in graph+blank is TAB (in blank).
-     * Here we implement (blank-TAB)=Zs instead of calling u_isblank().
-     */
-    return (UBool)((GET_CATEGORY(props)==U_SPACE_SEPARATOR) || u_isgraphPOSIX(c));
-}
-
-U_CAPI UBool U_EXPORT2
-u_isgraph(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    /* comparing ==0 returns FALSE for the categories mentioned */
-    return (UBool)((CAT_MASK(props)&
-                    (U_GC_CC_MASK|U_GC_CF_MASK|U_GC_CS_MASK|U_GC_CN_MASK|U_GC_Z_MASK))
-                   ==0);
-}
-
-/**
- * Checks if c is in
- * [^\p{space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]
- * with space=\p{Whitespace} and Control=Cc.
- * Implements UCHAR_POSIX_GRAPH.
- * @internal
- */
-U_CFUNC UBool
-u_isgraphPOSIX(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    /* \p{space}\p{gc=Control} == \p{gc=Z}\p{Control} */
-    /* comparing ==0 returns FALSE for the categories mentioned */
-    return (UBool)((CAT_MASK(props)&
-                    (U_GC_CC_MASK|U_GC_CS_MASK|U_GC_CN_MASK|U_GC_Z_MASK))
-                   ==0);
-}
-
-U_CAPI UBool U_EXPORT2
-u_ispunct(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)((CAT_MASK(props)&U_GC_P_MASK)!=0);
-}
-
-/* Checks if the Unicode character can start a Unicode identifier.*/
-U_CAPI UBool U_EXPORT2
-u_isIDStart(UChar32 c) {
-    /* same as u_isalpha() */
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)((CAT_MASK(props)&(U_GC_L_MASK|U_GC_NL_MASK))!=0);
-}
-
-/* Checks if the Unicode character can be a Unicode identifier part other than starting the
- identifier.*/
-U_CAPI UBool U_EXPORT2
-u_isIDPart(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)(
-           (CAT_MASK(props)&
-            (U_GC_ND_MASK|U_GC_NL_MASK|
-             U_GC_L_MASK|
-             U_GC_PC_MASK|U_GC_MC_MASK|U_GC_MN_MASK)
-           )!=0 ||
-           u_isIDIgnorable(c));
-}
-
-/*Checks if the Unicode character can be ignorable in a Java or Unicode identifier.*/
-U_CAPI UBool U_EXPORT2
-u_isIDIgnorable(UChar32 c) {
-    if(c<=0x9f) {
-        return u_isISOControl(c) && !IS_THAT_ASCII_CONTROL_SPACE(c);
-    } else {
-        uint32_t props;
-        GET_PROPS(c, props);
-        return (UBool)(GET_CATEGORY(props)==U_FORMAT_CHAR);
-    }
-}
-
-/*Checks if the Unicode character can start a Java identifier.*/
-U_CAPI UBool U_EXPORT2
-u_isJavaIDStart(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)((CAT_MASK(props)&(U_GC_L_MASK|U_GC_SC_MASK|U_GC_PC_MASK))!=0);
-}
-
-/*Checks if the Unicode character can be a Java identifier part other than starting the
- * identifier.
- */
-U_CAPI UBool U_EXPORT2
-u_isJavaIDPart(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return (UBool)(
-           (CAT_MASK(props)&
-            (U_GC_ND_MASK|U_GC_NL_MASK|
-             U_GC_L_MASK|
-             U_GC_SC_MASK|U_GC_PC_MASK|
-             U_GC_MC_MASK|U_GC_MN_MASK)
-           )!=0 ||
-           u_isIDIgnorable(c));
-}
-
-U_CAPI int32_t U_EXPORT2
-u_charDigitValue(UChar32 c) {
-    uint32_t props;
-    int32_t value;
-    GET_PROPS(c, props);
-    value=(int32_t)GET_NUMERIC_TYPE_VALUE(props)-UPROPS_NTV_DECIMAL_START;
-    if(value<=9) {
-        return value;
-    } else {
-        return -1;
-    }
-}
-
-U_CAPI double U_EXPORT2
-u_getNumericValue(UChar32 c) {
-    uint32_t props;
-    int32_t ntv;
-    GET_PROPS(c, props);
-    ntv=(int32_t)GET_NUMERIC_TYPE_VALUE(props);
-
-    if(ntv==UPROPS_NTV_NONE) {
-        return U_NO_NUMERIC_VALUE;
-    } else if(ntv<UPROPS_NTV_DIGIT_START) {
-        /* decimal digit */
-        return ntv-UPROPS_NTV_DECIMAL_START;
-    } else if(ntv<UPROPS_NTV_NUMERIC_START) {
-        /* other digit */
-        return ntv-UPROPS_NTV_DIGIT_START;
-    } else if(ntv<UPROPS_NTV_FRACTION_START) {
-        /* small integer */
-        return ntv-UPROPS_NTV_NUMERIC_START;
-    } else if(ntv<UPROPS_NTV_LARGE_START) {
-        /* fraction */
-        int32_t numerator=(ntv>>4)-12;
-        int32_t denominator=(ntv&0xf)+1;
-        return (double)numerator/denominator;
-    } else if(ntv<UPROPS_NTV_BASE60_START) {
-        /* large, single-significant-digit integer */
-        double numValue;
-        int32_t mant=(ntv>>5)-14;
-        int32_t exp=(ntv&0x1f)+2;
-        numValue=mant;
-
-        /* multiply by 10^exp without math.h */
-        while(exp>=4) {
-            numValue*=10000.;
-            exp-=4;
-        }
-        switch(exp) {
-        case 3:
-            numValue*=1000.;
-            break;
-        case 2:
-            numValue*=100.;
-            break;
-        case 1:
-            numValue*=10.;
-            break;
-        case 0:
-        default:
-            break;
-        }
-
-        return numValue;
-    } else if(ntv<UPROPS_NTV_FRACTION20_START) {
-        /* sexagesimal (base 60) integer */
-        int32_t numValue=(ntv>>2)-0xbf;
-        int32_t exp=(ntv&3)+1;
-
-        switch(exp) {
-        case 4:
-            numValue*=60*60*60*60;
-            break;
-        case 3:
-            numValue*=60*60*60;
-            break;
-        case 2:
-            numValue*=60*60;
-            break;
-        case 1:
-            numValue*=60;
-            break;
-        case 0:
-        default:
-            break;
-        }
-
-        return numValue;
-    } else if(ntv<UPROPS_NTV_RESERVED_START) {
-        // fraction-20 e.g. 3/80
-        int32_t frac20=ntv-UPROPS_NTV_FRACTION20_START;  // 0..0x17
-        int32_t numerator=2*(frac20&3)+1;
-        int32_t denominator=20<<(frac20>>2);
-        return (double)numerator/denominator;
-    } else {
-        /* reserved */
-        return U_NO_NUMERIC_VALUE;
-    }
-}
-
-U_CAPI int32_t U_EXPORT2
-u_digit(UChar32 ch, int8_t radix) {
-    int8_t value;
-    if((uint8_t)(radix-2)<=(36-2)) {
-        value=(int8_t)u_charDigitValue(ch);
-        if(value<0) {
-            /* ch is not a decimal digit, try latin letters */
-            if(ch>=0x61 && ch<=0x7A) {
-                value=(int8_t)(ch-0x57);  /* ch - 'a' + 10 */
-            } else if(ch>=0x41 && ch<=0x5A) {
-                value=(int8_t)(ch-0x37);  /* ch - 'A' + 10 */
-            } else if(ch>=0xFF41 && ch<=0xFF5A) {
-                value=(int8_t)(ch-0xFF37);  /* fullwidth ASCII a-z */
-            } else if(ch>=0xFF21 && ch<=0xFF3A) {
-                value=(int8_t)(ch-0xFF17);  /* fullwidth ASCII A-Z */
-            }
-        }
-    } else {
-        value=-1;   /* invalid radix */
-    }
-    return (int8_t)((value<radix) ? value : -1);
-}
-
-U_CAPI UChar32 U_EXPORT2
-u_forDigit(int32_t digit, int8_t radix) {
-    if((uint8_t)(radix-2)>(36-2) || (uint32_t)digit>=(uint32_t)radix) {
-        return 0;
-    } else if(digit<10) {
-        return (UChar32)(0x30+digit);
-    } else {
-        return (UChar32)((0x61-10)+digit);
-    }
-}
-
-/* miscellaneous, and support for uprops.cpp -------------------------------- */
-
-U_CAPI void U_EXPORT2
-u_getUnicodeVersion(UVersionInfo versionArray) {
-    if(versionArray!=NULL) {
-        uprv_memcpy(versionArray, dataVersion, U_MAX_VERSION_LENGTH);
-    }
-}
-
-U_CFUNC uint32_t
-u_getMainProperties(UChar32 c) {
-    uint32_t props;
-    GET_PROPS(c, props);
-    return props;
-}
-
-U_CFUNC uint32_t
-u_getUnicodeProperties(UChar32 c, int32_t column) {
-    U_ASSERT(column>=0);
-    if(column>=propsVectorsColumns) {
-        return 0;
-    } else {
-        uint16_t vecIndex=UTRIE2_GET16(&propsVectorsTrie, c);
-        return propsVectors[vecIndex+column];
-    }
-}
-
-U_CFUNC int32_t
-uprv_getMaxValues(int32_t column) {
-    switch(column) {
-    case 0:
-        return indexes[UPROPS_MAX_VALUES_INDEX];
-    case 2:
-        return indexes[UPROPS_MAX_VALUES_2_INDEX];
-    default:
-        return 0;
-    }
-}
-
-U_CAPI void U_EXPORT2
-u_charAge(UChar32 c, UVersionInfo versionArray) {
-    if(versionArray!=NULL) {
-        uint32_t version=u_getUnicodeProperties(c, 0)>>UPROPS_AGE_SHIFT;
-        versionArray[0]=(uint8_t)(version>>4);
-        versionArray[1]=(uint8_t)(version&0xf);
-        versionArray[2]=versionArray[3]=0;
-    }
-}
-
-U_CAPI UScriptCode U_EXPORT2
-uscript_getScript(UChar32 c, UErrorCode *pErrorCode) {
-    uint32_t scriptX;
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return USCRIPT_INVALID_CODE;
-    }
-    if((uint32_t)c>0x10ffff) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return USCRIPT_INVALID_CODE;
-    }
-    scriptX=u_getUnicodeProperties(c, 0)&UPROPS_SCRIPT_X_MASK;
-    if(scriptX<UPROPS_SCRIPT_X_WITH_COMMON) {
-        return (UScriptCode)scriptX;
-    } else if(scriptX<UPROPS_SCRIPT_X_WITH_INHERITED) {
-        return USCRIPT_COMMON;
-    } else if(scriptX<UPROPS_SCRIPT_X_WITH_OTHER) {
-        return USCRIPT_INHERITED;
-    } else {
-        return (UScriptCode)scriptExtensions[scriptX&UPROPS_SCRIPT_MASK];
-    }
-}
-
-U_CAPI UBool U_EXPORT2
-uscript_hasScript(UChar32 c, UScriptCode sc) {
-    const uint16_t *scx;
-    uint32_t scriptX=u_getUnicodeProperties(c, 0)&UPROPS_SCRIPT_X_MASK;
-    if(scriptX<UPROPS_SCRIPT_X_WITH_COMMON) {
-        return sc==(UScriptCode)scriptX;
-    }
-
-    scx=scriptExtensions+(scriptX&UPROPS_SCRIPT_MASK);
-    if(scriptX>=UPROPS_SCRIPT_X_WITH_OTHER) {
-        scx=scriptExtensions+scx[1];
-    }
-    if(sc>=USCRIPT_CODE_LIMIT) {
-        /* Guard against bogus input that would make us go past the Script_Extensions terminator. */
-        return FALSE;
-    }
-    while(sc>*scx) {
-        ++scx;
-    }
-    return sc==(*scx&0x7fff);
-}
-
-U_CAPI int32_t U_EXPORT2
-uscript_getScriptExtensions(UChar32 c,
-                            UScriptCode *scripts, int32_t capacity,
-                            UErrorCode *pErrorCode) {
-    uint32_t scriptX;
-    int32_t length;
-    const uint16_t *scx;
-    uint16_t sx;
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(capacity<0 || (capacity>0 && scripts==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-    scriptX=u_getUnicodeProperties(c, 0)&UPROPS_SCRIPT_X_MASK;
-    if(scriptX<UPROPS_SCRIPT_X_WITH_COMMON) {
-        if(capacity==0) {
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        } else {
-            scripts[0]=(UScriptCode)scriptX;
-        }
-        return 1;
-    }
-
-    scx=scriptExtensions+(scriptX&UPROPS_SCRIPT_MASK);
-    if(scriptX>=UPROPS_SCRIPT_X_WITH_OTHER) {
-        scx=scriptExtensions+scx[1];
-    }
-    length=0;
-    do {
-        sx=*scx++;
-        if(length<capacity) {
-            scripts[length]=(UScriptCode)(sx&0x7fff);
-        }
-        ++length;
-    } while(sx<0x8000);
-    if(length>capacity) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-    return length;
-}
-
-U_CAPI UBlockCode U_EXPORT2
-ublock_getCode(UChar32 c) {
-    return (UBlockCode)((u_getUnicodeProperties(c, 0)&UPROPS_BLOCK_MASK)>>UPROPS_BLOCK_SHIFT);
-}
-
-/* property starts for UnicodeSet ------------------------------------------- */
-
-static UBool U_CALLCONV
-_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 end, uint32_t value) {
-    /* add the start code point to the USet */
-    const USetAdder *sa=(const USetAdder *)context;
-    sa->add(sa->set, start);
-    return TRUE;
-}
-
-#define USET_ADD_CP_AND_NEXT(sa, cp) sa->add(sa->set, cp); sa->add(sa->set, cp+1)
-
-U_CFUNC void U_EXPORT2
-uchar_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-
-    /* add the start code point of each same-value range of the main trie */
-    utrie2_enum(&propsTrie, NULL, _enumPropertyStartsRange, sa);
-
-    /* add code points with hardcoded properties, plus the ones following them */
-
-    /* add for u_isblank() */
-    USET_ADD_CP_AND_NEXT(sa, TAB);
-
-    /* add for IS_THAT_CONTROL_SPACE() */
-    sa->add(sa->set, CR+1); /* range TAB..CR */
-    sa->add(sa->set, 0x1c);
-    sa->add(sa->set, 0x1f+1);
-    USET_ADD_CP_AND_NEXT(sa, NL);
-
-    /* add for u_isIDIgnorable() what was not added above */
-    sa->add(sa->set, DEL); /* range DEL..NBSP-1, NBSP added below */
-    sa->add(sa->set, HAIRSP);
-    sa->add(sa->set, RLM+1);
-    sa->add(sa->set, INHSWAP);
-    sa->add(sa->set, NOMDIG+1);
-    USET_ADD_CP_AND_NEXT(sa, ZWNBSP);
-
-    /* add no-break spaces for u_isWhitespace() what was not added above */
-    USET_ADD_CP_AND_NEXT(sa, NBSP);
-    USET_ADD_CP_AND_NEXT(sa, FIGURESP);
-    USET_ADD_CP_AND_NEXT(sa, NNBSP);
-
-    /* add for u_digit() */
-    sa->add(sa->set, U_a);
-    sa->add(sa->set, U_z+1);
-    sa->add(sa->set, U_A);
-    sa->add(sa->set, U_Z+1);
-    sa->add(sa->set, U_FW_a);
-    sa->add(sa->set, U_FW_z+1);
-    sa->add(sa->set, U_FW_A);
-    sa->add(sa->set, U_FW_Z+1);
-
-    /* add for u_isxdigit() */
-    sa->add(sa->set, U_f+1);
-    sa->add(sa->set, U_F+1);
-    sa->add(sa->set, U_FW_f+1);
-    sa->add(sa->set, U_FW_F+1);
-
-    /* add for UCHAR_DEFAULT_IGNORABLE_CODE_POINT what was not added above */
-    sa->add(sa->set, WJ); /* range WJ..NOMDIG */
-    sa->add(sa->set, 0xfff0);
-    sa->add(sa->set, 0xfffb+1);
-    sa->add(sa->set, 0xe0000);
-    sa->add(sa->set, 0xe0fff+1);
-
-    /* add for UCHAR_GRAPHEME_BASE and others */
-    USET_ADD_CP_AND_NEXT(sa, CGJ);
-}
-
-U_CFUNC void U_EXPORT2
-upropsvec_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-
-    /* add the start code point of each same-value range of the properties vectors trie */
-    if(propsVectorsColumns>0) {
-        /* if propsVectorsColumns==0 then the properties vectors trie may not be there at all */
-        utrie2_enum(&propsVectorsTrie, NULL, _enumPropertyStartsRange, sa);
-    }
-}
index 79ba55e..fd74402 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (C) 1999-2016, International Business Machines
@@ -1330,2199 +1330,2241 @@ static const UTrie2 propsTrie={
     NULL, 0, FALSE, FALSE, 0, NULL
 };
 
-static const uint16_t propsVectorsTrie_index[28540]={
-0x4bb,0x4c3,0x4cb,0x4d3,0x4eb,0x4f3,0x4fb,0x503,0x50b,0x513,0x51b,0x523,0x52b,0x533,0x53b,0x543,
-0x54a,0x552,0x55a,0x562,0x565,0x56d,0x575,0x57d,0x585,0x58d,0x595,0x59d,0x5a5,0x5ad,0x5b5,0x5bd,
-0x5c5,0x5cd,0x5d4,0x5dc,0x5e4,0x5ec,0x5f4,0x5fc,0x604,0x60c,0x611,0x619,0x620,0x628,0x630,0x638,
-0x640,0x648,0x650,0x658,0x65f,0x667,0x66f,0x677,0x67f,0x687,0x68f,0x697,0x69f,0x6a7,0x6af,0x6b7,
-0x18ce,0xd31,0xe19,0x4db,0x4db,0xe89,0xe91,0x1a56,0x11bd,0x11d5,0x11c5,0x11cd,0x75c,0x762,0x76a,0x772,
-0x77a,0x780,0x788,0x790,0x798,0x79e,0x7a6,0x7ae,0x7b6,0x7bc,0x7c4,0x7cc,0x7d4,0x7dc,0x7e4,0x7eb,
-0x7f3,0x7f9,0x801,0x809,0x811,0x817,0x81f,0x827,0x82f,0x835,0x83d,0x845,0x84d,0x854,0x85c,0x864,
-0x86c,0x870,0x878,0x87f,0x887,0x88f,0x897,0x89f,0x14dd,0x14e5,0x8a7,0x8af,0x8b7,0x8bf,0x8c7,0x8ce,
-0x1543,0x1533,0x153b,0x1811,0x1819,0x11e5,0x8d6,0x11dd,0x1427,0x1427,0x1429,0x11f9,0x11fa,0x11ed,0x11ef,0x11f1,
-0x154b,0x154d,0x8de,0x154d,0x8e6,0x8eb,0x8f3,0x1552,0x8f9,0x154d,0x8ff,0x907,0xc09,0x155a,0x155a,0x90f,
-0x156a,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,
-0x156b,0x156b,0x156b,0x1562,0x917,0x1573,0x1573,0x91f,0xb16,0xb1e,0xb26,0xb2e,0x1583,0x157b,0x927,0x92f,
-0x937,0x158d,0x1595,0x93f,0x158b,0x947,0x18d6,0xd39,0xb36,0xb3e,0xb46,0xb4b,0x1787,0xc3c,0xc43,0x16ef,
-0xbd9,0x18de,0xd41,0xd49,0xd51,0xd59,0xf41,0xf41,0x17d7,0x17dc,0xc75,0xc7d,0x184d,0x1855,0x197f,0xe21,
-0x185d,0xcc5,0xccd,0x1865,0x6bf,0x4db,0xf21,0xd61,0x170f,0x16f7,0x1707,0x16ff,0x179f,0x1797,0x175f,0xbe9,
-0x1202,0x1202,0x1202,0x1202,0x1205,0x1202,0x1202,0x120d,0x94f,0x1215,0x953,0x95b,0x1215,0x963,0x96b,0x973,
-0x1225,0x121d,0x122d,0x97b,0x983,0x98b,0x993,0x99b,0x1235,0x123d,0x1245,0x124d,0x9a3,0x1255,0x125c,0x1264,
-0x126c,0x1274,0x127c,0x1284,0x128c,0x1293,0x129b,0x12a3,0x12ab,0x12b3,0x12b6,0x12b8,0x159d,0x1682,0x1688,0x9ab,
-0x12c0,0x9b3,0x9bb,0x13da,0x13df,0x13e2,0x13ea,0x12c8,0x13f2,0x13f2,0x12d8,0x12d0,0x12e0,0x12e8,0x12f0,0x12f8,
-0x1300,0x1308,0x1310,0x1318,0x1690,0x16e7,0x1821,0x195f,0x1328,0x132f,0x1337,0x133f,0x1320,0x1347,0x1698,0x169f,
-0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x16a7,0x16aa,0x16a7,0x16a7,0x16b2,0x16b9,0x16bb,0x16c2,
-0x16ca,0x16ce,0x16ce,0x16d1,0x16ce,0x16ce,0x16d7,0x16ce,0x1717,0x17cf,0x1829,0xb53,0xb59,0xb5f,0xb67,0xb6c,
-0x1777,0xc19,0xc1d,0x17e4,0x1767,0x1767,0x1767,0xbf1,0x176f,0xc11,0x17b7,0xc65,0xbf9,0xc01,0xc01,0x186d,
-0x17a7,0x1831,0xc53,0xc55,0x9c3,0x15ad,0x15ad,0x9cb,0x15b5,0x15b5,0x15b5,0x15b5,0x15b5,0x15b5,0x9d3,0x6c3,
-0x140f,0x1431,0x9db,0x1439,0x9e3,0x1441,0x1449,0x1451,0x9eb,0x9f0,0x1459,0x1460,0x9f5,0x9fd,0x17c7,0xbe1,
-0xa05,0x14b7,0x14be,0x1468,0x14c6,0x14cd,0x1470,0xa0d,0x1489,0x1489,0x148b,0x1478,0x1480,0x1480,0x1481,0x14d5,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x1174,0x171f,0x171f,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
-0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x149a,0x117c,0x1182,
-0x15c5,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,
-0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,
-0x15cb,0x15cb,0x15cb,0x15cb,0xa15,0x15d3,0xa1d,0x18e6,0x1879,0x1879,0x1879,0x1879,0x1879,0x1879,0x1879,0x1879,
-0x1875,0xcd5,0x1889,0x1881,0x188b,0x18ee,0x18ee,0xd69,0x177f,0x17ec,0x1841,0x1845,0x1839,0xc85,0xc8b,0xc8e,
-0x17af,0xc5d,0x17f4,0xc96,0x1893,0x1896,0xcdd,0xd71,0x18a6,0x189e,0xce5,0xd79,0x18f6,0x18fa,0xd81,0xfe7,
-0x18ae,0xced,0xcf5,0x1902,0x1912,0x190a,0xd89,0xee4,0xe29,0xe31,0x1ac9,0xf9f,0x1b6e,0x1b6e,0x191a,0xd91,
-0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,
-0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,
-0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,
-0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,
-0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,
-0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,
-0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,
-0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,
-0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,
-0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,
-0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,
-0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,
-0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,
-0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,
-0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,
-0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,
-0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,
-0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,
-0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,
-0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,
-0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,
-0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0xa25,0xd99,0xd9c,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,
-0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
-0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x14a2,0x14a2,0x14a2,0x14a2,0x14a2,0x14a2,0x14a2,0x14a2,
-0x14a7,0x14af,0x16df,0x118a,0x17bf,0x17bf,0x118e,0x1195,0xa2d,0xa35,0xa3d,0x1367,0x136e,0x1376,0xa45,0x137e,
-0x13af,0x13af,0x1357,0x135f,0x1386,0x13a6,0x13a7,0x13b7,0x138e,0x134f,0xa4d,0x1396,0xa55,0x139e,0xa5d,0xa61,
-0xc6d,0x13bf,0xa69,0xa71,0x13c7,0x13cd,0x13d2,0xa79,0xa89,0x1417,0x141f,0x1402,0x1407,0xa91,0xa99,0xa81,
-0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,
-0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14f5,0x14f5,0x14f5,0x14f5,
-0x136c,0x136c,0x13ac,0x13ec,0x142c,0x146c,0x14ac,0x14ec,0x1528,0x1568,0x1594,0x15d4,0x1614,0x1654,0x1694,0x16d4,
-0x1714,0x1750,0x1790,0x17d0,0x1810,0x1844,0x1880,0x18c0,0x1900,0x1940,0x197c,0x19bc,0x19fc,0x1a3c,0x1a7c,0x1abc,
-0xa80,0xac0,0xb00,0xe4d,0xb40,0xa40,0xb80,0xa40,0xe73,0xa40,0xa40,0xa40,0xa40,0xbc0,0x12a9,0x12a9,
-0xeb3,0xef3,0xa40,0xa40,0xa40,0xa40,0xdd2,0xc00,0xa40,0xa40,0xc40,0xc80,0xcc0,0xe12,0xd92,0xd02,
-0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,
-0x11e9,0x11e9,0x11e9,0x11e9,0xf33,0x1229,0x1069,0x10a9,0x1269,0xf73,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfe9,
-0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,
-0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0x1029,
+static const uint16_t propsVectorsTrie_index[29136]={
+0x4cf,0x4d7,0x4df,0x4e7,0x4ff,0x507,0x50f,0x517,0x51f,0x527,0x52f,0x537,0x53f,0x547,0x54f,0x557,
+0x55e,0x566,0x56e,0x576,0x579,0x581,0x589,0x591,0x599,0x5a1,0x5a9,0x5b1,0x5b9,0x5c1,0x5c9,0x5d1,
+0x5d9,0x5e1,0x5e8,0x5f0,0x5f8,0x600,0x608,0x610,0x618,0x620,0x625,0x62d,0x634,0x63c,0x644,0x64c,
+0x654,0x65c,0x664,0x66c,0x673,0x67b,0x683,0x68b,0x693,0x69b,0x6a3,0x6ab,0x6b3,0x6bb,0x6c3,0x6cb,
+0x195d,0xda7,0xe8f,0x6d3,0x4ef,0xeff,0xf07,0x1aeb,0x124c,0x1264,0x1254,0x125c,0x7cf,0x7d5,0x7dd,0x7e5,
+0x7ed,0x7f3,0x7fb,0x803,0x80b,0x811,0x819,0x821,0x829,0x82f,0x837,0x83f,0x847,0x84f,0x857,0x85e,
+0x866,0x86c,0x874,0x87c,0x884,0x88a,0x892,0x89a,0x8a2,0x8ba,0x8aa,0x8b2,0x8c2,0x8c9,0x8d1,0x8d9,
+0x8e1,0x8e5,0x8ed,0x8f4,0x8fc,0x904,0x90c,0x914,0x156c,0x1574,0x91c,0x924,0x92c,0x934,0x93c,0x943,
+0x15d2,0x15c2,0x15ca,0x18a0,0x18a8,0x1274,0x94b,0x126c,0x14b6,0x14b6,0x14b8,0x1288,0x1289,0x127c,0x127e,0x1280,
+0x15da,0x15dc,0x953,0x15dc,0x95b,0x960,0x968,0x15e1,0x96e,0x15dc,0x974,0x97c,0xc7e,0x15e9,0x15e9,0x984,
+0x15f9,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,
+0x15fa,0x15fa,0x15fa,0x15f1,0x98c,0x1602,0x1602,0x994,0xb8b,0xb93,0xb9b,0xba3,0x1612,0x160a,0x99c,0x9a4,
+0x9ac,0x161c,0x1624,0x9b4,0x161a,0x9bc,0x1965,0xdaf,0xbab,0xbb3,0xbbb,0xbc0,0x1816,0xcb1,0xcb8,0x177e,
+0xc4e,0x196d,0xdb7,0xdbf,0xdc7,0xdcf,0xfb7,0xfb7,0x1866,0x186b,0xceb,0xcf3,0x18dc,0x18e4,0x1a0e,0xe97,
+0x18ec,0xd3b,0xd43,0x18f4,0x6db,0x4ef,0xf97,0xdd7,0x179e,0x1786,0x1796,0x178e,0x182e,0x1826,0x17ee,0xc5e,
+0x1291,0x1291,0x1291,0x1291,0x1294,0x1291,0x1291,0x129c,0x9c4,0x12a4,0x9c8,0x9d0,0x12a4,0x9d8,0x9e0,0x9e8,
+0x12b4,0x12ac,0x12bc,0x9f0,0x9f8,0xa00,0xa08,0xa10,0x12c4,0x12cc,0x12d4,0x12dc,0xa18,0x12e4,0x12eb,0x12f3,
+0x12fb,0x1303,0x130b,0x1313,0x131b,0x1322,0x132a,0x1332,0x133a,0x1342,0x1345,0x1347,0x162c,0x1711,0x1717,0xa20,
+0x134f,0xa28,0xa30,0x1469,0x146e,0x1471,0x1479,0x1357,0x1481,0x1481,0x1367,0x135f,0x136f,0x1377,0x137f,0x1387,
+0x138f,0x1397,0x139f,0x13a7,0x171f,0x1776,0x18b0,0x19ee,0x13b7,0x13be,0x13c6,0x13ce,0x13af,0x13d6,0x1727,0x172e,
+0x1634,0x1634,0x1634,0x1634,0x1634,0x1634,0x1634,0x1634,0x1736,0x1739,0x1736,0x1736,0x1741,0x1748,0x174a,0x1751,
+0x1759,0x175d,0x175d,0x1760,0x175d,0x175d,0x1766,0x175d,0x17a6,0x185e,0x18b8,0xbc8,0xbce,0xbd4,0xbdc,0xbe1,
+0x1806,0xc8e,0xc92,0x1873,0x17f6,0x17f6,0x17f6,0xc66,0x17fe,0xc86,0x1846,0xcdb,0xc6e,0xc76,0xc76,0x18fc,
+0x1836,0x18c0,0xcc8,0xccb,0xa38,0x163c,0x163c,0xa40,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0xa48,0x6df,
+0x149e,0x14c0,0xa50,0x14c8,0xa58,0x14d0,0x14d8,0x14e0,0xa60,0xa65,0x14e8,0x14ef,0xa6a,0xa72,0x1856,0xc56,
+0xa7a,0x1546,0x154d,0x14f7,0x1555,0x155c,0x14ff,0xa82,0x1518,0x1518,0x151a,0x1507,0x150f,0x150f,0x1510,0x1564,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
+0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x1201,0x17ae,0x17ae,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
+0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1529,0x1211,0x1209,
+0x1654,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,
+0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,
+0x165a,0x165a,0x165a,0x165a,0xa8a,0x1662,0xa92,0x1975,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,
+0x1904,0xd4b,0x1918,0x1910,0x191a,0x197d,0x197d,0xddf,0x180e,0x187b,0x18d0,0x18d4,0x18c8,0xcfb,0xd01,0xd04,
+0x183e,0xcd3,0x1883,0xd0c,0x1922,0x1925,0xd53,0xde7,0x1935,0x192d,0xd5b,0xdef,0x1985,0x1989,0xdf7,0x105d,
+0x193d,0xd63,0xd6b,0x1991,0x19a1,0x1999,0xdff,0xf5a,0xe9f,0xea7,0x1b5e,0x1015,0x1c03,0x1c03,0x19a9,0xe07,
+0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,
+0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,
+0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,
+0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,
+0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,
+0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,
+0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,
+0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,
+0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,
+0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,
+0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,
+0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,
+0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,
+0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,
+0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,
+0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,
+0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,
+0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,
+0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,
+0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,
+0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,
+0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0xa9a,0xe0f,0xe12,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,
+0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
+0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1531,0x1531,0x1531,0x1531,0x1531,0x1531,0x1531,0x1531,
+0x1536,0x153e,0x176e,0x1219,0x184e,0x184e,0x121d,0x1224,0xaa2,0xaaa,0xab2,0x13f6,0x13fd,0x1405,0xaba,0x140d,
+0x143e,0x143e,0x13e6,0x13ee,0x1415,0x1435,0x1436,0x1446,0x141d,0x13de,0xac2,0x1425,0xaca,0x142d,0xad2,0xad6,
+0xce3,0x144e,0xade,0xae6,0x1456,0x145c,0x1461,0xaee,0xafe,0x14a6,0x14ae,0x1491,0x1496,0xb06,0xb0e,0xaf6,
+0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,
+0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x1584,0x1584,0x1584,0x1584,
+0x13bc,0x13bc,0x13fc,0x143c,0x147c,0x14bc,0x14fc,0x153c,0x1578,0x15b8,0x15e4,0x1624,0x1664,0x16a4,0x16e4,0x1724,
+0x1764,0x17a0,0x17e0,0x1820,0x1860,0x1894,0x18d0,0x1910,0x1950,0x1990,0x19cc,0x1a0c,0x1a4c,0x1a8c,0x1acc,0x1b0c,
+0xa80,0xac0,0xb00,0xb3b,0xb7b,0xa40,0xbbb,0xa40,0xe65,0xa40,0xa40,0xa40,0xa40,0xbfb,0x12fb,0x12fb,
+0xea5,0xee5,0xa40,0xa40,0xa40,0xa40,0xc3b,0xc5b,0xa40,0xa40,0xc9b,0xcdb,0xd1b,0xe2d,0xded,0xd5d,
+0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,
+0x123b,0x123b,0x123b,0x123b,0xf25,0x127b,0x10bb,0x10fb,0x12bb,0x1045,0x107b,0x107b,0x107b,0xf65,0xf85,0xfc5,
+0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,
+0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0x1005,
 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,0xcc2,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
 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,0xcc2,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
 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,0xcc2,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
 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,0xcc2,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
 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,0xcc2,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
 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,0xcc2,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
 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,0xcc2,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
 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,0xcc2,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
 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,0xcc2,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
 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,0xcc2,
-0xd42,0xd52,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,0xcc2,
-0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,
-0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x10e9,
-0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,
-0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x1129,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0xb74,0xb7b,0xb83,0xb8b,0x1727,0x1727,0x1727,0xb93,0xb9b,0xb9e,0x1757,0x174f,0xbd1,0xcfd,0xd01,0xd05,
-0x4db,0x4db,0x4db,0x4db,0xd0d,0x18b6,0xd15,0xf39,0x15db,0xaa1,0xaa7,0xff7,0xba6,0x178f,0xc4b,0x4db,
-0x15f0,0x15e3,0x15e8,0x172f,0xbae,0xbb6,0x1142,0x1148,0x1ab1,0xf56,0x1aa1,0x6cb,0x4db,0x4db,0x4db,0x4db,
-0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0xfa7,0xfaf,0xfb7,0x4db,0x4db,0x4db,0x4db,
-0xbbe,0xbc1,0xda4,0x1b19,0xfef,0x6d3,0x4db,0x1088,0xc9e,0xd1d,0x4db,0x4db,0x1a66,0xeec,0xef4,0x1b59,
-0xc25,0xc2c,0xc34,0x1922,0x1af9,0x4db,0x1ad9,0xfc7,0x192a,0xdac,0xdb4,0xdbc,0x1017,0x6db,0x4db,0x4db,
-0x1932,0x1932,0x6e3,0x4db,0x1b86,0x10a0,0x1b7e,0x10a8,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0xdc4,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x1987,0x1989,0xe39,0xe40,0x1942,0x193a,0xdcc,0xf19,0x1a5e,0xed4,0xedc,0xfbf,0x1a76,0x1a7a,0xf11,0x1037,
-0xf8a,0xf8f,0x6eb,0x4db,0x1090,0x1098,0x1ac1,0xf97,0xf6c,0xf72,0xf7a,0xf82,0x4db,0x4db,0x4db,0x4db,
-0x1bc6,0x1bbe,0x1132,0x113a,0x1b41,0x1b39,0x105e,0x4db,0x4db,0x4db,0x4db,0x4db,0x1b29,0x101f,0x1027,0x102f,
-0x1af1,0x1ae9,0xfd7,0x112a,0x1a82,0xf29,0x6f3,0x4db,0x106e,0x1076,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,
-0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x1801,0xca6,0xcad,0xcad,0xcad,
-0x1809,0x1809,0x1809,0xcb5,0x1b76,0x1b76,0x1b76,0x1b76,0x1b76,0x1b76,0x6fb,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,
-0x194a,0x194a,0x194c,0x194a,0x1954,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x1957,0x194a,0x194a,0x194a,0x194a,
-0x194a,0x703,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,
-0x1991,0xe48,0xfdf,0x70b,0x4db,0x4db,0x70f,0xf31,0x1b11,0x1b09,0xfff,0x1007,0x717,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x1a6e,0x1a6e,0xefc,0xf01,0xf09,0x4db,0x4db,0x1114,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x1aa9,0x1aa9,0x1aa9,0xf49,0xf4e,0x71f,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x15f8,0x15f8,0x15f8,0x15f8,0x15f8,0x15f8,0x15f8,0xaaf,0x1608,0xab7,0x1609,0x1600,0x1611,0x1617,0x161f,0xabf,
-0x1747,0x1747,0x727,0x4db,0x4db,0x4db,0x4db,0x4db,0x1737,0x1737,0xbc9,0xcbd,0x4db,0x4db,0x4db,0x4db,
-0x1650,0x1657,0xac7,0x165a,0xacf,0xad7,0xadf,0x1654,0xae7,0xaef,0xaf7,0x1659,0x1661,0x1650,0x1657,0x1653,
-0x165a,0x1662,0x1651,0x1658,0x1654,0xafe,0x1627,0x162f,0x1636,0x163d,0x162a,0x1632,0x1639,0x1640,0xb06,0x1648,
-0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,
-0x1b8e,0x1b91,0x1b8e,0x1b98,0x10e0,0x72f,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x110c,0x737,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x73b,0x103f,0x1b31,0x1045,0x1b31,0x104d,0x1052,0x1056,0x1056,0x10b0,0x10b8,0x10c0,0x10c8,0x10d0,0x10c8,
-0x10d8,0x10c8,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,
-0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,
-0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,
-0x743,0x744,0xb0e,0x166a,0x166a,0x166a,0x74c,0x74c,0x74c,0x74c,0x173f,0x173f,0x173f,0x173f,0x173f,0x173f,
-0x173f,0x754,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,
-0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,
-0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,
-0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,
-0x74c,0x74c,0x18be,0xd25,0x18c6,0x18c6,0xd29,0xe59,0xe61,0xe69,0xdd4,0xdda,0x196f,0xde2,0x1967,0xdea,
-0xdee,0xdf5,0xdfd,0xe04,0xe0c,0xe11,0xe11,0xe11,0xe11,0xe11,0x19c0,0x19c8,0x19c0,0x19ce,0x19d6,0x19a1,
-0x19de,0x19e6,0x19c0,0x19ee,0x19f6,0x19fd,0x1a05,0x19a9,0x19c0,0x1a08,0x19b1,0x19b8,0x1a10,0x1a16,0x1a92,0x1a99,
-0x1a8a,0x1a1e,0x1a26,0x1a2e,0x1a36,0x1b01,0x1a3e,0x1a46,0xe71,0xe79,0x1999,0x1999,0x1999,0xe81,0x1ab9,0x1ab9,
-0xf5e,0xf64,0xe50,0xe51,0xe51,0xe51,0xe51,0xe51,0xe51,0xe51,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0xfcf,0x4db,0x1bb6,0x1bae,0x10e8,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0xe99,0xea1,0xea9,0xeb1,0xeb9,0xec1,0xec8,0xecc,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x1b51,0x1b49,0x1066,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x1b21,0x100f,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x10f0,0x10f5,0x10fd,
-0x1104,0x111c,0x1122,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,
-0x1b61,0x1b66,0x1b61,0x1b61,0x1b61,0x107e,0x1080,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
-0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
-0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
-0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
-0x1bce,0x1bce,0x1150,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,
-0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1158,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
-0x4db,0x4db,0x4db,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
-0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
-0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
-0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x119d,0x1160,0x1977,0x1977,0x1977,0x1977,0x1977,
-0x1977,0x1977,0x1977,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1168,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,
-0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x11a5,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x116c,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
-0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x116c,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
-0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
-0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
-0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
-0x1977,0x1977,0x11ad,0x1a4e,0x1a4e,0x1a4e,0x1a4e,0x1a4e,0x1a4e,0x11b5,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
-0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
-0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
-0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
-0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1505,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
-0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
-0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
-0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
-0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x150d,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
-0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
-0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
-0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
-0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
-0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
-0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
-0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
-0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
-0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
-0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
-0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
-0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
-0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
-0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
-0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
-0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
-0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
-0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
-0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
-0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
-0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x4ba,0x4ba,0x4ba,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0x273,0x276,0x27f,0x279,0x279,0x27c,0x273,0x273,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x7a1,0x79b,0x780,0x777,
-0x76e,0x76b,0x762,0x77d,0x768,0x774,0x777,0x792,0x789,0x77a,0x79e,0x771,0x75f,0x75f,0x75f,0x75f,
-0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x786,0x783,0x78c,0x78c,0x78c,0x79b,0x762,0x7ad,0x7ad,0x7ad,
-0x7ad,0x7ad,0x7ad,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,
-0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x768,0x76e,0x774,0x798,0x75c,0x795,0x7aa,0x7aa,0x7aa,
-0x7aa,0x7aa,0x7aa,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,
-0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x768,0x78f,0x765,0x78c,0x273,0,0,0,0,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xd9d,0xdad,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,0xd1d,
+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,0x113b,
+0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,
+0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x117b,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0xbe9,0xbf0,0xbf8,0xc00,0x17b6,0x17b6,0x17b6,0xc08,0xc10,0xc13,0x17e6,0x17de,0xc46,0xd73,0xd77,0xd7b,
+0x4ef,0x4ef,0x4ef,0x4ef,0xd83,0x1945,0xd8b,0xfaf,0x166a,0xb16,0xb1c,0x106d,0xc1b,0x181e,0xcc0,0x4ef,
+0x167f,0x1672,0x1677,0x17be,0xc23,0xc2b,0x11c6,0x11cc,0x1b46,0xfcc,0x1b36,0x6e7,0x4ef,0x4ef,0x4ef,0x4ef,
+0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x101d,0x1025,0x102d,0x4ef,0x4ef,0x4ef,0x4ef,
+0xc33,0xc36,0xe1a,0x1bae,0x1065,0x6ef,0x4ef,0x10fe,0xd14,0xd93,0x4ef,0x4ef,0x1afb,0xf62,0xf6a,0x1bee,
+0xc9a,0xca1,0xca9,0x19b1,0x1b8e,0x4ef,0x1b6e,0x103d,0x19b9,0xe22,0xe2a,0xe32,0x108d,0x6f7,0x4ef,0x4ef,
+0x19c1,0x19c1,0x6ff,0x4ef,0x1c1b,0x1116,0x1c13,0x111e,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0xe3a,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x1a16,0x1a18,0xeaf,0xeb6,0x19d1,0x19c9,0xe42,0xf8f,0x1af3,0xf4a,0xf52,0x1035,0x1b0b,0x1b0f,0xf87,0x10ad,
+0x1000,0x1005,0x707,0x4ef,0x1106,0x110e,0x1b56,0x100d,0xfe2,0xfe8,0xff0,0xff8,0x4ef,0x4ef,0x4ef,0x4ef,
+0x1c5b,0x1c53,0x11b6,0x11be,0x1bd6,0x1bce,0x10d4,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1bbe,0x1095,0x109d,0x10a5,
+0x1b86,0x1b7e,0x104d,0x11ae,0x1b17,0xf9f,0x70f,0x4ef,0x10e4,0x10ec,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x1be6,0x1bde,0x10dc,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x79a,0x79e,0x717,0x7a6,0x71e,
+0x726,0x1bb6,0x1085,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1174,0x1179,0x1181,0x1188,0x11a0,
+0x11a6,0x4ef,0x4ef,0x72e,0x732,0x73a,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x188b,0x188b,0x188b,0x188b,0x188b,
+0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,
+0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x1890,0xd1c,0xd23,0xd23,0xd23,0x1898,0x1898,0x1898,0xd2b,0x1c0b,
+0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x742,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,
+0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19db,0x19d9,0x19e3,
+0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19e6,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x74a,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,
+0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0xebe,0x1055,0x752,0x4ef,
+0x4ef,0x756,0xfa7,0x1ba6,0x1b9e,0x1075,0x107d,0x75e,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x1b03,0x1b03,0xf72,0xf77,0xf7f,0x4ef,0x4ef,0x1198,0xec6,0xec7,0xec7,0xec7,0xec7,
+0xec7,0xec7,0xec7,0x766,0x4ef,0x4ef,0x762,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,
+0x7b7,0x7b7,0x76e,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1b3e,0x1b3e,0x1b3e,0xfbf,0xfc4,
+0x776,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1687,0x1687,0x1687,0x1687,0x1687,
+0x1687,0x1687,0xb24,0x1697,0xb2c,0x1698,0x168f,0x16a0,0x16a6,0x16ae,0xb34,0x17d6,0x17d6,0x77e,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x17c6,0x17c6,0xc3e,0xd33,0x4ef,0x4ef,0x4ef,0x4ef,0x16df,0x16e6,0xb3c,0x16e9,0xb44,
+0xb4c,0xb54,0x16e3,0xb5c,0xb64,0xb6c,0x16e8,0x16f0,0x16df,0x16e6,0x16e2,0x16e9,0x16f1,0x16e0,0x16e7,0x16e3,
+0xb73,0x16b6,0x16be,0x16c5,0x16cc,0x16b9,0x16c1,0x16c8,0x16cf,0xb7b,0x16d7,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,
+0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c23,0x1c26,0x1c23,0x1c2d,0x1164,
+0x786,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1190,0x78e,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x792,0x10b5,0x1bc6,0x10bb,
+0x1bc6,0x10c3,0x10c8,0x10cc,0x10cc,0x1126,0x112e,0x1136,0x113e,0x1146,0x114c,0x1154,0x115c,0x7ae,0x7ae,0x7ae,
+0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,
+0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,
+0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7af,0xb83,0x16f9,0x16f9,
+0x16f9,0x7bf,0x7bf,0x7bf,0x7bf,0x17ce,0x17ce,0x17ce,0x17ce,0x17ce,0x17ce,0x17ce,0x7c7,0x7bf,0x7bf,0x7bf,
+0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,
+0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,
+0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,
+0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x194d,0xd9b,0x1955,
+0x1955,0xd9f,0xecf,0xed7,0xedf,0xe4a,0xe50,0x19fe,0xe58,0x19f6,0xe60,0xe64,0xe6b,0xe73,0xe7a,0xe82,
+0xe87,0xe87,0xe87,0xe87,0xe87,0x1a4f,0x1a57,0x1a5f,0x1a63,0x1a6b,0x1a30,0x1a73,0x1a7b,0x1a5f,0x1a83,0x1a8b,
+0x1a92,0x1a9a,0x1a38,0x1a5f,0x1a9d,0x1a40,0x1a47,0x1aa5,0x1aab,0x1b27,0x1b2e,0x1b1f,0x1ab3,0x1abb,0x1ac3,0x1acb,
+0x1b96,0x1ad3,0x1adb,0xee7,0xeef,0x1a28,0x1a28,0x1a28,0xef7,0x1b4e,0x1b4e,0xfd4,0xfda,0x1b76,0x1b76,0x1b76,
+0x1b76,0x1b76,0x1b76,0x1045,0x4ef,0x1c4b,0x1c43,0x116c,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0xf0f,0xf17,0xf1f,
+0xf27,0xf2f,0xf37,0xf3e,0xf42,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
+0x1bf6,0x1bf6,0x1bf6,0x1bfb,0x1bf6,0x1bf6,0x1bf6,0x10f4,0x10f6,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
+0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
+0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
+0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
+0x1c63,0x1c63,0x1c63,0x1c63,0x11d4,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
+0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x11dc,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
+0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
+0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
+0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
+0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x122c,0x11e4,0x1a06,0x1a06,0x1a06,
+0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
+0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
+0x11f9,0x11f9,0x11f9,0x11f9,0x11ec,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,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,0x11e4,0x11e4,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,
+0x1709,0x1709,0x1709,0x1709,0x1709,0x1234,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,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
+0x11e4,0x11e4,0x11e4,0x11e4,0x11ed,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,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,0x11e4,0x11ed,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x11f5,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
+0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
+0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
+0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
+0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
+0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
+0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
+0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
+0x1a06,0x1a06,0x1a06,0x1a06,0x123c,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1244,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
+0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
+0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
+0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
+0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x1594,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
+0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
+0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
+0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
+0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x159c,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
+0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
+0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
+0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
+0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
+0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
+0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
+0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
+0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x1701,0x1701,0x1701,0x1701,0x1701,
+0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
+0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
+0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
+0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
+0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
+0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
+0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
+0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
+0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
+0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
+0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
+0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
+0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x4ce,0x2c4,0x2c4,0x2c4,0x2c4,
+0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c7,0x2d0,0x2ca,0x2ca,0x2cd,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,
+0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x7f5,0x7ef,0x7d4,0x7cb,
+0x7c2,0x7bf,0x7b6,0x7d1,0x7bc,0x7c8,0x7cb,0x7e6,0x7dd,0x7ce,0x7f2,0x7c5,0x7b3,0x7b3,0x7b3,0x7b3,
+0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7da,0x7d7,0x7e0,0x7e0,0x7e0,0x7ef,0x7b6,0x801,0x801,0x801,
+0x801,0x801,0x801,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,
+0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7bc,0x7c2,0x7c8,0x7ec,0x7b0,0x7e9,0x7fe,0x7fe,0x7fe,
+0x7fe,0x7fe,0x7fe,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,
+0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7bc,0x7e3,0x7b9,0x7e0,0x2c4,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x282,0x282,0x282,0x282,
-0x282,0x291,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,
-0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x285,0x5fa,0x7b6,0x7b9,
-0x600,0x7b9,0x7b3,0x5f7,0x5ee,0x28b,0x60c,0x28e,0x7bc,0x5e5,0x603,0x7b0,0x5fd,0x609,0x5eb,0x5eb,
-0x5f1,0x288,0x5f7,0x5f4,0x5ee,0x5eb,0x60c,0x28e,0x5e8,0x5e8,0x5e8,0x5fa,0x297,0x297,0x297,0x297,
-0x297,0x297,0x615,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x615,0x297,0x297,0x297,
-0x297,0x297,0x297,0x606,0x615,0x297,0x297,0x297,0x297,0x297,0x615,0x60f,0x612,0x612,0x294,0x294,
-0x294,0x294,0x60f,0x294,0x612,0x612,0x612,0x294,0x612,0x612,0x294,0x294,0x60f,0x294,0x612,0x612,
-0x294,0x294,0x294,0x606,0x60f,0x612,0x612,0x294,0x612,0x294,0x60f,0x294,0x2a3,0x61b,0x2a3,0x29a,
-0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a0,0x618,0x2a3,0x61b,
-0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x61b,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,
-0x2a3,0x29a,0x621,0x618,0x2a3,0x29a,0x2a3,0x61b,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x618,0x624,0x61e,
-0x2a3,0x29a,0x2a3,0x29a,0x618,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x624,0x61e,0x621,0x618,0x2a3,
-0x61b,0x2a3,0x29a,0x2a3,0x61b,0x627,0x621,0x618,0x2a3,0x61b,0x2a3,0x29a,0x2a3,0x29a,0x621,0x618,
-0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,
-0x2a3,0x29a,0x621,0x618,0x2a3,0x29a,0x2a3,0x61b,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,
-0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x29d,0x2a6,0x2b2,0x2b2,0x2a6,
-0x2b2,0x2a6,0x2b2,0x2b2,0x2a6,0x2b2,0x2b2,0x2b2,0x2a6,0x2a6,0x2b2,0x2b2,0x2b2,0x2b2,0x2a6,0x2b2,
-0x2b2,0x2a6,0x2b2,0x2b2,0x2b2,0x2a6,0x2a6,0x2a6,0x2b2,0x2b2,0x2a6,0x2b2,0x2b5,0x2a9,0x2b2,0x2a6,
-0x2b2,0x2a6,0x2b2,0x2b2,0x2a6,0x2b2,0x2a6,0x2a6,0x2b2,0x2a6,0x2b2,0x2b5,0x2a9,0x2b2,0x2b2,0x2b2,
-0x2a6,0x2b2,0x2a6,0x2b2,0x2b2,0x2a6,0x2a6,0x2af,0x2b2,0x2a6,0x2a6,0x2a6,0x2af,0x2af,0x2af,0x2af,
-0x2b8,0x2b8,0x2ac,0x2b8,0x2b8,0x2ac,0x2b8,0x2b8,0x2ac,0x2b5,0x62a,0x2b5,0x62a,0x2b5,0x62a,0x2b5,
-0x62a,0x2b5,0x62a,0x2b5,0x62a,0x2b5,0x62a,0x2b5,0x62a,0x2a6,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,
-0x2b2,0x2a6,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2a9,0x2b8,0x2b8,0x2ac,
-0x2b5,0x2a9,0x990,0x990,0x993,0x98d,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,
-0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,
-0x993,0x98d,0x993,0x98d,0x990,0x98a,0x993,0x98d,0xb4f,0xc51,0x990,0x98a,0x990,0x98a,0x993,0x98d,
-0x993,0x98d,0x993,0x98d,0x993,0x98d,0x993,0x98d,0x993,0x98d,0x993,0x98d,0xc51,0xc51,0xc51,0xd4a,
-0xd4a,0xd4a,0xd4d,0xd4d,0xd4a,0xd4d,0xd4d,0xd4a,0xd4a,0xd4d,0xe8e,0xe91,0xe91,0xe91,0xe91,0xe8e,
-0xe91,0xe8e,0xe91,0xe8e,0xe91,0xe8e,0xe91,0xe8e,0x2bb,0x62d,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
-0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x62d,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
-0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
-0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2be,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
-0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x996,0x996,0x996,
-0x996,0x996,0xc54,0xc54,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2cd,0x2cd,0x2cd,
-0x2cd,0x2cd,0x2cd,0x2cd,0x2ca,0x2ca,0x2c1,0x2c1,0x633,0x2c1,0x2cd,0x636,0x2d0,0x636,0x636,0x636,
-0x2d0,0x636,0x2cd,0x2cd,0x639,0x2d3,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c7,0x630,0x630,0x630,0x630,
-0x2c4,0x630,0x2c1,0xac8,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x99f,0x99f,
-0x99c,0x999,0x99c,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,
-0xc57,0xc57,0xc57,0xc57,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,
-0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,
-0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,
-0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,
-0x63c,0x63c,0x63c,0x63c,0x63f,0x63f,0x8f4,0x63f,0x63f,0x8f7,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
-0xacb,0xacb,0xacb,0xc09,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xe55,0xe55,0xe55,0xe55,
-0xe58,0xd1d,0xd1d,0xd1d,0x642,0x642,0xace,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,
-0xc4e,0xc4e,0xc4e,0xc4e,0xf3c,0xf39,0xf3c,0xf39,0x2e2,0x2eb,0xf3c,0xf39,9,9,0x2f1,0xe94,
-0xe94,0xe94,0x2d9,0x1491,9,9,9,9,0x2ee,0x2dc,0x300,0x2df,0x300,0x300,0x300,9,
-0x300,9,0x300,0x300,0x2f7,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x648,
-0x648,0x648,0x648,0x648,0x648,0x648,9,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x300,0x300,
-0x2f7,0x2f7,0x2f7,0x2f7,0x2f7,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,
-0x645,0x645,0x645,0x645,0x645,0x645,0x2f4,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x2f7,0x2f7,
-0x2f7,0x2f7,0x2f7,0xf3c,0x303,0x303,0x306,0x300,0x300,0x303,0x2fa,0x9a2,0xb58,0xb55,0x2fd,0x9a2,
-0x2fd,0x9a2,0x2fd,0x9a2,0x2fd,0x9a2,0x2e8,0x2e5,0x2e8,0x2e5,0x2e8,0x2e5,0x2e8,0x2e5,0x2e8,0x2e5,
-0x2e8,0x2e5,0x2e8,0x2e5,0x303,0x303,0x2fa,0x2f4,0xb07,0xb04,0xb52,0xc5d,0xc5a,0xc60,0xc5d,0xc5a,
-0xd50,0xd53,0xd53,0xd53,0x9b1,0x654,0x312,0x315,0x312,0x312,0x312,0x315,0x312,0x312,0x312,0x312,
-0x315,0x9b1,0x315,0x312,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x654,0x651,0x651,
-0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,
-0x651,0x651,0x651,0x651,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64e,0x64b,0x64b,
-0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,
-0x9ab,0x64e,0x30c,0x30f,0x30c,0x30c,0x30c,0x30f,0x30c,0x30c,0x30c,0x30c,0x30f,0x9ab,0x30f,0x30c,
-0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
-0x312,0x30c,0x312,0x30c,0x312,0x30c,0x315,0x30f,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
-0x312,0x30c,0x309,0x900,0x903,0x8e5,0x8e5,0x10e6,0x9a5,0x9a5,0xb5e,0xb5b,0x9ae,0x9a8,0x9ae,0x9a8,
-0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
-0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
-0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
-0x312,0x315,0x30f,0x312,0x30c,0xb5e,0xb5b,0x312,0x30c,0xb5e,0xb5b,0x312,0x30c,0xb5e,0xb5b,0xe97,
-0x315,0x30f,0x315,0x30f,0x312,0x30c,0x315,0x30f,0x312,0x30c,0x315,0x30f,0x315,0x30f,0x315,0x30f,
-0x312,0x30c,0x315,0x30f,0x315,0x30f,0x315,0x30f,0x312,0x30c,0x315,0x30f,0x9b1,0x9ab,0x315,0x30f,
-0x315,0x30f,0x315,0x30f,0x315,0x30f,0xd59,0xd56,0x315,0x30f,0xe9a,0xe97,0xe9a,0xe97,0xe9a,0xe97,
-0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,
-0xec7,0xec4,0xec7,0xec4,0xfba,0xfb7,0xfba,0xfb7,0xfba,0xfb7,0xfba,0xfb7,0xfba,0xfb7,0xfba,0xfb7,
-0xfba,0xfb7,0xfba,0xfb7,0x111f,0x111c,0x12f9,0x12f6,0x14ca,0x14c7,0x14ca,0x14c7,0x14ca,0x14c7,0x14ca,0x14c7,
-0xc,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,
-0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0xc,0xc,0x327,0x318,0x318,
-0x318,0x31b,0x318,0x318,0xc,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,
-0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,
-0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x321,0xc,0x86a,0x9b4,0xc,0xc,0x1494,0x1494,0x13ad,
-0xf,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,
-0x924,0x924,0xd5c,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,
-0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0xe9d,0x32a,0x32a,0x32a,0x336,0x32a,
-0x32d,0x32a,0x32a,0x339,0x927,0xd5f,0xd62,0xd5f,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
-0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,
-0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0xf,0xf,0xf,0xf,0xf,
-0x33c,0x33c,0x33c,0x333,0x330,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
-0xc63,0xc63,0xc63,0xc63,0x13b0,0x1497,0xf45,0xf45,0xf45,0xf42,0xf42,0xd6b,0x870,0xc72,0xc6f,0xc6f,
-0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0x86d,0x148b,0x12,0xd68,0x873,
-0x12c0,0x357,0x35a,0x35a,0x35a,0x35a,0x35a,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
-0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0xf48,0xf48,0xf48,0xf48,0xf48,
-0x876,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x8eb,0x8eb,0x8eb,0x8eb,0x8eb,
-0x8eb,0x8eb,0x8eb,0xafe,0xafe,0xafe,0xc66,0xc6c,0xc69,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0x12bd,
-0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x351,0x34e,0x34b,0x348,0xb61,0xb61,
-0x8e8,0x357,0x357,0x363,0x357,0x35d,0x35d,0x35d,0x35d,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
-0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
-0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
-0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
-0x357,0x357,0x357,0x357,0x9ba,0x9ba,0x357,0x357,0x357,0x357,0x357,0x9ba,0x35a,0x357,0x35a,0x357,
-0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x9ba,0x357,0x357,0x357,0x35a,
-0x366,0x357,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x33f,0x348,0x345,0x345,0x342,0x342,0x342,
-0x342,0x360,0x360,0x342,0x342,0x348,0x345,0x345,0x345,0x342,0xc75,0xc75,0x354,0x354,0x354,0x354,
-0x354,0x354,0x354,0x354,0x354,0x354,0x9ba,0x9ba,0x9ba,0x9b7,0x9b7,0xc75,0x9d2,0x9d2,0x9d2,0x9cc,
-0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9c9,0x9cc,0x9c9,0x15,0x9bd,0x9cf,0x9c0,0x9cf,0x9cf,
-0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,
-0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0xc78,0xc78,0xc78,0x9c6,0x9c6,0x9c6,0x9c6,
-0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c3,0x9c3,0x9c3,0x9c3,
-0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x15,0x15,0xc78,0xc78,0xc78,0xdcb,0xdcb,0xdcb,0xdcb,
-0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,
-0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,
-0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0x9d8,0x9d8,0x9d8,0x9d8,
-0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,
-0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,
-0x9d8,0x9d8,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0xb64,0x18,0x18,
-0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xedf,0xedf,0xedf,0xedf,
-0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,
-0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,
-0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,
-0xee5,0xee5,0xed9,0xed9,0xedc,0xeeb,0xee8,0x111,0x111,0x111,0x111,0x111,0x17d3,0x17d3,0x17d3,0x17d3,
-0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xada,0xada,0xadd,0xadd,
-0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0x75,0x75,0x75,0x75,0x1551,0x1551,0x1551,0x1551,
-0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x154e,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x1fe,0x1fe,0x1fe,0x1fe,
-0x1fe,0x1fe,0x1fe,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x20a,0x20a,0x20a,0x20a,
-0x20a,0x20a,0x20a,0x20a,0x20a,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x120f,0x120f,0x120f,0x120f,
-0x120f,0x120f,0x120f,0x120f,0x120f,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x1e0,0x1e0,0x1e0,0x1e0,
-0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x1467,0x1467,0x1467,0x1467,
-0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x173d,0x173d,0x173d,0x173d,
-0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x1233,0x1233,0x1233,0x1233,
-0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x186,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x15f6,0x15f6,0x15f6,0x15f6,
-0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x1f8,0x1f8,0x1f8,0x1f8,0x15fc,0x15fc,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x1548,0x1548,0x1548,0x1548,
-0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1632,0x1632,0x1632,0x1632,
-0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x16aa,0x16aa,0x16aa,0x16aa,
-0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xdc2,0xdc2,0xdbf,0xdbf,
-0xdbf,0xdc2,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x234,0x1755,0x1755,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x17d6,0x17d6,0x240,0x17d6,
-0x17d6,0x240,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x240,0x240,0x240,0x240,0x240,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x2d3,0x2d3,0x2d3,0x2d3,
+0x2d3,0x2e2,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,
+0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d6,0x64b,0x80a,0x80d,
+0x651,0x80d,0x807,0x648,0x63f,0x2dc,0x65d,0x2df,0x810,0x636,0x654,0x804,0x64e,0x65a,0x63c,0x63c,
+0x642,0x2d9,0x648,0x645,0x63f,0x63c,0x65d,0x2df,0x639,0x639,0x639,0x64b,0x2e8,0x2e8,0x2e8,0x2e8,
+0x2e8,0x2e8,0x666,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x666,0x2e8,0x2e8,0x2e8,
+0x2e8,0x2e8,0x2e8,0x657,0x666,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x666,0x660,0x663,0x663,0x2e5,0x2e5,
+0x2e5,0x2e5,0x660,0x2e5,0x663,0x663,0x663,0x2e5,0x663,0x663,0x2e5,0x2e5,0x660,0x2e5,0x663,0x663,
+0x2e5,0x2e5,0x2e5,0x657,0x660,0x663,0x663,0x2e5,0x663,0x2e5,0x660,0x2e5,0x2f4,0x66c,0x2f4,0x2eb,
+0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f1,0x669,0x2f4,0x66c,
+0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x66c,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,
+0x2f4,0x2eb,0x672,0x669,0x2f4,0x2eb,0x2f4,0x66c,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x669,0x675,0x66f,
+0x2f4,0x2eb,0x2f4,0x2eb,0x669,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x675,0x66f,0x672,0x669,0x2f4,
+0x66c,0x2f4,0x2eb,0x2f4,0x66c,0x678,0x672,0x669,0x2f4,0x66c,0x2f4,0x2eb,0x2f4,0x2eb,0x672,0x669,
+0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,
+0x2f4,0x2eb,0x672,0x669,0x2f4,0x2eb,0x2f4,0x66c,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,
+0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2ee,0x2f7,0x303,0x303,0x2f7,
+0x303,0x2f7,0x303,0x303,0x2f7,0x303,0x303,0x303,0x2f7,0x2f7,0x303,0x303,0x303,0x303,0x2f7,0x303,
+0x303,0x2f7,0x303,0x303,0x303,0x2f7,0x2f7,0x2f7,0x303,0x303,0x2f7,0x303,0x306,0x2fa,0x303,0x2f7,
+0x303,0x2f7,0x303,0x303,0x2f7,0x303,0x2f7,0x2f7,0x303,0x2f7,0x303,0x306,0x2fa,0x303,0x303,0x303,
+0x2f7,0x303,0x2f7,0x303,0x303,0x2f7,0x2f7,0x300,0x303,0x2f7,0x2f7,0x2f7,0x300,0x300,0x300,0x300,
+0x309,0x309,0x2fd,0x309,0x309,0x2fd,0x309,0x309,0x2fd,0x306,0x67b,0x306,0x67b,0x306,0x67b,0x306,
+0x67b,0x306,0x67b,0x306,0x67b,0x306,0x67b,0x306,0x67b,0x2f7,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,
+0x303,0x2f7,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x2fa,0x309,0x309,0x2fd,
+0x306,0x2fa,0x9e4,0x9e4,0x9e7,0x9e1,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,
+0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,
+0x9e7,0x9e1,0x9e7,0x9e1,0x9e4,0x9de,0x9e7,0x9e1,0xba3,0xca5,0x9e4,0x9de,0x9e4,0x9de,0x9e7,0x9e1,
+0x9e7,0x9e1,0x9e7,0x9e1,0x9e7,0x9e1,0x9e7,0x9e1,0x9e7,0x9e1,0x9e7,0x9e1,0xca5,0xca5,0xca5,0xd9e,
+0xd9e,0xd9e,0xda1,0xda1,0xd9e,0xda1,0xda1,0xd9e,0xd9e,0xda1,0xee5,0xee8,0xee8,0xee8,0xee8,0xee5,
+0xee8,0xee5,0xee8,0xee5,0xee8,0xee5,0xee8,0xee5,0x30c,0x67e,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,
+0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x67e,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,
+0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,
+0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30f,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,
+0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x9ea,0x9ea,0x9ea,
+0x9ea,0x9ea,0xca8,0xca8,0x327,0x327,0x327,0x327,0x327,0x327,0x327,0x327,0x327,0x31e,0x31e,0x31e,
+0x31e,0x31e,0x31e,0x31e,0x31b,0x31b,0x318,0x318,0x684,0x318,0x31e,0x687,0x321,0x687,0x687,0x687,
+0x321,0x687,0x31e,0x31e,0x68a,0x324,0x318,0x318,0x318,0x318,0x318,0x318,0x681,0x681,0x681,0x681,
+0x315,0x681,0x318,0xb1c,0x327,0x327,0x327,0x327,0x327,0x312,0x312,0x312,0x312,0x312,0x9f3,0x9f3,
+0x9f0,0x9ed,0x9f0,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,
+0xcab,0xcab,0xcab,0xcab,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,
+0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,
+0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,
+0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,
+0x68d,0x68d,0x68d,0x68d,0x690,0x690,0x948,0x690,0x690,0x94b,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,
+0xb1f,0xb1f,0xb1f,0xc5d,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xeac,0xeac,0xeac,0xeac,
+0xeaf,0xd71,0xd71,0xd71,0x693,0x693,0xb22,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,
+0xca2,0xca2,0xca2,0xca2,0xf93,0xf90,0xf93,0xf90,0x333,0x33c,0xf93,0xf90,0x27,0x27,0x342,0xeeb,
+0xeeb,0xeeb,0x32a,0x14e8,0x27,0x27,0x27,0x27,0x33f,0x32d,0x351,0x330,0x351,0x351,0x351,0x27,
+0x351,0x27,0x351,0x351,0x348,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,
+0x699,0x699,0x699,0x699,0x699,0x699,0x27,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x351,0x351,
+0x348,0x348,0x348,0x348,0x348,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,
+0x696,0x696,0x696,0x696,0x696,0x696,0x345,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x348,0x348,
+0x348,0x348,0x348,0xf93,0x354,0x354,0x357,0x351,0x351,0x354,0x34b,0x9f6,0xbac,0xba9,0x34e,0x9f6,
+0x34e,0x9f6,0x34e,0x9f6,0x34e,0x9f6,0x339,0x336,0x339,0x336,0x339,0x336,0x339,0x336,0x339,0x336,
+0x339,0x336,0x339,0x336,0x354,0x354,0x34b,0x345,0xb5b,0xb58,0xba6,0xcb1,0xcae,0xcb4,0xcb1,0xcae,
+0xda4,0xda7,0xda7,0xda7,0xa05,0x6a5,0x363,0x366,0x363,0x363,0x363,0x366,0x363,0x363,0x363,0x363,
+0x366,0xa05,0x366,0x363,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a5,0x6a2,0x6a2,
+0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,
+0x6a2,0x6a2,0x6a2,0x6a2,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69f,0x69c,0x69c,
+0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,
+0x9ff,0x69f,0x35d,0x360,0x35d,0x35d,0x35d,0x360,0x35d,0x35d,0x35d,0x35d,0x360,0x9ff,0x360,0x35d,
+0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
+0x363,0x35d,0x363,0x35d,0x363,0x35d,0x366,0x360,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
+0x363,0x35d,0x35a,0x954,0x957,0x939,0x939,0x113d,0x9f9,0x9f9,0xbb2,0xbaf,0xa02,0x9fc,0xa02,0x9fc,
+0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
+0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
+0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
+0x363,0x366,0x360,0x363,0x35d,0xbb2,0xbaf,0x363,0x35d,0xbb2,0xbaf,0x363,0x35d,0xbb2,0xbaf,0xeee,
+0x366,0x360,0x366,0x360,0x363,0x35d,0x366,0x360,0x363,0x35d,0x366,0x360,0x366,0x360,0x366,0x360,
+0x363,0x35d,0x366,0x360,0x366,0x360,0x366,0x360,0x363,0x35d,0x366,0x360,0xa05,0x9ff,0x366,0x360,
+0x366,0x360,0x366,0x360,0x366,0x360,0xdad,0xdaa,0x366,0x360,0xef1,0xeee,0xef1,0xeee,0xef1,0xeee,
+0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,
+0xf1e,0xf1b,0xf1e,0xf1b,0x1011,0x100e,0x1011,0x100e,0x1011,0x100e,0x1011,0x100e,0x1011,0x100e,0x1011,0x100e,
+0x1011,0x100e,0x1011,0x100e,0x1176,0x1173,0x1350,0x134d,0x1521,0x151e,0x1521,0x151e,0x1521,0x151e,0x1521,0x151e,
+0x2a,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,
+0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x2a,0x2a,0x378,0x369,0x369,
+0x369,0x36c,0x369,0x369,0x2a,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,
+0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,
+0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x372,0x2a,0x8be,0xa08,0x2a,0x2a,0x14eb,0x14eb,0x1404,
+0x2d,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
+0x978,0x978,0xdb0,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
+0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0xef4,0x37b,0x37b,0x37b,0x387,0x37b,
+0x37e,0x37b,0x37b,0x38a,0x97b,0xdb3,0xdb6,0xdb3,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,
+0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x2d,0x2d,0x2d,0x2d,0x2d,
+0x38d,0x38d,0x38d,0x384,0x381,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+0xcb7,0xcb7,0xcb7,0xcb7,0x1407,0x14ee,0xf9c,0xf9c,0xf9c,0xf99,0xf99,0xdbf,0x8c4,0xcc6,0xcc3,0xcc3,
+0xcba,0xcba,0xcba,0xcba,0xcba,0xcba,0xf96,0xf96,0xf96,0xf96,0xf96,0x8c1,0x14e2,0x30,0xdbc,0x8c7,
+0x1317,0x3a8,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
+0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,
+0x8ca,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x93f,0x93f,0x93f,0x93f,0x93f,
+0x93f,0x93f,0x93f,0xb52,0xb52,0xb52,0xcba,0xcc0,0xcbd,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0x1314,
+0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x3a2,0x39f,0x39c,0x399,0xbb5,0xbb5,
+0x93c,0x3a8,0x3a8,0x3b4,0x3a8,0x3ae,0x3ae,0x3ae,0x3ae,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
+0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
+0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
+0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
+0x3a8,0x3a8,0x3a8,0x3a8,0xa0e,0xa0e,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0xa0e,0x3ab,0x3a8,0x3ab,0x3a8,
+0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0xa0e,0x3a8,0x3a8,0x3a8,0x3ab,
+0x3b7,0x3a8,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x390,0x399,0x396,0x396,0x393,0x393,0x393,
+0x393,0x3b1,0x3b1,0x393,0x393,0x399,0x396,0x396,0x396,0x393,0xcc9,0xcc9,0x3a5,0x3a5,0x3a5,0x3a5,
+0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0xa0e,0xa0e,0xa0e,0xa0b,0xa0b,0xcc9,0xa26,0xa26,0xa26,0xa20,
+0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa1d,0xa20,0xa1d,0x33,0xa11,0xa23,0xa14,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xccc,0xccc,0xccc,0xa1a,0xa1a,0xa1a,0xa1a,
+0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa17,0xa17,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0x33,0x33,0xccc,0xccc,0xccc,0xe22,0xe22,0xe22,0xe22,
+0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,
+0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,
+0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0xa2c,0xa2c,0xa2c,0xa2c,
+0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,
+0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,
+0xa2c,0xa2c,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xbb8,0x36,0x36,
+0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xf36,0xf36,0xf36,0xf36,
+0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,
+0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,
+0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,
+0xf3c,0xf3c,0xf30,0xf30,0xf33,0xf42,0xf3f,0x14a,0x14a,0x14a,0x14a,0x14a,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,0,0x1827,0x1827,0x1827,0x1827,
+0x1827,0x1827,0x1827,0x1827,0x1827,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xb2e,0xb2e,0xb31,0xb31,
+0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0x9f,0x9f,0x9f,0x9f,0x15a5,0x15a5,0x15a5,0x15a5,
+0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x15a2,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x23d,0x23d,0x23d,0x23d,
+0x23d,0x23d,0x23d,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x249,0x249,0x249,0x249,
+0x249,0x249,0x249,0x249,0x249,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1266,0x1266,0x1266,0x1266,
+0x1266,0x1266,0x1266,0x1266,0x1266,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x21f,0x21f,0x21f,0x21f,
+0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x14be,0x14be,0x14be,0x14be,
+0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x204,0x204,0x204,0x204,0x204,0x204,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,3,0xc,0xf,0xf,
+0xc,0x12,3,0x15,0,0,0,0,0,0,0,0,6,0x15,0x15,0x15,
+0x15,0x15,0x15,0x18,0x18,0x15,0x15,0x15,6,6,6,6,0,0,9,9,
+9,9,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x18,
+0x15,0x15,0xc,0xf,0xf,0,0x12,0x12,0x12,0xc,0xc,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0x921,0x921,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,0x921,0x921,
-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,
-0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,
+0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,
+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,0x15,0x15,0x15,0x15,0x15,0x15,0,
+0,0,0x15,0,0x15,0x15,0,0x15,0x15,0x15,0x15,0x15,0x15,0x15,9,0x15,
+0,0,0,0,0,0,0,0,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+0x21,0x21,0,0,0,0,0,0,0x1791,0x1791,0x1791,0x1791,0x264,0x264,0x264,0x264,
+0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x1c2,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,
+0x164a,0x164a,0x237,0x237,0x237,0x237,0x1650,0x1650,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,
+0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
+0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x1e,0x1e,0x1e,0,0,0,0,0x16fe,0x16fe,0x16fe,0x16fe,0x24c,0x24c,0x24c,0x24c,
+0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xe19,0xe19,0xe16,0xe16,0xe16,0xe19,0x111,0x111,
+0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x27c,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,
+0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x182a,0x182a,0x288,0x182a,0x182a,0x288,0x182a,0x182a,
+0x182a,0x182a,0x182a,0x288,0x288,0x288,0x288,0x288,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0x975,0x975,6,0x15,0x15,0x15,0x15,0x15,0x15,0x18,
+0x18,0x15,0x15,6,6,6,6,6,6,6,6,6,6,6,6,6,
+6,6,6,6,6,6,6,6,6,6,6,0x15,0x15,0x15,0x15,0x15,
+0x15,0x18,9,0x15,0x15,0x15,0x15,0x12,6,6,6,6,6,6,6,6,
 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-0x149d,0x37e,0x38d,0x38d,0x1b,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x1b,0x1b,0x393,
-0x393,0x1b,0x1b,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,
-0x393,0x1b,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x1b,0x393,0x1b,0x1b,0x1b,0x393,0x393,
-0x393,0x393,0x1b,0x1b,0x381,0xc7e,0x37e,0x38d,0x38d,0x37e,0x37e,0x37e,0x37e,0x1b,0x1b,0x38d,
-0x38d,0x1b,0x1b,0x390,0x390,0x384,0xd71,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x37e,
-0x1b,0x1b,0x1b,0x1b,0x396,0x396,0x1b,0x396,0x393,0x393,0x37e,0x37e,0x1b,0x1b,0x90c,0x90c,
-0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x393,0x393,0x38a,0x38a,0x387,0x387,0x387,0x387,
-0x387,0x38a,0x387,0x10f5,0x1b,0x1b,0x1b,0x1b,0x1e,0xc81,0x399,0xc84,0x1e,0x3a5,0x3a5,0x3a5,
-0x3a5,0x3a5,0x3a5,0x1e,0x1e,0x1e,0x1e,0x3a5,0x3a5,0x1e,0x1e,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,
-0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x1e,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,
-0x3a5,0x1e,0x3a5,0x3a8,0x1e,0x3a5,0x3a8,0x1e,0x3a5,0x3a5,0x1e,0x1e,0x39c,0x1e,0x3a2,0x3a2,
-0x3a2,0x399,0x399,0x1e,0x1e,0x1e,0x1e,0x399,0x399,0x1e,0x1e,0x399,0x399,0x39f,0x1e,0x1e,
-0x1e,0xf51,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x3a8,0x3a8,0x3a8,0x3a5,0x1e,0x3a8,0x1e,
-0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,
-0x399,0x399,0x3a5,0x3a5,0x3a5,0xf51,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
-0x21,0x3ab,0x3ab,0x3b4,0x21,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0xc8d,0x3b7,0x21,0x3b7,
-0x3b7,0x3b7,0x21,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,
-0x3b7,0x21,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x21,0x3b7,0x3b7,0x21,0x3b7,0x3b7,0x3b7,
-0x3b7,0x3b7,0x21,0x21,0x3ae,0x3b7,0x3b4,0x3b4,0x3b4,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x21,0x3ab,
-0x3ab,0x3b4,0x21,0x3b4,0x3b4,0x3b1,0x21,0x21,0x3b7,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
-0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x3b7,0xc8d,0xc87,0xc87,0x21,0x21,0x912,0x912,
-0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x13b3,0xc8a,0x21,0x21,0x21,0x21,0x21,0x21,
-0x21,0x16b9,0x21,0x21,0x21,0x21,0x21,0x21,0x24,0x3ba,0x3c9,0x3c9,0x24,0x3cf,0x3cf,0x3cf,
-0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x24,0x24,0x3cf,0x3cf,0x24,0x24,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,
-0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x24,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,
-0x3cf,0x24,0x3cf,0x3cf,0x24,0xc90,0x3cf,0x3cf,0x3cf,0x3cf,0x24,0x24,0x3bd,0x3cf,0x3ba,0x3ba,
-0x3c9,0x3ba,0x3ba,0x3ba,0xf54,0x24,0x24,0x3c9,0x3cc,0x24,0x24,0x3cc,0x3cc,0x3c0,0x24,0x24,
-0x24,0x24,0x24,0x24,0x24,0x24,0x3ba,0x3ba,0x24,0x24,0x24,0x24,0x3d2,0x3d2,0x24,0x3cf,
-0x3cf,0x3cf,0xf54,0xf54,0x24,0x24,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,
-0x3c3,0xc90,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
-0x27,0x27,0x3d5,0x3e1,0x27,0x3e1,0x3e1,0x3e1,0x3e1,0x3e1,0x3e1,0x27,0x27,0x27,0x3e1,0x3e1,
-0x3e1,0x27,0x3e1,0x3e1,0x3e4,0x3e1,0x27,0x27,0x27,0x3e1,0x3e1,0x27,0x3e1,0x27,0x3e1,0x3e1,
-0x27,0x27,0x27,0x3e1,0x3e1,0x27,0x27,0x27,0x3e1,0x3e1,0x91b,0x27,0x27,0x27,0x3e1,0x3e1,
-0x3e1,0x3e1,0x3e1,0x3e1,0x3e1,0x91b,0xd74,0x3e1,0x3e1,0x3e1,0x27,0x27,0x27,0x27,0x3d5,0x3db,
-0x3d5,0x3db,0x3db,0x27,0x27,0x27,0x3db,0x3db,0x3db,0x27,0x3de,0x3de,0x3de,0x3d8,0x27,0x27,
-0xf57,0x27,0x27,0x27,0x27,0x27,0x27,0x3d5,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
-0x27,0x27,0xe8b,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x915,0x915,0x915,0xc93,
-0xc93,0xc93,0xc93,0xc93,0xc93,0xc96,0xc93,0x27,0x27,0x27,0x27,0x27,0x14a0,0x3f3,0x3f3,0x3f3,
-0x2a,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x2a,0x3f6,0x3f6,0x3f6,0x2a,0x3f6,0x3f6,
-0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x2a,0x3f6,0x3f6,
-0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x14a3,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x2a,0x2a,
-0x2a,0xf60,0x3e7,0x3e7,0x3e7,0x3f3,0x3f3,0x3f3,0x3f3,0x2a,0x3e7,0x3e7,0x3ea,0x2a,0x3e7,0x3e7,
-0x3e7,0x3ed,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x3e7,0x3e7,0x2a,0xf60,0xf60,0x16bc,0x2a,
-0x2a,0x2a,0x2a,0x2a,0x3f6,0x3f6,0xf5a,0xf5a,0x2a,0x2a,0x3f0,0x3f0,0x3f0,0x3f0,0x3f0,0x3f0,
-0x3f0,0x3f0,0x3f0,0x3f0,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0xf5d,0xf5d,0xf5d,0xf5d,
-0xf5d,0xf5d,0xf5d,0xf5d,0x1779,0x14a6,0x402,0x402,0x2d,0x408,0x408,0x408,0x408,0x408,0x408,0x408,
-0x408,0x2d,0x408,0x408,0x408,0x2d,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,
-0x408,0x408,0x408,0x408,0x408,0x2d,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,
-0x2d,0x408,0x408,0x408,0x408,0x408,0x2d,0x2d,0xc99,0xc9c,0x402,0x3f9,0x405,0x402,0x3f9,0x402,
-0x402,0x2d,0x3f9,0x405,0x405,0x2d,0x405,0x405,0x3f9,0x3fc,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
-0x2d,0x3f9,0x3f9,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x408,0x2d,0x408,0x408,0xea3,0xea3,
-0x2d,0x2d,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x2d,0xea6,0xea6,0x2d,
-0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x30,0x14a9,0x414,0x414,
-0x30,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x30,0x41a,0x41a,0x41a,0x30,0x41a,0x41a,
-0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x12cf,0x41a,0x41a,
-0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x12cf,0x30,
-0x30,0xf6c,0x40b,0x414,0x414,0x40b,0x40b,0x40b,0xf63,0x30,0x414,0x414,0x414,0x30,0x417,0x417,
-0x417,0x40e,0x12d2,0x177c,0x30,0x30,0x30,0x30,0x177f,0x177f,0x177f,0x40b,0x177c,0x177c,0x177c,0x177c,
-0x177c,0x177c,0x177c,0x16bf,0x41a,0x41a,0xf63,0xf63,0x30,0x30,0x411,0x411,0x411,0x411,0x411,0x411,
-0x411,0x411,0x411,0x411,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0x177c,0x177c,0x177c,0xf69,0xf6c,0xf6c,
-0xf6c,0xf6c,0xf6c,0xf6c,0x33,0x33,0x9e4,0x9e4,0x33,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,
-0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x33,0x33,0x33,0x9ea,0x9ea,
-0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,
-0x9ea,0x9ea,0x33,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x33,0x9ea,0x33,0x33,
-0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x33,0x33,0x33,0x9de,0x33,0x33,0x33,0x33,0x9db,
-0x9e4,0x9e4,0x9db,0x9db,0x9db,0x33,0x9db,0x33,0x9e4,0x9e4,0x9e7,0x9e4,0x9e7,0x9e7,0x9e7,0x9db,
-0x33,0x33,0x33,0x33,0x33,0x33,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,
-0x33,0x33,0x9e4,0x9e4,0x9e1,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
-0x36,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,
-0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,
-0x435,0x420,0x435,0x432,0x420,0x420,0x420,0x420,0x420,0x420,0x426,0x36,0x36,0x36,0x36,0x41d,
-0x43b,0x43b,0x43b,0x43b,0x43b,0x435,0x438,0x423,0x423,0x423,0x423,0x423,0x423,0x420,0x423,0x429,
-0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42c,0x42c,0x36,0x36,0x36,0x36,
-0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
-0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x39,0x44a,0x44a,0x39,
-0x44a,0x39,0x39,0x44a,0x44a,0x39,0x44a,0x39,0x39,0x44a,0x39,0x39,0x39,0x39,0x39,0x39,
-0x44a,0x44a,0x44a,0x44a,0x39,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x39,0x44a,0x44a,0x44a,
-0x39,0x44a,0x39,0x44a,0x39,0x39,0x44a,0x44a,0x39,0x44a,0x44a,0x44a,0x44a,0x43e,0x44a,0x447,
-0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x39,0x43e,0x43e,0x44a,0x39,0x39,0x453,0x453,0x453,0x453,
-0x453,0x39,0x450,0x39,0x441,0x441,0x441,0x441,0x441,0x43e,0x39,0x39,0x444,0x444,0x444,0x444,
-0x444,0x444,0x444,0x444,0x444,0x444,0x39,0x39,0x44d,0x44d,0x13b6,0x13b6,0x39,0x39,0x39,0x39,
-0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
-0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x95d,0x95d,0x95d,0x960,
-0x95d,0x95d,0x95d,0x95d,0x3c,0x95d,0x95d,0x95d,0x95d,0x960,0x95d,0x95d,0x95d,0x95d,0x960,0x95d,
-0x95d,0x95d,0x95d,0x960,0x95d,0x95d,0x95d,0x95d,0x960,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,
-0x95d,0x95d,0x95d,0x95d,0x95d,0x960,0x9f9,0xf78,0xf78,0x3c,0x3c,0x3c,0x3c,0x92a,0x92a,0x92d,
-0x92a,0x92d,0x92d,0x936,0x92d,0x936,0x92a,0x92a,0x92a,0x92a,0x92a,0x957,0x92a,0x92d,0x930,0x930,
-0x933,0x93c,0x930,0x930,0x95d,0x95d,0x95d,0x95d,0x12db,0x12d5,0x12d5,0x12d5,0x92a,0x92a,0x92a,0x92d,
-0x92a,0x92a,0x9ed,0x92a,0x3c,0x92a,0x92a,0x92a,0x92a,0x92d,0x92a,0x92a,0x92a,0x92a,0x92d,0x92a,
-0x92a,0x92a,0x92a,0x92d,0x92a,0x92a,0x92a,0x92a,0x92d,0x92a,0x9ed,0x9ed,0x9ed,0x92a,0x92a,0x92a,
-0x92a,0x92a,0x92a,0x92a,0x9ed,0x92d,0x9ed,0x9ed,0x9ed,0x3c,0x9f6,0x9f6,0x9f3,0x9f3,0x9f3,0x9f3,
-0x9f3,0x9f3,0x9f0,0x9f3,0x9f3,0x9f3,0x9f3,0x9f3,0x9f3,0x3c,0xf6f,0x9f3,0xd77,0xd77,0xf72,0xf75,
-0xf6f,0x10f8,0x10f8,0x10f8,0x10f8,0x12d8,0x12d8,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
-0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
-0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x459,0x459,0x459,0x459,0x459,0x459,0x3f,0x13bc,
-0x3f,0x3f,0x3f,0x3f,0x3f,0x13bc,0x3f,0x3f,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,
-0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,
-0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0x42,
-0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,
-0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,0xa23,0x42,0xa23,0xa23,
-0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0x42,0xa23,0x42,0xa23,0xa23,
-0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xd86,0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xd86,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0x12de,0x12de,0xd80,0xd83,0xa1d,0xa26,0xa1a,
-0xa1a,0xa1a,0xa1a,0xa26,0xa26,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa17,0xa17,
-0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0x42,0x42,0x42,0xa29,0xa29,0xa29,0xa29,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
-0xa29,0x16c5,0x45,0x45,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x45,0x45,0xa3b,0xa3e,0xa3e,0xa3e,
-0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,
-0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa38,0xa35,0x48,0x48,0x48,0xa44,0xa44,0xa44,0xa44,
-0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa41,0xa41,0xa41,0xa44,0xa44,0xa44,0x14af,0x14af,0x14af,
-0x14af,0x14af,0x14af,0x14af,0x14af,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0xa65,0xa65,0xa65,0xa65,
-0xa65,0xa65,0xa47,0xa65,0xa65,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4d,0xa4a,
-0xa5c,0xa5c,0xa5f,0xa68,0xa56,0xa53,0xa5c,0xa59,0xa68,0xc9f,0x4e,0x4e,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xca2,0xca2,0xca2,0xca2,
-0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xa77,0xa77,0xaf5,0xaf8,
-0xa7d,0xaf2,0xa7a,0xa77,0xa80,0xa8f,0xa83,0xa92,0xa92,0xa92,0xa6e,0x51,0xa86,0xa86,0xa86,0xa86,
-0xa86,0xa86,0xa86,0xa86,0xa86,0xa86,0x51,0x51,0x51,0x51,0x51,0x51,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa89,0xa89,0xa89,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa89,0xa89,0xa89,0xa89,0xa71,0xf99,0x51,0x51,0x51,0x51,0x51,0x114c,0x114c,0x114c,0x114c,
-0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x477,0x477,0x477,0x477,
-0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,
-0x477,0x477,0x54,0x54,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x54,0x54,0x477,0x477,0x477,0x477,
-0x477,0x477,0x477,0x477,0x54,0x47a,0x54,0x47a,0x54,0x47a,0x54,0x47a,0x477,0x477,0x477,0x477,
-0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,
-0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x54,0x54,0x477,0x477,0x477,0x477,
-0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,
-0x477,0x54,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x471,0x477,0x471,0x471,0x46e,0x477,0x477,
-0x477,0x54,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x46e,0x46e,0x46e,0x477,0x477,0x477,0x477,
-0x54,0x54,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x54,0x46e,0x46e,0x46e,0x477,0x477,0x477,0x477,
-0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x46e,0x46e,0x46e,0x54,0x54,0x477,0x477,
-0x477,0x54,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x474,0x471,0x54,0xb6a,0xb6d,0xb6d,0xb6d,
-0xfa2,0x57,0x148e,0x148e,0x148e,0x148e,0x483,0x483,0x483,0x483,0x483,0x483,0x4ce,0xb7f,0x5a,0x5a,
-0x68a,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4d4,0x4e6,0x4d4,0x4e0,0x4da,0x68d,0x4cb,0x687,0x687,0x687,
-0x687,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4d1,0x4e3,0x4d1,0x4dd,0x4d7,0x5a,0xd8f,0xd8f,0xd8f,0xd8f,
-0xd8f,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x5a,0x5a,0x5a,0x4ec,0x4ec,0x4ec,0x4ec,
-0x4ec,0x4ec,0x4ec,0x4e9,0x4ef,0x702,0x4ec,0x966,0x987,0xaa1,0xaa1,0xaa1,0xb82,0xb82,0xd92,0xd92,
-0xd92,0xd92,0x1110,0x1113,0x1113,0x12e4,0x1488,0x14b2,0x14b5,0x14b5,0x16c8,0x5d,0x5d,0x5d,0x5d,0x5d,
-0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x4f5,0x4f5,0x4f5,0x4f5,
-0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f2,0x4f2,0x4f2,0x4f2,0x4f5,0xaa4,0xaa4,
-0xb85,0xb8b,0xb8b,0xb88,0xb88,0xb88,0xb88,0xd95,0xea9,0xea9,0xea9,0xea9,0x10e3,0x60,0x60,0x60,
-0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x525,0x525,0x525,0xaad,
-0xeb2,0xfa8,0xfa8,0xfa8,0xfa8,0x123f,0x16cb,0x16cb,0x63,0x63,0x63,0x63,0x6b4,0x6b4,0x6b4,0x6b4,
-0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x531,0x531,0x52e,0x52e,0x52e,0x52e,0xeb8,0xeb8,0xeb8,0xeb5,
-0xeb5,0xeb5,0xeb5,0xeb5,0x1119,0x1365,0x1365,0x1365,0x1365,0x12e7,0x12e7,0x12e7,0x1368,0x12ea,0x12ea,0x1368,
-0x14b8,0x14b8,0x14b8,0x14b8,0x14bb,0x14bb,0x14bb,0x1782,0x1782,0x1782,0x1782,0x66,0x558,0x558,0x558,0x558,
-0x558,0xab6,0xab6,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
-0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x55b,0x55b,0x55b,0x55b,
-0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
-0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,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,0x6f,0xad1,0xad1,0xad1,0xad1,0xad4,0xad1,0xad1,0xad1,0xad1,
-0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad4,
-0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0xad7,0xad7,0xad7,0xad7,
-0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,
-0xad7,0xad7,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x78,0x7e9,0x7e3,0x7e9,
-0x7e3,0x7e9,0x7e3,0x7e9,0x7e3,0x7e9,0x7e3,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,
-0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e3,0x7e3,0x7e3,0x7e9,
-0x7e3,0x7e9,0x7e3,0x7e9,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e9,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,
-0x7e6,0xc2d,0xc2d,0x78,0x78,0x8fd,0x8fd,0x8c7,0x8c7,0x7ec,0x7ef,0xc2a,0x7b,0x7b,0x7b,0x7b,
-0x7b,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,0x10d1,0x7b,0x7b,
-0x7e,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
-0x804,0x804,0x804,0x7e,0x8d0,0x8d0,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,
-0x8d3,0x8d3,0x8d3,0x8d3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,
-0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0x1374,0x1374,0x1374,0x81,
-0x81,0x81,0x81,0x81,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,
-0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,
-0x80d,0xd2f,0xd2f,0x84,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
-0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
-0x813,0x813,0x813,0x84,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,
-0xae9,0x87,0x87,0x87,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,
-0xaef,0xaef,0xaef,0xaef,0xaef,0xc36,0xaef,0xaef,0xaef,0xc36,0xaef,0x8a,0x8a,0x8a,0x8a,0x8a,
-0x8a,0x8a,0x8a,0x8a,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
-0x1173,0x1173,0x1173,0x1173,0x981,0x981,0x981,0x981,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
-0x8d,0x8d,0x8d,0x8d,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,
-0x11e8,0x11e8,0x11e8,0x11e8,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x90,0x90,0x90,0x90,0x90,
-0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x90,0x90,0x90,0x90,
-0x90,0xac2,0x5a6,0x5ac,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5a9,0x5ac,0x5ac,
-0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x90,0x5ac,0x5ac,0x5ac,0x5ac,
-0x5ac,0x90,0x5ac,0x90,0x5ac,0x5ac,0x90,0x5ac,0x5ac,0x90,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,
-0x5ac,0x5ac,0x5ac,0x5af,0x5c7,0x5c1,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,
-0x5c4,0x5ca,0x5c7,0x5c1,0x12f3,0x12f3,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
-0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,
-0x5c1,0x5c7,0x5c7,0x5c1,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
-0x93,0x93,0x93,0x93,0x5c4,0x5c1,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c1,0x5c4,0x5c1,0x5c1,
-0x5c4,0x5c4,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c1,0x5c1,0x5c4,0x5c1,0x5c4,0x5c4,0x5c4,0x5c1,
-0x5c4,0x5c4,0x5c4,0x5c4,0x93,0x93,0x5c4,0x5c4,0x5c4,0x5c4,0x5c1,0x5c1,0x5c4,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c4,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c4,0x5c1,0x5c1,0x93,0x93,0x93,0x93,
-0x93,0x93,0x93,0x93,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,
-0xb0a,0xb0a,0xb0a,0xb0a,0x5c7,0x5c7,0x91e,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5be,0x5be,
-0xbc1,0xd47,0x93,0x93,0x825,0x837,0x834,0x837,0x834,0xc4b,0xc4b,0xd3b,0xd38,0x828,0x828,0x828,
-0x828,0x83a,0x83a,0x83a,0x852,0x855,0x864,0x96,0x858,0x85b,0x867,0x867,0x84f,0x846,0x840,0x846,
-0x840,0x846,0x840,0x843,0x843,0x85e,0x85e,0x861,0x85e,0x85e,0x85e,0x96,0x85e,0x84c,0x849,0x843,
-0x96,0x96,0x96,0x96,0x5d3,0x5df,0x5d3,0xbc4,0x5d3,0x99,0x5d3,0x5df,0x5d3,0x5df,0x5d3,0x5df,
-0x5d3,0x5df,0x5d3,0x5df,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,
-0x5df,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,
-0x5d6,0x99,0x99,0x5d0,0x723,0x726,0x73b,0x73e,0x71d,0x726,0x726,0x9f,0x705,0x708,0x708,0x708,
-0x708,0x705,0x705,0x9f,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0xac5,0xac5,0xac5,
-0x984,0x6ff,0x5e2,0x5e2,0x9f,0x74d,0x72c,0x71d,0x726,0x723,0x71d,0x72f,0x720,0x71a,0x71d,0x73b,
-0x732,0x729,0x74a,0x71d,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x738,0x735,
-0x73b,0x73b,0x73b,0x74d,0x70e,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,
-0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,
-0x70b,0x70b,0x70b,0x9f,0x9f,0x9f,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x9f,0x9f,0x70b,0x70b,
-0x70b,0x70b,0x70b,0x70b,0x9f,0x9f,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x9f,0x9f,0x70b,0x70b,
-0x70b,0x9f,0x9f,0x9f,0xb0d,0xb0d,0xb0d,0xb0d,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,
-0xa2,0xa2,0xa2,0xa2,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xa5,0xa5,0xa5,0xa5,0xa5,0x161a,0x161a,0x161a,0x161a,
-0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0xb1c,0xb1c,0xb1c,0xb1c,
-0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,
-0xb1c,0xb1c,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xb28,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xab,0xab,0xfb4,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0x16d1,0x16d1,0x16d1,0x16d1,
-0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,
-0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xae,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xae,0xb40,0xb40,0xae,0xae,0xb40,0xae,
-0xae,0xb40,0xb40,0xae,0xae,0xb40,0xb40,0xb40,0xb40,0xae,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xae,0xb3d,0xae,0xb3d,0xb3d,0xb3d,0xb3d,0xcc0,0xb3d,0xb3d,
-0xae,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb40,0xb40,0xae,0xb40,0xb40,0xb40,0xb40,0xae,0xae,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xae,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xae,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xae,0xb40,0xb40,0xb40,0xb40,0xae,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xae,0xb40,0xae,0xae,0xae,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xae,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xdaa,0xdaa,0xae,0xae,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb37,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xec1,0xebe,0xae,0xae,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,
-0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb1,0xb46,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,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,
-0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xb4,0xbd3,0xbd3,0xbd3,0xbd3,0xbcd,0xbcd,0xbd0,0xb4,0xb4,0xb4,
-0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,
-0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbd6,0xbd6,0xbd9,0xc3f,0xc3f,0xb7,
-0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,
-0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbdf,0xbdf,0xba,0xba,0xba,0xba,
-0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,
-0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbd,0xbe8,0xbe8,0xbe8,0xbd,0xbe5,0xbe5,0xbd,0xbd,0xbd,0xbd,
-0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,
-0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,
-0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0x14cd,0x14cd,0xc0,0xcc3,0xcc3,0xcc3,0xccf,0xccf,0xccf,0xccf,0xcc3,
-0xcc3,0xccf,0xccf,0xccf,0xc0,0xc0,0xc0,0xc0,0xccf,0xccf,0xcc3,0xccf,0xccf,0xccf,0xccf,0xccf,
-0xccf,0xcc6,0xcc6,0xcc6,0xc0,0xc0,0xc0,0xc0,0xcc9,0xc0,0xc0,0xc0,0xcd5,0xcd5,0xccc,0xccc,
-0xccc,0xccc,0xccc,0xccc,0xccc,0xccc,0xccc,0xccc,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,
-0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xc3,0xc3,0xcd8,0xcd8,0xcd8,0xcd8,
-0xcd8,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x14d0,0x14d0,0x14d0,0x14d0,
-0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,
-0xc6,0xc6,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,
-0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0xc6,0xc6,0x14d0,0x14d0,0x14d0,0x14d0,
-0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,
-0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0xc6,0xc6,0xc6,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,
-0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0xc6,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0xc6,0xc6,
-0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x16d4,0x16d4,0x16d4,0x16d4,
-0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,
-0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xc9,0xcff,0xcff,0xcff,
-0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,
-0xcff,0xcff,0xcff,0xc9,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,
-0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xc9,0xcff,0xcff,0xc9,0xcff,0xcff,0xcff,0xcff,0xcff,
-0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xc9,0xc9,0xcff,0xcff,0xcff,0xcff,
-0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
-0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
-0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,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,0xcc,0xcc,0xcc,0xcc,0xcc,0xd44,0xd44,0xd44,0xcf,
-0xcf,0xcf,0xcf,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,
-0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xcf,0xcf,0xcf,0xd41,
-0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,
-0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,
-0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd2,0xd05,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,0xd11,0xd5,0xd5,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
-0xd0e,0xd0e,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
-0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd8,0xd8,
-0xd14,0xd8,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,
-0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd8,0xd14,0xd14,0xd8,0xd8,0xd8,
-0xd14,0xd8,0xd8,0xd14,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,
-0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xdb,0xdb,0xdb,0xdb,0xdb,
-0xdb,0xdb,0xdb,0xdb,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0x14d3,
-0x14d3,0x1785,0x1785,0xe1,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,
-0x138,0x138,0x138,0x138,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,
-0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdce,0xdce,0xdd4,0xdd4,0xdce,
-0xe4,0xe4,0xdd1,0xdd1,0x10e0,0x10e0,0x10e0,0x10e0,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,
-0xe7,0xe7,0xe7,0xe7,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,
-0xc3c,0xc3c,0xc3c,0xc3c,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,
-0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d9,0xea,0xea,0xea,0xea,0xea,0x1788,
-0x12ff,0x1122,0xed0,0xed0,0xde9,0xde6,0xde9,0xde6,0xde6,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0x112b,
-0x1128,0x112b,0x1128,0x1125,0x1125,0x1125,0x13c5,0x13c2,0xed,0xed,0xed,0xed,0xed,0xde3,0xde0,0xde0,
-0xde0,0xddd,0xde3,0xde0,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,
-0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xf0,0xf0,0xf0,0xf0,0xf0,
-0xf0,0xf0,0xf0,0xf0,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xf0,0xdec,0xdec,0xdec,0xdec,
-0xdec,0xdec,0xdec,0xf0,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xf0,0xdec,0xdec,0xdec,0xdec,
-0xdec,0xdec,0xdec,0xf0,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,
-0xdf2,0xdf2,0xdf2,0xdf2,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xf3,0xf3,
-0xf3,0xf3,0xf3,0xf3,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xf6,0x13c8,0xf6,0xf6,0xf6,0xf6,
-0xf6,0x13c8,0xf6,0xf6,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe4f,0xe4f,0xe4f,0xe4f,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xdfb,0xdfb,0xdfb,0xf9,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
-0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
-0xdf8,0xdf8,0xdf8,0xf9,0xe0d,0xe01,0xe01,0xe01,0xfc,0xe01,0xe01,0xfc,0xfc,0xfc,0xfc,0xfc,
-0xe01,0xe01,0xe01,0xe01,0xe0d,0xe0d,0xe0d,0xe0d,0xfc,0xe0d,0xe0d,0xe0d,0xfc,0xe0d,0xe0d,0xe0d,
-0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,
-0xe0d,0xe0d,0xe0d,0xe0d,0xfc,0xfc,0xfc,0xfc,0xdfe,0xdfe,0xdfe,0xfc,0xfc,0xfc,0xfc,0xe04,
-0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
-0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe10,0xe10,0xe07,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
-0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0x1131,0x1131,0xff,0xff,0xff,0xff,
-0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1f,0xe1f,0xe1f,0xe1c,0xe1c,0xe1f,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,
-0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xff,0xff,0xff,0xff,0xff,0xff,0xe19,0xe19,0xe19,0xe19,
-0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0x112e,0xff,0xff,0xff,0xe16,0xe16,0xe25,0xe25,0xe25,0xe25,
-0x102,0x102,0x102,0x102,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe22,0xe25,0xe25,0xe25,
-0xe25,0xe25,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x14e2,0x14e8,0x14e5,0x1830,
-0x178b,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,
-0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,
-0x105,0x105,0x105,0x105,0xe4c,0xe4c,0xe4c,0xe49,0xe49,0xe40,0xe40,0xe49,0xe46,0xe46,0xe46,0xe46,
-0x108,0x108,0x108,0x108,0x129c,0x129c,0x129c,0x129c,0x129c,0x129c,0x129f,0x129f,0x12a2,0x129f,0x15c,0x15c,
-0x15c,0x15c,0x15c,0x15c,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0x13d4,0x13d4,0x10b,0x10b,0x10b,0x10b,
-0x10b,0x10b,0x10b,0xe52,0x1305,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,
-0x10b,0x10b,0x10b,0x1302,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,
-0xc0f,0xc0f,0xc0f,0xc0f,0xe7f,0xe70,0xe6a,0xe7c,0xe79,0xe73,0xe73,0xe82,0xe6d,0xe76,0x10e,0x10e,
-0x10e,0x10e,0x10e,0x10e,0xf03,0xf03,0xeee,0xf03,0xf06,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
-0x114,0x114,0x114,0x114,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xf0f,0xf0f,
-0xef4,0xefa,0xf0f,0xf0f,0xef7,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef1,
-0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,
-0xef4,0x114,0x114,0x114,0x130b,0x1308,0x130b,0x1308,0x130b,0x1308,0x130b,0x1308,0x130b,0x1308,0x13da,0x14f4,
-0x14f4,0x14f4,0x178e,0x117,0x14f4,0x14f4,0x16dd,0x16dd,0x16dd,0x16d7,0x16dd,0x16d7,0x117,0x117,0x117,0x117,
-0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,
-0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x14f1,
-0x13dd,0x13dd,0x1308,0x100b,0x100b,0x100b,0x100b,0x100b,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,
-0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1b,0xf1b,0xf21,0xf21,
-0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,
-0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf24,0xf24,
-0xf24,0xf24,0x113a,0x113a,0x11d,0x11d,0x11d,0xf27,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,0x16e0,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,
-0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,
-0x120,0x120,0x120,0x120,0xf33,0xf33,0xf33,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,
-0x14fd,0x14fd,0x14fd,0x123,0xf30,0xf30,0xf30,0xf30,0x14fa,0x123,0x123,0x123,0x123,0x123,0x123,0x123,
-0x123,0x123,0x123,0x123,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,
-0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,
-0x126,0x126,0x126,0x126,0x1032,0x1032,0x1032,0x1032,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,
-0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x102f,0x102f,0x1026,0x1023,0x129,0x129,0x129,0x1035,
-0x1035,0x1029,0x1029,0x1029,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x129,0x129,
-0x129,0x1032,0x1032,0x1032,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x103b,0x103b,
-0x103b,0x103b,0x103b,0x103b,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x1050,0x1050,
-0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,
-0x12c,0x12c,0x12c,0x12c,0x1077,0x1077,0x1077,0x1077,0x1071,0x1791,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,
-0x12f,0x12f,0x107d,0x107d,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x12f,0x12f,
-0x12f,0x12f,0x12f,0x12f,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x108f,0x108f,0x108f,0x108f,0x108f,
-0x108f,0x108f,0x108f,0x108f,0x108f,0x108f,0x1095,0x1098,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,
-0x132,0x132,0x132,0x1092,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x109e,0x109e,0x109e,
-0x109e,0x109e,0x109e,0x10a7,0x10a7,0x109e,0x109e,0x10a7,0x10a7,0x109e,0x109e,0x135,0x135,0x135,0x135,0x135,
-0x135,0x135,0x135,0x135,0x10aa,0x10aa,0x10aa,0x109e,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,
-0x109e,0x10a7,0x135,0x135,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x135,0x135,
-0x10a1,0x10ad,0x10ad,0x10ad,0x1509,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,
-0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,
-0x138,0x138,0x138,0x138,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,0x10b6,0x13b,0x13b,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,
-0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,
-0x10b9,0x13e,0x13e,0x13e,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,
-0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,
-0x141,0x141,0x141,0x141,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,
-0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x144,0x144,
-0x144,0x144,0x144,0x10bf,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,
-0x147,0x147,0x147,0x147,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,
-0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,
-0x14a,0x14a,0x14a,0x14a,0x1140,0x1140,0x1140,0x1140,0x1149,0x1140,0x1140,0x1140,0x1149,0x1140,0x1140,0x1140,
-0x1140,0x113d,0x14d,0x14d,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,
-0x1146,0x1146,0x1146,0x14d,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,
-0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x150,0x150,0x150,0x150,0x150,0x150,
-0x150,0x150,0x150,0x150,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,
-0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1164,0x114f,0x1164,0x114f,0x114f,0x114f,0x114f,
-0x114f,0x114f,0x114f,0x153,0x1158,0x1161,0x114f,0x1161,0x1161,0x114f,0x114f,0x114f,0x114f,0x114f,0x114f,0x114f,
-0x114f,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x114f,0x114f,0x1155,0x1155,0x1155,0x1155,0x1155,0x1155,0x1155,
-0x1155,0x153,0x153,0x1152,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x153,0x153,
-0x153,0x153,0x153,0x153,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x153,0x153,
-0x153,0x153,0x153,0x153,0x115b,0x115b,0x115b,0x115b,0x115b,0x115b,0x115b,0x116a,0x116d,0x116d,0x116d,0x116d,
-0x115b,0x115b,0x153,0x153,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,
-0x1557,0x1557,0x1554,0x1d1,0x12b1,0x1290,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x1293,0x1293,0x1293,
-0x1293,0x12ab,0x1293,0x1293,0x1293,0x1293,0x1299,0x147f,0x1485,0x1482,0x147c,0x156,0x16ad,0x16ad,0x156,0x156,
-0x156,0x156,0x156,0x156,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
-0x1182,0x1182,0x1182,0x1182,0x1179,0x1179,0x117c,0x1185,0x117f,0x117f,0x117f,0x1185,0x159,0x159,0x159,0x159,
-0x159,0x159,0x159,0x159,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,
-0x1188,0x1188,0x1188,0x1188,0x1188,0x12b7,0x118e,0x12ba,0x118e,0x118e,0x118e,0x118e,0x118b,0x118b,0x118b,0x118e,
-0x16e6,0x16e9,0x15f,0x15f,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,0x162,0x162,0x162,0x11a3,0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x119a,0x11a9,0x11a9,0x1197,0x1197,
-0x1197,0x1197,0x165,0x12a5,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x165,0x165,
-0x165,0x165,0x1197,0x1197,0x11c7,0x11bb,0x11c7,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,
-0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x11c4,
-0x11c4,0x11ca,0x11be,0x11c1,0x11df,0x11df,0x11df,0x11d9,0x11d9,0x11d0,0x11d9,0x11d9,0x11d0,0x11d9,0x11d9,0x11e2,
-0x11dc,0x11d3,0x16b,0x16b,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x16b,0x16b,
-0x16b,0x16b,0x16b,0x16b,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x16e,0x16e,0x16e,0x16e,0x11e5,
-0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,
-0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x16e,0x16e,0x16e,0x16e,
-0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,
-0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x171,0x11ee,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,
-0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,
-0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x174,0x174,0x174,0x11fa,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,
-0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,
-0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x177,0x177,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,
-0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,
-0x120c,0x120c,0x120c,0x17a,0x17a,0x17a,0x17a,0x17a,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,
-0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,
-0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x180,
-0x1230,0x1230,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,
-0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,
-0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x1515,0x1515,0x189,0x189,0x189,
-0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,
-0x125a,0x125a,0x125a,0x125d,0x125d,0x125d,0x123c,0x189,0x135f,0x1266,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,
-0x135f,0x135f,0x135f,0x135f,0x135f,0x1266,0x135f,0x1266,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,
-0x135c,0x135c,0x13ec,0x13ec,0x189,0x189,0x189,0x189,0x1362,0x1362,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,
-0x135c,0x1263,0x135c,0x1263,0x1263,0x135c,0x1362,0x1269,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
-0x180f,0x180f,0x180f,0x180f,0x180f,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,
-0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,
-0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,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,0x128a,0x137d,0x137a,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,
-0x18c,0x18c,0x18c,0x18c,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1287,0x1284,
-0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1287,
-0x1284,0x1284,0x137d,0x137d,0x137d,0x137d,0x137d,0x137a,0x137d,0x137d,0x137d,0x1812,0x18c,0x18c,0x18c,0x18c,
-0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,
-0x13aa,0x13aa,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,
-0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,
-0x18c,0x18c,0x18c,0x18c,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,
-0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x1317,0x1317,0x1317,
-0x18f,0x18f,0x131a,0x18f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x1320,0x1329,0x1323,0x1323,0x1329,0x1329,
-0x1329,0x1323,0x1329,0x1323,0x1323,0x1323,0x132c,0x132c,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,
-0x1326,0x1326,0x1326,0x1326,0x195,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x195,0x195,0x1332,0x1332,0x1332,
-0x1332,0x1332,0x1332,0x195,0x195,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x195,0x195,0x195,0x195,0x195,
-0x195,0x195,0x195,0x195,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x195,0x1332,0x1332,0x1332,0x1332,
-0x1332,0x1332,0x1332,0x195,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,
-0x15b4,0x15b4,0x15b4,0x15b4,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1338,0x134a,0x134a,0x133e,0x133e,0x133e,
-0x133e,0x133e,0x198,0x198,0x198,0x198,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,
-0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,
-0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x1518,
-0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,
-0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,
-0x1383,0x1380,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,
-0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,
-0x19e,0x19e,0x19e,0x19e,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,
-0x1350,0x1350,0x1350,0x1a1,0x1a1,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,
-0x1350,0x1350,0x1350,0x151b,0x1a1,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,
-0x1350,0x1350,0x1350,0x1386,0x1a1,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,
-0x1350,0x1350,0x1350,0x1350,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,
-0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,
-0x1a1,0x1a1,0x1a1,0x1a1,0x13a4,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x1533,0x1533,0x1533,0x1533,0x1533,0x1536,
-0x16a4,0x1536,0x1536,0x1536,0x176d,0x181b,0x181b,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,
-0x1a4,0x1a4,0x1a4,0x1a4,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1533,0x1533,0x1533,0x1536,0x1533,0x16a1,
-0x16a1,0x1a4,0x1a4,0x1a4,0x1536,0x1533,0x1533,0x1536,0x181b,0x181b,0x181b,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,
-0x1a4,0x1a4,0x1a4,0x1a4,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
-0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,
-0x1a7,0x1a7,0x1a7,0x1a7,0x13f8,0x153c,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,
-0x13f8,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x16f2,0x16f2,0x1aa,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,
-0x179d,0x179d,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,
-0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
-0x179a,0x179a,0x179a,0x179a,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
-0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
-0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x1ad,0x13fe,0x1ad,0x1ad,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,
-0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,
-0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x13fe,0x1ad,0x1ad,0x1ad,0x1ad,0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,
-0x1ad,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x1ad,0x13fe,0x1ad,0x1ad,0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,
-0x1ad,0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,0x13fe,0x1ad,0x13fe,0x1ad,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,
-0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,
-0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,
-0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
-0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,
-0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
-0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,
-0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,
-0x13fb,0x13fb,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,
-0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1401,0x1401,0x1401,0x1401,0x1401,0x1410,0x1401,0x1404,0x1404,
-0x1401,0x1401,0x1401,0x1407,0x1407,0x1b0,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,
-0x140a,0x1416,0x1416,0x1416,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x141f,0x1419,0x1419,0x141f,0x141f,
-0x1428,0x1428,0x1422,0x1425,0x1425,0x141f,0x141c,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,
-0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,
-0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x1b6,0x1b6,0x1b6,0x1b6,0x16f5,0x16f5,0x142b,0x142b,
-0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,
-0x1b6,0x1b6,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,
-0x1437,0x1437,0x1437,0x1437,0x1437,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,
-0x1437,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
-0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
-0x1434,0x1434,0x1434,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,
-0x1b9,0x1b9,0x1b9,0x1431,0x1431,0x1431,0x1431,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,
-0x143a,0x143a,0x143a,0x143a,0x144c,0x144f,0x1452,0x1452,0x144f,0x1455,0x1455,0x1440,0x1443,0x16fb,0x16f8,0x16f8,
-0x16f8,0x1542,0x1bc,0x1bc,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x153f,0x1701,
-0x1704,0x16fe,0x1707,0x1707,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x1bf,0x1bf,0x1bf,
-0x1bf,0x1bf,0x1bf,0x1bf,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1bf,0x1bf,
-0x1bf,0x1bf,0x1bf,0x1bf,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x1c2,0x1c2,0x1c2,0x1c2,
-0x1c2,0x1c2,0x1c2,0x1c2,0x12ae,0x12ab,0x12ae,0x1296,0x12ab,0x12ab,0x12ab,0x12b1,0x12ab,0x12b1,0x12b4,0x12ab,
-0x12b1,0x12b1,0x12ab,0x12ab,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1461,
-0x146a,0x1461,0x146a,0x146a,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x146d,0x1464,0x1c5,0x1c5,0x1c5,0x1c5,
-0x1c5,0x1c5,0x1c5,0x1c5,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,
-0x1548,0x1548,0x1c8,0x1c8,0x1545,0x1545,0x1545,0x1545,0x1545,0x154b,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x1c8,0x1c8,0x1c8,0x1c8,0x16b0,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,
-0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,
-0x1ce,0x1ce,0x1ce,0x1ce,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,
-0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,
-0x1d1,0x1d1,0x1d1,0x1d1,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1d4,
-0x1d4,0x1d4,0x1d4,0x1d4,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,
-0x1563,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,
-0x1563,0x1563,0x1d4,0x1d4,0x1560,0x155a,0x155d,0x1566,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,
-0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,
-0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
-0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x1da,0x1da,0x1da,
-0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,
+6,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,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x975,0x975,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x24,0x24,0x24,0x24,
+0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xd77,0xd77,0xd77,0xd77,
+0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0x24,0x24,0x24,0x24,
+0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x14f4,0x3cf,0x3de,0x3de,
+0x39,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x39,0x39,0x3e4,0x3e4,0x39,0x39,0x3e4,
+0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x39,0x3e4,0x3e4,
+0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x39,0x3e4,0x39,0x39,0x39,0x3e4,0x3e4,0x3e4,0x3e4,0x39,0x39,
+0x3d2,0xcd2,0x3cf,0x3de,0x3de,0x3cf,0x3cf,0x3cf,0x3cf,0x39,0x39,0x3de,0x3de,0x39,0x39,0x3e1,
+0x3e1,0x3d5,0xdc5,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3cf,0x39,0x39,0x39,0x39,
+0x3e7,0x3e7,0x39,0x3e7,0x3e4,0x3e4,0x3cf,0x3cf,0x39,0x39,0x960,0x960,0x960,0x960,0x960,0x960,
+0x960,0x960,0x960,0x960,0x3e4,0x3e4,0x3db,0x3db,0x3d8,0x3d8,0x3d8,0x3d8,0x3d8,0x3db,0x3d8,0x114c,
+0x3f,0x3c,0x39,0x39,0x42,0xcd5,0x3ea,0xcd8,0x42,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x42,
+0x42,0x42,0x42,0x3f6,0x3f6,0x42,0x42,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,
+0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x42,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x42,0x3f6,0x3f9,
+0x42,0x3f6,0x3f9,0x42,0x3f6,0x3f6,0x42,0x42,0x3ed,0x42,0x3f3,0x3f3,0x3f3,0x3ea,0x3ea,0x42,
+0x42,0x42,0x42,0x3ea,0x3ea,0x42,0x42,0x3ea,0x3ea,0x3f0,0x42,0x42,0x42,0xfa8,0x42,0x42,
+0x42,0x42,0x42,0x42,0x42,0x3f9,0x3f9,0x3f9,0x3f6,0x42,0x3f9,0x42,0x42,0x42,0x42,0x42,
+0x42,0x42,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x3ea,0x3ea,0x3f6,0x3f6,
+0x3f6,0xfa8,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x45,0x3fc,0x3fc,0x405,
+0x45,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0xce1,0x408,0x45,0x408,0x408,0x408,0x45,0x408,
+0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x45,0x408,0x408,
+0x408,0x408,0x408,0x408,0x408,0x45,0x408,0x408,0x45,0x408,0x408,0x408,0x408,0x408,0x45,0x45,
+0x3ff,0x408,0x405,0x405,0x405,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x45,0x3fc,0x3fc,0x405,0x45,0x405,
+0x405,0x402,0x45,0x45,0x408,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+0x45,0x45,0x45,0x45,0x408,0xce1,0xcdb,0xcdb,0x45,0x45,0x966,0x966,0x966,0x966,0x966,0x966,
+0x966,0x966,0x966,0x966,0x140a,0xcde,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x170d,0x48,0x48,
+0x48,0x48,0x48,0x48,0x4b,0x40b,0x41a,0x41a,0x4b,0x420,0x420,0x420,0x420,0x420,0x420,0x420,
+0x420,0x4b,0x4b,0x420,0x420,0x4b,0x4b,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,
+0x420,0x420,0x420,0x420,0x420,0x4b,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x4b,0x420,0x420,
+0x4b,0xce4,0x420,0x420,0x420,0x420,0x4b,0x4b,0x40e,0x420,0x40b,0x40b,0x41a,0x40b,0x40b,0x40b,
+0xfab,0x4b,0x4b,0x41a,0x41d,0x4b,0x4b,0x41d,0x41d,0x411,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+0x4b,0x4b,0x40b,0x40b,0x4b,0x4b,0x4b,0x4b,0x423,0x423,0x4b,0x420,0x420,0x420,0xfab,0xfab,
+0x4b,0x4b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x414,0xce4,0x1323,0x1323,
+0x1323,0x1323,0x1323,0x1323,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4e,0x4e,0x426,0x432,
+0x4e,0x432,0x432,0x432,0x432,0x432,0x432,0x4e,0x4e,0x4e,0x432,0x432,0x432,0x4e,0x432,0x432,
+0x435,0x432,0x4e,0x4e,0x4e,0x432,0x432,0x4e,0x432,0x4e,0x432,0x432,0x4e,0x4e,0x4e,0x432,
+0x432,0x4e,0x4e,0x4e,0x432,0x432,0x96f,0x4e,0x4e,0x4e,0x432,0x432,0x432,0x432,0x432,0x432,
+0x432,0x96f,0xdc8,0x432,0x432,0x432,0x4e,0x4e,0x4e,0x4e,0x426,0x42c,0x426,0x42c,0x42c,0x4e,
+0x4e,0x4e,0x42c,0x42c,0x42c,0x4e,0x42f,0x42f,0x42f,0x429,0x4e,0x4e,0xfae,0x4e,0x4e,0x4e,
+0x4e,0x4e,0x4e,0x426,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xee2,0x96c,
+0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x969,0x969,0x969,0xce7,0xce7,0xce7,0xce7,0xce7,
+0xce7,0xcea,0xce7,0x4e,0x4e,0x4e,0x4e,0x4e,0x14f7,0x444,0x444,0x444,0x51,0x447,0x447,0x447,
+0x447,0x447,0x447,0x447,0x447,0x51,0x447,0x447,0x447,0x51,0x447,0x447,0x447,0x447,0x447,0x447,
+0x447,0x447,0x447,0x447,0x447,0x447,0x447,0x447,0x447,0x51,0x447,0x447,0x447,0x447,0x447,0x447,
+0x447,0x447,0x447,0x447,0x14fa,0x447,0x447,0x447,0x447,0x447,0x51,0x51,0x51,0xfb7,0x438,0x438,
+0x438,0x444,0x444,0x444,0x444,0x51,0x438,0x438,0x43b,0x51,0x438,0x438,0x438,0x43e,0x51,0x51,
+0x51,0x51,0x51,0x51,0x51,0x438,0x438,0x51,0xfb7,0xfb7,0x1710,0x51,0x51,0x51,0x51,0x51,
+0x447,0x447,0xfb1,0xfb1,0x51,0x51,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,
+0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0xfb4,0xfb4,0xfb4,0xfb4,0xfb4,0xfb4,0xfb4,0xfb4,
+0x17cd,0x14fd,0x453,0x453,0x54,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x54,0x459,0x459,
+0x459,0x54,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,
+0x459,0x54,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x54,0x459,0x459,0x459,
+0x459,0x459,0x54,0x54,0xced,0xcf0,0x453,0x44a,0x456,0x453,0x44a,0x453,0x453,0x54,0x44a,0x456,
+0x456,0x54,0x456,0x456,0x44a,0x44d,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x44a,0x44a,0x54,
+0x54,0x54,0x54,0x54,0x54,0x54,0x459,0x54,0x459,0x459,0xefa,0xefa,0x54,0x54,0x450,0x450,
+0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x54,0xefd,0xefd,0x54,0x54,0x54,0x54,0x54,
+0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5a,0x1500,0x465,0x465,0x57,0x46b,0x46b,0x46b,
+0x46b,0x46b,0x46b,0x46b,0x46b,0x57,0x46b,0x46b,0x46b,0x57,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,
+0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x465,0x45c,0x45c,0x45c,0xfba,0x57,0x465,0x465,
+0x465,0x57,0x468,0x468,0x468,0x45f,0x1329,0x17d0,0x57,0x57,0x57,0x57,0x17d3,0x17d3,0x17d3,0x45c,
+0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x1713,0x46b,0x46b,0xfba,0xfba,0x57,0x57,0x462,0x462,
+0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0x17d0,0x17d0,
+0x17d0,0xfc0,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,
+0x46b,0x1326,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,
+0x46b,0x46b,0x1326,0x5a,0x5a,0xfc3,0x45c,0x465,0x5d,0x5d,0xa38,0xa38,0x5d,0xa3e,0xa3e,0xa3e,
+0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0x5d,
+0x5d,0x5d,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,
+0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0x5d,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,
+0x5d,0xa3e,0x5d,0x5d,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0x5d,0x5d,0x5d,0xa32,0x5d,
+0x5d,0x5d,0x5d,0xa2f,0xa38,0xa38,0xa2f,0xa2f,0xa2f,0x5d,0xa2f,0x5d,0xa38,0xa38,0xa3b,0xa38,
+0xa3b,0xa3b,0xa3b,0xa2f,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x1503,0x1503,0x1503,0x1503,0x1503,0x1503,
+0x1503,0x1503,0x1503,0x1503,0x5d,0x5d,0xa38,0xa38,0xa35,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
+0x5d,0x5d,0x5d,0x5d,0x60,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,
+0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,
+0x486,0x486,0x486,0x486,0x486,0x471,0x486,0x483,0x471,0x471,0x471,0x471,0x471,0x471,0x477,0x60,
+0x60,0x60,0x60,0x46e,0x48c,0x48c,0x48c,0x48c,0x48c,0x486,0x489,0x474,0x474,0x474,0x474,0x474,
+0x474,0x471,0x474,0x47a,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x47d,0x47d,
+0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+0x63,0x49b,0x49b,0x63,0x49b,0x63,0x63,0x49b,0x49b,0x63,0x49b,0x63,0x63,0x49b,0x63,0x63,
+0x63,0x63,0x63,0x63,0x49b,0x49b,0x49b,0x49b,0x63,0x49b,0x49b,0x49b,0x49b,0x49b,0x49b,0x49b,
+0x63,0x49b,0x49b,0x49b,0x63,0x49b,0x63,0x49b,0x63,0x63,0x49b,0x49b,0x63,0x49b,0x49b,0x49b,
+0x49b,0x48f,0x49b,0x498,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x63,0x48f,0x48f,0x49b,0x63,0x63,
+0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x63,0x4a1,0x63,0x492,0x492,0x492,0x492,0x492,0x48f,0x63,0x63,
+0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x63,0x63,0x49e,0x49e,0x140d,0x140d,
+0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
+0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
+0x9b1,0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,0x9b1,0x9b1,0x66,0x9b1,0x9b1,0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,
+0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,0x9b1,
+0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b4,0xa4d,0xfcf,0xfcf,0x66,0x66,0x66,
+0x66,0x97e,0x97e,0x981,0x97e,0x981,0x981,0x98a,0x981,0x98a,0x97e,0x97e,0x97e,0x97e,0x97e,0x9ab,
+0x97e,0x981,0x984,0x984,0x987,0x990,0x984,0x984,0x9b1,0x9b1,0x9b1,0x9b1,0x1332,0x132c,0x132c,0x132c,
+0x97e,0x97e,0x97e,0x981,0x97e,0x97e,0xa41,0x97e,0x66,0x97e,0x97e,0x97e,0x97e,0x981,0x97e,0x97e,
+0x97e,0x97e,0x981,0x97e,0x97e,0x97e,0x97e,0x981,0x97e,0x97e,0x97e,0x97e,0x981,0x97e,0xa41,0xa41,
+0xa41,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0xa41,0x981,0xa41,0xa41,0xa41,0x66,0xa4a,0xa4a,
+0xa47,0xa47,0xa47,0xa47,0xa47,0xa47,0xa44,0xa47,0xa47,0xa47,0xa47,0xa47,0xa47,0x66,0xfc6,0xa47,
+0xdcb,0xdcb,0xfc9,0xfcc,0xfc6,0x114f,0x114f,0x114f,0x114f,0x132f,0x132f,0x66,0x66,0x66,0x66,0x66,
+0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,
+0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x4aa,0x4aa,0x4aa,0x4aa,
+0x4aa,0x4aa,0x69,0x1413,0x69,0x69,0x69,0x69,0x69,0x1413,0x69,0x69,0x4a7,0x4a7,0x4a7,0x4a7,
+0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0xa77,0xa77,0xa77,0xa77,
+0xa77,0xa77,0xa77,0xdda,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,
+0xa77,0xa77,0xa77,0x6c,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,
+0xa77,0xa77,0xa77,0xdda,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,
+0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,
+0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0x6c,
+0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,
+0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
+0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,
+0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
+0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0x1335,0x1335,0xdd4,
+0xdd7,0xa71,0xa7a,0xa6e,0xa6e,0xa6e,0xa6e,0xa7a,0xa7a,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,
+0xa74,0xa74,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0x6c,0x6c,0x6c,
+0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,
+0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0x1719,0x6f,0x6f,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x6f,0x6f,
+0xa8f,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,
+0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa8c,0xa89,0x72,0x72,0x72,
+0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa95,0xa95,0xa95,0xa98,0xa98,
+0xa98,0x1506,0x1506,0x1506,0x1506,0x1506,0x1506,0x1506,0x1506,0x75,0x75,0x75,0x75,0x75,0x75,0x75,
+0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xa9b,0xab9,0xab9,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,
+0xa9e,0xa9e,0xaa1,0xa9e,0xab0,0xab0,0xab3,0xabc,0xaaa,0xaa7,0xab0,0xaad,0xabc,0xcf3,0x78,0x78,
+0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0x78,0x78,0x78,0x78,0x78,0x78,
+0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0x78,0x78,0x78,0x78,0x78,0x78,
+0xacb,0xacb,0xb49,0xb4c,0xad1,0xb46,0xace,0xacb,0xad4,0xae3,0xad7,0xae6,0xae6,0xae6,0xac2,0x7b,
+0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
+0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xac5,0xff0,0x7b,0x7b,0x7b,0x7b,0x7b,
+0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x7e,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x7e,0x7e,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x4cb,0x7e,0x4cb,0x7e,0x4cb,0x7e,0x4cb,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x7e,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4c2,0x4c8,0x4c2,
+0x4c2,0x4bf,0x4c8,0x4c8,0x4c8,0x7e,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4bf,0x4bf,0x4bf,
+0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x7e,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x7e,0x4bf,0x4bf,0x4bf,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4bf,0x4bf,0x4bf,
+0x7e,0x7e,0x4c8,0x4c8,0x4c8,0x7e,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4c5,0x4c2,0x7e,
+0xbbe,0xbc1,0xbc1,0xbc1,0xff9,0x81,0x14e5,0x14e5,0x14e5,0x14e5,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,
+0x51f,0xbd3,0x84,0x84,0x6db,0x51f,0x51f,0x51f,0x51f,0x51f,0x525,0x537,0x525,0x531,0x52b,0x6de,
+0x51c,0x6d8,0x6d8,0x6d8,0x6d8,0x51c,0x51c,0x51c,0x51c,0x51c,0x522,0x534,0x522,0x52e,0x528,0x84,
+0xde3,0xde3,0xde3,0xde3,0xde3,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x84,0x84,0x84,
+0x53d,0x53d,0x53d,0x53d,0x53d,0x53d,0x53d,0x53a,0x540,0x756,0x53d,0x9ba,0x9db,0xaf5,0xaf5,0xaf5,
+0xbd6,0xbd6,0xde6,0xde6,0xde6,0xde6,0x1167,0x116a,0x116a,0x133b,0x14df,0x1509,0x150c,0x150c,0x171c,0x87,
+0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,
+0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x543,0x543,0x543,
+0x543,0x546,0xaf8,0xaf8,0xbd9,0xbdf,0xbdf,0xbdc,0xbdc,0xbdc,0xbdc,0xde9,0xf00,0xf00,0xf00,0xf00,
+0x113a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+0x576,0x576,0x576,0xb01,0xf09,0xfff,0xfff,0xfff,0xfff,0x1296,0x171f,0x171f,0x8d,0x8d,0x8d,0x8d,
+0x705,0x705,0x705,0x705,0x708,0x708,0x708,0x708,0x708,0x708,0x582,0x582,0x57f,0x57f,0x57f,0x57f,
+0xf0f,0xf0f,0xf0f,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0x1170,0x13bc,0x13bc,0x13bc,0x13bc,0x133e,0x133e,0x133e,
+0x13bf,0x1341,0x1341,0x13bf,0x150f,0x150f,0x150f,0x150f,0x1512,0x1512,0x1512,0x17d6,0x17d6,0x17d6,0x17d6,0x90,
+0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0xb0a,0xb0a,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
+0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
+0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x96,0x96,0x96,0x96,0x96,
+0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0x99,0xb25,0xb25,0xb25,0xb25,0xb28,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb28,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
+0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+0xa2,0x83d,0x837,0x83d,0x837,0x83d,0x837,0x83d,0x837,0x83d,0x837,0x837,0x83a,0x837,0x83a,0x837,
+0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,
+0x837,0x837,0x837,0x83d,0x837,0x83d,0x837,0x83d,0x837,0x837,0x837,0x837,0x837,0x837,0x83d,0x837,
+0x837,0x837,0x837,0x837,0x83a,0xc81,0xc81,0xa2,0xa2,0x951,0x951,0x91b,0x91b,0x840,0x843,0xc7e,
+0xa5,0xa5,0xa5,0xa5,0xa5,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,0x1128,0xa8,0xa5,0xab,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
+0x858,0x858,0x858,0x858,0x858,0x858,0x858,0xab,0x924,0x924,0x927,0x927,0x927,0x927,0x927,0x927,
+0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,
+0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,
+0x13cb,0x13cb,0x13cb,0xae,0xae,0xae,0xae,0xae,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,
+0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,
+0x861,0x861,0x861,0x861,0x861,0xd83,0xd83,0xb1,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,
+0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,
+0x867,0x867,0x867,0x867,0x867,0x867,0x867,0xb1,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb4,0xb4,0xb4,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,
+0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xc8a,0xb43,0xb43,0xb43,0xc8a,0xb43,0xb7,
+0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,
+0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x9d5,0x9d5,0x9d5,0x9d5,0xba,0xba,0xba,0xba,
+0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,
+0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0xbd,
+0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0x5f4,0x5f4,0x5f4,0x5f4,0x5f4,
+0xbd,0xbd,0xbd,0xbd,0xbd,0xb16,0x5f7,0x5fd,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,
+0x603,0x5fa,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0xbd,
+0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0xbd,0x5fd,0xbd,0x5fd,0x5fd,0xbd,0x5fd,0x5fd,0xbd,0x5fd,0x5fd,
+0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x600,0x618,0x612,0x618,0x612,0x615,0x61b,0x618,0x612,
+0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x134a,0x134a,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x618,0x612,0x615,0x61b,0x618,
+0x612,0x618,0x612,0x618,0x612,0x618,0x618,0x612,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x615,0x612,0x615,0x615,0x615,0x615,0x615,0x615,
+0x612,0x615,0x612,0x612,0x615,0x615,0x612,0x612,0x612,0x612,0x612,0x615,0x612,0x612,0x615,0x612,
+0x615,0x615,0x615,0x612,0x615,0x615,0x615,0x615,0xc0,0xc0,0x615,0x615,0x615,0x615,0x612,0x612,
+0x615,0x612,0x612,0x612,0x612,0x615,0x612,0x612,0x612,0x612,0x612,0x615,0x615,0x615,0x612,0x612,
+0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,
+0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0x618,0x618,0x972,0x618,0x618,0x618,0x618,0x618,
+0x618,0x618,0x60f,0x60f,0xc15,0xd9b,0xc0,0xc0,0x879,0x88b,0x888,0x88b,0x888,0xc9f,0xc9f,0xd8f,
+0xd8c,0x87c,0x87c,0x87c,0x87c,0x88e,0x88e,0x88e,0x8a6,0x8a9,0x8b8,0xc3,0x8ac,0x8af,0x8bb,0x8bb,
+0x8a3,0x89a,0x894,0x89a,0x894,0x89a,0x894,0x897,0x897,0x8b2,0x8b2,0x8b5,0x8b2,0x8b2,0x8b2,0xc3,
+0x8b2,0x8a0,0x89d,0x897,0xc3,0xc3,0xc3,0xc3,0x624,0x630,0x624,0xc18,0x624,0xc6,0x624,0x630,
+0x624,0x630,0x624,0x630,0x624,0x630,0x624,0x630,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,
+0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,0x627,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,
+0x627,0x62d,0x627,0x62d,0x627,0xc6,0xc6,0x621,0x777,0x77a,0x78f,0x792,0x771,0x77a,0x77a,0xcc,
+0x759,0x75c,0x75c,0x75c,0x75c,0x759,0x759,0xcc,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
+0xc9,0xb19,0xb19,0xb19,0x9d8,0x753,0x633,0x633,0xcc,0x7a1,0x780,0x771,0x77a,0x777,0x771,0x783,
+0x774,0x76e,0x771,0x78f,0x786,0x77d,0x79e,0x771,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,
+0x79b,0x79b,0x78c,0x789,0x78f,0x78f,0x78f,0x7a1,0x762,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
+0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
+0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0xcc,0xcc,0xcc,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
+0xcc,0xcc,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0xcc,0xcc,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
+0xcc,0xcc,0x75f,0x75f,0x75f,0xcc,0xcc,0xcc,0xb61,0xb61,0xb61,0xb61,0xcf,0xcf,0xcf,0xcf,
+0xcf,0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0xd2,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
+0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xd5,0xd5,0xd5,0xd5,0xd5,
+0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
+0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,
+0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xdb,0xdb,0x100b,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,
+0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xde,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb94,0xb94,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb94,0xde,0xb94,0xb94,
+0xde,0xde,0xb94,0xde,0xde,0xb94,0xb94,0xde,0xde,0xb94,0xb94,0xb94,0xb94,0xde,0xb94,0xb94,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb91,0xb91,0xb91,0xb91,0xde,0xb91,0xde,0xb91,0xb91,0xb91,
+0xb91,0xd14,0xb91,0xb91,0xde,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
+0xb91,0xb91,0xb91,0xb91,0xb94,0xb94,0xde,0xb94,0xb94,0xb94,0xb94,0xde,0xde,0xb94,0xb94,0xb94,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xde,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xde,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb94,0xb94,0xde,0xb94,0xb94,0xb94,0xb94,0xde,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xde,0xb94,0xde,0xde,0xde,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
+0xb94,0xde,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xe01,0xe01,0xde,0xde,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb91,0xb91,0xb91,0xb8b,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xf18,0xf15,0xde,0xde,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,
+0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xe1,0xb9a,0xe1,0xe1,
+0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xc27,0xc27,0xc27,0xc27,
+0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xe4,0xc27,0xc27,0xc27,0xc27,0xc21,0xc21,
+0xc24,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xc30,0xc30,0xc30,0xc30,
+0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc2a,0xc2a,
+0xc2d,0xc93,0xc93,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xc36,0xc36,0xc36,0xc36,
+0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc33,0xc33,
+0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xc3c,0xc3c,0xc3c,0xc3c,
+0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xed,0xc3c,0xc3c,0xc3c,0xed,0xc39,0xc39,
+0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xd26,0xd26,0xd26,0xd26,
+0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,
+0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0x1524,0x1524,0xf0,0xd17,0xd17,0xd17,0xd23,
+0xd23,0xd23,0xd23,0xd17,0xd17,0xd23,0xd23,0xd23,0xf0,0xf0,0xf0,0xf0,0xd23,0xd23,0xd17,0xd23,
+0xd23,0xd23,0xd23,0xd23,0xd23,0xd1a,0xd1a,0xd1a,0xf0,0xf0,0xf0,0xf0,0xd1d,0xf0,0xf0,0xf0,
+0xd29,0xd29,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd2c,0xd2c,0xd2c,0xd2c,
+0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xf3,0xf3,
+0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
+0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
+0x1527,0x1527,0x1527,0x1527,0xf6,0xf6,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
+0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0xf6,0xf6,
+0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
+0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0xf6,0xf6,0xf6,0x1527,0x1527,0x1527,
+0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0xf6,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
+0x1527,0x1527,0xf9,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
+0x1728,0x1728,0x1728,0x1728,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
+0xf6,0xf6,0xf6,0xf6,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
+0xfc,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
+0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xfc,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
+0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xfc,0xd53,0xd53,0xfc,0xd53,
+0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xfc,0xfc,
+0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xfc,0xfc,
+0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
+0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
+0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,
+0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xff,0xff,0xff,0xff,0xff,
+0xd98,0xd98,0xd98,0x102,0x102,0x102,0x102,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,
+0x102,0x102,0x102,0xd95,0xd95,0xd95,0xd95,0xd95,0xd95,0xd95,0xd95,0xd95,0xd5c,0xd5c,0xd5c,0xd5c,
+0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,
+0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0x105,0xd59,0xd65,0xd65,0xd65,0xd65,
+0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,
+0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0x108,0x108,0xd62,0xd62,0xd62,0xd62,
+0xd62,0xd62,0xd62,0xd62,0xd62,0xd62,0x108,0x108,0x108,0x108,0x108,0x108,0x1860,0x1860,0x1860,0x1860,
+0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0xd68,0xd68,0xd68,0xd68,
+0xd68,0xd68,0x10b,0x10b,0xd68,0x10b,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,
+0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0x10b,0xd68,
+0xd68,0x10b,0x10b,0x10b,0xd68,0x10b,0x10b,0xd68,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
+0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0x10e,
+0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,
+0xe1c,0xe1c,0xe1c,0x152a,0x152a,0x17d9,0x17d9,0x114,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,
+0x1107,0x1107,0x1107,0x1107,0x171,0x171,0x171,0x171,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
+0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe25,
+0xe25,0xe2b,0xe2b,0xe25,0x117,0x117,0xe28,0xe28,0x1137,0x1137,0x1137,0x1137,0x11a,0x11a,0x11a,0x11a,
+0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,
+0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x152d,
+0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x1530,0x120,0x120,
+0x120,0x120,0x11d,0x17dc,0x1356,0x1179,0xf27,0xf27,0xe40,0xe3d,0xe40,0xe3d,0xe3d,0xe34,0xe34,0xe34,
+0xe34,0xe34,0xe34,0x1182,0x117f,0x1182,0x117f,0x117c,0x117c,0x117c,0x141c,0x1419,0x123,0x123,0x123,0x123,
+0x123,0xe3a,0xe37,0xe37,0xe37,0xe34,0xe3a,0xe37,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,
+0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,
+0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,
+0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,
+0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,
+0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,
+0xe46,0xe46,0x129,0x129,0x129,0x129,0x129,0x129,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0x12c,0x141f,
+0x12c,0x12c,0x12c,0x12c,0x12c,0x141f,0x12c,0x12c,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,
+0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0x12f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0x12f,0xe64,0xe58,0xe58,0xe58,0x132,0xe58,0xe58,0x132,
+0x132,0x132,0x132,0x132,0xe58,0xe58,0xe58,0xe58,0xe64,0xe64,0xe64,0xe64,0x132,0xe64,0xe64,0xe64,
+0x132,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,
+0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0x132,0x132,0x132,0x132,0xe55,0xe55,0xe55,0x132,
+0x132,0x132,0x132,0xe5b,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0x132,0x132,0x132,0x132,
+0x132,0x132,0x132,0x132,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe67,0xe67,0xe5e,0x132,0x132,0x132,
+0x132,0x132,0x132,0x132,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0x1188,0x1188,
+0x135,0x135,0x135,0x135,0xe73,0xe73,0xe73,0xe73,0xe73,0xe76,0xe76,0xe76,0xe73,0xe73,0xe76,0xe73,
+0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0x135,0x135,0x135,0x135,0x135,0x135,
+0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0x1185,0x135,0x135,0x135,0xe6d,0xe6d,
+0xe7c,0xe7c,0xe7c,0xe7c,0x138,0x138,0x138,0x138,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
+0xe79,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,
+0x1539,0x153f,0x153c,0x1884,0x17df,0x13e,0x13e,0x13e,0x13e,0x13e,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0xea3,0xea3,0xea3,0xea0,
+0xea0,0xe97,0xe97,0xea0,0xe9d,0xe9d,0xe9d,0xe9d,0x141,0x141,0x141,0x141,0x12f3,0x12f3,0x12f3,0x12f3,
+0x12f3,0x12f3,0x12f6,0x12f6,0x12f9,0x12f6,0x198,0x198,0x198,0x198,0x198,0x198,0xea6,0xea6,0xea6,0xea6,
+0xea6,0xea6,0x142b,0x142b,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0xea9,0x135c,0x144,0x144,0x144,
+0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x1359,0xc63,0xc63,0xc63,0xc63,
+0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xed6,0xec7,0xec1,0xed3,
+0xed0,0xeca,0xeca,0xed9,0xec4,0xecd,0x147,0x147,0x147,0x147,0x147,0x147,0xf5a,0xf5a,0xf45,0xf5a,
+0xf5d,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0x14d,0x14d,0x14d,0x14d,0xf54,0xf54,0xf54,0xf54,
+0xf54,0xf54,0xf54,0xf54,0xf54,0xf54,0xf66,0xf66,0xf4b,0xf51,0xf66,0xf66,0xf4e,0xf4b,0xf4b,0xf4b,
+0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,
+0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0x14d,0x14d,0x14d,0x1362,0x135f,0x1362,0x135f,
+0x1362,0x135f,0x1362,0x135f,0x1362,0x135f,0x1431,0x154b,0x154b,0x154b,0x17e2,0x150,0x154b,0x154b,0x1731,0x1731,
+0x1731,0x172b,0x1731,0x172b,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,0x150,0x150,
+0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x1548,0x1434,0x1434,0x135f,0x1062,0x1062,0x1062,0x1062,0x1062,
+0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,
+0xf75,0xf75,0xf75,0xf75,0xf72,0xf72,0xf78,0xf78,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,
+0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,
+0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf7b,0xf7b,0xf7b,0xf7b,0x1191,0x1191,0x156,0x156,0x156,0xf7e,
+0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,
+0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x1734,0x159,0x159,0x159,0x159,0x159,0x159,
+0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,
+0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0xf8a,0xf8a,0xf8a,0x1554,
+0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x15c,0xf87,0xf87,0xf87,0xf87,
+0x1551,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0xf8d,0xf8d,0xf8d,0xf8d,
+0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0x15f,0x15f,
+0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x1089,0x1089,0x1089,0x1089,
+0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,
+0x1086,0x1086,0x107d,0x107a,0x162,0x162,0x162,0x108c,0x108c,0x1080,0x1080,0x1080,0x1083,0x1083,0x1083,0x1083,
+0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x162,0x162,0x162,0x1089,0x1089,0x1089,0x108f,0x108f,0x108f,0x108f,
+0x108f,0x108f,0x108f,0x108f,0x108f,0x108f,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x10a4,0x10a4,0x10a4,0x10a4,
+0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a7,0x10a7,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,
+0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x10ce,0x10ce,0x10ce,0x10ce,
+0x10c8,0x17e5,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x10d4,0x10d4,0x10cb,0x10cb,0x10cb,0x10cb,
+0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x168,0x168,0x168,0x168,0x168,0x168,0x10f2,0x10f2,0x10f2,0x10f2,
+0x10f2,0x10f2,0x10f2,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10ec,0x10ef,
+0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x10e9,0x1101,0x1101,0x1101,0x1101,
+0x1101,0x1101,0x1101,0x1101,0x1101,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10fe,0x10fe,0x10f5,0x10f5,0x10fe,
+0x10fe,0x10f5,0x10f5,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x1101,0x1101,0x1101,0x10f5,
+0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x10f5,0x10fe,0x16e,0x16e,0x10fb,0x10fb,0x10fb,0x10fb,
+0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x16e,0x16e,0x10f8,0x1104,0x1104,0x1104,0x1560,0x171,0x171,0x171,
+0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,
+0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x110a,0x110a,0x110a,0x110a,
+0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,
+0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110d,0x174,0x174,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,0x177,0x177,0x177,0x1113,0x1113,0x1113,0x1113,
+0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x17a,0x17a,0x17a,
+0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x1119,0x1119,0x1119,0x1119,
+0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x17d,0x17d,0x17d,0x17d,0x17d,0x1116,0x111c,0x111c,0x111c,0x111c,
+0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x180,0x180,0x180,0x180,0x111f,0x111f,0x111f,0x111f,
+0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,
+0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1197,0x1197,0x1197,0x1197,
+0x11a0,0x1197,0x1197,0x1197,0x11a0,0x1197,0x1197,0x1197,0x1197,0x1194,0x186,0x186,0x119d,0x119d,0x119d,0x119d,
+0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x186,0x11a3,0x11a3,0x11a3,0x11a3,
+0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,
+0x11a3,0x11a3,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x11be,0x11be,0x11be,0x11be,
+0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,
+0x11be,0x11bb,0x11a6,0x11bb,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x18c,0x11af,0x11b8,0x11a6,0x11b8,
+0x11b8,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11a6,
+0x11a6,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x18c,0x18c,0x11a9,0x11b5,0x11b5,0x11b5,0x11b5,
+0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x11b5,0x11b5,0x11b5,0x11b5,
+0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x11b2,0x11b2,0x11b2,0x11b2,
+0x11b2,0x11b2,0x11b2,0x11c1,0x11c4,0x11c4,0x11c4,0x11c4,0x11b2,0x11b2,0x18c,0x18c,0x15ab,0x15ab,0x15ab,0x15ab,
+0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15a8,0x210,0x1308,0x12e7,0x1302,0x1302,
+0x1302,0x1302,0x1302,0x1302,0x1302,0x12ea,0x12ea,0x12ea,0x12ea,0x1302,0x12ea,0x12ea,0x12ea,0x12ea,0x12f0,0x14d6,
+0x14dc,0x14d9,0x14d3,0x192,0x1701,0x1701,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x11d9,0x11d9,0x11d9,0x11d9,
+0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d0,0x11d0,0x11d3,0x11dc,
+0x11d6,0x11d6,0x11d6,0x11dc,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x11df,0x11df,0x11df,0x11df,
+0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x130e,0x11e5,0x1311,
+0x11e5,0x11e5,0x11e5,0x11e5,0x11e2,0x11e2,0x11e2,0x11e5,0x173a,0x173d,0x19b,0x19b,0x12d5,0x12d5,0x12d5,0x12d5,
+0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,
+0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x19e,0x19e,0x19e,0x11fa,0x11ee,0x11ee,0x11ee,
+0x11ee,0x11ee,0x11ee,0x11f1,0x1200,0x1200,0x11ee,0x11ee,0x11ee,0x11ee,0x1a1,0x12fc,0x11f4,0x11f4,0x11f4,0x11f4,
+0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x1a1,0x1a1,0x1a1,0x1a1,0x11ee,0x11ee,0x121e,0x1212,0x121e,0x1a4,
+0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,
+0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x121b,0x121b,0x1221,0x1215,0x1218,0x1236,0x1236,0x1236,0x1230,
+0x1230,0x1227,0x1230,0x1230,0x1227,0x1230,0x1230,0x1239,0x1233,0x122a,0x1a7,0x1a7,0x122d,0x122d,0x122d,0x122d,
+0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x123f,0x123f,0x123f,0x123f,
+0x123f,0x123f,0x123f,0x1aa,0x1aa,0x1aa,0x1aa,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,
+0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,
+0x123c,0x123c,0x123c,0x123c,0x1aa,0x1aa,0x1aa,0x1aa,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,
+0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1ad,0x1245,
+0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,
+0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1b0,0x1b0,
+0x1b0,0x1251,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,
+0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x1b3,0x1b3,
+0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,
+0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,
+0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,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,0x1269,0x1269,0x1269,0x1269,0x1bc,0x1287,0x1287,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,
+0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,
+0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
+0x12b1,0x12b1,0x12b1,0x156c,0x156c,0x1c5,0x1c5,0x1c5,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
+0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b4,0x12b4,0x12b4,0x1293,0x1c5,
+0x13b6,0x12bd,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x12bd,0x13b6,0x12bd,
+0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x1443,0x1443,0x1c5,0x1c5,0x1c5,0x1c5,
+0x13b9,0x13b9,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x12ba,0x13b3,0x12ba,0x12ba,0x13b3,0x13b9,0x12c0,
+0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1c5,0x1c5,0x1c5,
+0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,
+0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,
+0x1c5,0x1c5,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,
+0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x12e1,0x13d4,0x13d1,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x12db,0x12db,0x12db,0x12db,
+0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12de,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,
+0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12de,0x12db,0x12db,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d1,
+0x13d4,0x13d4,0x13d4,0x1866,0x1c8,0x1c8,0x1c8,0x1c8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,
+0x12d8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1401,0x1401,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,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,0x136e,0x136e,0x136e,0x1cb,0x1cb,0x1371,0x1cb,0x1386,0x1386,0x1386,0x1386,
+0x1386,0x1386,0x1377,0x1380,0x137a,0x137a,0x1380,0x1380,0x1380,0x137a,0x1380,0x137a,0x137a,0x137a,0x1383,0x1383,
+0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x137d,0x137d,0x137d,0x137d,0x1d1,0x1389,0x1389,0x1389,
+0x1389,0x1389,0x1389,0x1d1,0x1d1,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1d1,0x1d1,0x1389,0x1389,0x1389,
+0x1389,0x1389,0x1389,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1389,0x1389,0x1389,0x1389,
+0x1389,0x1389,0x1389,0x1d1,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1d1,0x1608,0x1608,0x1608,0x1608,
+0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138f,0x13a1,0x13a1,0x1395,0x1395,0x1395,0x1395,0x1395,0x1d4,0x1d4,0x1d4,0x1d4,0x1392,0x1392,
+0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1398,0x1398,
+0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
+0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x156f,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,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x13da,0x13d7,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,
 0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,
-0x170a,0x156f,0x1575,0x16b6,0x1dd,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x1dd,0x1dd,0x157e,
-0x157e,0x1dd,0x1dd,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
-0x157e,0x1dd,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x1dd,0x157e,0x157e,0x1dd,0x157e,0x157e,0x157e,
-0x157e,0x157e,0x1dd,0x1dd,0x16b3,0x157e,0x156f,0x1575,0x156f,0x1575,0x1575,0x1575,0x1575,0x1dd,0x1dd,0x1575,
-0x1575,0x1dd,0x1dd,0x1578,0x1578,0x157b,0x1dd,0x1dd,0x170d,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x156f,
-0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1581,0x157e,0x157e,0x157e,0x157e,0x1575,0x1575,0x1dd,0x1dd,0x1572,0x1572,
-0x1572,0x1572,0x1572,0x1572,0x1572,0x1dd,0x1dd,0x1dd,0x1572,0x1572,0x1572,0x1572,0x1572,0x1dd,0x1dd,0x1dd,
-0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,
-0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1e0,0x1596,0x1596,0x1596,0x1596,0x1596,
-0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1590,0x1590,0x1590,0x1584,0x1584,0x1584,0x1590,0x1590,
-0x1584,0x1593,0x1587,0x1584,0x1599,0x1599,0x158d,0x1599,0x1599,0x158a,0x17a0,0x1e0,0x15a8,0x15a8,0x15a8,0x159c,
-0x159c,0x159c,0x159c,0x159c,0x159c,0x159f,0x15a2,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x15a5,0x15a5,0x15a5,0x15a5,
-0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1710,0x1710,0x1710,0x1710,
-0x15b4,0x15b1,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x173a,0x173a,0x173a,0x173a,
-0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x15ba,0x15ba,0x15ba,0x15ba,
-0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,
-0x15ba,0x15ba,0x15ba,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x15ba,0x15ba,0x15ba,0x15ba,
-0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,
-0x15ba,0x15ba,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x15ba,0x15ba,0x15ba,0x15ba,
-0x15ba,0x15ba,0x15ba,0x15ba,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,
-0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15bd,
-0x15c0,0x15c3,0x15c6,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15c9,0x15c9,0x1ef,0x1ef,0x1ef,0x1ef,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15d2,0x15d2,0x15d2,0x15d2,
-0x15d2,0x15d2,0x15cf,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x15de,0x15de,0x15de,0x15de,
-0x15de,0x1f2,0x1f2,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15d8,0x15d8,0x15d8,0x15d8,
-0x15d8,0x15d8,0x15d8,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x15e1,0x15f3,0x15f3,0x15e7,
-0x15f0,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x15ea,0x15ea,0x15ea,0x15ea,
-0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x15f9,0x15f9,0x15f9,0x15f9,
-0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,
-0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x1f8,0x1605,0x1605,0x1605,0x1605,
-0x1605,0x15ff,0x1608,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1602,0x1602,0x1602,0x1602,
-0x1602,0x1602,0x1602,0x1602,0x1602,0x1602,0x1605,0x1605,0x1605,0x1605,0x1605,0x1fb,0x160e,0x160e,0x160e,0x160e,
-0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
-0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x1fe,0x161a,0x161a,0x161a,0x161a,
-0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,
-0x161a,0x161a,0x1617,0x1617,0x1617,0x1617,0x1617,0x201,0x201,0x201,0x201,0x201,0x1632,0x1632,0x1635,0x1635,
-0x1638,0x1629,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x162f,0x162f,0x162f,0x162f,
-0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x204,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x204,0x1632,
-0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
-0x1632,0x1632,0x1632,0x1632,0x204,0x204,0x204,0x204,0x204,0x1632,0x1632,0x1632,0x1641,0x1641,0x1641,0x1641,
-0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
-0x1641,0x1641,0x1641,0x1641,0x1641,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x164a,0x164a,0x164a,0x164a,
-0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x20a,0x20a,
-0x20a,0x20a,0x20a,0x20a,0x20a,0x1647,0x1647,0x1647,0x1647,0x20a,0x20a,0x20a,0x1665,0x1665,0x1665,0x1665,
-0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x164d,0x165f,0x165f,0x164d,0x164d,
-0x164d,0x164d,0x210,0x210,0x165f,0x165f,0x1662,0x1662,0x164d,0x164d,0x165f,0x1653,0x1650,0x1656,0x1668,0x1668,
-0x1659,0x1659,0x165c,0x165c,0x165c,0x1668,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,
-0x1719,0x1719,0x1719,0x1719,0x1716,0x1716,0x1716,0x1716,0x1713,0x1713,0x210,0x210,0x210,0x210,0x210,0x210,
+0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x13a7,0x13a7,0x13a7,0x13a7,
+0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x1dd,0x1dd,0x13a7,0x13a7,0x13a7,
+0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x1572,0x1dd,0x13a7,0x13a7,0x13a7,
+0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13dd,0x1dd,0x13a7,0x13a7,0x13a7,
+0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x1572,0x1572,0x1572,0x1572,
+0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,
+0x1572,0x1572,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x13fb,0x13f5,0x13f5,0x13f5,
+0x13f5,0x13f5,0x1587,0x1587,0x1587,0x1587,0x1587,0x158a,0x16f8,0x158a,0x158a,0x158a,0x17c1,0x186f,0x186f,0x1e0,
+0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x158a,0x158a,0x158a,0x158a,
+0x158a,0x158a,0x1587,0x1587,0x1587,0x158a,0x1587,0x16f5,0x16f5,0x1e0,0x1e0,0x1e0,0x158a,0x1587,0x1587,0x158a,
+0x186f,0x186f,0x186f,0x1e3,0x1e3,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x13aa,0x13aa,0x13aa,0x13aa,
+0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,
+0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x144f,0x1590,0x144f,0x144f,
+0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1746,
+0x1746,0x1e9,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,
+0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,
+0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x1455,0x1455,0x1455,0x1455,
+0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1ec,
+0x1455,0x1ec,0x1ec,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,
+0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1455,0x1ec,
+0x1ec,0x1ec,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1ec,
+0x1455,0x1ec,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1455,0x1ec,
+0x1455,0x1ec,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,
+0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1455,0x1455,0x1455,
+0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,
+0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,
+0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1452,0x1452,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,
+0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x1458,
+0x1458,0x1458,0x1458,0x1458,0x1467,0x1458,0x145b,0x145b,0x1458,0x1458,0x1458,0x145e,0x145e,0x1ef,0x1464,0x1464,
+0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1461,0x146d,0x146d,0x146d,0x1ef,0x1ef,0x1ef,0x1ef,
+0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,
+0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,
+0x1479,0x1479,0x1479,0x1476,0x1470,0x1470,0x1476,0x1476,0x147f,0x147f,0x1479,0x147c,0x147c,0x1476,0x1473,0x1f2,
+0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,
+0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,
+0x1f5,0x1f5,0x1f5,0x1f5,0x1749,0x1749,0x1482,0x1482,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,
+0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1f5,0x1f5,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,
+0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x148e,0x148e,0x148e,0x148e,0x148e,0x1f8,0x1f8,0x1f8,
+0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x148e,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,0x148b,0x148b,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
+0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1488,0x1488,0x1488,0x1488,0x1491,
+0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x14a3,0x14a6,0x14a9,0x14a9,
+0x14a6,0x14ac,0x14ac,0x1497,0x149a,0x174f,0x174c,0x174c,0x174c,0x1596,0x1fb,0x1fb,0x149d,0x149d,0x149d,0x149d,
+0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x1593,0x1755,0x1758,0x1752,0x175b,0x175b,0x14b2,0x14b2,0x14b2,0x14b2,
+0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x14af,0x14af,0x14af,0x14af,
+0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x14b5,0x14b5,0x14b5,0x14b5,
+0x14b5,0x14b5,0x14b5,0x14b5,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x1305,0x1302,0x1305,0x12ed,
+0x1302,0x1302,0x1302,0x1308,0x1302,0x1308,0x130b,0x1302,0x1308,0x1308,0x1302,0x1302,0x14c7,0x14c7,0x14c7,0x14c7,
+0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14b8,0x14c1,0x14b8,0x14c1,0x14c1,0x14b8,0x14b8,0x14b8,0x14b8,
+0x14b8,0x14b8,0x14c4,0x14bb,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x159c,0x159c,0x159c,0x159c,
+0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x207,0x207,0x1599,0x1599,0x1599,0x1599,
+0x1599,0x159f,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x1704,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,0x16fb,0x16fb,0x20d,0x20d,0x20d,0x20d,0x210,0x210,0x210,0x210,
 0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,
-0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x213,0x166b,0x166b,0x166b,
-0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,
-0x166b,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x166e,0x166e,0x166e,0x166e,
-0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,0x216,0x216,0x166e,0x166e,0x166e,0x166e,
-0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,0x216,0x216,
-0x216,0x216,0x216,0x216,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,
-0x216,0x216,0x216,0x216,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,0x216,0x216,
-0x216,0x216,0x216,0x216,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
-0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,
-0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,
-0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x1671,0x1680,0x1677,0x1674,0x1686,0x1686,0x167a,0x1686,
-0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,
-0x167d,0x167d,0x219,0x219,0x219,0x219,0x219,0x219,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,
-0x168c,0x168c,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x21c,0x21c,0x21c,0x21c,0x21c,
-0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x1692,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
-0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
-0x172b,0x172b,0x21f,0x21f,0x21f,0x171c,0x171c,0x171c,0x1728,0x1728,0x171c,0x171c,0x171c,0x171c,0x1728,0x171c,
-0x171c,0x171c,0x171c,0x171f,0x21f,0x21f,0x21f,0x21f,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,
-0x1725,0x1725,0x1722,0x1722,0x172e,0x172e,0x172e,0x1722,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x222,
-0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,
-0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,
-0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
-0x1743,0x1743,0x1743,0x228,0x1743,0x1743,0x228,0x228,0x228,0x228,0x228,0x1740,0x1740,0x1740,0x1740,0x1740,
-0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x22b,0x1746,0x22b,0x1746,0x1746,0x1746,0x1746,0x22b,0x1746,
-0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x22b,0x1746,
-0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1749,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,
-0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,
-0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,
-0x1752,0x1752,0x1752,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
-0x174f,0x174f,0x174f,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x174c,0x174c,0x174c,0x174c,0x174c,0x174c,
-0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
-0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1776,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x231,
-0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1824,0x1821,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
-0x1824,0x231,0x231,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1821,0x181e,0x1824,0x1824,0x1824,0x231,
-0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x181e,0x1821,0x1821,0x1821,0x1821,0x1821,0x231,0x231,0x231,0x231,
-0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x231,
-0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
-0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
-0x1773,0x1773,0x1773,0x1773,0x1773,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,
-0x1821,0x1821,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
-0x1773,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
-0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
-0x1758,0x1758,0x1758,0x1758,0x1755,0x1758,0x1758,0x175b,0x175e,0x175b,0x175b,0x1758,0x234,0x234,0x234,0x234,
-0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x1755,0x1755,0x1755,0x1755,0x1755,
-0x17b2,0x17b2,0x17b2,0x17b2,0x17a9,0x17a9,0x17a9,0x17a3,0x17a6,0x17a6,0x17a6,0x237,0x237,0x237,0x237,0x237,
-0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x237,0x237,0x237,0x237,0x17ac,0x17ac,
-0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x23a,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,
-0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,
-0x17cd,0x17cd,0x17cd,0x17ca,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x23a,0x17b8,0x17b8,0x17b8,0x17b8,
-0x17b8,0x17b8,0x17ca,0x17bb,0x17cd,0x17d0,0x17d0,0x17c4,0x17c1,0x17c1,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,
-0x23a,0x23a,0x23a,0x23a,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17be,0x17be,
-0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x23a,0x23a,0x23a,
-0x17dc,0x17df,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,
-0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x240,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,
-0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x240,0x240,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,
-0x1827,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,
-0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,
-0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,
-0x246,0x246,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,
-0x246,0x17e2,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17e2,0x17d9,0x17d9,0x17e2,0x17d9,0x17d9,0x246,
-0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,
-0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,
-0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x1800,0x1800,0x17f1,0x17eb,0x17eb,0x1800,0x17ee,0x1803,
-0x1803,0x1803,0x1803,0x1806,0x1806,0x17fa,0x17f7,0x17f4,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,
-0x17fd,0x17fd,0x24c,0x17fa,0x24c,0x17f4,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,
-0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,
-0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
-0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x24f,0x24f,0x24f,0x24f,
-0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,
-0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x24f,0x24f,0x24f,0x24f,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x252,0x252,0x252,
-0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,
-0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,
-0x182d,0x182d,0x182d,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,
-0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
-0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
-0x1770,0x1770,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,
-0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
-0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x921,0x921,
-0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,
-0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,
-0x10d4,0x10d4,0x10d4,0x10d4,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1473,0x1761,0x1761,0x1761,
-0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,
-0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,
-0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,
-0xc39,0xc39,0xc39,0x1278,0x1278,0x1278,0x261,0x261,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,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,
+0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x15b7,0x15b7,0x15b7,0x15b7,
+0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x213,0x213,0x213,0x213,0x213,0x15b7,0x15b7,0x15b7,0x15b7,
+0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x213,0x213,0x213,0x213,0x213,0x213,0x213,
+0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x213,0x213,0x15b4,0x15ae,0x15b1,0x15ba,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,
+0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,
+0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,
+0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,
+0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,
+0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x175e,0x15c3,0x15c9,0x170a,0x21c,0x15d2,0x15d2,0x15d2,
+0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x21c,0x21c,0x15d2,0x15d2,0x21c,0x21c,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,
+0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x21c,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,
+0x15d2,0x21c,0x15d2,0x15d2,0x21c,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x21c,0x21c,0x1707,0x15d2,0x15c3,0x15c9,
+0x15c3,0x15c9,0x15c9,0x15c9,0x15c9,0x21c,0x21c,0x15c9,0x15c9,0x21c,0x21c,0x15cc,0x15cc,0x15cf,0x21c,0x21c,
+0x1761,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x15c3,0x21c,0x21c,0x21c,0x21c,0x21c,0x15d5,0x15d2,0x15d2,
+0x15d2,0x15d2,0x15c9,0x15c9,0x21c,0x21c,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x21c,0x21c,0x21c,
+0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,
+0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,
+0x15ea,0x15ea,0x21f,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,
+0x15e4,0x15e4,0x15e4,0x15d8,0x15d8,0x15d8,0x15e4,0x15e4,0x15d8,0x15e7,0x15db,0x15d8,0x15ed,0x15ed,0x15e1,0x15ed,
+0x15ed,0x15de,0x17f4,0x21f,0x15fc,0x15fc,0x15fc,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f3,0x15f6,0x222,
+0x222,0x222,0x222,0x222,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x222,0x222,
+0x222,0x222,0x222,0x222,0x1764,0x1764,0x1764,0x1764,0x1608,0x1605,0x225,0x225,0x225,0x225,0x225,0x225,
+0x225,0x225,0x225,0x225,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,
+0x178e,0x178e,0x178e,0x178e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
+0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x228,0x228,0x228,0x228,0x228,
+0x228,0x228,0x228,0x228,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
+0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x228,0x228,0x228,0x228,0x228,0x228,
+0x228,0x228,0x228,0x228,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x228,0x228,0x228,0x228,
+0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
+0x228,0x228,0x228,0x228,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,
+0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x1611,0x1614,0x1617,0x161a,0x22b,0x22b,0x22b,0x22b,0x22b,
+0x22b,0x22b,0x22b,0x22b,0x1629,0x1629,0x1629,0x1629,0x1629,0x161d,0x161d,0x22e,0x22e,0x22e,0x22e,0x1620,
+0x1620,0x1620,0x1620,0x1620,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1623,0x22e,0x22e,0x22e,0x22e,0x22e,
+0x22e,0x22e,0x22e,0x22e,0x1632,0x1632,0x1632,0x1632,0x1632,0x231,0x231,0x162f,0x162f,0x162f,0x162f,0x162f,
+0x162f,0x162f,0x162f,0x162f,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x231,0x231,0x231,0x231,0x231,
+0x231,0x231,0x231,0x231,0x1635,0x1647,0x1647,0x163b,0x1644,0x234,0x234,0x234,0x234,0x234,0x234,0x234,
+0x234,0x234,0x234,0x234,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x234,0x234,
+0x234,0x234,0x234,0x234,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
+0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
+0x164d,0x164d,0x164d,0x237,0x1659,0x1659,0x1659,0x1659,0x1659,0x1653,0x165c,0x1659,0x1659,0x1659,0x1659,0x1659,
+0x1659,0x1659,0x1659,0x1659,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1659,0x1659,
+0x1659,0x1659,0x1659,0x23a,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,
+0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,
+0x1662,0x1662,0x1662,0x23d,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
+0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166b,0x166b,0x166b,0x166b,0x166b,0x240,
+0x240,0x240,0x240,0x240,0x1686,0x1686,0x1689,0x1689,0x168c,0x167d,0x243,0x243,0x243,0x243,0x243,0x243,
+0x243,0x243,0x243,0x243,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x243,0x167d,
+0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x243,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
+0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x243,0x243,0x243,0x243,
+0x243,0x1686,0x1686,0x1686,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,
+0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x246,0x246,0x246,
+0x246,0x246,0x246,0x246,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,
+0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x169b,0x169b,0x169b,
+0x169b,0x249,0x249,0x249,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,
+0x16b9,0x16b9,0x16b9,0x16a1,0x16b3,0x16b3,0x16a1,0x16a1,0x16a1,0x16a1,0x24f,0x24f,0x16b3,0x16b3,0x16b6,0x16b6,
+0x16a1,0x16a1,0x16b3,0x16a7,0x16a4,0x16aa,0x16bc,0x16bc,0x16ad,0x16ad,0x16b0,0x16b0,0x16b0,0x16bc,0x176d,0x176d,
+0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176a,0x176a,0x176a,0x176a,
+0x1767,0x1767,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
+0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
+0x24f,0x24f,0x24f,0x24f,0x252,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,
+0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x252,0x252,0x252,0x252,0x252,0x252,0x252,
+0x252,0x252,0x252,0x252,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
+0x255,0x255,0x255,0x255,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
+0x16c2,0x16c2,0x16c2,0x16c2,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x16c2,0x16c2,0x16c2,0x16c2,
+0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x255,0x255,0x255,0x255,0x255,0x255,0x16c2,0x16c2,0x16c2,0x16c2,
+0x16c2,0x16c2,0x16c2,0x16c2,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x16c2,0x16c2,0x16c2,0x16c2,
+0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x255,0x255,
+0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,
+0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,
+0x16c5,0x16d4,0x16cb,0x16c8,0x16da,0x16da,0x16ce,0x16da,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
+0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x258,0x258,0x258,0x258,0x258,0x258,
+0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,
+0x16dd,0x16dd,0x16dd,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x16e6,
+0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,
+0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x25e,0x25e,0x25e,0x1770,0x1770,0x1770,
+0x177c,0x177c,0x1770,0x1770,0x1770,0x1770,0x177c,0x1770,0x1770,0x1770,0x1770,0x1773,0x25e,0x25e,0x25e,0x25e,
+0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1776,0x1776,0x1782,0x1782,0x1782,0x1776,
+0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,
 0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,
-0x261,0x261,0x261,0x261,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
-0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0x264,0x264,0x264,0x264,0x264,
-0x264,0x264,0x264,0x264,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
-0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
-0xb4c,0xb4c,0x267,0x267,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,
-0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,
-0x26a,0x26a,0x26a,0x26a,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,
-0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,
-0x13a7,0x13a7,0x26d,0x26d,0x10ec,0x369,0x369,0x375,0xc7b,0x378,0x378,0x378,0x378,0x378,0x378,0x378,
-0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,
-0x378,0x378,0x378,0x378,0x375,0x369,0x369,0x369,0x369,0x369,0x369,0x369,0x369,0x375,0x375,0x375,
-0x375,0x36f,0x10ef,0x12c6,0x378,0x8ee,0x8f1,0x36c,0x36c,0x10ec,0x12c3,0x12c3,0x37b,0x37b,0x37b,0x37b,
-0x37b,0x37b,0x37b,0x37b,0x378,0x378,0x369,0x369,0x879,0x87c,0x909,0x909,0x909,0x909,0x909,0x909,
-0x909,0x909,0x909,0x909,0x372,0xf4e,0xf4b,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x149a,0x10f2,0x10f2,0xea0,
-0xea0,0xd6e,0xea0,0xea0,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x37b,0x378,0x378,
-0x378,0x378,0x378,0x378,0x378,0x37b,0x378,0x378,0x37b,0x378,0x378,0x378,0x378,0x378,0x12c3,0x12c6,
-0x36c,0x378,0x375,0x375,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,
-0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0xb67,0xb67,0xd7a,0xd7a,0x87f,
-0xd7d,0x13b9,0x13b9,0x13b9,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,
-0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,
-0x459,0x459,0x459,0x459,0x45f,0x45f,0x45f,0x1107,0x1107,0x1107,0x1107,0x1107,0x45c,0x45c,0x45c,0x45c,
-0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,
-0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x1104,0x1104,
-0x1104,0x1104,0x1104,0x1104,0x462,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,
-0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,
-0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,
-0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,
-0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x465,0x465,0x465,0x465,0x468,0x963,
-0xf9c,0xf9c,0xf9f,0xf9c,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,
-0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0xf9f,0xf9c,
-0xf9f,0xf9c,0xf9f,0xf9c,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,
-0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,
-0x47a,0x47a,0x47a,0x47a,0x657,0x657,0x65a,0x495,0x666,0x663,0x663,0x660,0x4bf,0x4bf,0x47d,0x47d,
-0x47d,0x47d,0x47d,0xa95,0x669,0x4a1,0x681,0x684,0x4b6,0x669,0x4a4,0x4a4,0x495,0x4b0,0x4b0,0x657,
-0x4bc,0x4b9,0x65d,0x48f,0x486,0x486,0x489,0x489,0x489,0x489,0x489,0x48c,0x489,0x489,0x489,0x480,
-0x4c8,0x4c5,0x4c2,0x4c2,0x675,0x4aa,0x4a7,0x672,0x66f,0x66c,0x67e,0x498,0x67b,0x67b,0x4ad,0x4b0,
-0x678,0x678,0x4ad,0x4b0,0x492,0x495,0x495,0x495,0x4b3,0x49e,0x49b,0xb7c,0xa9b,0xa9e,0xa98,0xa98,
-0xa98,0xa98,0xb73,0xb73,0xb73,0xb73,0xb79,0xca8,0xca5,0xd89,0xd8c,0xb76,0xd8c,0xd8c,0xd8c,0xd8c,
-0xd89,0xd8c,0xd8c,0xb70,0x4fb,0x4fb,0x513,0x693,0x4f8,0x690,0x4fb,0x510,0x4f8,0x693,0x50a,0x513,
-0x513,0x513,0x50a,0x50a,0x513,0x513,0x513,0x69c,0x4f8,0x513,0x696,0x4f8,0x507,0x513,0x513,0x513,
-0x513,0x513,0x4f8,0x4f8,0x4fe,0x690,0x699,0x4f8,0x513,0x4f8,0x69f,0x4f8,0x513,0x501,0x519,0x6a2,
-0x513,0x513,0x504,0x50a,0x513,0x513,0x516,0x513,0x50a,0x50d,0x50d,0x50d,0x50d,0xaaa,0xaa7,0xcab,
-0xd9b,0xb97,0xb9a,0xb9a,0xb94,0xb91,0xb91,0xb91,0xb91,0xb9a,0xb97,0xb97,0xb97,0xb97,0xb8e,0xb91,
-0xd98,0xeac,0xeaf,0xfa5,0x1116,0x1116,0x1116,0x6a8,0x6a5,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x6a5,
-0x6a8,0x6a8,0x6a5,0x51f,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,
-0x528,0x528,0x528,0x528,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x522,0x522,
-0x522,0x522,0x522,0x522,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52b,0x534,0x534,0x52e,
-0x52e,0x52e,0x531,0x52b,0x52e,0x52e,0x52b,0x52b,0x52b,0x52b,0x52e,0x52e,0x6b1,0x6b1,0x52b,0x52b,
-0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x531,0x531,0x531,
-0x52e,0x52e,0x6b4,0x52e,0x6b4,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52b,0x52e,0x52b,0x52b,
-0x52b,0x52b,0x52b,0x52b,0x52e,0x52e,0x52b,0x6b1,0x52b,0x52b,0x52b,0xab0,0xab0,0xab0,0xab0,0xab0,
-0xab0,0xab0,0xab0,0xab0,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
-0x6ba,0x537,0x6ba,0x6ba,0x53a,0x537,0x537,0x6ba,0x6ba,0x53a,0x537,0x6ba,0x53a,0x537,0x537,0x6ba,
-0x537,0x6ba,0x546,0x543,0x537,0x6ba,0x537,0x537,0x537,0x537,0x6ba,0x537,0x537,0x6ba,0x6ba,0x6ba,
-0x6ba,0x537,0x537,0x6ba,0x53a,0x6ba,0x53a,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6c0,0x53d,0x6ba,0x53d,
-0x53d,0x537,0x537,0x537,0x6ba,0x6ba,0x6ba,0x6ba,0x537,0x537,0x537,0x537,0x6ba,0x6ba,0x537,0x537,
-0x537,0x53a,0x537,0x537,0x53a,0x537,0x537,0x53a,0x6ba,0x53a,0x537,0x537,0x6ba,0x537,0x537,0x537,
-0x537,0x537,0x6ba,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,
-0x6bd,0x6ba,0x53a,0x537,0x6ba,0x6ba,0x6ba,0x6ba,0x537,0x537,0x6ba,0x6ba,0x537,0x53a,0x6bd,0x6bd,
-0x53a,0x53a,0x537,0x537,0x53a,0x53a,0x537,0x537,0x53a,0x53a,0x537,0x537,0x537,0x537,0x537,0x537,
-0x53a,0x53a,0x6ba,0x6ba,0x53a,0x53a,0x6ba,0x6ba,0x53a,0x53a,0x537,0x537,0x537,0x537,0x537,0x537,
-0x537,0x537,0x537,0x537,0x537,0x6ba,0x537,0x537,0x537,0x6ba,0x537,0x537,0x537,0x537,0x537,0x537,
-0x537,0x6ba,0x537,0x537,0x537,0x537,0x537,0x537,0x53a,0x53a,0x53a,0x53a,0x537,0x537,0x537,0x537,
-0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x6ba,0x537,0x537,0x537,0x537,
-0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,
-0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x53a,0x53a,0x53a,0x53a,
-0x537,0x537,0x537,0x537,0x537,0x537,0x53a,0x53a,0x53a,0x53a,0x537,0x540,0x537,0x537,0xba0,0xba0,
-0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0x549,0xab3,0x549,0x549,
-0x549,0x549,0x549,0x549,0x555,0x552,0x555,0x552,0x549,0x549,0x549,0x549,0x549,0x549,0x6c3,0x549,
-0x549,0x549,0x549,0x549,0x549,0x549,0x7c5,0x7c5,0x549,0x549,0x549,0x549,0x54f,0x54f,0x549,0x549,
-0x549,0x549,0x549,0x549,0x54c,0x7cb,0x7c8,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,0x549,0x549,0x549,0x549,0x549,0xab3,0xba6,0xab3,0xab3,0xab3,
-0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,
-0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,
-0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x55e,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,
-0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xd20,
-0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,
-0x6d5,0x6d5,0x6d5,0x6d5,0x561,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,
-0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x564,0x564,0x564,0x564,
-0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,
-0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,
-0x567,0x567,0x6d8,0x6d8,0x6d8,0x6d8,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,
-0x6de,0x6de,0x56a,0x6db,0x6db,0x6db,0x6db,0x6db,0x6db,0x6db,0x56d,0x56d,0x56a,0x56a,0x570,0x570,
-0x570,0x570,0x6de,0x6de,0x570,0x570,0x6e1,0x6de,0x56a,0x56a,0x56a,0x56a,0x6de,0x6de,0x570,0x570,
-0x6e1,0x6de,0x56a,0x56a,0x56a,0x56a,0x6de,0x6de,0x6db,0x56a,0x570,0x6de,0x56a,0x56a,0x6db,0x6de,
-0x6de,0x6de,0x570,0x570,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,
-0x56a,0x56a,0x6de,0x6db,0x6de,0x6db,0x56a,0x570,0x570,0x570,0x570,0x570,0x570,0x56a,0x56a,0x6db,
-0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xbac,0xbac,0xbac,0xbaf,0xbaf,0xc24,0xc24,0xbac,
-0x57c,0x57c,0x57c,0x57c,0x579,0x6f0,0x6f0,0x573,0x573,0x6e4,0x573,0x573,0x573,0x573,0x6ea,0x6e4,
-0x573,0x579,0x573,0x573,0xd29,0xd29,0xbb2,0xbb2,0xda7,0xabc,0x576,0x576,0x6e7,0x57f,0x6e7,0x576,
-0x579,0x573,0x579,0x579,0x573,0x573,0x579,0x573,0x573,0x573,0x579,0x573,0x573,0x573,0x579,0x579,
-0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x579,0x57c,0x57c,0x576,0x573,0x573,0x573,0x573,
-0x6f3,0x573,0x6f3,0x573,0x573,0x573,0x573,0x573,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,
-0x7ce,0x7ce,0x7ce,0x7ce,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,
-0x6f3,0x6f0,0x582,0x6f3,0x6e4,0x6ea,0x579,0x6e4,0x6ed,0x6e4,0x6e4,0x573,0x6e4,0x6f0,0x582,0x6f0,
-0xabc,0xabc,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb8,0xbb5,0xbb5,0xda1,0xe5e,
-0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,
-0x585,0x585,0x585,0x585,0x588,0x136e,0x136e,0x136e,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
-0x14be,0x58e,0x59a,0x58e,0x58e,0x136e,0x588,0x588,0x59a,0x59a,0x1371,0x1371,0x5a0,0x5a0,0x588,0x594,
-0x588,0x588,0x594,0x588,0x594,0x588,0x594,0x588,0x588,0x588,0x588,0x588,0x588,0x594,0x588,0x588,
-0x588,0x588,0x588,0x588,0x136e,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x594,
-0x594,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x6f9,0x588,0x588,0x588,0x588,0x588,0x588,
-0x594,0x588,0x588,0x594,0x588,0x588,0x588,0x588,0x136e,0x588,0x136e,0x588,0x588,0x588,0x588,0x136e,
-0x136e,0x136e,0x588,0x1272,0x588,0x588,0x588,0x591,0x591,0x591,0x591,0x12f0,0x12f0,0x588,0x58b,0x597,
-0x59d,0x588,0x588,0x588,0xbbe,0xbbb,0xbbe,0xbbb,0xbbe,0xbbb,0xbbe,0xbbb,0xbbe,0xbbb,0xbbe,0xbbb,
-0xbbe,0xbbb,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x588,0x594,0x588,0x588,
-0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x136e,0x588,0x588,0x588,
-0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x136e,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,
-0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5c1,0x5c7,0x5b8,0x5bb,0x5c7,0x5c7,0x5c7,0x5c7,
-0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,
-0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,
-0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,
-0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,
-0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,
-0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,
-0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,
-0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c4,0x5ca,
-0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,
-0x5c4,0x5c7,0x5c1,0x5c4,0x5c7,0x5c1,0x5c4,0x5ca,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,
-0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,
-0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c1,0x5c4,0x5c1,0x5c4,0x5c1,0x5c1,
-0x5c4,0x5c1,0x5c1,0x5c4,0x5c1,0x5c4,0x5c1,0x5c1,0x5c4,0x5c1,0x5c4,0x5c4,0x5c1,0x5c1,0x5c1,0x5c4,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c1,0x5c1,
-0x5c4,0x5c1,0x5c4,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,
-0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,
-0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5ca,0x5c7,0x5c7,0x5c7,0x5c7,
-0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,
-0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5ca,0x5ca,0x5ca,0x5ca,
-0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,
-0x5ca,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5cd,0x5cd,0x5cd,0x5cd,
-0xfb1,0xfb1,0xfb1,0x14c1,0x14c1,0x14c1,0x14c1,0x14c1,0x14c1,0x14c1,0x16ce,0x16ce,0x82b,0x831,0x831,0x83d,
-0x83d,0x82e,0x825,0x82e,0x825,0x82e,0x825,0x82e,0x825,0x82e,0x825,0x82e,0x5dc,0x5dc,0x5d6,0x5dc,
-0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,
-0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5dc,
-0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,
-0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,
-0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,
-0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c6,0x6c6,0x6c6,0x6c6,
-0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,
-0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6cf,0x6cf,
-0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6d2,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,
-0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,
-0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,
-0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,
-0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,
-0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,
-0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0xc12,0x891,0x88b,0x888,0x88e,0x885,0x711,0x714,
-0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x897,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
-0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
-0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x894,0x894,0x717,0x8a6,0x8a9,0x8af,
-0x7d1,0x7dd,0x8c4,0x7da,0x89d,0x89a,0x89d,0x89a,0x8a3,0x8a0,0x8a3,0x8a0,0x89d,0x89a,0x7d7,0x8af,
-0x89d,0x89a,0x89d,0x89a,0x89d,0x89a,0x89d,0x89a,0x8b2,0x8bb,0x8b8,0x8b8,0x71d,0x759,0x759,0x759,
-0x759,0x759,0x759,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,
-0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x720,0x73b,0x71a,0x741,0x744,0x73e,0x756,0x756,0x756,
-0x756,0x756,0x756,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,
-0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x720,0x73b,0x71a,0x73b,0xc15,0x7bf,0x7bf,0x7bf,0x7bf,
-0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,
-0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x126c,0x126c,
-0x126c,0x126c,0x126c,0x7c2,0x7d7,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x8fa,0x8fa,
-0x8fa,0x8fa,0x7e0,0x7e0,0x8b5,0x8c1,0x8c1,0x8c1,0x8c1,0x8be,0x7d4,0x8ac,0xae0,0xae0,0xae0,0xc27,
-0xc45,0xc42,0xafb,0x882,0x7e6,0x7e3,0x7e6,0x7e9,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e3,
-0x7e3,0x7e3,0x7e3,0x7e3,0x7e6,0x7e6,0x7e3,0x7e6,0x7e6,0x7e3,0x7e6,0x7e6,0x7e3,0x7e6,0x7e6,0x7e3,
-0x7e6,0x7e6,0x7e3,0x7e3,0xc48,0x7f8,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f2,
-0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,
-0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f8,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f2,
-0x7f2,0x7f2,0x7f2,0x7f2,0x7f5,0x7f5,0x7f2,0x7f5,0x7f5,0x7f2,0x7f5,0x7f5,0x7f2,0x7f5,0x7f5,0x7f2,
-0x7f5,0x7f5,0x7f2,0x7f2,0x7f2,0x7f2,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f2,0x7f2,0x7f2,
-0x7f2,0x7f2,0x7f8,0x7f2,0x7f2,0x7f2,0x7f2,0x7f2,0x7f5,0x7f8,0x7f8,0x7f5,0x7f5,0x7f5,0x7f5,0x8ca,
-0x8cd,0x7fb,0x7fe,0xc30,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
-0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
-0x804,0x804,0x804,0x804,0x807,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
-0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
-0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,
-0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0xd32,0xd32,0xe61,0x80a,
-0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0xd2c,0xd2c,0xd2c,0xd2c,
+0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,
+0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x267,0x1797,0x1797,0x267,0x267,
+0x267,0x267,0x267,0x1794,0x1794,0x1794,0x1794,0x1794,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x26a,
+0x179a,0x26a,0x179a,0x179a,0x179a,0x179a,0x26a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
+0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x26a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
+0x179a,0x179d,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,
+0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,
+0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x26d,0x26d,0x26d,0x26d,0x26d,
+0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,
+0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x26d,0x26d,0x26d,0x26d,0x26d,
+0x26d,0x26d,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,
+0x270,0x270,0x270,0x270,0x273,0x273,0x273,0x273,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,
+0x17ca,0x1878,0x1878,0x1878,0x1878,0x1875,0x1878,0x279,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1878,0x1875,
+0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1878,0x279,0x279,0x1878,0x1878,0x1878,0x1878,0x1878,
+0x1878,0x1878,0x1875,0x1872,0x1875,0x1878,0x1878,0x273,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1872,0x1875,
+0x1875,0x1875,0x1875,0x1875,0x276,0x273,0x273,0x273,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,
+0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
+0x276,0x276,0x276,0x276,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x1875,0x1875,0x1875,
+0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x276,0x276,0x276,0x276,0x276,0x276,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x17c7,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x276,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x276,0x276,
+0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
+0x17ac,0x17ac,0x17ac,0x17ac,0x17a9,0x17ac,0x17ac,0x17af,0x17b2,0x17af,0x17af,0x17ac,0x27c,0x27c,0x27c,0x27c,
+0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,
+0x1806,0x1806,0x1806,0x1806,0x17fd,0x17fd,0x17fd,0x17f7,0x17fa,0x17fa,0x17fa,0x27f,0x27f,0x27f,0x27f,0x27f,
+0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x27f,0x27f,0x27f,0x27f,0x1800,0x1800,
+0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x282,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,
+0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,
+0x1821,0x1821,0x1821,0x181e,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x282,0x180c,0x180c,0x180c,0x180c,
+0x180c,0x180c,0x181e,0x180f,0x1821,0x1824,0x1824,0x1818,0x1815,0x1815,0x282,0x282,0x282,0x282,0x282,0x282,
+0x282,0x282,0x282,0x282,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x1812,0x1812,
+0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x282,0x282,0x282,
+0x1830,0x1833,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,
+0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x288,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
+0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x288,0x288,0x182a,0x182a,0x182a,0x182a,0x182a,
+0x187b,0x28e,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
+0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
+0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,
+0x291,0x291,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,
+0x291,0x1836,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x1836,0x182d,0x182d,0x1836,0x182d,0x182d,0x291,
+0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,
+0x183c,0x183c,0x183c,0x183c,0x183c,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,
+0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x1854,0x1854,0x1845,0x183f,0x183f,0x1854,0x1842,0x1857,
+0x1857,0x1857,0x1857,0x185a,0x185a,0x184e,0x184b,0x1848,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,
+0x1851,0x1851,0x297,0x184e,0x297,0x1848,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,
+0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,
+0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,
+0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x29a,0x29a,0x29a,0x29a,
+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,0x29a,0x29a,0x29a,0x29a,
+0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x29d,0x29d,0x29d,
+0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,
+0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,
+0x1881,0x1881,0x1881,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,
+0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
+0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
+0x2a6,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
+0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
+0x2a3,0x2a3,0x975,0x975,0x17c4,0x17c4,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,
+0x2c1,0x2c1,0x2c1,0x2c1,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
+0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
+0x2a6,0x2a6,0x2a6,0x2a6,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,
+0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,
+0x2a9,0x2a9,0x2a9,0x2a9,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2ac,
+0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,
+0x2ac,0x2ac,0x2ac,0x2ac,0x112b,0x112b,0x112b,0x112b,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,
+0x14ca,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,
+0x2af,0x2af,0x2af,0x2af,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0x12cf,
+0x12cf,0x12cf,0x2b2,0x2b2,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,
+0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0x2b2,0x2b2,
+0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,
+0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,
+0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
+0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,
+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,0x2b8,0x2b8,
+0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,
+0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
+0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x2be,0x2be,
+0x1143,0x3ba,0x3ba,0x3c6,0xccf,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
+0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
+0x3c6,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3c6,0x3c6,0x3c6,0x3c6,0x3c0,0x1146,0x131d,
+0x3c9,0x942,0x945,0x3bd,0x3bd,0x1143,0x131a,0x131a,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,
+0x3c9,0x3c9,0x3ba,0x3ba,0x8cd,0x8d0,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,
+0x3c3,0xfa5,0xfa2,0x1320,0x1320,0x1320,0x1320,0x1320,0x14f1,0x1149,0x1149,0xef7,0xef7,0xdc2,0xef7,0xef7,
+0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
+0x3c9,0x3cc,0x3c9,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x131a,0x131d,0x3bd,0x3c9,0x3c6,0x3c6,
+0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,
+0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0xbbb,0xbbb,0xdce,0xdce,0x8d3,0xdd1,0x1410,0x1410,0x1410,
+0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,
+0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,
+0x4b0,0x4b0,0x4b0,0x115e,0x115e,0x115e,0x115e,0x115e,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,
+0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,
+0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x115b,0x115b,0x115b,0x115b,0x115b,0x115b,
+0x4b3,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
+0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
+0x4b0,0x4b0,0x4b0,0x4b0,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,
+0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,
+0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b9,0x9b7,0xff3,0xff3,0xff6,0xff3,
+0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,
+0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0xff6,0xff3,0xff6,0xff3,0xff6,0xff3,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
+0x6a8,0x6a8,0x6ab,0x4e6,0x6b7,0x6b4,0x6b4,0x6b1,0x510,0x510,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0xae9,
+0x6ba,0x4f2,0x6d2,0x6d5,0x507,0x6ba,0x4f5,0x4f5,0x4e6,0x501,0x501,0x6a8,0x50d,0x50a,0x6ae,0x4e0,
+0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4dd,0x4da,0x4da,0x4da,0x4d1,0x519,0x516,0x513,0x513,
+0x6c6,0x4fb,0x4f8,0x6c3,0x6c0,0x6bd,0x6cf,0x4e9,0x6cc,0x6cc,0x4fe,0x501,0x6c9,0x6c9,0x4fe,0x501,
+0x4e3,0x4e6,0x4e6,0x4e6,0x504,0x4ef,0x4ec,0xbd0,0xaef,0xaf2,0xaec,0xaec,0xaec,0xaec,0xbc7,0xbc7,
+0xbc7,0xbc7,0xbcd,0xcfc,0xcf9,0xddd,0xde0,0xbca,0xde0,0xde0,0xde0,0xde0,0xddd,0xde0,0xde0,0xbc4,
+0x54c,0x54c,0x564,0x6e4,0x549,0x6e1,0x54c,0x561,0x549,0x6e4,0x55b,0x564,0x564,0x564,0x55b,0x55b,
+0x564,0x564,0x564,0x6ed,0x549,0x564,0x6e7,0x549,0x558,0x564,0x564,0x564,0x564,0x564,0x549,0x549,
+0x54f,0x6e1,0x6ea,0x549,0x564,0x549,0x6f0,0x549,0x564,0x552,0x56a,0x6f3,0x564,0x564,0x555,0x55b,
+0x564,0x564,0x567,0x564,0x55b,0x55e,0x55e,0x55e,0x55e,0xafe,0xafb,0xcff,0xdef,0xbeb,0xbee,0xbee,
+0xbe8,0xbe5,0xbe5,0xbe5,0xbe5,0xbee,0xbeb,0xbeb,0xbeb,0xbeb,0xbe2,0xbe5,0xdec,0xf03,0xf06,0xffc,
+0x116d,0x116d,0x116d,0x6f9,0x6f6,0x56d,0x570,0x570,0x570,0x570,0x570,0x6f6,0x6f9,0x6f9,0x6f6,0x570,
+0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x579,0x579,0x579,0x579,
+0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x573,0x573,0x573,0x573,0x573,0x573,
+0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57c,0x585,0x585,0x57f,0x57f,0x57f,0x582,0x57c,
+0x57f,0x57f,0x57c,0x57c,0x57c,0x57c,0x57f,0x57f,0x702,0x702,0x57c,0x57c,0x57f,0x57f,0x57f,0x57f,
+0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x582,0x582,0x582,0x57f,0x57f,0x705,0x57f,
+0x705,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57c,0x57f,0x57c,0x57c,0x57c,0x57c,0x57c,0x57c,
+0x57f,0x57f,0x57c,0x702,0x57c,0x57c,0x57c,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0x70b,0x588,0x70b,0x70b,
+0x58b,0x588,0x588,0x70b,0x70b,0x58b,0x588,0x70b,0x58b,0x588,0x588,0x70b,0x588,0x70b,0x597,0x594,
+0x588,0x70b,0x588,0x588,0x588,0x588,0x70b,0x588,0x588,0x70b,0x70b,0x70b,0x70b,0x588,0x588,0x70b,
+0x58b,0x70b,0x58b,0x70b,0x70b,0x70b,0x70b,0x70b,0x711,0x58e,0x70b,0x58e,0x58e,0x588,0x588,0x588,
+0x70b,0x70b,0x70b,0x70b,0x588,0x588,0x588,0x588,0x70b,0x70b,0x588,0x588,0x588,0x58b,0x588,0x588,
+0x58b,0x588,0x588,0x58b,0x70b,0x58b,0x588,0x588,0x70b,0x588,0x588,0x588,0x588,0x588,0x70b,0x588,
+0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x70e,0x70b,0x58b,0x588,
+0x70b,0x70b,0x70b,0x70b,0x588,0x588,0x70b,0x70b,0x588,0x58b,0x70e,0x70e,0x58b,0x58b,0x588,0x588,
+0x58b,0x58b,0x588,0x588,0x58b,0x58b,0x588,0x588,0x588,0x588,0x588,0x588,0x58b,0x58b,0x70b,0x70b,
+0x58b,0x58b,0x70b,0x70b,0x58b,0x58b,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
+0x588,0x70b,0x588,0x588,0x588,0x70b,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x70b,0x588,0x588,
+0x588,0x588,0x588,0x588,0x58b,0x58b,0x58b,0x58b,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
+0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x70b,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
+0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
+0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x58b,0x58b,0x58b,0x58b,0x588,0x588,0x588,0x588,
+0x588,0x588,0x58b,0x58b,0x58b,0x58b,0x588,0x591,0x588,0x588,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,
+0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0x59a,0xb07,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,
+0x5a6,0x5a3,0x5a6,0x5a3,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x714,0x59a,0x59a,0x59a,0x59a,0x59a,
+0x59a,0x59a,0x819,0x819,0x59a,0x59a,0x59a,0x59a,0x5a0,0x5a0,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,
+0x59d,0x81f,0x81c,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,0x59a,0x59a,0x59a,0xb07,0xbfa,0xb07,0xb07,0xb07,0x5a9,0x5a9,0x5a9,0x5a9,
+0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,
+0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x71d,0x71d,0x71d,0x71d,
+0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x5af,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,
+0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xd74,0x726,0x726,0x726,0x726,
+0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,
+0x5b2,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x726,0x726,0x726,0x726,
+0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x5b5,0x5b5,0x5b5,0x5b5,0x726,0x726,0x726,0x726,
+0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x729,0x729,0x729,0x729,
+0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x5b8,0x5b8,0x729,0x729,
+0x729,0x729,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0x72f,0x72f,0x5bb,0x72c,
+0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x5be,0x5be,0x5bb,0x5bb,0x5c1,0x5c1,0x5c1,0x5c1,0x72f,0x72f,
+0x5c1,0x5c1,0x732,0x72f,0x5bb,0x5bb,0x5bb,0x5bb,0x72f,0x72f,0x5c1,0x5c1,0x732,0x72f,0x5bb,0x5bb,
+0x5bb,0x5bb,0x72f,0x72f,0x72c,0x5bb,0x5c1,0x72f,0x5bb,0x5bb,0x72c,0x72f,0x72f,0x72f,0x5c1,0x5c1,
+0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x72f,0x72c,
+0x72f,0x72c,0x5bb,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5bb,0x5bb,0x72c,0xb0d,0xb0d,0xb0d,0xb0d,
+0xb0d,0xb0d,0xb0d,0xb0d,0xc00,0xc00,0xc00,0xc03,0xc03,0xc78,0xc78,0xc00,0x5cd,0x5cd,0x5cd,0x5cd,
+0x5ca,0x741,0x741,0x5c4,0x5c4,0x735,0x5c4,0x5c4,0x5c4,0x5c4,0x73b,0x735,0x5c4,0x5ca,0x5c4,0x5c4,
+0xd7d,0xd7d,0xc06,0xc06,0xdfe,0xb10,0x5c7,0x5c7,0x738,0x5d0,0x738,0x5c7,0x5ca,0x5c4,0x5ca,0x5ca,
+0x5c4,0x5c4,0x5ca,0x5c4,0x5c4,0x5c4,0x5ca,0x5c4,0x5c4,0x5c4,0x5ca,0x5ca,0x5c4,0x5c4,0x5c4,0x5c4,
+0x5c4,0x5c4,0x5c4,0x5c4,0x5ca,0x5cd,0x5cd,0x5c7,0x5c4,0x5c4,0x5c4,0x5c4,0x747,0x5c4,0x747,0x5c4,
+0x5c4,0x5c4,0x5c4,0x5c4,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,
+0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x744,0x741,0x5d3,0x744,
+0x735,0x73b,0x5ca,0x735,0x73e,0x735,0x735,0x5c4,0x735,0x741,0x5d3,0x741,0xb10,0xb10,0xc09,0xc09,
+0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc0c,0xc09,0xc09,0xdf5,0xeb5,0x5d6,0x5d6,0x5d6,0x5d6,
+0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,
+0x5d9,0x13c5,0x13c5,0x13c5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x1515,0x5df,0x5eb,0x5df,
+0x5df,0x13c5,0x5d9,0x5d9,0x5ee,0x5eb,0x13c8,0x13c8,0x5f1,0x5f1,0x5d9,0x5e5,0x5d9,0x5d9,0x5e5,0x5d9,
+0x5e5,0x5d9,0x5e5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5e5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
+0x13c5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5e5,0x5e5,0x5d9,0x5d9,0x5d9,
+0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x74d,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5e5,0x5d9,0x5d9,0x5e5,
+0x5d9,0x5d9,0x5d9,0x5d9,0x13c5,0x5d9,0x13c5,0x5d9,0x5d9,0x5d9,0x5d9,0x13c5,0x13c5,0x13c5,0x5d9,0x12c9,
+0x5d9,0x5d9,0x5d9,0x5e2,0x5e2,0x5e2,0x5e2,0x1347,0x1347,0x5d9,0x5dc,0x5e8,0x5ee,0x5d9,0x5d9,0x5d9,
+0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0x74a,0x74a,
+0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x5d9,0x5e5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
+0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x13c5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
+0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x13c5,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
+0x612,0x612,0x612,0x612,0x612,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x61b,0x61b,0x61b,0x61b,
+0x61b,0x61b,0x61b,0x61b,0x612,0x618,0x609,0x60c,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
+0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
+0x618,0x618,0x618,0x618,0x618,0x618,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,
+0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
+0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,
+0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,
+0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,
+0x618,0x612,0x618,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,
+0x615,0x61b,0x618,0x612,0x618,0x612,0x615,0x61b,0x618,0x612,0x618,0x612,0x615,0x61b,0x618,0x612,
+0x615,0x61b,0x618,0x612,0x618,0x612,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,
+0x134a,0x134a,0x134a,0x134a,0x618,0x612,0x618,0x612,0x618,0x612,0x615,0x61b,0x615,0x61b,0x618,0x612,
+0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,0x615,0x618,0x612,0x615,
+0x618,0x612,0x615,0x61b,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
+0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x615,0x615,0x615,0x615,0x615,
+0x615,0x615,0x615,0x615,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
+0x618,0x618,0x618,0x618,0x618,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
+0x612,0x612,0x612,0x612,0x615,0x615,0x612,0x615,0x612,0x615,0x612,0x612,0x615,0x612,0x612,0x615,
+0x612,0x615,0x612,0x612,0x615,0x612,0x615,0x615,0x612,0x612,0x612,0x615,0x612,0x612,0x612,0x612,
+0x612,0x615,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
+0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x615,0x615,0x612,0x612,0x615,0x612,0x615,0x612,
+0x612,0x612,0x612,0x612,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
+0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
+0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x61b,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
+0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
+0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,
+0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x618,0x618,0x618,
+0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x61e,0x61e,0x61e,0x61e,0x1008,0x1008,0x1008,0x1518,
+0x1518,0x1518,0x1518,0x1518,0x1518,0x1518,0x1722,0x1722,0x87f,0x885,0x885,0x891,0x891,0x882,0x879,0x882,
+0x879,0x882,0x879,0x882,0x879,0x882,0x879,0x882,0x62d,0x62d,0x627,0x62d,0x627,0x62d,0x627,0x62d,
+0x627,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,0x627,0x62a,
+0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,0x627,0x62d,0x627,0x62d,
+0x627,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,
+0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,
+0x630,0x62d,0x627,0x62a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,
+0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,
+0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,
+0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x720,0x720,0x720,0x720,0x720,0x720,
+0x720,0x720,0x720,0x720,0x720,0x720,0x723,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,
+0x720,0x720,0x720,0x720,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
+0x71d,0x71d,0x71d,0x71d,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,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,
+0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,
+0x750,0x750,0x750,0x750,0xc66,0x8e5,0x8df,0x8dc,0x8e2,0x8d9,0x765,0x768,0x768,0x768,0x768,0x768,
+0x768,0x768,0x768,0x768,0x8eb,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,
+0x765,0x765,0x765,0x765,0x765,0x765,0x8e8,0x8e8,0x76b,0x8fa,0x8fd,0x903,0x825,0x831,0x918,0x82e,
+0x8f1,0x8ee,0x8f1,0x8ee,0x8f7,0x8f4,0x8f7,0x8f4,0x8f1,0x8ee,0x82b,0x903,0x8f1,0x8ee,0x8f1,0x8ee,
+0x8f1,0x8ee,0x8f1,0x8ee,0x906,0x90f,0x90c,0x90c,0x771,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7a7,
+0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,
+0x7a7,0x7a7,0x7a7,0x774,0x78f,0x76e,0x795,0x798,0x792,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7a4,
+0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,
+0x7a4,0x7a4,0x7a4,0x774,0x78f,0x76e,0x78f,0xc69,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
 0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
-0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,
-0x8df,0x816,0x816,0x816,0x816,0x816,0x816,0xd35,0xd35,0xd35,0xd35,0x8e2,0x8e2,0x8e2,0x8e2,0x8e2,
-0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,
-0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,
-0x816,0x816,0xd35,0xd35,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,0x819,0x819,
-0x819,0x819,0x819,0x819,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,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,0x81c,0x81c,0xe64,0xe64,
-0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,
-0xe64,0xe64,0xe64,0xe64,0x10d4,0x10d4,0x10d4,0x10d4,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,
-0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,
-0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x822,0x822,0x81f,0x822,0x81f,0x822,
-0x822,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x822,0x81f,0x822,0x81f,0x822,
-0x822,0x81f,0x81f,0x822,0x822,0x822,0x81f,0x81f,0x81f,0x81f,0x1476,0x1476,0xc39,0xc39,0xc39,0xc39,
-0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0x8d6,0x8d6,0x8d6,0x8d6,
-0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,
-0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x12a8,0x12a8,0x12a8,0x12a8,
-0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0xd2c,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,
-0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,
-0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8dc,
-0x8d9,0x8dc,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,
-0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,
-0xc33,0xc33,0xc33,0xc33,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,
-0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,
-0x8df,0x8df,0x8df,0xd35,0x95d,0x93f,0x93f,0x93f,0x93f,0x939,0x93f,0x93f,0x951,0x93f,0x93f,0x93c,
-0x948,0x94e,0x94e,0x94e,0x94e,0x94e,0x951,0x939,0x945,0x939,0x939,0x939,0x930,0x930,0x939,0x939,
-0x939,0x939,0x939,0x939,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x939,0x939,
-0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x93c,0x930,0x939,0x930,0x939,0x930,0x94b,0x942,
-0x94b,0x942,0x95a,0x95a,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,
-0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,
-0x969,0x969,0x969,0x969,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,
-0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,
-0x96c,0x96c,0x96c,0x96c,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,
-0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,
-0x96f,0x96f,0x96f,0x96f,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,0x972,0x972,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,
-0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,
-0x97b,0x97b,0x975,0x975,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,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,
-0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,
-0x97b,0x97b,0x97b,0x97b,0x97e,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,
-0x97e,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,0xa0e,0xa0e,0xf96,0xa0e,
-0xa0e,0xa0e,0xa11,0xa0e,0xf96,0xa0e,0xa0e,0xf8d,0xa08,0x9fc,0x9fc,0x9fc,0x9fc,0xa0b,0x9fc,0xf7b,
-0xf7b,0xf7b,0x9fc,0x9ff,0xa08,0xa02,0xf81,0xf90,0xf90,0xf7b,0xf7b,0xf96,0xb01,0xb01,0xb01,0xb01,
-0xb01,0xb01,0xb01,0xb01,0xb01,0xb01,0xa14,0xa14,0xa05,0xa05,0xa05,0xa05,0xa0e,0xa0e,0xa0e,0xa0e,
-0xa0e,0xa0e,0xa0b,0xa0b,0x9fc,0x9fc,0xf96,0xf96,0xf96,0xf96,0xf7b,0xf7b,0xa0e,0xa0e,0xa0e,0xa0e,
-0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,
-0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xd86,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,
-0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2c,0xa32,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0x110d,
-0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110a,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,
-0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,
-0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa44,0xa44,0xa44,0xa44,
-0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,
-0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa68,0xa68,0xa68,0xa6b,
-0xa6b,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa50,0xa50,0xa65,0xa47,0xa47,0xa47,0xa47,0xa47,0xa47,0xa47,0xa65,0xa65,0xa68,0xa68,0xa68,0xa68,
-0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa74,0xa74,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa8c,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
-0xa89,0xa89,0xa89,0xa89,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,0xab3,0xab3,0xba6,
-0xba6,0xba6,0xba6,0xba6,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,
-0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,
-0xabf,0xabf,0xabf,0xabf,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,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,
-0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,
-0xad7,0xad7,0xad7,0xad7,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,
-0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,
-0xae6,0xae6,0xae6,0xae6,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,
-0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xaec,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,
-0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,
-0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xaef,0xaef,0xc36,0xc36,
-0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,
-0xc36,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xb10,0xb10,0xb10,0xb10,
-0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,
-0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0x14c4,0xb19,0xb19,0xb19,0xb19,
-0xb19,0xb19,0xcbd,0xcbd,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,
-0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xcba,0xcba,
-0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,
-0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,
-0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,
-0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,
-0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,
-0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb22,0xb2e,0xb34,0xb34,0xb34,0xb28,0xb28,0xb28,0xb31,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb34,0xb34,0xb34,0xb34,0xb34,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb2b,0xb2b,0xb34,0xb34,0xb34,0xb28,0xb28,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb34,0xb34,0xb34,0xb34,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0x16d1,0x16d1,0xb40,0xb37,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb37,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb37,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb37,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb37,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x12c3,0x12c3,0x12c3,0x12c3,0x12c3,0x816,
+0x82b,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x94e,0x94e,0x94e,0x94e,0x834,0x834,
+0x909,0x915,0x915,0x915,0x915,0x912,0x828,0x900,0xb34,0xb34,0xb34,0xc7b,0xc99,0xc96,0xb4f,0x8d6,
+0x83a,0x837,0x83a,0x83d,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x837,0x837,0x837,0x837,0x837,
+0x83a,0x83a,0x837,0x83a,0x83a,0x837,0x83a,0x83a,0x837,0x83a,0x83a,0x837,0x83a,0x83a,0x837,0x837,
+0xc9c,0x84c,0x846,0x84c,0x846,0x84c,0x846,0x84c,0x846,0x84c,0x846,0x846,0x849,0x846,0x849,0x846,
+0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,
+0x849,0x846,0x849,0x84c,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x846,0x846,0x846,0x846,0x846,
+0x849,0x849,0x846,0x849,0x849,0x846,0x849,0x849,0x846,0x849,0x849,0x846,0x849,0x849,0x846,0x846,
+0x846,0x846,0x846,0x84c,0x846,0x84c,0x846,0x84c,0x846,0x846,0x846,0x846,0x846,0x846,0x84c,0x846,
+0x846,0x846,0x846,0x846,0x849,0x84c,0x84c,0x849,0x849,0x849,0x849,0x91e,0x921,0x84f,0x852,0xc84,
+0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
+0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
+0x85b,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
+0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,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,0xd86,0xd86,0xeb8,0x85e,0x92a,0x92a,0x92a,0x92a,
+0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0xd80,0xd80,0xd80,0xd80,0x867,0x867,0x867,0x867,
+0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x933,0x933,0x933,0x933,
+0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x86a,0x86a,0x86a,
+0x86a,0x86a,0x86a,0xd89,0xd89,0xd89,0xd89,0x936,0x936,0x936,0x936,0x936,0x86a,0x86a,0x86a,0x86a,
+0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,
+0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0xd89,0xd89,
+0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,
+0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,
+0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,
+0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,
+0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,
+0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,
+0x112b,0x112b,0x112b,0x112b,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,
+0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,
+0x873,0x873,0x873,0x873,0x873,0x873,0x876,0x876,0x873,0x876,0x873,0x876,0x876,0x873,0x873,0x873,
+0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x876,0x873,0x876,0x873,0x876,0x876,0x873,0x873,0x876,
+0x876,0x876,0x873,0x873,0x873,0x873,0x14cd,0x14cd,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,
+0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,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,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x12ff,0x12ff,0x12ff,0x12ff,0x12a8,0x12a8,0x12a8,0x12a8,
+0x12a8,0x12a8,0x12a8,0x12a8,0xd80,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,
+0xc87,0xc87,0xc87,0xc87,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,
+0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x930,0x92d,0x930,0x92d,0x92d,
+0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,
+0x92d,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,
+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,0xd89,
+0x9b1,0x993,0x993,0x993,0x993,0x98d,0x993,0x993,0x9a5,0x993,0x993,0x990,0x99c,0x9a2,0x9a2,0x9a2,
+0x9a2,0x9a2,0x9a5,0x98d,0x999,0x98d,0x98d,0x98d,0x984,0x984,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,
+0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,
+0x98d,0x98d,0x98d,0x98d,0x990,0x984,0x98d,0x984,0x98d,0x984,0x99f,0x996,0x99f,0x996,0x9ae,0x9ae,
+0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,
+0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,
+0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
+0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
+0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,
+0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,
+0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,
+0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9c6,0x9c6,
+0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,
+0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9c9,0x9c9,
+0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,
+0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,
+0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,
+0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,
+0x9d2,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,
+0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d2,0x9d5,0x9d5,0x9d5,
+0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,
+0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0xa62,0xa62,0xfed,0xa62,0xa62,0xa62,0xa65,0xa62,
+0xfed,0xa62,0xa62,0xfe4,0xa5c,0xa50,0xa50,0xa50,0xa50,0xa5f,0xa50,0xfd2,0xfd2,0xfd2,0xa50,0xa53,
+0xa5c,0xa56,0xfd8,0xfe7,0xfe7,0xfd2,0xfd2,0xfed,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,
+0xb55,0xb55,0xa68,0xa68,0xa59,0xa59,0xa59,0xa59,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa5f,0xa5f,
+0xa50,0xa50,0xfed,0xfed,0xfed,0xfed,0xfd2,0xfd2,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,
+0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
+0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
+0xa77,0xa77,0xa77,0xdda,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
+0xa77,0xa77,0xa77,0xa77,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,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
+0xa83,0xa80,0xa86,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0x1164,0x1164,0x1164,0x1164,0x1164,
+0x1164,0x1164,0x1164,0x1164,0x1161,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
+0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
+0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,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,0xa98,0xa98,0xa98,0xabc,0xabc,0xabc,0xabf,0xabf,0xabc,0xabc,0xabc,
+0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xaa4,0xaa4,0xab9,0xa9b,
+0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xab9,0xab9,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,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xadd,0xadd,0xadd,0xadd,0xadd,0xac8,0xac8,0xadd,
+0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
+0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
+0xadd,0xadd,0xadd,0xae0,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
+0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
+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,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+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,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
+0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
 0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,
 0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
 0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
-0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
 0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xb40,0xb40,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,
-0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,
-0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
-0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
-0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
-0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
-0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,
-0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba3,0xba6,
-0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xcae,
-0xcb1,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xeb8,0xeb8,0xeb8,0xeb8,
-0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,
-0xcb4,0xcb4,0xda4,0xe5b,0xda4,0xda4,0xda4,0xda4,0xda1,0xda4,0xda1,0xda4,0xda4,0xfab,0x1242,0x1242,
-0xdad,0xdad,0xdad,0xdad,0xdad,0xdb3,0xdb0,0xeca,0xeca,0xeca,0xeca,0x13bf,0xfbd,0x13bf,0x12fc,0x12fc,
-0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,
-0xbeb,0xbeb,0xc1b,0xc18,0xc1b,0xc18,0xc1b,0xc18,0x10ce,0x10cb,0xfc3,0xfc0,0xbee,0xbee,0xbee,0xbee,
-0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbf1,0xbf1,0xbf1,0xbf1,
-0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,
-0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf4,0xbf4,0xbf1,0xbf1,
-0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf7,0xbf7,0xbf7,0xbfd,0xbfa,0xc21,0xc1e,0xbfd,
-0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,
-0xbfa,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
-0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
-0xbf7,0xbf7,0xbf7,0xbf7,0xbfd,0xbfa,0xbfd,0xbfa,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
-0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
-0xbf7,0xbf7,0xbf7,0xbf7,0xbfd,0xbfa,0xbf7,0xbf7,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
-0xc00,0xc00,0xc00,0xc00,0xc06,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
-0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
-0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc06,0xc06,0xc06,0xc00,0xc00,0xc00,0xc00,0xc00,
-0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
-0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc03,0xc00,0xc00,0xc00,0xc39,0xc39,0xc39,0xc39,
-0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,
-0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xcb7,0xd26,0xda1,0xda1,
-0xda1,0xda1,0xda1,0xda1,0xda1,0xda1,0xe5b,0xe5b,0xda1,0xda1,0xda1,0xda1,0xda4,0xda4,0xebb,0xfab,
-0xfab,0xfab,0xfab,0xfab,0xfab,0xfab,0xfab,0xfab,0xfab,0x126f,0x126f,0x1245,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,0xcea,0xcea,0xcea,0xcea,
-0xcea,0xcea,0xce1,0xce1,0xce1,0xce1,0xce1,0xcde,0xcf3,0xcf3,0xcf3,0xced,0xcf3,0xcf3,0xcf3,0xcf3,
-0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xced,0xcf3,0xcf3,0xcf3,0xcf3,0xce7,0xce7,0xcf0,0xcf0,
-0xcf0,0xcf0,0xce4,0xce4,0xce4,0xce4,0xce4,0xcea,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,
-0xdb9,0xdb9,0xdb9,0xdb9,0xdb6,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xcf3,0xcf3,0xcf3,0xcf3,
-0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xced,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,
-0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xce7,0xce7,0xce7,0xcea,0xcea,0xcea,0xcea,
-0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,
-0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcf6,0xcf6,0xcf6,0xcf6,
-0xcf6,0xcf9,0xcf9,0xcf9,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,
-0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0x10d7,0x10d7,0xfc6,0xfc6,0xfc6,0xcfc,0xcfc,0xcfc,0xcfc,
-0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,
-0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,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,0xd0b,0xd0b,0xd0b,0xd0b,
-0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,
-0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd17,0xd17,0xd17,0xd17,
-0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,
-0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd23,0xd23,0xd23,0xd23,
-0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,
-0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xdc2,0xdc2,0xdc2,0xdc2,
-0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,
-0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc8,0xdc8,0xdc8,0xdc8,
-0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
-0xdc8,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc8,0xdc8,0xdc8,0xdc8,
-0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
-0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xe88,0xe88,0xdda,0xdda,
-0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xfd2,0xfd2,0xfd2,0xfd2,0xfd2,0xfcf,0xfcf,0xfcf,0xfcf,
-0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xde9,0xde6,0xde9,0xde6,
-0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,
-0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xdf5,0xdf5,0xdf5,0xdf5,
-0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
-0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdfb,0xdfb,0xdfb,0xdfb,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xe13,0xe13,0xe13,0xe13,
-0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,
-0xe13,0xe13,0xe13,0xed3,0xed3,0xed3,0xed3,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,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,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe25,0xe25,0xe25,0xe25,
-0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,
-0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe2e,0xe2e,0xe2e,0xe2e,
-0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
-0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe28,0xe2b,0xe2b,0xe2b,0xe2b,
-0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,
-0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe37,0xe37,0xe37,0xe37,
-0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,
-0xe34,0xe34,0xe31,0xe3a,0xfe1,0xfdb,0xfea,0xfd8,0xe37,0xe37,0xfd8,0xfd8,0xe4c,0xe4c,0xe3d,0xe4c,
-0xe4c,0xe4c,0xe43,0xe4c,0xe4c,0xe4c,0xe4c,0xe3d,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,
-0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,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,0xe85,0xe85,0xe85,0xe85,
-0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0x10e0,0x10e0,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0xecd,0xecd,0xecd,0xecd,
-0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc9,0xfc9,0xfc9,0xfc9,
-0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xeee,0xeee,0xeee,0xeee,
-0xf00,0xf09,0xf0c,0xf09,0xf0c,0xf09,0xf0c,0xf09,0xf0c,0xf09,0xf0c,0xf09,0xf09,0xf09,0xf0c,0xf09,
-0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
-0xf09,0xf09,0xf09,0xf09,0xef1,0xf00,0xeee,0xeee,0xeee,0xeee,0xeee,0xf03,0xeee,0xf03,0xf00,0xf00,
-0xf15,0xf12,0xf15,0xf15,0xf15,0xf12,0xf12,0xf15,0xf12,0xf15,0xf12,0xf15,0xf12,0xffc,0xffc,0xffc,
-0x1137,0xff3,0xffc,0xff3,0xf12,0xf15,0xf12,0xf12,0xff3,0xff3,0xff3,0xff3,0xff6,0xff9,0x1137,0x1137,
-0xf18,0xf18,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,
-0x1005,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,
-0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,
-0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,
-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,
-0xf2d,0xf2d,0xf2d,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,
-0x14f7,0x14f7,0x14f7,0x14f7,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,
-0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,
-0xf33,0xf33,0xf33,0xf33,0xf7b,0xf96,0xf8d,0xf8a,0xf8a,0xf96,0xf96,0xf8d,0xf8d,0xf8a,0xf8a,0xf8a,
-0xf8a,0xf8a,0xf96,0xf96,0xf96,0xf7b,0xf7b,0xf7b,0xf7b,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,
-0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf7b,0xf8d,0xf90,0xf7b,0xf7b,0xf93,0xf93,0xf93,0xf93,0xf93,
-0xf93,0xf7e,0xf96,0xf93,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0x1101,0x1101,
-0x10fe,0x10fb,0xf84,0xf84,0xfae,0xfae,0xfae,0xfae,0x126f,0x126f,0x1245,0x1245,0x124b,0x1242,0x1242,0x1242,
-0x1242,0x1245,0x136b,0x124b,0x1245,0x124b,0x1242,0x124b,0x126f,0x1242,0x1242,0x1242,0x1245,0x1245,0x1242,0x1242,
-0x1245,0x1242,0x1242,0x1245,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc6,0xfc6,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,
-0xfc9,0x14d0,0x14d0,0x14d0,0x10d7,0xfc6,0xfc6,0xfc6,0xfc6,0x127b,0x1254,0x1254,0x1254,0x1254,0x14d0,0x14d0,
-0x14d0,0x14d0,0x14d0,0x14d0,0xfe7,0xfe7,0xfe4,0xfde,0xfe4,0xfde,0xfe4,0xfde,0xfe4,0xfde,0xfdb,0xfdb,
-0xfdb,0xfdb,0xff0,0xfed,0xfdb,0x1134,0x13cb,0x13ce,0x13ce,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13d1,0x13d1,
-0x14eb,0x14df,0x14df,0x14dc,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x1002,0xfff,0xfff,0x100e,
-0x1005,0x130b,0x1308,0x16da,0x130b,0x1308,0x13da,0x13d7,0x14ee,0x14ee,0x14f4,0x14ee,0x14f4,0x14ee,0x14f4,0x14ee,
-0x14f4,0x14ee,0x14f4,0x14ee,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,
-0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,
-0x100e,0x1005,0x100e,0x1005,0x1008,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x100e,0x1005,0x100e,
-0x1005,0x100e,0x100e,0x1005,0x1011,0x1011,0x1017,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,0x1017,0x1011,0x1011,0x1011,0x1011,0x1017,0x1017,0x1011,0x1011,0x101a,0x13e3,
-0x13e0,0x13e0,0x101d,0x101d,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x13e6,0x13e6,
-0x13e6,0x13e6,0x13e6,0x13e6,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,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,
-0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103e,0x103e,0x103e,0x1041,
-0x103e,0x103e,0x1044,0x1044,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,0x1047,
-0x1047,0x1047,0x1047,0x1047,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,
-0x1053,0x104a,0x1059,0x1056,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,
-0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,
-0x1050,0x1050,0x1050,0x1050,0x1311,0x130e,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,
-0x106b,0x1065,0x1068,0x10e9,0x105c,0x105c,0x105c,0x1062,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,
-0x105f,0x105f,0x1062,0x106e,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,
-0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,
-0x106b,0x1065,0x106b,0x1065,0x1503,0x1500,0x1503,0x1500,0x1506,0x1506,0x16e3,0x13e9,0x1077,0x1077,0x107a,0x107a,
-0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,
-0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x1077,0x1077,0x1077,0x1077,
-0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1080,0x1080,
-0x1080,0x1080,0x1080,0x1083,0x1083,0x1083,0x10dd,0x108c,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,
-0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,
-0x1086,0x1086,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,
-0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,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,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,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,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10c5,0x10c5,0x10c5,0x10c5,0x10da,0x10c5,0x10c5,0x10c5,
-0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,
-0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,
-0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,
-0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,
-0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1140,0x1140,
-0x1143,0x1143,0x1149,0x1140,0x1140,0x1140,0x1140,0x1140,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,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,
-0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,
-0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
-0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
-0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1170,0x1176,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
-0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
-0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1191,0x1191,0x1191,0x11a0,0x11a6,0x11a6,0x11a6,0x11a6,
-0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,
-0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x1194,0x11a0,0x11a0,0x1191,0x1191,
-0x1191,0x1191,0x11a0,0x11a0,0x1191,0x11a0,0x11a0,0x11a0,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,
-0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b5,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11ac,
-0x11ac,0x11ac,0x11b2,0x11af,0x150c,0x150f,0x1512,0x1512,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
-0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11b8,0x11c4,0x11b8,0x11b8,0x11b8,0x11cd,0x11cd,0x11b8,
-0x11b8,0x11cd,0x11c4,0x11cd,0x11cd,0x11c4,0x11b8,0x11bb,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
-0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
-0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,
-0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,
-0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,
-0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,
-0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f4,0x11f4,0x11f4,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,
-0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,
-0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,
-0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,
-0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,
-0x122a,0x122a,0x122a,0x122d,0x122a,0x122a,0x122a,0x122a,0x1227,0x1227,0x1227,0x121b,0x121b,0x121b,0x121b,0x1227,
-0x1227,0x1221,0x121e,0x1224,0x1224,0x1215,0x1230,0x1230,0x1218,0x1218,0x1227,0x122a,0x122a,0x122a,0x122a,0x122a,
-0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,
-0x122a,0x122a,0x122d,0x122a,0x122d,0x122a,0x122a,0x122a,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
-0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
-0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1239,0x1239,0x1239,0x1236,0x1236,0x1236,0x1233,0x1233,
-0x1233,0x1233,0x1236,0x1233,0x1233,0x1233,0x1239,0x1236,0x1239,0x1236,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
-0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
-0x1233,0x1233,0x1233,0x1233,0x1233,0x1239,0x1236,0x1236,0x1233,0x1233,0x1233,0x1233,0x1245,0x1245,0x12ed,0x1242,
-0x12ed,0x12ed,0x12ed,0x12ed,0x1242,0x1248,0x126f,0x1242,0x1242,0x1242,0x1242,0x1242,0x1248,0x124b,0x126f,0x126f,
-0x124b,0x126f,0x1242,0x124b,0x124b,0x124e,0x126f,0x1242,0x1242,0x126f,0x1245,0x1245,0x135c,0x135c,0x135c,0x135c,
-0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x1257,0x1257,0x1257,0x1257,0x1377,0x1356,0x1260,0x1377,0x1377,0x1377,
-0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x180f,0x180f,0x180f,0x180f,0x180f,0x135f,0x135f,0x1266,0x135f,
-0x135f,0x135f,0x1266,0x135f,0x135f,0x135f,0x1260,0x1260,0x1260,0x1260,0x1260,0x1359,0x135c,0x135c,0x135c,0x135c,
-0x135c,0x135c,0x135c,0x1263,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x1263,0x128d,0x128d,0x128d,0x128d,
-0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,
-0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x132f,0x132f,0x132f,0x132f,
-0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,
-0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x1344,0x1335,0x1344,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,0x1335,0x1335,0x1335,0x1335,
-0x1335,0x1335,0x1335,0x1335,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,
-0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,
-0x134d,0x134d,0x134d,0x134d,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
-0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
-0x1353,0x1353,0x1353,0x1353,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1389,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x1389,0x138c,0x138c,0x138c,0x1389,0x138c,0x1389,0x138c,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,0x1395,0x138c,
-0x138c,0x138c,0x138c,0x1389,0x138c,0x1389,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1389,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1389,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x151e,0x151e,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x1527,0x1521,0x1521,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1764,0x1764,0x1764,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1527,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x1527,0x1764,0x1764,0x138c,0x138c,0x138c,0x138c,0x138c,0x1395,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1521,0x1521,0x1527,0x1527,
-0x1521,0x1527,0x1527,0x1527,0x151e,0x151e,0x1527,0x1527,0x138c,0x138c,0x1392,0x1395,0x1395,0x1698,0x138c,0x1392,
-0x138c,0x138c,0x1395,0x1530,0x152d,0x1527,0x1527,0x1764,0x1764,0x1764,0x1764,0x1764,0x1527,0x1527,0x1527,0x1527,
-0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1521,0x1521,0x1527,0x1698,0x1527,0x1521,0x1527,
-0x1764,0x1764,0x1764,0x1767,0x1767,0x1767,0x1767,0x1767,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1527,0x138c,0x1527,0x1395,0x1395,0x138c,0x138c,0x1395,0x1395,
-0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1398,0x1398,0x1398,0x1398,0x1392,0x1392,
-0x1392,0x1392,0x1395,0x1392,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x138c,0x138c,0x138c,
-0x1395,0x138c,0x138c,0x138c,0x138c,0x1395,0x1395,0x1395,0x138c,0x1395,0x1395,0x1395,0x138c,0x138c,0x138c,0x138f,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1698,0x138c,0x138c,0x138c,0x138c,0x1527,0x1521,0x1764,
-0x13ef,0x13ef,0x13ef,0x13ef,0x151e,0x151e,0x151e,0x151e,0x151e,0x1524,0x1527,0x1764,0x1764,0x1764,0x1764,0x16ec,
-0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1527,0x1521,0x1521,0x1527,0x152d,0x1530,0x1527,0x1527,
-0x1527,0x1527,0x1818,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1521,0x1527,0x1521,0x1521,0x1521,0x1521,
-0x152a,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1521,0x1521,0x1521,0x1527,0x151e,0x151e,0x151e,0x151e,
-0x151e,0x151e,0x1527,0x138c,0x138c,0x138c,0x138c,0x138c,0x1479,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,
-0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x1479,0x139b,0x139b,0x139b,0x1479,0x139b,0x1479,
-0x139b,0x1479,0x139b,0x1479,0x139b,0x139b,0x139b,0x1479,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x1479,0x1479,
-0x139b,0x139b,0x139b,0x139b,0x1479,0x139b,0x1479,0x1479,0x139b,0x139b,0x139b,0x139b,0x1479,0x139b,0x139b,0x139b,
-0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x169e,0x169e,0x176a,0x176a,0x139e,0x139e,0x139e,
-0x139b,0x139b,0x139b,0x139e,0x139e,0x139e,0x139e,0x139e,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
-0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,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,0x13a1,0x13a1,0x13a1,0x13a4,0x13a1,0x13a1,0x13a1,0x13a1,
-0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a4,0x13a4,0x13a4,0x13a1,
-0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,
-0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,
-0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x1797,0x1797,0x1794,0x16ef,0x13f5,0x13f5,0x13f5,0x13f5,
-0x13f5,0x13f5,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,
-0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x1539,0x1401,0x1401,0x1401,0x1413,0x1413,0x1413,0x1413,0x1413,
-0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,
-0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,
-0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,
-0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,
-0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,
-0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x143d,0x143d,0x1449,0x144f,0x144f,0x144f,0x144f,0x144f,
-0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,
-0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x1449,0x1449,0x1449,0x143d,0x143d,
-0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x1449,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,0x1521,0x1521,0x1527,0x1527,0x1527,0x1521,0x1521,0x1521,
-0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1527,0x1527,0x151e,0x151e,0x151e,0x151e,
-0x151e,0x151e,0x151e,0x151e,0x1527,0x1527,0x1527,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,
-0x1521,0x1521,0x1527,0x1527,0x1527,0x1527,0x1521,0x1521,0x1530,0x1521,0x1521,0x1521,0x1521,0x169b,0x169b,0x1521,
-0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1815,0x1527,0x1521,0x1521,0x1527,0x1521,0x1521,0x1521,
-0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1527,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,
-0x1527,0x1521,0x1521,0x1521,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,0x1551,0x1551,0x1551,
-0x1551,0x1551,0x1551,0x1551,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,
-0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,
-0x1563,0x1563,0x1563,0x1563,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,0x1569,0x1569,0x1569,
-0x1569,0x1569,0x1569,0x1569,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
-0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
-0x156c,0x156c,0x156c,0x156c,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,
-0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,
-0x15ab,0x15ab,0x15ab,0x159c,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,
-0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15ae,
-0x15b7,0x15b7,0x15b7,0x15b7,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,
-0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,
-0x15ba,0x15ba,0x15ba,0x15ba,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15cc,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
-0x15d5,0x15d5,0x15d5,0x15d5,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,
-0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,
-0x15de,0x15de,0x15de,0x15de,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,
-0x15f0,0x15f0,0x15f0,0x15f0,0x15ed,0x15ed,0x15ed,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15ed,
-0x15ed,0x15e1,0x15ed,0x15e4,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,
-0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,
-0x15f0,0x15f0,0x15f0,0x15f0,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,0x1611,0x1611,0x1611,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
-0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1623,0x1623,0x1623,0x1620,0x1620,0x1620,
-0x161d,0x161d,0x161d,0x161d,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
-0x1632,0x1632,0x1632,0x1632,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1638,0x1638,0x162c,0x1629,0x1629,
-0x1629,0x1629,0x1629,0x1629,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb43,0xb43,0xc8a,0xc8a,0xb43,0xb43,0xb43,0xb43,
+0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xc8a,0xb43,0xb43,0xb43,
+0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
+0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
+0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0x151b,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xd11,0xd11,
+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,0xd0e,0xd0e,0xd5f,0xd5f,0xd5f,0xd5f,
+0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xb6d,0xb6d,0xb6d,0xb6d,
+0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,
+0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb70,0xb70,0xb70,0xb70,
+0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,
+0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb7f,0xb7f,0xb7f,0xb7f,
+0xb7f,0xb76,0xb82,0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb7c,0xb85,0xb79,0xb79,0xb79,0xb79,0xb79,0xb73,
+0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb88,0xb88,0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,
+0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb88,0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0x1725,0x1725,0xb94,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,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,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
+0xb94,0xb94,0xb94,0xb94,0xb94,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb8e,0xb8e,0xb8e,0xb8e,
+0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,
+0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,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,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,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,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
+0xb94,0xb94,0xb94,0xb94,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,
+0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,
+0xb97,0xb97,0xb97,0xb97,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
+0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
+0xb9d,0xb9d,0xb9d,0xb9d,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,0xba0,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
+0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbf7,0xbfa,0xbf7,0xbf7,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xd02,0xd05,0xdf2,0xdf2,0xdf2,
+0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xf0f,0xf0f,0xf0f,0xf0f,0xc09,0xc09,0xc09,0xc09,
+0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xdf8,0xeb2,
+0xdf8,0xdfb,0xdfb,0xdf8,0xdf5,0xdf8,0xdf5,0xdf8,0xdf8,0x1002,0x1299,0x1299,0xe04,0xe04,0xe04,0xe04,
+0xe04,0xe0a,0xe07,0xf21,0xf21,0xf21,0xf21,0x1416,0x1014,0x1416,0x1353,0x1353,0xc3f,0xc3f,0xc3f,0xc3f,
+0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc6f,0xc6c,
+0xc6f,0xc6c,0xc6f,0xc6c,0x1125,0x1122,0x101a,0x1017,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,
+0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,
+0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,
+0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc48,0xc48,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,
+0xc45,0xc45,0xc45,0xc45,0xc4b,0xc4b,0xc4b,0xc51,0xc4e,0xc75,0xc72,0xc51,0xc4e,0xc51,0xc4e,0xc51,
+0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc4b,0xc4b,0xc4b,
+0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,
+0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,
+0xc51,0xc4e,0xc51,0xc4e,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,
+0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,
+0xc51,0xc4e,0xc4b,0xc4b,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,
+0xc5a,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,0xc54,0xc54,0xc54,0xc5a,0xc5a,0xc5a,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,0xc57,0xc54,0xc54,0xc54,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,
+0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,
+0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xd0b,0xd7a,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
+0xdf5,0xdf5,0xeb2,0xeb2,0xdf5,0xdf5,0xdf5,0xdf5,0xdf8,0xdf8,0xf12,0x1002,0x1002,0x1002,0x1002,0x1002,
+0x1002,0x1002,0x1002,0x1002,0x1002,0x12c6,0x12c6,0x129c,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
+0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
+0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd35,0xd35,
+0xd35,0xd35,0xd35,0xd32,0xd47,0xd47,0xd47,0xd41,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
+0xd47,0xd47,0xd47,0xd41,0xd47,0xd47,0xd47,0xd47,0xd3b,0xd3b,0xd44,0xd44,0xd44,0xd44,0xd38,0xd38,
+0xd38,0xd38,0xd38,0xd3e,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,
+0xe0d,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
+0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd41,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
+0xd47,0xd47,0xd47,0xd47,0xd47,0xd3b,0xd3b,0xd3b,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,
+0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,
+0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4d,0xd4d,0xd4d,
+0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xf24,0xf24,0xf24,0xf24,
+0xf24,0xf24,0xf24,0x112e,0x112e,0x101d,0x101d,0x101d,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,
+0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,
+0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,
+0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,
+0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,
+0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,
+0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
+0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
+0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,
+0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,
+0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,
+0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,
+0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
+0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1c,0xe1c,0xe1c,
+0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
+0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
+0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xedf,0xedf,0xe31,0xe31,0xf27,0xf27,0xf27,0xf27,
+0xf27,0xf27,0xf27,0x1029,0x1029,0x1029,0x1029,0x1029,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,
+0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,
+0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,
+0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,
+0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,
+0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,
+0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,
+0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,
+0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xf2a,
+0xf2a,0xf2a,0xf2a,0x102c,0x102c,0x102c,0x102c,0x102c,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,
+0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,
+0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
+0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
+0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,
+0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,
+0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe7f,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
+0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
+0xe82,0xe82,0xe82,0xe85,0xe85,0xe85,0xe85,0xe85,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,
+0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8b,0xe8b,0xe8b,0xe8b,0xe8b,0xe8b,0xe8b,0xe8b,0xe88,0xe91,
+0x1038,0x1032,0x1041,0x102f,0xe8e,0xe8e,0x102f,0x102f,0xea3,0xea3,0xe94,0xea3,0xea3,0xea3,0xe9a,0xea3,
+0xea3,0xea3,0xea3,0xe94,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,
+0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,
+0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,
+0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,
+0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,
+0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,
+0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0xf24,0xf24,0xf24,0xf24,0x101d,0x101d,0x101d,0x101d,
+0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,
+0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0xf45,0xf45,0xf45,0xf45,0xf57,0xf60,0xf63,0xf60,
+0xf63,0xf60,0xf63,0xf60,0xf63,0xf60,0xf63,0xf60,0xf60,0xf60,0xf63,0xf60,0xf60,0xf60,0xf60,0xf60,
+0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,
+0xf48,0xf57,0xf45,0xf45,0xf45,0xf45,0xf45,0xf5a,0xf45,0xf5a,0xf57,0xf57,0xf6c,0xf69,0xf6c,0xf6c,
+0xf6c,0xf69,0xf69,0xf6c,0xf69,0xf6c,0xf69,0xf6c,0xf69,0x1053,0x1053,0x1053,0x118e,0x104a,0x1053,0x104a,
+0xf69,0xf6c,0xf69,0xf69,0x104a,0x104a,0x104a,0x104a,0x104d,0x1050,0x118e,0x118e,0xf6f,0xf6f,0x1065,0x105c,
+0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x105c,0x105c,0x1065,0x105c,
+0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0xf75,0xf75,0xf75,0xf75,
+0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,
+0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf84,0xf84,0xf84,0xf84,
+0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,
+0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0x154e,
+0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,
+0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,
+0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,
+0xfd2,0xfed,0xfe4,0xfe1,0xfe1,0xfed,0xfed,0xfe4,0xfe4,0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfed,0xfed,
+0xfed,0xfd2,0xfd2,0xfd2,0xfd2,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,
+0xfed,0xfed,0xfd2,0xfe4,0xfe7,0xfd2,0xfd2,0xfea,0xfea,0xfea,0xfea,0xfea,0xfea,0xfd5,0xfed,0xfea,
+0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0x1158,0x1158,0x1155,0x1152,0xfdb,0xfdb,
+0x1005,0x1005,0x1005,0x1005,0x12c6,0x12c6,0x129c,0x129c,0x12a2,0x1299,0x1299,0x1299,0x1299,0x129c,0x13c2,0x12a2,
+0x129c,0x12a2,0x1299,0x12a2,0x12c6,0x1299,0x1299,0x1299,0x129c,0x129c,0x1299,0x1299,0x129c,0x1299,0x1299,0x129c,
+0x1020,0x1020,0x1020,0x1020,0x1020,0x101d,0x101d,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1527,0x1527,0x1527,
+0x112e,0x101d,0x101d,0x101d,0x101d,0x12d2,0x12ab,0x12ab,0x12ab,0x12ab,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
+0x103e,0x103e,0x103b,0x1035,0x103b,0x1035,0x103b,0x1035,0x103b,0x1035,0x1032,0x1032,0x1032,0x1032,0x1047,0x1044,
+0x1032,0x118b,0x1422,0x1425,0x1425,0x1422,0x1422,0x1422,0x1422,0x1422,0x1428,0x1428,0x1542,0x1536,0x1536,0x1533,
+0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1059,0x1056,0x1056,0x1065,0x105c,0x1362,0x135f,0x172e,
+0x1362,0x135f,0x1431,0x142e,0x1545,0x1545,0x154b,0x1545,0x154b,0x1545,0x154b,0x1545,0x154b,0x1545,0x154b,0x1545,
+0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,
+0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,
+0x105f,0x105c,0x105c,0x105c,0x105c,0x105c,0x105c,0x105c,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x1065,0x105c,
+0x1068,0x1068,0x106e,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,
+0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,
+0x1074,0x106e,0x1068,0x1068,0x1068,0x1068,0x106e,0x106e,0x1068,0x1068,0x1071,0x143a,0x1437,0x1437,0x1074,0x1074,
+0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,
+0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,
+0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,
+0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,
+0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1095,0x1095,0x1095,0x1098,0x1095,0x1095,0x109b,0x109b,
+0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,
+0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,
+0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10aa,0x10a1,0x10b0,0x10ad,
+0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,
+0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,
+0x1368,0x1365,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10bf,0x1140,
+0x10b3,0x10b3,0x10b3,0x10b9,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x10b6,0x10b6,0x10b9,0x10c5,
+0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,
+0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,
+0x155a,0x1557,0x155a,0x1557,0x155d,0x155d,0x1737,0x1440,0x10ce,0x10ce,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,
+0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,
+0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,
+0x10ce,0x10ce,0x10ce,0x10ce,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10da,
+0x10da,0x10da,0x1134,0x10e3,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,
+0x10f2,0x10f2,0x10f2,0x10f2,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10e0,0x10e0,
+0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,
+0x10e0,0x10e0,0x10e0,0x10e0,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,0x1101,
+0x1101,0x1101,0x1101,0x1101,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,0x1113,
+0x1113,0x1113,0x1113,0x1113,0x111c,0x111c,0x111c,0x111c,0x1131,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,
+0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,
+0x111c,0x111c,0x111c,0x111c,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,0x111f,0x111f,0x111f,
+0x111f,0x111f,0x111f,0x111f,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,
+0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x1197,0x1197,0x119a,0x119a,0x11a0,0x1197,
+0x1197,0x1197,0x1197,0x1197,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,
+0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,
+0x11a3,0x11a3,0x11a3,0x11a3,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,0x11be,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,
+0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,
+0x11ca,0x11ca,0x11c7,0x11cd,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,
+0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,
+0x11d9,0x11d9,0x11d9,0x11d9,0x11e8,0x11e8,0x11e8,0x11f7,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,
+0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,
+0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11eb,0x11f7,0x11f7,0x11e8,0x11e8,0x11e8,0x11e8,0x11f7,0x11f7,
+0x11e8,0x11f7,0x11f7,0x11f7,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,
+0x1209,0x1209,0x1209,0x1209,0x120c,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1203,0x1203,0x1203,0x1209,0x1206,
+0x1563,0x1566,0x1569,0x1569,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,
+0x121b,0x121b,0x121b,0x121b,0x120f,0x121b,0x120f,0x120f,0x120f,0x1224,0x1224,0x120f,0x120f,0x1224,0x121b,0x1224,
+0x1224,0x121b,0x120f,0x1212,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,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,
+0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,
+0x1236,0x1236,0x1236,0x1236,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
+0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
+0x124e,0x124b,0x124b,0x124b,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,
+0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,
+0x1257,0x1257,0x1257,0x1257,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,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1284,
+0x1281,0x1281,0x1281,0x1281,0x127e,0x127e,0x127e,0x1272,0x1272,0x1272,0x1272,0x127e,0x127e,0x1278,0x1275,0x127b,
+0x127b,0x126c,0x1287,0x1287,0x126f,0x126f,0x127e,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,
+0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1284,0x1281,
+0x1284,0x1281,0x1281,0x1281,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x128a,0x128a,0x128a,0x1290,0x1290,0x1290,0x128d,0x128d,0x128d,0x128a,0x128a,0x128a,0x128a,0x128d,0x128a,
+0x128a,0x128a,0x1290,0x128d,0x1290,0x128d,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x1290,0x128d,0x128d,0x128a,0x128a,0x128a,0x128a,0x129c,0x129c,0x1344,0x1299,0x1344,0x1344,0x1344,0x1344,
+0x1299,0x129f,0x12c6,0x1299,0x1299,0x1299,0x1299,0x1299,0x129f,0x12a2,0x12c6,0x12c6,0x12a2,0x12c6,0x1299,0x12a2,
+0x12a2,0x12a5,0x12c6,0x1299,0x1299,0x12c6,0x129c,0x129c,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,
+0x13b3,0x13b3,0x12ae,0x12ae,0x12ae,0x12ae,0x13ce,0x13ad,0x12b7,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,
+0x13ce,0x13ce,0x13ce,0x1863,0x1863,0x1863,0x1863,0x1863,0x13b6,0x13b6,0x12bd,0x13b6,0x13b6,0x13b6,0x12bd,0x13b6,
+0x13b6,0x13b6,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x13b0,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x12ba,
+0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x12ba,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,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
+0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
+0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x139b,0x138c,0x139b,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,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+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,
+0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,
+0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,0x13e0,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,0x13e3,0x13e3,0x13e3,
+0x13e0,0x13e3,0x13e0,0x13e3,0x13e0,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e9,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,
+0x13e3,0x13e0,0x13e0,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e6,0x13e3,0x13e3,0x13e3,
+0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,
+0x13e0,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,0x13e0,
+0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x1575,0x1575,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x157e,0x1578,0x1578,
+0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x17b8,0x17b8,0x17b8,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x157e,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x157e,0x17b8,0x17b8,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e9,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,
+0x1578,0x1578,0x157e,0x157e,0x1578,0x157e,0x157e,0x157e,0x1575,0x1575,0x157e,0x157e,0x13e3,0x13e3,0x13e9,0x13e9,
+0x13e9,0x16ec,0x13e3,0x13e9,0x13e3,0x13e3,0x13e9,0x1584,0x1584,0x157e,0x157e,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,
+0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x1578,0x1578,0x157e,
+0x16ec,0x157e,0x1578,0x157e,0x17b8,0x17b8,0x17b8,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x157e,0x13e3,0x157e,0x13e9,0x13e9,
+0x13e3,0x13e3,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13ec,0x13ec,
+0x13ec,0x13ec,0x13e3,0x13e3,0x13e3,0x13e3,0x13e9,0x13e3,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,
+0x13e9,0x13e3,0x13e3,0x13e3,0x13e9,0x13e3,0x13e3,0x13e3,0x13e3,0x13e9,0x13e9,0x13e9,0x13e3,0x13e9,0x13e9,0x13e9,
+0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x16ec,0x13e3,0x13e3,0x13e3,
+0x13e3,0x157e,0x1578,0x17b8,0x1446,0x1446,0x1446,0x1446,0x1575,0x1575,0x1575,0x1575,0x1575,0x157b,0x157e,0x17b8,
+0x17b8,0x17b8,0x17b8,0x1740,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
+0x13e3,0x13e3,0x13e3,0x13e3,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x157e,0x1578,0x1578,0x157e,
+0x1584,0x1584,0x157e,0x157e,0x157e,0x157e,0x186c,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x1578,0x157e,
+0x1578,0x1578,0x1578,0x1578,0x1581,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x1578,0x1578,0x1578,0x157e,
+0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x157e,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x14d0,0x13ef,0x13ef,0x13ef,
+0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x14d0,0x13ef,0x13ef,
+0x13ef,0x14d0,0x13ef,0x14d0,0x13ef,0x14d0,0x13ef,0x14d0,0x13ef,0x13ef,0x13ef,0x14d0,0x13ef,0x13ef,0x13ef,0x13ef,
+0x13ef,0x13ef,0x14d0,0x14d0,0x13ef,0x13ef,0x13ef,0x13ef,0x14d0,0x13ef,0x14d0,0x14d0,0x13ef,0x13ef,0x13ef,0x13ef,
+0x14d0,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x16f2,0x16f2,0x17be,
+0x17be,0x13f2,0x13f2,0x13f2,0x13ef,0x13ef,0x13ef,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x1671,0x1671,0x1671,0x1671,
+0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x13f8,0x13f5,0x13f5,0x13f5,
+0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f8,0x13f5,
+0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13fb,
+0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,
+0x13fb,0x13fb,0x13fb,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13fe,0x13fe,0x13fe,0x13fe,
+0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
+0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x17eb,0x17eb,0x17e8,0x1743,
+0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449,0x144c,0x144c,0x144c,0x144c,
+0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x158d,0x1458,0x1458,0x1458,0x146a,
+0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,
+0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x1485,0x1485,0x1485,0x1485,
+0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,
+0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,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,0x1494,0x1494,0x14a0,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,0x14a0,
+0x14a0,0x14a0,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x14a0,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,0x1578,0x1578,0x157e,0x157e,
+0x157e,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x157e,0x157e,
+0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x157e,0x157e,0x157e,0x1578,0x1578,0x1578,0x1578,0x1578,
+0x1578,0x1578,0x1578,0x157e,0x1578,0x1578,0x157e,0x157e,0x157e,0x157e,0x1578,0x1578,0x1584,0x1578,0x1578,0x1578,
+0x1578,0x16ef,0x16ef,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1869,0x157e,0x1578,0x1578,
+0x157e,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x157e,0x1578,0x1578,0x1578,0x1578,0x1578,
+0x1578,0x1578,0x1578,0x1578,0x157e,0x1578,0x1578,0x1578,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,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,
+0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,
+0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,
+0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,
+0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,
+0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,
+0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15f0,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,
+0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,
+0x1608,0x1608,0x1608,0x1602,0x160b,0x160b,0x160b,0x160b,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
+0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
+0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,
+0x1620,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,
+0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
 0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
-0x1632,0x1632,0x1632,0x1632,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,
-0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163b,0x163b,0x163b,0x163b,0x163b,
-0x163b,0x163b,0x163b,0x163b,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
-0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
-0x1641,0x1641,0x1641,0x1641,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,
-0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,
-0x1665,0x1665,0x1665,0x1665,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
-0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
-0x166e,0x166e,0x166e,0x166e,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
-0x1686,0x1686,0x1686,0x1686,0x1671,0x1680,0x1680,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1680,0x1671,0x1683,
-0x1683,0x1671,0x1683,0x1671,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
+0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,
+0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1641,0x1641,0x1641,0x1635,0x1635,0x1635,0x1635,0x1635,
+0x1635,0x1635,0x1635,0x1641,0x1641,0x1635,0x1641,0x1638,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,
+0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,
+0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,
+0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,
+0x1668,0x1668,0x1668,0x1668,0x1668,0x1665,0x1665,0x1665,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,
+0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1677,0x1677,
+0x1677,0x1674,0x1674,0x1674,0x1671,0x1671,0x1671,0x1671,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
+0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x168c,
+0x168c,0x1680,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
 0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
-0x1686,0x1686,0x1686,0x1686,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,
-0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,
-0x168f,0x168f,0x168f,0x168f,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,
+0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,
+0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x168f,
+0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,
 0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,
-0x1695,0x1695,0x1695,0x1695,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,0x16f5,0x16f5,0x16f5,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,
-0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,
-0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1737,0x1734,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,
-0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
-0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
-0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,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,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,
-0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,
-0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1758,0x1758,0x1758,0x1758,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1758,0x1758,0x1758,
-0x1758,0x1758,0x1758,0x1758,0x1758,0x1755,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,
-0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,
-0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,
-0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,
-0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x17b5,0x17b5,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,
-0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,
-0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,
-0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,
-0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,
-0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1800,0x1800,0x1800,
-0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,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,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,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,0,0,0,0
+0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,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,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,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,
+0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16c5,0x16d4,0x16d4,0x16c5,0x16c5,0x16c5,0x16c5,0x16c5,
+0x16c5,0x16d4,0x16c5,0x16d7,0x16d7,0x16c5,0x16d7,0x16c5,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,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,
+0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,
+0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,
+0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,
+0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,
+0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,
+0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,
+0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x178b,0x1788,0x1785,0x1785,0x1785,0x1785,
+0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x178e,0x178e,0x178e,0x178e,
+0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,
+0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x1791,0x1791,0x1791,0x1791,
+0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,
+0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x17a3,0x17a3,0x17a3,0x17a3,
+0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,
+0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a6,0x17a6,0x17a6,0x17a6,
+0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,
+0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a9,0x17a9,0x17a9,0x17a9,
+0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,
+0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17ac,
+0x17ac,0x17ac,0x17ac,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,
+0x17a9,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17a9,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,
+0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,
+0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17c4,0x17c4,0x17c4,0x17c4,
+0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,
+0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x1809,0x1809,0x1806,0x1806,
+0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,
+0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1809,0x1809,0x1809,0x1809,
+0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,
+0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x1854,0x1854,0x1854,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,
+0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x187e,0x187e,0x187e,0x187e,
+0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,
+0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,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,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0,0,0,0
 };
 
 static const UTrie2 propsVectorsTrie={
     propsVectorsTrie_index,
-    propsVectorsTrie_index+4844,
+    propsVectorsTrie_index+4924,
     NULL,
-    4844,
-    23696,
+    4924,
+    24212,
     0xa40,
-    0x136c,
+    0x13bc,
     0x0,
     0x0,
     0x110000,
-    0x6f78,
+    0x71cc,
     NULL, 0, FALSE, FALSE, 0, NULL
 };
 
-static const uint32_t propsVectors[6195]={
-0x67,0,0,0x67,0,0xe00000,0x67,0x80000,0x20,0x867,0,0,0xa67,0,0,0xb67,
-0,0,0xc67,0,0,0xd67,0,0,0xe67,0,0,0x1067,0,0,0x1167,0,
-0,0x1267,0,0,0x1367,0,0,0x1467,0,0,0x1567,0,0,0x1667,0,0,
-0x1767,0,0,0x1867,0,0,0x1967,0,0,0x1a67,0,0,0x1b67,0,0,0x1d67,
-0,0,0x1f67,0,0,0x2067,0,0,0x2267,0,0,0x2367,0,0,0x2467,0,
-0,0x2567,0,0,0x2767,0,0,0x2867,0x80000,0x20,0x2967,0,0,0x2a67,0,0x1600000,
-0x2b67,0,0,0x2d67,0,0,0x3067,0x20000000,0,0x3167,0x20000000,0,0x3267,0x20000000,0,0x3a67,
-0,0,0x3b67,0,0,0x3c67,0,0,0x3e67,0,0,0x4067,0,0,0x4167,0,
-0,0x4367,0,0,0x4467,0,0,0x4867,0,0,0x4967,0,0,0x4a67,0,0,
-0x5067,0,0,0x5167,0,0,0x5467,0,0,0x5567,0,0,0x5667,0x80000,0x20,0x5767,
-0,0,0x5867,0,0,0x5967,0,0,0x5b67,0,0,0x5c67,0,0,0x5d67,0,
+static const uint32_t propsVectors[6279]={
+0x67,0,0,0x67,0,0x200000,0x67,0,0x230400,0x67,0,0x230560,0x67,0,0x400000,0x67,
+0,0x448000,0x67,0,0x500000,0x67,0,0x962460,0x67,0,0x962540,0x67,0,0xe00000,0x67,0,
+0xe30000,0x67,0,0x1329800,0x67,0x80000,0x20,0x867,0,0,0xa67,0,0,0xb67,0,0,
+0xc67,0,0,0xd67,0,0,0xe67,0,0,0x1067,0,0,0x1067,0,0x200000,0x1067,
+0,0x230400,0x1167,0,0,0x1267,0,0,0x1267,0,0x962460,0x1367,0,0,0x1467,0,
+0,0x1567,0,0,0x1667,0,0,0x1767,0,0,0x1767,0,0x962460,0x1867,0,0,
+0x1967,0,0,0x1a67,0,0,0x1b67,0,0,0x1d67,0,0,0x1f67,0,0,0x2067,
+0,0,0x2267,0,0,0x2367,0,0,0x2467,0,0,0x2567,0,0,0x2767,0,
+0,0x2867,0x80000,0x20,0x2967,0,0,0x2a67,0,0x1600000,0x2b67,0,0,0x2d67,0,0,
+0x3067,0x20000000,0x200000,0x3167,0x20000000,0,0x3267,0x20000000,0,0x3a67,0,0,0x3b67,0,0,0x3c67,
+0,0,0x3e67,0,0,0x4067,0,0,0x4067,0,0xe30400,0x4167,0,0,0x4367,0,
+0,0x4467,0,0,0x4867,0,0,0x4967,0,0,0x4a67,0,0,0x5067,0,0,
+0x5167,0,0,0x5467,0,0,0x5567,0,0,0x5667,0x80000,0x20,0x5767,0,0,0x5867,
+0,0,0x5867,0,0x230400,0x5967,0,0,0x5b67,0,0,0x5c67,0,0,0x5d67,0,
 0,0x6067,0x80000,0x20,0x6267,0,0,0x6367,0,0,0x6467,0,0,0x6567,0,0,
-0x6f67,0,0,0x7067,0,0,0x7367,0x20000000,0,0x7567,0,0,0x7667,0,0,0x7767,
-0,0,0x7867,0,0,0x7a67,0,0,0x7b67,0,0,0x7c67,0,0,0x7e67,0,
-0,0x7f67,0,0,0x8167,0,0,0x8267,0,0,0x8367,0,0,0x8467,0,0,
-0x8567,0,0,0x8667,0,0,0x8767,0,0,0x8867,0,0,0x8967,0,0,0x8b67,
-0,0,0x8c67,0,0,0x8e67,0x20000000,0,0x8f67,0,0,0x9067,0,0,0x9167,0,
-0,0x9267,0,0,0x9367,0,0,0x9567,0,0,0x9667,0,0,0x9767,0,0,
-0x9867,0,0,0x9967,0,0,0x9a67,0,0,0x9c67,0,0,0x9f67,0,0,0xa167,
-0,0,0xa367,0,0,0xa467,0,0,0xa567,0,0,0xa667,0,0,0xa767,0,
-0,0xa867,0,0,0xa967,0,0,0xaa67,0,0xe00000,0xab67,0,0xe00000,0xac67,0,0,
-0xad67,0,0,0xae67,0,0,0xaf67,0,0,0xb167,0,0,0xb267,0,0,0xb367,
-0,0,0xb467,0,0,0xb567,0,0,0xb767,0,0,0xb867,0,0,0xb967,0,
-0,0xba67,0,0,0xbc67,0,0,0xbd67,0,0,0xbe67,0,0,0xbf67,0,0,
-0xc067,0,0,0xc167,0,0,0xc267,0,0,0xc367,0,0xe00000,0xc467,0,0xe00000,0xc667,
-0,0,0xc767,0,0,0xc867,0,0,0xc967,0,0,0xca67,0,0,0xcb67,0,
-0,0xcc67,0,0xe00000,0xcf67,0,0xe00000,0xd067,0,0xe00000,0xd267,0,0,0xd367,0,0,
-0xd467,0,0,0xd567,0,0,0xd667,0,0,0xd867,0,0,0xd967,0,0,0xda67,
-0,0,0xdb67,0,0,0xdc67,0,0,0xdd67,0,0,0xde67,0,0,0xdf67,0,
-0,0xe067,0,0,0xe167,0,0,0xe267,0,0,0xe367,0,0xe00000,0xe467,0,0,
-0xe567,0,0,0xe667,0,0,0xe767,0,0,0xe867,0,0,0xe967,0,0,0xea67,
-0,0,0xeb67,0,0,0xec67,0,0,0xed67,0,0,0xee67,0,0,0xef67,0,
-0,0xf167,0,0,0xf367,0,0,0xf567,0,0,0xf667,0,0,0xf767,0,0,
-0xf867,0,0,0xf967,0,0,0xfa67,0,0xe00000,0xfb67,0,0,0xfc67,0,0,0xfd67,
-0,0,0xfe67,0,0,0x10167,0,0,0x10267,0,0,0x10367,0,0,0x10467,0,
-0,0x10567,0,0xe00000,0x10667,0,0,0x10767,0,0,0x10867,0,0,0x10967,0,0,
-0x10a67,0,0,0x10b67,0,0,0x10c67,0,0,0x10d67,0,0,0x10e67,0,0,0x10f67,
-0,0,0x11067,0,0,0x11167,0,0,0xa0067,0,0xe00000,0xa4667,0,0xe00000,0xa4767,0,
-0xe00000,0xa4f67,0,0xe00000,0xa5e67,0,0xe00000,0xa5f67,0,0xe00000,0xac567,0,0xe00000,0xad167,0,0xe00000,
-0xb0067,0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x440020,0x11000100,0x40000001,0x643020,0x11000100,0x40000001,0xa5a040,0x11000100,
-0x40000001,0x116a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc4000b,0x11000200,0x7c00100,0x220402,0x11000200,0x24000000,0x10200000,0x11000200,0x24000008,
-0x1710000,0x11000200,0x40000001,0x1d3b020,0x11000219,0x7c00100,0x220401,0x11000219,0x7c00100,0x250401,0x11000319,0x7c00100,0x220401,0x11000319,0x7c00100,0x220402,
-0x11000319,0x7c00100,0x250400,0x11000319,0x7c00100,0x250401,0x11000419,0x7c00100,0x220400,0x11000419,0x7c00100,0x220401,0x11000419,0x7c00100,0x220402,0x11000419,
-0x7c00100,0x230400,0x11000419,0x7c00100,0x250400,0x11000419,0x7c00100,0x250401,0x11000419,0x7c00100,0x250402,0x11000519,0x7c00100,0x220400,0x11000519,0x7c00100,
-0x230400,0x11000600,0x4000400,0x200000,0x11000600,0x4000400,0x200002,0x11000600,0x4000400,0x201000,0x11000600,0x7c00500,0x220400,0x11000600,0x7c00500,0x230400,
-0x11000600,0x7c00500,0x530400,0x11000600,0x7c00d00,0x230400,0x11000619,0x7c00500,0x22040f,0x11000800,0x4000010,0x1001401,0x11000800,0x4000400,0x200001,0x11000800,
-0x6800010,0x201001,0x11000800,0x7c00500,0x230401,0x11000807,0x7c00100,0x220400,0x11000807,0x7c00100,0x250400,0x1100080e,0x4000400,0x200000,0x1100080e,0x4000400,
-0x200002,0x1100080e,0x7000500,0x220402,0x1100080e,0x7c00100,0x220400,0x1100080e,0x7c00100,0x220401,0x1100080e,0x7c00100,0x220402,0x1100080e,0x7c00100,0x250400,
-0x1100080e,0x7c00100,0x250401,0x1100080e,0x7c00120,0x220402,0x1100080e,0x7c00120,0x250402,0x11000908,0x4000000,0x200000,0x11000908,0x7c00100,0x220400,0x11000908,
-0x7c00100,0x220401,0x11000908,0x7c00100,0x250400,0x11000908,0x7c00100,0x250401,0x11000a03,0x4000000,0x200000,0x11000a03,0x4000000,0x270000,0x11000a03,0x7c00100,
-0x220400,0x11000a03,0x7c00100,0x220402,0x11000a03,0x7c00100,0x250400,0x11000a03,0x7c00500,0x230400,0x11000b13,0x2802500,0x962460,0x11000b13,0x4000000,0x200000,
-0x11000b13,0x4000000,0x201000,0x11000b13,0x4000000,0x230400,0x11000b13,0x4000002,0x400000,0x11000b13,0x4000010,0x200000,0x11000b13,0x7c00100,0x2633800,0x11000c00,
-0,0x218960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02,0x4000000,0x200000,0x11000c02,0x4000000,0x1329400,0x11000c02,0x4000000,
-0x1329800,0x11000c02,0x4000000,0x1500000,0x11000c02,0x6800000,0x1329800,0x11000c02,0x7c00100,0x230400,0x11000c02,0x7c00100,0x230401,0x11000c02,0x7c00100,0x230402,
-0x11000c02,0x7c00500,0x230400,0x11000c02,0x7d00100,0x230400,0x11000c02,0xc000010,0xb48000,0x11000f0a,0x2802100,0x962460,0x11000f0a,0x2802400,0x962460,0x11000f0a,
-0x2806400,0x962460,0x11000f0a,0x4000000,0x200000,0x11000f0a,0x6800100,0x962540,0x11000f0a,0x7c00100,0x230400,0x11000f0a,0x7c00100,0x230401,0x11001004,0x2802100,
-0x962460,0x11001004,0x2802400,0x962460,0x11001004,0x2806400,0x962460,0x11001004,0x4000000,0x200000,0x11001004,0x4000000,0x1500000,0x11001004,0x6800100,0x962540,
-0x11001004,0x6800100,0x962541,0x11001004,0x7c00100,0x230400,0x11001004,0x7c00100,0x230401,0x11001110,0x2802100,0x962460,0x11001110,0x2802400,0x962460,0x11001110,
-0x2806400,0x962460,0x11001110,0x6800100,0x962540,0x11001110,0x7c00100,0x230400,0x11001110,0x7c00100,0x230401,0x1100120f,0x2802100,0x962460,0x1100120f,0x2802400,
-0x962460,0x1100120f,0x2806400,0x962460,0x1100120f,0x6800100,0x962540,0x1100120f,0x7c00100,0x230400,0x1100131f,0x2802100,0x962460,0x1100131f,0x2802400,0x962460,
-0x1100131f,0x2806400,0x962460,0x1100131f,0x4000000,0x200000,0x1100131f,0x6800000,0x1329800,0x1100131f,0x6800100,0x962540,0x1100131f,0x6800100,0x962541,0x1100131f,
-0x7c00100,0x230400,0x1100131f,0x7c00100,0x230401,0x11001423,0x2802100,0x962460,0x11001423,0x2806400,0x962460,0x11001423,0x6800100,0x962540,0x11001423,0x6800100,
-0x962541,0x11001423,0x7c00100,0x230400,0x11001423,0x7c00100,0x230401,0x11001524,0x2802100,0x962460,0x11001524,0x2802100,0x962461,0x11001524,0x2806400,0x962460,
-0x11001524,0x6800000,0x1329800,0x11001524,0x6800100,0x962540,0x11001524,0x7c00100,0x230400,0x11001615,0x2802100,0x962460,0x11001615,0x2806400,0x962460,0x11001615,
-0x6800000,0x1329800,0x11001615,0x6800100,0x962540,0x11001615,0x6800100,0x962541,0x11001615,0x7c00100,0x230400,0x1100171a,0x2802100,0x962460,0x1100171a,0x2806400,
-0x962460,0x1100171a,0x6800000,0x1329800,0x1100171a,0x6800100,0x962540,0x1100171a,0x6800100,0x962541,0x1100171a,0x7c00100,0x230400,0x11001900,0x4000000,0x1600000,
-0x11001926,0x2802100,0x1862460,0x11001926,0x2802400,0x1862460,0x11001926,0x2806100,0x1862460,0x11001926,0x4000000,0x200000,0x11001926,0x4000010,0x400000,0x11001926,
-0x6800000,0x1329800,0x11001926,0x7800100,0x1830142,0x11001926,0x7c00100,0x1830000,0x11001926,0x7c00900,0x1830000,0x11001926,0x7e00100,0x1830000,0x11001a18,0x2802100,
-0x1862460,0x11001a18,0x2802400,0x1862460,0x11001a18,0x6800000,0x1329800,0x11001a18,0x7800100,0x1830142,0x11001a18,0x7c00100,0x1830000,0x11001a18,0x7c00100,0x1830002,
-0x11001a18,0x7c00900,0x1830000,0x11001a18,0x7e00100,0x1830000,0x11001d0c,0x7c00100,0x230400,0x11001d0c,0x7c00100,0x250400,0x11001e12,0x7c00100,0x2230500,0x11001e12,
-0x7c00100,0x2330520,0x11001e12,0x7c80100,0x2330520,0x11002619,0x7c00100,0x220401,0x11002619,0x7c00100,0x220402,0x11002619,0x7c00100,0x250401,0x1100270e,0x4000400,
-0x200001,0x1100270e,0x4000400,0x200002,0x1100270e,0x4000400,0x500001,0x1100270e,0x7c00100,0x220401,0x1100270e,0x7c00100,0x250401,0x11002800,0x80000,0x918820,
-0x11002800,0x80000,0x1c18020,0x11002800,0x180000,0x918820,0x11002800,0x4000001,0x440001,0x11002800,0x4000001,0x440002,0x11002800,0x4000001,0xc4000b,0x11002800,
-0x6800000,0x201c00,0x11002800,0x6800020,0x201c00,0x11002800,0x24000000,0x200000,0x11002800,0x24000000,0x200002,0x11002800,0x24000000,0x810000,0x11002800,0x24000000,
-0x1410000,0x11002800,0x24000000,0x1500000,0x11002800,0x24000000,0x1500002,0x11002800,0x24000002,0x400000,0x11002800,0x24000006,0xc0000b,0x11002800,0x24000008,0x1410000,
-0x11002800,0x24000008,0x1710000,0x11002800,0x24000020,0x1001400,0x11002800,0x24000020,0x1500002,0x11002800,0x2c000010,0x1248000,0x11002800,0x2c000010,0x11248002,0x11002800,
-0x40000001,0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x80000,0x2a65620,0x11002801,0x82000,0x962460,0x11002900,0x4000000,0x20000e,0x11002900,0x4000000,
-0x20000f,0x11002900,0x4000020,0x20000e,0x11002900,0x4000020,0x20000f,0x11002900,0x4000020,0x81000e,0x11002900,0x4000020,0x81000f,0x11002900,0x4000020,0x141000e,
-0x11002900,0x4000020,0x141000f,0x11002900,0x4000022,0x20000e,0x11002900,0x4000022,0x20000f,0x11002a00,0x4000000,0x1500000,0x11002a00,0x4000000,0x1600000,0x11002a00,
-0x4000000,0x1600002,0x11002b01,0x2000,0x962460,0x11002b01,0x2802020,0x962460,0x11002c00,0x4000000,0x200000,0x11002c00,0x4000000,0x200002,0x11002c00,0x4000000,
-0x20000f,0x11002c00,0x4000020,0x200000,0x11002c00,0x7c00000,0x200000,0x11002c00,0x7c00020,0x200000,0x11002c00,0x7c00120,0x220405,0x11002c00,0x7c00120,0x230402,
-0x11002c00,0x7c00120,0x250402,0x11002c00,0x7c00120,0x250405,0x11002c19,0x7c00100,0x250400,0x11002c19,0x7c00100,0x250401,0x11002d00,0x4000000,0x100006,0x11002d00,
-0x4000000,0x200006,0x11002d19,0x7c00100,0x220402,0x11002d19,0x7c00100,0x230400,0x11002d19,0x7c00100,0x250402,0x11002e00,0x24000000,0x200000,0x11002e00,0x24000020,
-0x200000,0x11002e00,0x24000020,0x200001,0x11002e00,0x24000020,0x10200000,0x11002f00,0x24000020,0x200000,0x11002f00,0x24000020,0x200001,0x11002f00,0x24000020,0x200002,
-0x11002f00,0x24000020,0xf00000,0x11002f00,0x24000020,0x1600000,0x11002f00,0x24000022,0x1600000,0x11003000,0x24000000,0x200000,0x11003000,0x24000000,0x10200000,0x11003000,
-0x24000020,0x200000,0x11003000,0x24000020,0x810000,0x11003000,0x24000020,0x1410000,0x11003100,0x24000000,0x200000,0x11003200,0x24000000,0x200000,0x11003300,0x4000000,
-0x100003,0x11003400,0x24000000,0x100000,0x11003400,0x24000000,0x200000,0x11003500,0x24000000,0x200000,0x11003600,0x24000000,0x200000,0x11003600,0x24000000,0x10200000,
-0x11003600,0x24000020,0x200000,0x11003700,0x24000000,0x200000,0x11003700,0x24000000,0xe00000,0x11003700,0x24000000,0x10200000,0x11003700,0x24000000,0x10e00000,0x11003700,
-0x24000000,0x928045a0,0x11003700,0x24000020,0x200000,0x11003800,0x4000000,0x100000,0x11003800,0x24000000,0x200000,0x11003800,0x24000000,0xb00000,0x11003800,0x24000000,
-0xe00000,0x11003800,0x24000000,0x1710000,0x11003800,0x24000000,0x10200000,0x11003800,0x24000000,0x10b00000,0x11003800,0x24000000,0x10e00000,0x11003800,0x24000000,0x10e05200,
-0x11003800,0x24000000,0x928045a0,0x11005003,0x7c00100,0x220402,0x11005013,0x2802500,0x962460,0x11005013,0x4000020,0x200005,0x11005013,0x7c00100,0x2633801,0x11005013,
-0x7c00100,0x2633802,0x11005013,0x7c00100,0x2633805,0x11005019,0x7c00100,0x220402,0x11005100,0x24000000,0x810000,0x11005100,0x24000000,0x1410000,0x11005102,0x7000100,
-0x230408,0x11005102,0x7c00100,0x230404,0x11005102,0x7c00100,0x230407,0x11005102,0x7c00100,0x230408,0x11005102,0x7c00100,0x230409,0x11005201,0x2802400,0x962460,
-0x11005500,0x80000,0x1e18820,0x11005502,0x7000100,0x230408,0x11005502,0x7c00100,0x230404,0x11005502,0x7c00100,0x230407,0x11005502,0x7c00100,0x230408,0x11005502,
-0x7c00100,0x230409,0x11005667,0x1000,0,0x11020200,0x80004,0x418820,0x11020200,0x4000000,0x100006,0x11020200,0x4000000,0x10000f,0x11020200,0x4000400,
-0x100002,0x11020200,0x4000400,0x500002,0x11020200,0x6800c00,0x101000,0x11020200,0x24000000,0x100000,0x11020200,0x24000000,0x1400000,0x11020200,0x24000000,0x1500000,
-0x11020200,0x24000000,0x1600000,0x11020200,0x24000000,0x10200000,0x11020200,0x24000020,0x100000,0x11020200,0x24000020,0x1600000,0x11020219,0x7c00100,0x12040f,0x11020219,
-0x7c00100,0x220400,0x11020219,0x7c00100,0x220401,0x11020219,0x7c00100,0x250400,0x11020319,0x7c00100,0x220400,0x11020319,0x7c00100,0x220401,0x11020319,0x7c00100,
-0x220402,0x11020319,0x7c00100,0x250400,0x11020319,0x7c00100,0x250402,0x11020319,0x7d00100,0x220402,0x11020419,0x7c00100,0x220401,0x11020519,0x7c00100,0x220400,
-0x11020600,0x4000400,0x100002,0x11020600,0x4000400,0x200000,0x11020600,0x7c00500,0x130400,0x11020600,0x7c00d00,0x130400,0x11020701,0x2802400,0x962460,0x11020701,
-0x2802400,0x962461,0x11020701,0x2802400,0xc62460,0x1102080e,0x7c00100,0x220400,0x1102080e,0x7c00100,0x250400,0x11020908,0x7c00100,0x220400,0x11020908,0x7c00100,
-0x220401,0x11020908,0x7c00100,0x250400,0x11020908,0x7c00100,0x250401,0x11022800,0x24000000,0x100000,0x11022800,0x24000000,0x200000,0x11022800,0x24000000,0x200002,
-0x11022800,0x24000000,0x401000,0x11022800,0x24000000,0xf00002,0x11022800,0x24000000,0xf0ac02,0x11022800,0x24000000,0x1500000,0x11022800,0x24000002,0x100000,0x11022800,
-0x24000002,0x370000,0x11022800,0x24000002,0x470000,0x11022800,0x24000006,0x400000,0x11022800,0x24000008,0x1710000,0x11022800,0x24000008,0x1712c00,0x11022800,0x24000020,
-0x100000,0x11022800,0x24000020,0x1500000,0x11022800,0x24000020,0x1500002,0x11022900,0x4000000,0x10000e,0x11022900,0x4000000,0x10000f,0x11022919,0x7c00100,0x12040f,
-0x11022c00,0x4000000,0x100002,0x11022c00,0x4000000,0x1500002,0x11022c00,0x4000000,0x1600002,0x11022c00,0x4000000,0x1010000f,0x11022c00,0x7c00120,0x120405,0x11022c0e,
-0x7c00100,0x250401,0x11022c19,0x7c00100,0x150401,0x11022d00,0x4000000,0x100006,0x11022d00,0x4000000,0x200006,0x11022d19,0x7c00100,0x120402,0x11022d19,0x7c00100,
-0x150402,0x11022e00,0x24000000,0x200000,0x11022e00,0x24000020,0x100000,0x11022e00,0x24000020,0x10100000,0x11022f00,0x24000020,0x100000,0x11022f00,0x24000020,0x100001,
-0x11022f00,0x24000020,0x100002,0x11023000,0x24000000,0x100000,0x11023300,0x4000000,0x100002,0x11023300,0x4000000,0x100003,0x11023300,0x4000100,0x120403,0x11023300,
-0x4000100,0x150403,0x11023300,0x4000100,0x10150403,0x11023400,0x24000000,0x100000,0x11023500,0x24000000,0x100000,0x11023600,0x24000000,0x100000,0x11023600,0x24000020,
-0x100000,0x11023600,0x24000020,0x10100000,0x11023700,0x24000000,0x100000,0x11023700,0x24000000,0xe00000,0x11023700,0x24000000,0x10100000,0x11023700,0x24000000,0x10e00000,
-0x11023700,0x24000020,0x100000,0x11023700,0x24000020,0x10100000,0x11023800,0x4000000,0x100000,0x11023800,0x24000000,0x200000,0x11024e67,0,0,0x11025600,
-0x4000000,0x100000,0x11042a00,0x4000000,0x1600000,0x11045700,0x4000000,0x20000a,0x11045700,0x4000020,0x20000a,0x11045712,0x7c00100,0xe3040a,0x11045712,0x7c80100,
-0xe3040a,0x11045716,0x7c00100,0xe30c0a,0x11045716,0x7c00100,0x2530c0a,0x11063d00,0x4000001,0x440011,0x11065700,0x4000000,0x810011,0x11065700,0x4000000,0xe00011,
-0x11065700,0x4000000,0x1410011,0x11065700,0x4000000,0x1500011,0x11065700,0x4000000,0x1600011,0x11065700,0x4000006,0xe70011,0x11065700,0x4000008,0xe00011,0x11065700,
-0x4000008,0xe02c11,0x11065700,0x4000010,0x871411,0x11065700,0x4000010,0x1201411,0x11065700,0x4000010,0x1271011,0x11065700,0x4000020,0xe00011,0x11065700,0x4000400,
-0xe00011,0x11065700,0x4000420,0xe00011,0x11065700,0x6800000,0xe01c11,0x11065700,0x6800040,0xe00011,0x11065700,0xc000010,0x80ac11,0x11065700,0xc000010,0xb48011,
-0x11065719,0x7c00100,0xe20411,0x11065719,0x7c00100,0xe50411,0x11065719,0x7c00140,0xe20411,0x11065719,0x7c00140,0xe50411,0x11080100,0x6800000,0x201c00,0x11080100,
-0x68000c0,0x11329800,0x11080100,0x24000000,0x200000,0x11080100,0x24000000,0x810000,0x11080100,0x24000000,0x1410000,0x11080100,0x24000000,0x1500000,0x11080100,0x24000000,
-0x1600000,0x11080100,0x24000000,0x1b00000,0x11080100,0x24000000,0x2410000,0x11080100,0x24000000,0x10200000,0x11080100,0x24000006,0xd70000,0x11080100,0x24000008,0x1713c00,
-0x11080100,0x24000008,0x1714000,0x11080100,0x24000010,0x1001400,0x11080100,0x24000010,0x1071000,0x11080100,0x24000010,0x1071400,0x11080100,0x24000020,0x200000,0x11080100,
-0x24000020,0x400000,0x11080100,0x24000020,0x1600000,0x11080100,0x24000400,0x200000,0x11080100,0x24000420,0x200000,0x11080100,0x2c000010,0xb48000,0x11080100,0x2c000010,
-0x100ac00,0x11080100,0x44000001,0x1a40000,0x11080119,0x7c00100,0x220400,0x11080119,0x7c00100,0x250400,0x11080119,0x7c001c0,0x220400,0x11080119,0x7c001c0,0x250400,
-0x11080200,0x4000400,0x200002,0x11080200,0x24000000,0x200000,0x11080200,0x24000000,0x1500000,0x11080200,0x24000000,0x1600000,0x11080200,0x24000020,0x200000,0x110a1e12,
-0x7c00100,0x2130480,0x110a1e12,0x7c80100,0x2130480,0x110a3000,0x24000000,0x30e00000,0x110a3000,0x24100000,0x810001,0x110a3000,0x24100000,0x1410001,0x110a3700,0x24000000,
-0x30200000,0x110a3d00,0x4000000,0xe00000,0x110a3d00,0x4000000,0xe00002,0x110a3d00,0x24000000,0xe00000,0x110a3d11,0x7c00300,0xe30000,0x110a3d11,0x7c00900,0x1230400,
-0x110a3d12,0x2802400,0x962460,0x110a3e14,0x7c00100,0xe30000,0x110a3e14,0x7c00100,0xe30001,0x110a3e14,0x7c00100,0x2530000,0x110a3e14,0x7c00900,0x1230000,0x110a3e14,
-0x7c00900,0x1230001,0x110a3f16,0x7c00100,0xe30c00,0x110a3f16,0x7c00100,0xe30c01,0x110a3f16,0x7c00100,0x2530c00,0x110a3f16,0x7c00900,0x1230c00,0x110a3f16,0x7c00900,
-0x1230c01,0x110a4005,0x7c00100,0xe30400,0x110a4112,0x7c00100,0xe30402,0x110a4112,0x7c80100,0xe30402,0x110a4400,0x4000000,0xe00000,0x110a4412,0x4000000,0xe00002,
-0x110a4412,0x4000000,0xe00003,0x110a4416,0x4000000,0xe00c03,0x110a4500,0x4000000,0xe0000d,0x110a4516,0x4000000,0xe00c0d,0x110a4711,0x7c40300,0xe30000,0x110a4f11,
-0x7c00300,0xe30001,0x110a4f11,0x7c40300,0xe30000,0x110a5300,0x4000000,0x810010,0x110a5300,0x4000000,0xe00002,0x110a5300,0x4000000,0xe00010,0x110a5300,0x4000000,
-0x1410010,0x110a5300,0x4000002,0xe70010,0x110a5300,0x4000008,0x810010,0x110a5300,0x4000008,0x1410010,0x110a5300,0x6800000,0xe01c02,0x110a5300,0x6800000,0xe01c10,
-0x110a5400,0x4000000,0x81000c,0x110a5400,0x4000000,0xe0000c,0x110a5400,0x4000000,0x141000c,0x110a5400,0x4000000,0x150000c,0x110a5400,0x4000000,0x160000c,0x110a5400,
-0x4000002,0xe7000c,0x110a5400,0x4000010,0x87140c,0x110a5400,0x4000010,0xe7000c,0x110a5400,0x4000010,0x120140c,0x110a5400,0x4000010,0x127100c,0x110a5400,0x4000020,
-0xe0000c,0x110a5400,0x4000026,0xe7000c,0x110a5400,0xc000010,0x80ac0c,0x110a5400,0xc000010,0xb4800c,0x11400a0c,0xc000010,0x1049400,0x11400c0e,0x4000010,0xb00000,
-0x11400c0e,0x4000010,0x1071400,0x11400c0e,0xc000010,0xb48000,0x11400c11,0x7c00900,0x230400,0x11400f34,0xc000010,0x448000,0x11400f44,0xc000010,0x448000,0x11401d70,
-0x4000000,0x200000,0x11403d92,0x4000000,0xe00000,0x11445787,0x4000004,0x120000a,0x11445787,0x4000008,0x81000a,0x11445787,0x4000008,0x141000a,0x11445787,0x4000010,
-0x87000a,0x11445787,0xc000010,0x84800a,0x11445790,0x3802500,0x126246a,0x11445790,0x7c00d00,0x2530c0a,0x114a3d87,0x24000000,0x810000,0x114a3d87,0x24000000,0x1410000,
-0x114a3d87,0x24000008,0x810000,0x114a3d87,0x24000008,0x1410000,0x114a3d87,0x24000010,0x870000,0x114a3d87,0x2c000010,0x848000,0x114a3d8d,0x4000000,0xe00000,0x114a3d8d,
-0x24000000,0xe00000,0x114a3d8d,0x24000002,0x1200000,0x114a3d8d,0x24000002,0x10e00000,0x114a3d8d,0x24000008,0x810000,0x114a3d8d,0x24000008,0x1410000,0x114a3d90,0x7c00900,
-0x930c00,0x114a3d90,0x7c00900,0xe30c00,0x114a3d92,0x7c00300,0xe30000,0x114a3e90,0x7000400,0x1200c02,0x114a3f87,0x4000004,0x1200000,0x114a3f90,0x7c00d00,0x2530c00,
-0x114a4292,0x4000000,0xe00000,0x114a4292,0x4000000,0xe0000f,0x114a4492,0x4000000,0xe00002,0x114a4492,0x4000000,0xe00003,0x114a4492,0x4000000,0x10e00003,0x114a4592,
-0x4000000,0xe00002,0x114a4592,0x4000000,0xe0000d,0x1180090a,0x2802400,0x962460,0x11800c17,0x2802100,0x962460,0x11800c17,0x2802500,0x962460,0x11800f1d,0x2802400,
-0x962460,0x11800f29,0x2802400,0x962460,0x11820700,0x2802400,0x962460,0x11820700,0x2802500,0x962460,0x118a3d93,0x2802400,0x962460,0x118a3e90,0x2802400,0x962460,
-0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460,0x11c00c1b,0x6800000,0x1329800,0x11c00f58,0x6800000,0x1329800,0x11c0105d,0x6800000,0x1329800,0x11c01161,
-0x6800000,0x1329800,0x11c01265,0x6800000,0x1329800,0x11c01469,0x4000000,0x200000,0x11c01469,0x6800000,0x1329800,0x11c01469,0x7c00100,0x230400,0x11c0511b,0x7c00100,
-0x230408,0x20000067,0x1000,0,0x20000b13,0x2802400,0x962460,0x20000b13,0x2802500,0x962460,0x20001b27,0x2802100,0x962460,0x20001b27,0x2802100,0x962461,
-0x20001b27,0x2802400,0x962460,0x20001b27,0x2806400,0x962460,0x20001b27,0x2902100,0x962462,0x20001b27,0x4000000,0x200000,0x20001b27,0x4000000,0x400000,0x20001b27,
-0x4000000,0x500000,0x20001b27,0x4000000,0x810000,0x20001b27,0x4000000,0xb00000,0x20001b27,0x4000000,0xc0000b,0x20001b27,0x4000000,0x1410000,0x20001b27,0x4000010,
-0xb00000,0x20001b27,0x4000010,0xc00000,0x20001b27,0x6800000,0x1329800,0x20001b27,0x6800100,0x462540,0x20001b27,0x6800400,0x962540,0x20001b27,0x7c00100,0x230400,
-0x20001b27,0x7c00100,0x230401,0x20002619,0x7c00100,0x220401,0x20002a00,0x4000000,0x1600000,0x20004b67,0,0x1900020,0x20004c67,0,0x1900020,0x20004d67,
-0,0x1900020,0x20006d67,0x1000,0,0x20006e67,0x1000,0,0x20026d67,0,0,0x20026e67,0,0,0x200a4a12,0x7c00100,
-0x1f304c1,0x200a4a12,0x7c00100,0x20304e1,0x21005600,0x4000000,0x700000,0x21022a00,0x4000000,0x1600000,0x30000419,0x7c00100,0x220400,0x30000419,0x7c00100,0x220401,
-0x30000419,0x7c00100,0x250400,0x30000419,0x7c00100,0x250401,0x30000519,0x7c00100,0x220400,0x30000600,0x4000400,0x200000,0x30000600,0x7c00500,0x230400,0x30000605,
-0x4000400,0x200000,0x3000080e,0x7c00100,0x220400,0x30000908,0x2000,0x962460,0x30000908,0x7c00100,0x220400,0x30000908,0x7c00100,0x220401,0x30000908,0x7c00100,
-0x250400,0x30000908,0x7c00100,0x250401,0x30000a03,0x4000006,0x400000,0x30000c02,0x4000000,0x200000,0x30000c02,0x7c00100,0x230400,0x30000d22,0,0x218960,
-0x30000d22,0x2802100,0x962460,0x30000d22,0x2802400,0x962460,0x30000d22,0x2802500,0x962460,0x30000d22,0x4000000,0x200000,0x30000d22,0x4000010,0x200000,0x30000d22,
-0x7c00100,0x230400,0x30000d22,0xc000010,0x248000,0x30000e25,0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,0x2802100,0x962460,0x30001821,0x2806400,
-0x962460,0x30001821,0x4000000,0x200000,0x30001821,0x6800100,0x962540,0x30001821,0x6800100,0x962541,0x30001821,0x7c00100,0x230400,0x30001b27,0x2802100,0x962460,
-0x30001b27,0x2802400,0x962460,0x30001b27,0x4000000,0x200000,0x30001b27,0x4000000,0x400000,0x30001b27,0x7c00100,0x230400,0x30001c1c,0x2802100,0x1862460,0x30001c1c,
-0x2802400,0x1862460,0x30001c1c,0x2806400,0x1862460,0x30001c1c,0x4000000,0x200000,0x30001c1c,0x6800100,0x1862400,0x30001c1c,0x6800100,0x1862540,0x30001c1c,0x7c00100,
-0x1830000,0x30001c1c,0x7c00100,0x1830001,0x30001c1c,0xc000010,0x448000,0x30001f0b,0x4000000,0x200000,0x30001f0b,0x4000010,0x200000,0x30001f0b,0x4000010,0x400000,
-0x30001f0b,0x6800000,0x200000,0x30001f0b,0x7c00100,0x230400,0x30001f0b,0xc000010,0x248000,0x30002006,0x7c00100,0x250400,0x30002128,0x4000010,0x200000,0x30002128,
-0x7c00100,0x230400,0x30002128,0xc000010,0x248000,0x3000221d,0x4000000,0x810000,0x3000221d,0x4000000,0x1410000,0x3000221d,0x4000001,0x440000,0x3000221d,0x7c00100,
-0x230400,0x30002300,0x4000010,0x400000,0x30002320,0x7c00100,0x230400,0x30002417,0x2802100,0x1862460,0x30002417,0x2802400,0x1862460,0x30002417,0x2806400,0x1862460,
-0x30002417,0x2882000,0x1862460,0x30002417,0x4000000,0x200000,0x30002417,0x4000000,0x400000,0x30002417,0x4000000,0x1600000,0x30002417,0x4000010,0x400000,0x30002417,
-0x4000010,0x1200000,0x30002417,0x6800000,0x1329800,0x30002417,0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,0x7d00100,0x1830000,0x3000251b,0x80000,
-0xc18820,0x3000251b,0x2802100,0x962460,0x3000251b,0x3c02100,0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,0x500000,0x3000251b,0x4000010,0x400000,
-0x3000251b,0x4000010,0xb70000,0x3000251b,0x4000800,0x200000,0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,0x3000251b,0x7c00900,0x230400,0x3000251b,
-0xc000010,0xb48000,0x3000251b,0x12882000,0x962460,0x30002800,0x4000001,0xc41c0b,0x30002800,0x24000000,0x200000,0x30002800,0x2c000010,0x1248002,0x30002800,0x2c000010,
-0x11248002,0x30002a00,0x4000000,0x1600000,0x30002b01,0x2000,0x962460,0x30002c00,0x4000000,0x200000,0x30002c00,0x7c00100,0x10220405,0x30002d19,0x7c00100,0x250400,
-0x30002e00,0x24000000,0x200000,0x30003000,0x24000000,0x200000,0x30003100,0x24000000,0x200000,0x30003600,0x24000000,0x200000,0x30003700,0x24000000,0x200000,0x3000392e,
-0x24000000,0x200000,0x30005013,0x7c00100,0x2633801,0x30005600,0,0x918820,0x30020600,0x4000400,0x500000,0x30020701,0x2802400,0x962460,0x30020701,0x2802400,
-0xc62460,0x300a3a11,0x4020000,0xe00000,0x300a3a11,0x4020000,0xe00002,0x300a3b11,0x4020000,0xe00002,0x300a3c00,0x4008000,0xe00000,0x300a3c00,0x4010000,0xe00000,
-0x300a3d11,0x7c00300,0xe30002,0x300a4305,0x7c00100,0xe30400,0x300a4611,0x7c40300,0xe30000,0x300a4829,0x7c00100,0xe30400,0x300a4829,0x7c00900,0x1230400,0x300a4929,
-0x4000000,0xe00000,0x30402576,0x4000010,0x400000,0x30402576,0x4000010,0xb70000,0x30402576,0xc000010,0xb48000,0x304a3d92,0x4000000,0xe00000,0x30800c17,0x2802100,
-0x962460,0x30c01c6e,0x6800000,0x1329800,0x3100080e,0x7c00120,0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x200000,
-0x3100581e,0x7c00100,0x230400,0x3100590d,0x7c00100,0x230400,0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,0x31005b00,0x4000000,0x200000,0x31005c00,
-0x80000,0x918820,0x31005c00,0x2802000,0x962460,0x31005c00,0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,0x4000000,0x200001,0x31005c00,0x6800000,
-0x962540,0x31005c00,0x6800400,0x962540,0x31005c01,0x2802400,0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,0x1329805,0x31005d00,0x7c00120,0x220405,
-0x31005d00,0x7c00120,0x250405,0x31006000,0x82000,0x962460,0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,0x310a5f11,0x7c00300,0xe30001,0x32000419,
-0x7c00100,0x250400,0x3200080e,0x4000020,0x200000,0x3200080e,0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,0x7c00100,0x220400,0x32000908,0x7c00100,
-0x250400,0x32000c02,0x7c00100,0x230400,0x32000e25,0x7c00100,0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,0x1e18820,0x32002800,0x80020,0x218820,
-0x32002800,0x4000001,0x440002,0x32002800,0x24000000,0x200000,0x32002800,0x24000000,0x200002,0x32002800,0x24000020,0x200000,0x32002800,0x2c000010,0x1248002,0x32002919,
-0x7c00100,0x22040f,0x32002a00,0x4000000,0x1600000,0x32002b01,0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,0x2802020,0x962460,0x32002c00,0x4000000,
-0x200000,0x32002c00,0x4000020,0x200000,0x32002c00,0x4000020,0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,0x250405,0x32002e00,0x24000020,0x200000,
-0x32002f00,0x24000020,0x200000,0x32003000,0x24000000,0x200000,0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,0x32003600,0x24000020,0x200000,0x32003600,
-0x24000020,0x10200000,0x32003700,0x24000000,0x100000,0x32003700,0x24000000,0x200000,0x32003700,0x24000000,0x10200000,0x32003800,0x24000000,0x810000,0x32003800,0x24000000,
-0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,0x32006108,0x7c00100,0x220400,0x32006108,0x7c00100,0x250400,0x3200622a,0x2802100,0x962460,
-0x3200622a,0x2806000,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,0x2802100,0x962460,0x3200632b,0x2806000,0x962460,0x3200632b,0x7c00100,0x230400,0x3200642c,
-0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,0x962460,0x3200652d,0x7c00100,0x230400,0x32006600,0x24000020,0x200000,0x32006700,0x24000020,
-0x200000,0x32006800,0x24000020,0x200000,0x32006800,0x24000020,0x10200000,0x32006900,0x24000020,0x200000,0x32006900,0x24000020,0x810000,0x32006900,0x24000020,0x1410000,
-0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,0x2882000,0xc62460,0x32023300,0x4000000,0x100000,0x32026c01,
-0x12882000,0x962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020,0x810000,0x32086600,0x24000020,0x1410000,0x32086900,0x24000020,
-0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x30200000,0x320a3d11,0x7c00100,0x1230400,0x320a3e14,0x7c00100,0xe30010,0x320a3e14,0x7c00100,0x2530000,
-0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11,0x7c00300,0xe30001,0x320a6b16,0x7c00100,0x2530c00,0x32406372,
-0xc000010,0x448000,0x324a3d95,0x4000000,0x10e00000,0x324a3d95,0x7c00100,0x1230400,0x324a3f90,0x4000002,0x1200c00,0x324a538d,0x24000000,0xe00000,0x32820701,0x2802000,
-0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200000,0x4000080e,0x7c00100,0x220400,0x4000080e,0x7c00100,0x250400,
-0x4000080e,0x7c00100,0x250402,0x40000c02,0,0x218960,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,0x40000c02,0x2802500,0x962460,0x40000c02,
-0x4000000,0x200000,0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000d22,0x7c00100,0x230400,0x40000f0a,0x7c00100,0x230400,0x40001004,0x7c00100,
-0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460,0x4000120f,0x4000000,0x1600000,0x4000120f,0x7c00100,0x230400,
-0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615,0x2802400,0x962460,0x40001615,0x7c00100,0x230400,0x40002417,
-0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002,0x200000,0x40002c00,0x4000000,0x200002,0x40003000,0x24000000,
-0x10200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40003700,0x24000000,0x10200000,0x40005a09,0x7c00100,0x220400,0x40005a09,0x7c00100,0x250400,
-0x40005d00,0x7c00120,0x220405,0x40006f30,0x2802100,0x962460,0x40006f30,0x2802400,0x962460,0x40006f30,0x4000000,0x200000,0x40006f30,0x6800000,0x1329800,0x40006f30,
-0x6800100,0x962540,0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010,0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,0x4000000,0x200000,0x40007208,0x7c00100,
-0x220400,0x4000720e,0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e,0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,0x220400,0x40007219,0x7c00500,0x220400,
-0x40007219,0x7c00500,0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300,0x24000000,0x200000,0x40007300,0x24000000,0x10200000,0x40007400,0x4000000,0x200000,0x40007531,
-0x7c00100,0x230400,0x40007631,0x7c00100,0x230400,0x40007835,0x4000010,0x400000,0x40007835,0x7c00100,0x230400,0x40007933,0x7c00100,0x230400,0x40007a32,0x6800000,
-0x1329800,0x40007a32,0x7c00100,0x230400,0x40007b2f,0x7c00100,0x230400,0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,0x962460,0x40020701,0x2802400,0xc62460,
-0x40023300,0x4000000,0x200000,0x40027d01,0x12882000,0x962460,0x400a3700,0x24000000,0x30200000,0x400a3700,0x24000000,0x30e00000,0x400a4400,0x4000000,0xe0000d,0x400a4412,
-0x4000000,0xe00002,0x400a4412,0x4000000,0xe00003,0x400a4500,0x4000000,0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,0x4000000,0x1410010,0x404077b8,0x4000000,
-0x200000,0x404077bb,0x4000000,0x200000,0x404077bb,0x4000000,0x400000,0x40c0511b,0x4000000,0x200000,0x41000419,0x7c00100,0x220400,0x41000419,0x7c00100,0x250400,
-0x4100080e,0x7c00100,0x220400,0x4100080e,0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,0x7c00100,0x250400,0x41000b13,0x2802000,0x962460,0x41000b13,
-0x2802100,0x962460,0x41000b13,0x4000000,0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,0xb00000,0x41000c02,0x4000000,0x1500000,0x41000f0a,0x7c00100,
-0x230400,0x41001004,0x7c00100,0x230400,0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,0x41001d0c,0x7c00100,0x230400,0x41001d0c,0x7c00100,0x23040f,
-0x41001f0b,0x2802100,0x962460,0x41001f0b,0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,0x24000000,0x200000,0x41002800,0x24000000,0x400000,0x41002919,
-0x7c00100,0x22040e,0x41002a00,0x4000000,0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,0x200000,0x41002c00,0x7c00120,0x220405,0x41003000,0x24000000,
-0x200000,0x41003700,0x24000000,0x200000,0x41003700,0x24000000,0x10200000,0x41003700,0x24000000,0x10e00000,0x41005d00,0x7c00120,0x220405,0x41006600,0x24000020,0x200000,
-0x41006600,0x24000020,0x810000,0x41006600,0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,0x41007219,0x7c00100,0x220400,0x41007300,0x24000000,0x200000,0x41007e0e,
-0x2802000,0x962460,0x41007e0e,0x4000000,0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,0x7c00100,0x230400,0x41008002,0x7c00100,0x230400,0x41008137,0x2802100,
-0x962460,0x41008137,0x4000000,0x200000,0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,0x230400,0x41008301,0x2802000,0x962460,0x41008407,0x4000000,0x200000,
-0x41008407,0x4000000,0x400000,0x41008407,0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,0x41008407,0x7c00100,0x250400,0x4100850b,0x7c00100,0x230400,0x4100860b,
-0x4000000,0x200000,0x4100860b,0x7c00100,0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,0x7c00100,0x220400,0x41008838,0x7c00100,0x250400,0x41008939,0x2802000,
-0x962460,0x41008939,0x2802100,0x962460,0x41008939,0x2806000,0x962460,0x41008939,0x4000000,0x200000,0x41008939,0x4000000,0x400000,0x41008939,0x7c00100,0x230400,
-0x41008939,0xc000010,0x448000,0x41008a00,0x4000000,0x200000,0x41008b3b,0x4000000,0x1800000,0x41008b3b,0x6800000,0x1329800,0x41008b3b,0x7c00100,0x1830000,0x41008b3b,
-0x7e00100,0x1830000,0x41008c3d,0x4000010,0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,0x7c00100,0x22040f,0x41008d19,0x7c00100,0x220400,0x41008d19,0x7c00100,
-0x22040f,0x41008e00,0x24000000,0x200000,0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,0x1710000,0x41008e00,0x24000006,0x400000,0x41008f3a,0x2802000,0x962460,
-0x41008f3a,0x2802100,0x962460,0x41008f3a,0x2806000,0x962460,0x41008f3a,0x4000000,0x200000,0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,
-0x7c00100,0x230400,0x4100903c,0x7c00100,0x23040f,0x41020701,0x2802000,0x962460,0x41020701,0x2802000,0xc62460,0x410a3700,0x24000000,0x30200000,0x410a3700,0x24000000,
-0x30e00000,0x410a4412,0x4000000,0xe00003,0x410a4711,0x7c40300,0xe30000,0x410a4f11,0x7c00300,0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,
-0x410a9100,0x4000000,0x870010,0x410a9100,0x4000000,0xb00010,0x410a9100,0x4000000,0xf00010,0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,
-0x4000000,0x1071410,0x410a9100,0x4000000,0x1410010,0x414a8292,0x4000000,0xe00000,0x41808300,0x2802000,0x962460,0x41c01469,0x6800000,0x1329800,0x50000419,0x7c00100,
-0x220400,0x50000419,0x7c00100,0x250400,0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,0x220400,0x50000908,0x7c00100,0x250400,0x50000b13,0x2802500,0x962460,
-0x50000f0a,0x7c00100,0x230400,0x50001615,0x2802100,0x962460,0x50001615,0x7c00100,0x230400,0x50002b01,0x2802020,0x962460,0x50002c00,0x4000000,0x200000,0x50002c19,
-0x7c00100,0x220400,0x50002d19,0x7c00100,0x220400,0x50003000,0x24000000,0x200000,0x50003000,0x24000020,0x200000,0x50003700,0x24000000,0x200000,0x50005d00,0x7c00120,
-0x220405,0x50005d00,0x7c00120,0x250405,0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,0x250400,0x50006600,0x24000020,0x200000,0x50007300,0x24000000,0x200000,
-0x50008301,0x2802400,0x962460,0x50008a00,0x7c00500,0x230400,0x50009257,0x2802400,0x962460,0x50009257,0x4000000,0x200000,0x50009257,0x4000010,0x1071400,0x50009257,
-0x6800000,0x1329800,0x50009257,0x7c00100,0x230400,0x50009257,0x7c00500,0x230400,0x50009257,0x7c00900,0x230400,0x50009257,0xc000010,0xb48000,0x5000933e,0x2802100,
-0x962460,0x5000933e,0x2802400,0x962460,0x5000933e,0x4000000,0x200000,0x5000933e,0x4000000,0x400000,0x5000933e,0x4000010,0x400000,0x5000933e,0x6800000,0x1329800,
-0x5000933e,0x6800100,0x962540,0x5000933e,0x6800100,0x962541,0x5000933e,0x6804400,0x962540,0x5000933e,0x7c00100,0x230400,0x5000933e,0x7c00100,0x230401,0x5000933e,
-0xc000010,0x448000,0x50009419,0x7c00100,0x220400,0x50009419,0x7c00100,0x250400,0x50009500,0x4000400,0x200000,0x5000965a,0x4000000,0x500000,0x5000965a,0x7c00100,
-0x230400,0x5000965a,0xc000010,0xb48000,0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,0x400000,0x5000975b,0x7c00100,0x230400,0x50009865,0x7c00100,0x230400,
-0x50009965,0x4000010,0x400000,0x50009965,0x7c00100,0x230400,0x50409a92,0x4000000,0x200000,0x5100080e,0x7c00100,0x220400,0x5100080e,0x7c00100,0x250400,0x51000c02,
-0x2802100,0x962460,0x51000c02,0x4000000,0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,0x7c00100,0x230400,0x51000f0a,0x7c00100,0x230400,0x51000f0a,0x7c00500,
-0x230400,0x51001110,0x2802100,0x962460,0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,0x230400,0x51001524,0x2802100,0x962460,0x51001524,0x4000000,0x200000,
-0x51001524,0x7c00100,0x230400,0x5100171a,0x2802100,0x962460,0x5100171a,0x4000000,0x200000,0x5100171a,0x4000000,0x1500000,0x5100171a,0x7c00100,0x230400,0x51001b27,
-0x4000000,0x200000,0x51001b27,0x4000000,0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,0x7c00100,0x230400,0x51001c1c,0x2802100,0x1862460,0x51001c1c,0x2802400,
-0x1862460,0x51001c1c,0x2806400,0x1862460,0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,0x1329800,0x51001c1c,0x6800000,0x1862400,0x51001c1c,0x6800100,0x1862400,
-0x51001c1c,0x6800100,0x1862540,0x51001c1c,0x6800400,0x1862400,0x51001c1c,0x7c00100,0x1830000,0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,
-0x7c00100,0x250400,0x51002800,0x80020,0x218820,0x51002c00,0x4000000,0x200000,0x51002d19,0x7c00100,0x230400,0x51003700,0x24000000,0x200000,0x51003700,0x24000000,
-0xe00000,0x51005201,0x2802400,0x962460,0x51005c00,0x4000000,0x200000,0x51006108,0x7c00100,0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,
-0x51006600,0x24000020,0x810000,0x51006600,0x24000020,0x1410000,0x51007300,0x24000000,0x200000,0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,
-0x2802000,0x962460,0x51008301,0x2802400,0x962460,0x51008a00,0x7c00500,0x230400,0x51008e00,0x24000000,0x200000,0x51008e00,0x24000000,0x400000,0x51008e00,0x24000000,
-0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00,0x24000000,0x1410000,0x51008e00,0x24000000,0x1710000,0x51008e00,0x24000002,0x200000,0x51008e00,0x24000500,0x230400,
-0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100,0x220400,0x51009419,0x7c00100,0x22040e,0x51009419,0x7c00100,0x22040f,0x51009419,0x7c00100,0x250400,0x51009500,
-0x4000000,0x200000,0x51009500,0x7c00500,0x230400,0x51009519,0x7c00100,0x220400,0x51009519,0x7c00100,0x22040f,0x51009519,0x7c00100,0x230400,0x51009519,0x7c00100,
-0x250400,0x51009b71,0x2802100,0x962460,0x51009b71,0x6800000,0x1329800,0x51009b71,0x6800100,0x962540,0x51009b71,0x6804400,0x962540,0x51009b71,0x7c00100,0x230400,
-0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400,0x962460,0x51009c52,0x2802c00,0x962460,0x51009c52,0x4000010,0x400000,0x51009c52,0x6800000,0x1329800,0x51009c52,
-0x6800100,0x962540,0x51009c52,0x7c00100,0x230400,0x51009c52,0xc000010,0x448000,0x51009d6d,0x6800000,0x1329800,0x51009d6d,0x7c00100,0x230400,0x51009d6d,0x7c00500,
-0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d,0xc000010,0x448000,0x51009e08,0x2802100,0x962460,0x51009f63,0x4000010,0x400000,0x51009f63,0x6800000,0x1329800,
-0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900,0x230400,0x51009f63,0xc000010,0x448000,0x51009f63,0xc000010,0xb48000,0x5100a008,0x2000,0x962460,0x5100a008,
-0x2802400,0x962460,0x5100a008,0x4000000,0x200000,0x5100a008,0x7c00100,0x220400,0x5100a008,0x7c00100,0x230400,0x5100a008,0x7c00100,0x250400,0x5100a008,0x7c00500,
-0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f,0x6800000,0x1329800,0x5100a16f,0x6800100,0x962540,0x5100a16f,0x7c00100,0x230400,0x5100a16f,0xc000010,0x448000,
-0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400,0x962460,0x5100a24f,0x6800000,0x1329800,0x5100a24f,0x7c00100,0x230400,0x5100a24f,0xc000010,0x448000,0x5100a36e,
-0x2802100,0x962460,0x5100a36e,0x4000000,0x200000,0x5100a36e,0x6800100,0x962540,0x5100a36e,0x6804400,0x962540,0x5100a36e,0x7c00100,0x230400,0x5100a442,0x2802100,
-0x962460,0x5100a442,0x4000000,0x200000,0x5100a442,0x6800000,0x1329800,0x5100a442,0x6800100,0x962540,0x5100a442,0x7c00100,0x230400,0x5100a442,0xc000010,0x448000,
-0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000,0x200000,0x5100a601,0x2802000,0x962460,0x5100a76b,0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,
-0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400,0x5100aa00,0x4000000,0xe00000,0x5100ab00,0x4000000,0xe00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,
-0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711,0x7c40300,0xe30000,0x510a7300,0x24000000,0x30200000,0x510aaa00,0x4000000,0x30e00000,0x5140a2b3,0x4000400,0x400000,
-0x514a8292,0x4000000,0xe00000,0x51802b84,0x2802000,0x962460,0x51c00908,0x2802400,0x962460,0x51c0a008,0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,
-0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400,0x52001004,0x4000000,0x1600000,0x52001b00,0x4000000,0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,
-0x1862400,0x52001c1c,0x6800400,0x1862400,0x52001e12,0x7c00100,0x2230500,0x52001e12,0x7c00100,0x2330520,0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,
-0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000,0x1600000,0x52002d00,0x4000000,0x200006,0x52003000,0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,
-0x7c00100,0x250400,0x52008301,0x2802400,0x962460,0x52008407,0x2802400,0x962460,0x52008407,0x7c00100,0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,
-0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00,0x24000000,0x400000,0x52009419,0x7c00100,0x250400,0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,
-0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400,0x962460,0x5200ac7e,0x4000010,0x200000,0x5200ac7e,0x7c00100,0x230400,0x5200ad28,0x7c00100,0x230400,0x5200ae6a,
-0x2802100,0x1862460,0x5200ae6a,0x2802400,0x962460,0x5200ae6a,0x2802400,0x1862460,0x5200ae6a,0x2806000,0x1862460,0x5200ae6a,0x4000000,0x1800000,0x5200ae6a,0x6800000,
-0x1329800,0x5200ae6a,0x6800100,0x1862400,0x5200ae6a,0x6800100,0x1862540,0x5200ae6a,0x7c00100,0x1830000,0x5200ae6a,0x7c00900,0x1830000,0x5200ae6a,0xc000010,0x1848000,
-0x5200b083,0x4000010,0x400000,0x5200b083,0x7c00100,0x230400,0x5200b083,0xc000010,0x448000,0x5200b182,0x2802400,0x962460,0x5200b182,0x4000000,0x200000,0x5200b182,
-0x4000010,0x400000,0x5200b182,0x7c00100,0x230400,0x5200b182,0xc000010,0x448000,0x5200b30a,0x2802400,0x962460,0x5200b30a,0x4000000,0x200000,0x5200b30a,0x7c00100,
-0x230400,0x5200b54e,0x2802100,0x962460,0x5200b54e,0x2802400,0x962460,0x5200b54e,0x4000000,0x200000,0x5200b54e,0x4000010,0x400000,0x5200b54e,0x6800000,0x1329800,
-0x5200b54e,0x6800100,0x962540,0x5200b54e,0x6804400,0x962540,0x5200b54e,0x7c00100,0x230400,0x5200b54e,0xc000010,0x448000,0x5200b61c,0x4000000,0x1800000,0x5200b61c,
-0x6800400,0x1862400,0x5200b61c,0x7c00100,0x1830000,0x5200b61c,0x7c00900,0x1830000,0x5200b77f,0x2802100,0x1862460,0x5200b77f,0x2802400,0x1862460,0x5200b77f,0x4000000,
-0x1800000,0x5200b77f,0x4000010,0x1800000,0x5200b77f,0x7c00100,0x1830000,0x5200b77f,0x7c00500,0x1830000,0x5200b77f,0x7c00900,0x1830000,0x5200b77f,0x7e00100,0x1830000,
-0x5200b873,0x2802100,0x962460,0x5200b873,0x2806400,0x962460,0x5200b873,0x6800000,0x1329800,0x5200b873,0x6800100,0x962540,0x5200b873,0x6800400,0x962540,0x5200b873,
-0x7c00100,0x230400,0x5200b873,0xc000010,0x448000,0x5200b912,0x7c00100,0x2230500,0x5200b912,0x7c00100,0x2330520,0x5200ba74,0x4000000,0x200000,0x5200ba74,0x4000010,
-0x400000,0x5200ba74,0x7c00100,0x230400,0x5200bb85,0x4000000,0x200000,0x5200bb85,0x7c00100,0x230400,0x5200bc75,0x4000000,0x400000,0x5200bc75,0x4000010,0x400000,
-0x5200bc75,0x7c00100,0x230400,0x5200bd7d,0x4000000,0x200000,0x5200bd7d,0x7c00100,0x230400,0x5200be7a,0x4000000,0x200000,0x5200be7a,0x7c00100,0x230400,0x5200bf58,
-0x7c00100,0x230400,0x5200c002,0x4000000,0x200000,0x5200c178,0,0x218960,0x5200c178,0x2802000,0x962460,0x5200c178,0x2802100,0x962460,0x5200c178,0x2802400,
-0x962460,0x5200c178,0x2806400,0x962460,0x5200c178,0x4000000,0x200000,0x5200c178,0x6800100,0x962540,0x5200c178,0x7c00100,0x230400,0x5200c178,0x7c00100,0x230401,
-0x5200c178,0xc000010,0x448000,0x5200c247,0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,0x5200c247,0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,
-0x4000000,0x100006,0x52023700,0x24000000,0x100000,0x52023700,0x24000000,0xe00000,0x52023700,0x24000000,0x10100000,0x52023700,0x24000000,0x10e00000,0x52023700,0x24000000,
-0x928045a0,0x52024400,0x4000000,0x100000,0x52027300,0x24000000,0x100000,0x5202c300,0x4000000,0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,
-0x5202c300,0x4000000,0x10000d,0x5202c300,0x4000100,0x150400,0x5202c300,0x4000100,0x15040d,0x5202c300,0x4000100,0x10150400,0x520a1e12,0x7c00100,0x2130480,0x520a3700,
-0x24000000,0x30e00000,0x520a3800,0x24000000,0x30100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,0x7c00300,0xe30001,0x520a7300,0x24000000,0x30100000,0x520ab412,0x7c00100,
-0x2130480,0x520ac400,0x4000000,0xe00002,0x520ac400,0x4000000,0xe0000d,0x520ac400,0x4000000,0x30e0000d,0x520ac414,0x4000000,0xe0000d,0x520ac511,0x7c40300,0xe30000,
-0x5240af78,0x6800400,0x962540,0x5240af78,0x7c00100,0x230400,0x5240af79,0x4000400,0x200000,0x5240af79,0x6800100,0x962540,0x5240b298,0x4000000,0x200000,0x5240b2a2,
-0x4000000,0x200000,0x5240b2a2,0x4000000,0x1500000,0x5240b5b6,0x7c00900,0x230400,0x524a4492,0x4000000,0xe00003,0x5280af78,0x2802400,0x962460,0x5280af79,0x2802400,
-0x962460,0x5280af7b,0x2802400,0x962460,0x5280af7d,0x2802400,0x962460,0x52c0b3ad,0x2802400,0x962460,0x52c0b3b1,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,
-0x60000c02,0x7c00100,0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100,0x962540,0x60000f0a,0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,
-0x7c00100,0x230400,0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460,0x60001b27,0x4000000,0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802000,
-0x962460,0x60002919,0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000,0x24000000,0x10200000,0x60003000,0x24000000,0x10e00000,0x60003700,0x24000000,0x200000,
-0x60003800,0x24000000,0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100,0x220400,0x60006108,0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,
-0x2802000,0x962460,0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000,0x60009519,0x7c00100,0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,
-0x220400,0x6000a008,0x7c00100,0x250400,0x6000c300,0x4000000,0x32703580,0x6000c654,0x2802000,0x962460,0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,
-0x6000c73f,0x2802000,0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000,0x200000,0x6000c73f,0x6800100,0x962540,0x6000c73f,0x6804000,0x962540,0x6000c73f,
-0x7c00100,0x230400,0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460,0x6000c941,0x2806000,0x962460,0x6000c941,0x4000000,0x200000,0x6000c941,0x4000010,
-0x200000,0x6000c941,0x6800000,0x1329800,0x6000c941,0x6800100,0x962540,0x6000c941,0x7c00100,0x230400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,
-0x6000cc00,0x4000000,0xe00000,0x6000d000,0x4000000,0x200000,0x6002c300,0x4000000,0x100000,0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,
-0x4000100,0x15040d,0x6002c300,0x4000100,0x10150400,0x600a3000,0x24000000,0x30200000,0x600a3000,0x24000000,0x30e00000,0x600a3700,0x24000000,0x30200000,0x600a3800,0x24000000,
-0x30200000,0x600a3800,0x24000000,0xb28045a0,0x600a4305,0x7c00100,0xe30400,0x600ac300,0x4000000,0x30100000,0x600ac400,0x4000000,0x10e0000d,0x600ac400,0x4000000,0x30e0000d,
-0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,0x600acc00,0x4000000,0x30e00000,0x600acd00,0x4000000,0x30200000,0x600acd00,0x4000000,0x30e00000,0x600acd00,
-0x4000000,0x30e05200,0x600acd00,0x4000000,0xb0e00000,0x600acd00,0x4000000,0xb28045a0,0x600acd00,0x4000000,0xb28049c0,0x600ace00,0x4000000,0x30e00000,0x600ace00,0x4000000,
-0xb28045a0,0x600acf00,0x4000000,0x30e00000,0x600acf00,0x4000000,0xb28045a0,0x600ad111,0x7c40300,0xe30000,0x604ac492,0x4000000,0x30e00003,0x61000a03,0x4000000,0x1600000,
-0x61000c02,0,0x218960,0x6100120f,0x4000000,0x200000,0x61001a18,0x7c00100,0x1830000,0x61001d0c,0x7c00100,0x230400,0x61001d0c,0x7c00100,0x250400,0x61006600,
-0x24000020,0x200000,0x61008407,0x7c00100,0x220400,0x61008407,0x7c00100,0x250400,0x6100870c,0x7c00100,0x220400,0x61008e00,0x24000000,0x200000,0x61008e00,0x24000000,
-0x400000,0x61008e00,0x24000002,0x300000,0x6100903c,0x7c00100,0x230400,0x61009519,0x7c00100,0x220400,0x61009519,0x7c00100,0x250400,0x61009519,0x7c00500,0x22040f,
-0x61009b71,0x2802100,0x962460,0x61009b71,0x2806400,0x962460,0x61009b71,0x7c00100,0x230400,0x6100a008,0x2802100,0x962460,0x6100c300,0x4000000,0x20000f,0x6100cd00,
-0x4000000,0x200000,0x6100d202,0x2802400,0x962460,0x6100d202,0x2802500,0x962460,0x6100d202,0x7c00100,0x230400,0x6100d302,0x4000020,0x200000,0x6100d302,0x7c00120,
-0x230405,0x6100d476,0x2802100,0x962460,0x6100d476,0x2802100,0x962461,0x6100d476,0x2806400,0x962460,0x6100d476,0x4000000,0x400000,0x6100d476,0x6800000,0x1329800,
-0x6100d476,0x6800100,0x962540,0x6100d476,0x7c00100,0x230400,0x6100d476,0xc000010,0x448000,0x6100d573,0x2802100,0x962460,0x6100d573,0x2806400,0x962460,0x6100d573,
-0x6800100,0x962540,0x6100d573,0x7c00100,0x230400,0x6100d573,0x7c00900,0x230400,0x6100d573,0xc000010,0x448000,0x6100d68d,0x7c00100,0x230400,0x6100d756,0x7c00100,
-0x230400,0x6100d85c,0x2802400,0x962460,0x6100d85c,0x6800100,0x962540,0x6100d85c,0x7c00100,0x230400,0x6100d85c,0x7c00500,0x230400,0x6100d997,0x2802100,0x962460,
-0x6100d997,0x4000000,0x200000,0x6100d997,0x4000000,0x400000,0x6100d997,0x6800000,0x1329800,0x6100d997,0x6800100,0x962540,0x6100d997,0x6804400,0x962540,0x6100d997,
-0x7c00100,0x230400,0x6100d997,0x7c00100,0x230560,0x6100d997,0xc000010,0x448000,0x6100da98,0x6800000,0x1329800,0x6100da98,0x7c00100,0x230400,0x6100db71,0x4000000,
-0x200000,0x6100dc99,0x2802100,0x962460,0x6100dc99,0x2802400,0x962460,0x6100dc99,0x6800000,0x1329800,0x6100dc99,0x6800100,0x962540,0x6100dc99,0x6804400,0x962540,
-0x6100dc99,0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,0x610a4f11,0x7c00300,0xe30001,0x610ace00,0x4000000,0x30e00000,0x6140af78,0x7c00100,0x230400,0x6140af79,
-0x6800100,0x962540,0x6140af82,0x7c00100,0x230400,0x6180af79,0x2802400,0x962460,0x62002a00,0x4000000,0x1600000,0x63000c00,0x80000,0x918820,0x63002800,0x80000,
-0x918820,0x7000080e,0x7c00100,0x250400,0x70000a03,0x4000000,0x200000,0x70000c00,0,0x218960,0x70000f0a,0x7c00100,0x230400,0x70001004,0x7c00100,0x230400,
-0x70001524,0x2802100,0x962460,0x70001524,0x7c00100,0x230400,0x70001615,0x2802100,0x962460,0x7000171a,0x2802100,0x962460,0x70001821,0x6800000,0x1329800,0x70002320,
-0x7c00100,0x230400,0x70002a00,0x4000000,0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,0x24000000,0x200000,0x70003000,0x24000000,0x10200000,0x70003800,0x24000000,
-0xe00000,0x70005201,0x2802400,0x962460,0x7000581e,0x7c00100,0x230400,0x70006108,0x7c00100,0x220400,0x70006108,0x7c00100,0x250400,0x70006f30,0x7c00100,0x230400,
-0x70007300,0x24000000,0x200000,0x70007f0e,0x4000000,0x200000,0x70008301,0x2802100,0x962460,0x70008301,0x2802400,0x962460,0x70008e00,0x24000000,0x200000,0x70008e00,
-0x24000000,0x400000,0x70008e00,0x24000002,0x400000,0x70008e00,0x24000008,0x1410000,0x70008e00,0x24000010,0x400000,0x70008e00,0x2c000010,0x448000,0x70009519,0x7c00100,
-0x220400,0x70009519,0x7c00100,0x230400,0x70009519,0x7c00100,0x250400,0x70009865,0x7c00100,0x230400,0x70009965,0x4000010,0x400000,0x70009965,0x7c00100,0x230400,
-0x7000a008,0x7c00100,0x220400,0x7000a008,0x7c00100,0x250400,0x7000a008,0x7c00500,0x22040f,0x7000a50e,0x4000000,0x200000,0x7000b61c,0x2802400,0x1862460,0x7000b61c,
-0x6800400,0x1862400,0x7000b61c,0x7c00100,0x1830000,0x7000c300,0x4000000,0x100000,0x7000c941,0x2806000,0x962460,0x7000cc00,0x4000000,0xe00000,0x7000cd00,0x4000000,
-0x200000,0x7000cd00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x10200000,0x7000cd00,0x4000000,0x10e00000,0x7000cd00,0x4000000,0x10e05200,0x7000cd00,0x4000000,0x90e00000,
-0x7000cd00,0x4000000,0x928045a0,0x7000cf00,0x4000000,0xe00000,0x7000cf00,0x4000000,0x10e00000,0x7000d202,0x2802100,0x962460,0x7000d202,0x7c00100,0x230400,0x7000d997,
-0x7c00100,0x230400,0x7000d997,0xc000010,0x248000,0x7000dd86,0x2802400,0x962460,0x7000dd86,0x7c00100,0x230400,0x7000dd86,0xc000010,0x448000,0x7000de9f,0x4000000,
-0x200000,0x7000de9f,0x7c00100,0x230400,0x7000e001,0x2000,0x962460,0x7000e001,0x2802400,0x962460,0x7000e187,0x2802000,0x962460,0x7000e187,0x2802100,0x962460,
-0x7000e187,0x4000000,0x200000,0x7000e187,0x7c00100,0x230400,0x7000e187,0xc000010,0x448000,0x7000e288,0x7c00100,0x230400,0x7000e300,0x4000000,0x200000,0x7000e489,
-0x2802100,0x962460,0x7000e489,0x2802400,0x962460,0x7000e489,0x6800100,0x962540,0x7000e489,0x6800100,0x962541,0x7000e489,0x6804400,0x962540,0x7000e489,0x7c00100,
-0x230400,0x7000e489,0x7c00900,0x230400,0x7000e59d,0x2802100,0x962460,0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,0x200000,0x7000e59d,0x4000010,0x200000,
-0x7000e59d,0x6800100,0x962540,0x7000e59d,0x6804400,0x962540,0x7000e59d,0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,0x7000e691,0x2802100,0x962460,0x7000e691,
-0x2802400,0x962460,0x7000e691,0x2806400,0x962460,0x7000e691,0x6800000,0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,0x7c00100,0x230400,0x7000e700,0x4000400,
-0x200000,0x7000e70e,0x7c00100,0x220400,0x7000e719,0x7c00100,0x220400,0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,0x230400,0x7000e9a0,0x2802400,0x962460,
-0x7000e9a0,0x4000000,0x200000,0x7000e9a0,0x4000000,0x500000,0x7000e9a0,0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,0x7000ea79,0x4000000,0x200000,0x7000ea79,
-0x4000000,0xf00000,0x7000ea79,0x4000010,0x400000,0x7000ea79,0x7c00100,0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,0x4000000,0x200000,0x7000eb8c,0x7c00100,
-0x230400,0x7000eca3,0x2802100,0x962460,0x7000eca3,0x2806400,0x962460,0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,0x1329800,0x7000eca3,0x6800100,0x962540,
-0x7000eca3,0x7c00100,0x230400,0x7000eca3,0xc000010,0x448000,0x7000ed95,0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,0x7000ed95,0xc000010,0x448000,0x7000ee1c,
-0x2802400,0x1862460,0x7000ee1c,0x6800000,0x1329800,0x7000ee1c,0x7c00100,0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,0x4000000,0x200000,0x7000ef8f,0x7c00100,
-0x230400,0x7000f08e,0x4000000,0x200000,0x7000f08e,0x7c00100,0x230400,0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,0x230400,0x7000f200,0x4000000,0x200000,
-0x7000f200,0x4000000,0x1200000,0x7000f200,0x4000000,0x1710000,0x7000f34b,0x2802100,0x962460,0x7000f34b,0x4000000,0x200000,0x7000f34b,0x4000010,0x400000,0x7000f34b,
-0x6800000,0x1329800,0x7000f34b,0x7c00100,0x230400,0x7000f34b,0x7c00900,0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,0x4000000,0x200000,0x7000f490,0x7c00100,
-0x230400,0x7000f5a5,0x7c00100,0x230400,0x7000f67b,0x4000000,0x200000,0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,0x230400,0x7000f8a6,0x2802100,0x962460,
-0x7000f8a6,0x2802400,0x962460,0x7000f8a6,0x2806400,0x962460,0x7000f8a6,0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,0x7000f8a6,0x4000800,0x200000,0x7000f8a6,
-0x6800100,0x962540,0x7000f8a6,0x6800100,0x962541,0x7000f8a6,0x7c00100,0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,0x4000000,0x200000,0x7000fa00,0x4000000,
-0x200000,0x7000fb9e,0x2802100,0x962460,0x7000fb9e,0x2802400,0x962460,0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,0x200000,0x7000fb9e,0x6800000,0x1329800,
-0x7000fb9e,0x6800100,0x962540,0x7000fb9e,0x6800100,0x962541,0x7000fb9e,0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,0x7000fc92,0x6800000,0x1329800,0x7000fc92,
-0x7c00100,0x220400,0x7000fc92,0x7c00100,0x230400,0x7000fc92,0x7c00100,0x250400,0x700acd00,0x4000000,0x30e00000,0x700acd00,0x4000000,0xb28045a0,0x700ace00,0x4000000,
-0x30e00000,0x700acf00,0x4000000,0x30e00000,0x700acf00,0x4000000,0xb0e00000,0x7040dfbd,0x4000000,0x200000,0x7040f7c1,0x80000,0x918820,0x7080af79,0x2802400,0x962460,
-0x7080dfbd,0x2802400,0x962460,0x70c0e4bf,0x2802400,0x962460,0x70c0e4bf,0x6800100,0x962540,0x8000120f,0x7c00100,0x230400,0x80001524,0x7c00100,0x230400,0x8000171a,
-0x7c00100,0x230400,0x80002006,0x7c00100,0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,0x4000000,0x200000,0x80005208,0x2802400,
-0x962460,0x80005c00,0x4000000,0x200000,0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,0x230400,0x80009519,0x7c00100,0x250400,
-0x80009865,0x7c00100,0x230400,0x8000a008,0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,0x8000cd00,0x4000000,0xe00000,0x8000d202,
-0x2802500,0x962460,0x8000d202,0x7c00100,0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802400,0x962460,0x8000d997,0x4000000,0x200000,0x8000d997,0x4000000,
-0x400000,0x8000d997,0x4000000,0x500000,0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,0x962460,0x8000e489,0x7c00100,0x230400,
-0x8000e719,0x7c00100,0x220400,0x8000f8a6,0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,0x8000fda1,0x2802100,0x1862460,0x8000fda1,
-0x2806400,0x1862460,0x8000fda1,0x4000000,0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862540,0x8000fda1,0x7c00100,0x1830000,0x8000fda1,0xc000010,
-0x448000,0x8000fe9c,0x7c00100,0x230400,0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,0x7c00100,0x220400,0x80010165,0x7c00100,0x230400,
-0x800102a2,0x4000000,0x200000,0x800102a2,0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,0x448000,0x8001044c,0x4000000,0x200000,0x8001044c,
-0x7c00100,0x220400,0x8001044c,0x7c00100,0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,0x80010670,0x4000010,0x400000,0x80010670,0xc000010,
-0x448000,0x800a4711,0x7c40300,0xe30000,0x800acd00,0x4000000,0x30e00000,0x800acd00,0x4000000,0x72904de0,0x800ace00,0x4000000,0x30e00000,0x800acf00,0x4000000,0x30e00000,
-0x800b0011,0x7c40300,0xe30000,0x800b0500,0x4000000,0x30e00000,0x800b0500,0x4000000,0xb28045a0,0x90001615,0x7c00100,0x230400,0x9000171a,0x4000000,0x200000,0x9000171a,
-0x7c00100,0x230400,0x90003000,0x24000000,0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802000,0x962460,0x90008e00,0x24000000,0x400000,0x90009519,0x7c00100,
-0x250400,0x9000a16f,0x2802100,0x962460,0x9000d200,0,0x218960,0x9000d202,0x2802000,0x962460,0x9000d202,0x2802100,0x962460,0x9000d202,0x7c00100,0x230400,
-0x9000e59d,0x2802100,0x962460,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,0x962460,0x900107a7,0x2802c00,0x962460,0x900107a7,0x4000000,0x1400000,0x900107a7,
-0x6800000,0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,0x900108a8,0x2802100,0x962460,0x900108a8,0x2806400,0x962460,0x900108a8,0x4000000,
-0x200000,0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,0x6800000,0x1329800,0x900108a8,0x6800100,0x962540,0x900108a8,0x7c00100,0x230400,
-0x900108a8,0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,0x962460,0x90010ca9,0x2802100,0x962460,0x90010ca9,0x4000000,0x500000,0x90010ca9,
-0x4000010,0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,0x90010d1b,0x4000000,0x500000,0x90010eaa,0x2802100,0x962460,0x90010eaa,0x2802400,
-0x962460,0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,0x4000000,0x400000,0x90010eaa,0x4000010,0x400000,0x90010eaa,0x6800000,0x1329800,
-0x90010eaa,0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,0x448000,0x90010fab,0x7c00100,0x220400,0x90010fab,0x7c00100,0x250400,0x9002c300,
-0x4000000,0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0x30e00000,0x900acd00,0x4000000,0xb28045a0,0x900acf00,0x4000000,0x30e00000,0x900b0500,0x4000000,
-0xe00000,0x900b0500,0x4000000,0x30e00000,0x900b0500,0x4000000,0xb28045a0,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,0x7c00300,0xe30000,0x900b119a,0x7c00300,0xe30000,
-0x90408e06,0x24000000,0x400000};
+0x6f67,0,0,0x7067,0,0,0x7367,0x20000000,0,0x7367,0x20000000,0x200000,0x7567,0,0,0x7667,
+0,0,0x7767,0,0,0x7867,0,0,0x7a67,0,0,0x7b67,0,0,0x7c67,0,
+0,0x7e67,0,0,0x7f67,0,0,0x8167,0,0,0x8267,0,0,0x8367,0,0,
+0x8367,0,0x962460,0x8467,0,0,0x8567,0,0,0x8667,0,0,0x8767,0,0,0x8867,
+0,0,0x8967,0,0,0x8b67,0,0,0x8c67,0,0,0x8e67,0x20000000,0,0x8e67,0x20000000,
+0x400000,0x8f67,0,0,0x9067,0,0,0x9167,0,0,0x9267,0,0,0x9367,0,0,
+0x9567,0,0,0x9667,0,0,0x9767,0,0,0x9867,0,0,0x9967,0,0,0x9a67,
+0,0,0x9c67,0,0,0x9f67,0,0,0xa167,0,0,0xa367,0,0,0xa467,0,
+0,0xa567,0,0,0xa667,0,0,0xa767,0,0,0xa867,0,0,0xa967,0,0,
+0xaa67,0,0xe00000,0xab67,0,0xe00000,0xac67,0,0,0xad67,0,0,0xae67,0,0,0xaf67,
+0,0,0xaf67,0,0x962540,0xb167,0,0,0xb267,0,0,0xb367,0,0,0xb467,0,
+0,0xb567,0,0,0xb767,0,0,0xb867,0,0,0xb967,0,0,0xba67,0,0,
+0xbc67,0,0,0xbd67,0,0,0xbe67,0,0,0xbf67,0,0,0xc067,0,0,0xc167,
+0,0,0xc267,0,0,0xc367,0,0xe00000,0xc467,0,0xe00000,0xc667,0,0,0xc767,0,
+0,0xc867,0,0,0xc967,0,0,0xca67,0,0,0xcb67,0,0xe30000,0xcc67,0,0xe00000,
+0xcf67,0,0xe00000,0xcf67,0,0x30e00000,0xd067,0,0xe00000,0xd267,0,0,0xd367,0,0,0xd467,
+0,0,0xd567,0,0,0xd667,0,0,0xd867,0,0,0xd967,0,0,0xda67,0,
+0,0xdb67,0,0,0xdc67,0,0,0xdd67,0,0,0xde67,0,0,0xdf67,0,0,
+0xe067,0,0,0xe167,0,0,0xe267,0,0,0xe367,0,0xe00000,0xe467,0,0,0xe567,
+0,0,0xe667,0,0,0xe767,0,0,0xe867,0,0,0xe967,0,0,0xea67,0,
+0,0xeb67,0,0,0xec67,0,0,0xed67,0,0,0xee67,0,0,0xef67,0,0,
+0xf167,0,0,0xf367,0,0,0xf567,0,0,0xf667,0,0,0xf767,0,0,0xf867,
+0,0,0xf967,0,0,0xfa67,0,0xe00000,0xfb67,0,0,0xfc67,0,0,0xfd67,0,
+0,0xfe67,0,0,0x10167,0,0,0x10267,0,0,0x10367,0,0,0x10467,0,0,
+0x10567,0,0x200000,0x10567,0,0xe00000,0x10567,0,0x30e00000,0x10567,0,0xb28045a0,0x10667,0,0,0x10767,
+0,0,0x10867,0,0,0x10967,0,0,0x10a67,0,0,0x10b67,0,0,0x10b67,0,
+0x1230400,0x10c67,0,0,0x10d67,0,0,0x10e67,0,0,0x10f67,0,0,0x11067,0,0,
+0x11167,0,0,0xa0067,0,0xe00000,0xa0067,0,0xe30000,0xa4667,0,0xe00000,0xa4767,0,0xe00000,0xa4767,
+0,0xe30000,0xa4f67,0,0xe00000,0xa5e67,0,0xe00000,0xa5f67,0,0xe00000,0xac567,0,0xe00000,0xad167,0,
+0xe00000,0xb0067,0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x440020,0x11000100,0x40000001,0x643020,0x11000100,0x40000001,0xa5a040,
+0x11000100,0x40000001,0x116a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc4000b,0x11000200,0x7c00100,0x220402,0x11000200,0x24000000,0x10200000,0x11000200,
+0x24000008,0x1710000,0x11000200,0x40000001,0x1d3b020,0x11000219,0x7c00100,0x220401,0x11000219,0x7c00100,0x250401,0x11000319,0x7c00100,0x220401,0x11000319,0x7c00100,
+0x220402,0x11000319,0x7c00100,0x250400,0x11000319,0x7c00100,0x250401,0x11000419,0x7c00100,0x220400,0x11000419,0x7c00100,0x220401,0x11000419,0x7c00100,0x220402,
+0x11000419,0x7c00100,0x230400,0x11000419,0x7c00100,0x250400,0x11000419,0x7c00100,0x250401,0x11000419,0x7c00100,0x250402,0x11000519,0x7c00100,0x220400,0x11000519,
+0x7c00100,0x230400,0x11000600,0x4000400,0x200000,0x11000600,0x4000400,0x200002,0x11000600,0x4000400,0x200400,0x11000600,0x7c00500,0x220400,0x11000600,0x7c00500,
+0x230400,0x11000600,0x7c00500,0x530400,0x11000600,0x7c00d00,0x230400,0x11000619,0x7c00500,0x22040f,0x11000800,0x4000010,0x1001401,0x11000800,0x4000400,0x200001,
+0x11000800,0x6800010,0x201001,0x11000800,0x7c00500,0x230401,0x11000807,0x7c00100,0x220400,0x11000807,0x7c00100,0x250400,0x1100080e,0x4000400,0x200000,0x1100080e,
+0x4000400,0x200002,0x1100080e,0x7000500,0x220402,0x1100080e,0x7c00100,0x220400,0x1100080e,0x7c00100,0x220401,0x1100080e,0x7c00100,0x220402,0x1100080e,0x7c00100,
+0x250400,0x1100080e,0x7c00100,0x250401,0x1100080e,0x7c00120,0x220402,0x1100080e,0x7c00120,0x250402,0x11000908,0x4000000,0x200000,0x11000908,0x7c00100,0x220400,
+0x11000908,0x7c00100,0x220401,0x11000908,0x7c00100,0x250400,0x11000908,0x7c00100,0x250401,0x11000a03,0x4000000,0x200000,0x11000a03,0x4000000,0x270000,0x11000a03,
+0x7c00100,0x220400,0x11000a03,0x7c00100,0x220402,0x11000a03,0x7c00100,0x250400,0x11000a03,0x7c00500,0x230400,0x11000b13,0x2802500,0x962460,0x11000b13,0x4000000,
+0x200000,0x11000b13,0x4000000,0x201000,0x11000b13,0x4000000,0x230400,0x11000b13,0x4000002,0x400000,0x11000b13,0x4000010,0x200000,0x11000b13,0x7c00100,0x2633800,
+0x11000c00,0,0x218960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02,0x4000000,0x200000,0x11000c02,0x4000000,0x1329400,0x11000c02,
+0x4000000,0x1329800,0x11000c02,0x4000000,0x1500000,0x11000c02,0x6800000,0x1329800,0x11000c02,0x7c00100,0x230400,0x11000c02,0x7c00100,0x230401,0x11000c02,0x7c00100,
+0x230402,0x11000c02,0x7c00500,0x230400,0x11000c02,0x7d00100,0x230400,0x11000c02,0xc000010,0xb48000,0x11000f0a,0x2802100,0x962460,0x11000f0a,0x2802400,0x962460,
+0x11000f0a,0x2806400,0x962460,0x11000f0a,0x4000000,0x200000,0x11000f0a,0x6800100,0x962540,0x11000f0a,0x7c00100,0x230400,0x11000f0a,0x7c00100,0x230401,0x11001004,
+0x2802100,0x962460,0x11001004,0x2802400,0x962460,0x11001004,0x2806400,0x962460,0x11001004,0x4000000,0x200000,0x11001004,0x4000000,0x1500000,0x11001004,0x6800100,
+0x962540,0x11001004,0x6800100,0x962541,0x11001004,0x7c00100,0x230400,0x11001004,0x7c00100,0x230401,0x11001110,0x2802100,0x962460,0x11001110,0x2802400,0x962460,
+0x11001110,0x2806400,0x962460,0x11001110,0x6800100,0x962540,0x11001110,0x7c00100,0x230400,0x11001110,0x7c00100,0x230401,0x1100120f,0x2802100,0x962460,0x1100120f,
+0x2802400,0x962460,0x1100120f,0x2806400,0x962460,0x1100120f,0x6800100,0x962540,0x1100120f,0x7c00100,0x230400,0x1100131f,0x2802100,0x962460,0x1100131f,0x2802400,
+0x962460,0x1100131f,0x2806400,0x962460,0x1100131f,0x4000000,0x200000,0x1100131f,0x6800000,0x1329800,0x1100131f,0x6800100,0x962540,0x1100131f,0x6800100,0x962541,
+0x1100131f,0x7c00100,0x230400,0x1100131f,0x7c00100,0x230401,0x11001423,0x2802100,0x962460,0x11001423,0x2806400,0x962460,0x11001423,0x6800100,0x962540,0x11001423,
+0x6800100,0x962541,0x11001423,0x7c00100,0x230400,0x11001423,0x7c00100,0x230401,0x11001524,0x2802100,0x962460,0x11001524,0x2802100,0x962461,0x11001524,0x2806400,
+0x962460,0x11001524,0x6800000,0x1329800,0x11001524,0x6800100,0x962540,0x11001524,0x7c00100,0x230400,0x11001615,0x2802100,0x962460,0x11001615,0x2806400,0x962460,
+0x11001615,0x6800000,0x1329800,0x11001615,0x6800100,0x962540,0x11001615,0x6800100,0x962541,0x11001615,0x7c00100,0x230400,0x1100171a,0x2802100,0x962460,0x1100171a,
+0x2806400,0x962460,0x1100171a,0x6800000,0x1329800,0x1100171a,0x6800100,0x962540,0x1100171a,0x6800100,0x962541,0x1100171a,0x7c00100,0x230400,0x11001900,0x4000000,
+0x1600000,0x11001926,0x2802100,0x1862460,0x11001926,0x2802400,0x1862460,0x11001926,0x2806100,0x1862460,0x11001926,0x4000000,0x200000,0x11001926,0x4000010,0x400000,
+0x11001926,0x6800000,0x1329800,0x11001926,0x7800100,0x1830142,0x11001926,0x7c00100,0x1830000,0x11001926,0x7c00900,0x1830000,0x11001926,0x7e00100,0x1830000,0x11001a18,
+0x2802100,0x1862460,0x11001a18,0x2802400,0x1862460,0x11001a18,0x6800000,0x1329800,0x11001a18,0x7800100,0x1830142,0x11001a18,0x7c00100,0x1830000,0x11001a18,0x7c00100,
+0x1830002,0x11001a18,0x7c00900,0x1830000,0x11001a18,0x7e00100,0x1830000,0x11001d0c,0x7c00100,0x230400,0x11001d0c,0x7c00100,0x250400,0x11001e12,0x7c00100,0x2230500,
+0x11001e12,0x7c00100,0x2330520,0x11001e12,0x7c80100,0x2330520,0x11002619,0x7c00100,0x220401,0x11002619,0x7c00100,0x220402,0x11002619,0x7c00100,0x250401,0x1100270e,
+0x4000400,0x200001,0x1100270e,0x4000400,0x200002,0x1100270e,0x4000400,0x500001,0x1100270e,0x7c00100,0x220401,0x1100270e,0x7c00100,0x250401,0x11002800,0x80000,
+0x918820,0x11002800,0x80000,0x1c18020,0x11002800,0x180000,0x918820,0x11002800,0x4000001,0x440001,0x11002800,0x4000001,0x440002,0x11002800,0x4000001,0xc4000b,
+0x11002800,0x6800000,0x201c00,0x11002800,0x6800020,0x201c00,0x11002800,0x24000000,0x200000,0x11002800,0x24000000,0x200002,0x11002800,0x24000000,0x810000,0x11002800,
+0x24000000,0x1410000,0x11002800,0x24000000,0x1500000,0x11002800,0x24000000,0x1500002,0x11002800,0x24000002,0x400000,0x11002800,0x24000006,0xc0000b,0x11002800,0x24000008,
+0x1410000,0x11002800,0x24000008,0x1710000,0x11002800,0x24000020,0x1001400,0x11002800,0x24000020,0x1500002,0x11002800,0x2c000010,0x1248000,0x11002800,0x2c000010,0x11248002,
+0x11002800,0x40000001,0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x80000,0x2a65620,0x11002801,0x82000,0x962460,0x11002900,0x4000000,0x20000e,0x11002900,
+0x4000000,0x20000f,0x11002900,0x4000020,0x20000e,0x11002900,0x4000020,0x20000f,0x11002900,0x4000020,0x81000e,0x11002900,0x4000020,0x81000f,0x11002900,0x4000020,
+0x141000e,0x11002900,0x4000020,0x141000f,0x11002900,0x4000022,0x20000e,0x11002900,0x4000022,0x20000f,0x11002a00,0x4000000,0x1500000,0x11002a00,0x4000000,0x1600000,
+0x11002a00,0x4000000,0x1600002,0x11002b01,0x2000,0x962460,0x11002b01,0x2802020,0x962460,0x11002c00,0x4000000,0x200000,0x11002c00,0x4000000,0x200002,0x11002c00,
+0x4000000,0x20000f,0x11002c00,0x4000020,0x200000,0x11002c00,0x7c00000,0x200000,0x11002c00,0x7c00020,0x200000,0x11002c00,0x7c00120,0x220405,0x11002c00,0x7c00120,
+0x230402,0x11002c00,0x7c00120,0x250402,0x11002c00,0x7c00120,0x250405,0x11002c19,0x7c00100,0x250400,0x11002c19,0x7c00100,0x250401,0x11002d00,0x4000000,0x100006,
+0x11002d00,0x4000000,0x200006,0x11002d19,0x7c00100,0x220402,0x11002d19,0x7c00100,0x230400,0x11002d19,0x7c00100,0x250402,0x11002e00,0x24000000,0x200000,0x11002e00,
+0x24000020,0x200000,0x11002e00,0x24000020,0x200001,0x11002e00,0x24000020,0x10200000,0x11002f00,0x24000020,0x200000,0x11002f00,0x24000020,0x200001,0x11002f00,0x24000020,
+0x200002,0x11002f00,0x24000020,0xf00000,0x11002f00,0x24000020,0x1600000,0x11002f00,0x24000022,0x1600000,0x11003000,0x24000000,0x200000,0x11003000,0x24000000,0x10200000,
+0x11003000,0x24000020,0x200000,0x11003000,0x24000020,0x810000,0x11003000,0x24000020,0x1410000,0x11003100,0x24000000,0x200000,0x11003200,0x24000000,0x200000,0x11003300,
+0x4000000,0x100003,0x11003400,0x24000000,0x100000,0x11003400,0x24000000,0x200000,0x11003500,0x24000000,0x200000,0x11003600,0x24000000,0x200000,0x11003600,0x24000000,
+0x10200000,0x11003600,0x24000020,0x200000,0x11003700,0x24000000,0x200000,0x11003700,0x24000000,0xe00000,0x11003700,0x24000000,0x10200000,0x11003700,0x24000000,0x10e00000,
+0x11003700,0x24000000,0x928045a0,0x11003700,0x24000020,0x200000,0x11003800,0x4000000,0x100000,0x11003800,0x24000000,0x200000,0x11003800,0x24000000,0xb00000,0x11003800,
+0x24000000,0xe00000,0x11003800,0x24000000,0x1710000,0x11003800,0x24000000,0x10200000,0x11003800,0x24000000,0x10b00000,0x11003800,0x24000000,0x10e00000,0x11003800,0x24000000,
+0x10e05200,0x11003800,0x24000000,0x928045a0,0x11005003,0x7c00100,0x220402,0x11005013,0x2802500,0x962460,0x11005013,0x4000020,0x200005,0x11005013,0x7c00100,0x2633801,
+0x11005013,0x7c00100,0x2633802,0x11005013,0x7c00100,0x2633805,0x11005019,0x7c00100,0x220402,0x11005100,0x24000000,0x810000,0x11005100,0x24000000,0x1410000,0x11005102,
+0x7000100,0x230408,0x11005102,0x7c00100,0x230404,0x11005102,0x7c00100,0x230407,0x11005102,0x7c00100,0x230408,0x11005102,0x7c00100,0x230409,0x11005201,0x2802400,
+0x962460,0x11005500,0x80000,0x1e18820,0x11005502,0x7000100,0x230408,0x11005502,0x7c00100,0x230404,0x11005502,0x7c00100,0x230407,0x11005502,0x7c00100,0x230408,
+0x11005502,0x7c00100,0x230409,0x11005667,0x1000,0,0x11020200,0x80004,0x418820,0x11020200,0x4000000,0x100006,0x11020200,0x4000000,0x10000f,0x11020200,
+0x4000400,0x100002,0x11020200,0x4000400,0x500002,0x11020200,0x6800c00,0x101000,0x11020200,0x24000000,0x100000,0x11020200,0x24000000,0x1400000,0x11020200,0x24000000,
+0x1500000,0x11020200,0x24000000,0x1600000,0x11020200,0x24000000,0x10200000,0x11020200,0x24000020,0x100000,0x11020200,0x24000020,0x1600000,0x11020219,0x7c00100,0x12040f,
+0x11020219,0x7c00100,0x220400,0x11020219,0x7c00100,0x220401,0x11020219,0x7c00100,0x250400,0x11020319,0x7c00100,0x220400,0x11020319,0x7c00100,0x220401,0x11020319,
+0x7c00100,0x220402,0x11020319,0x7c00100,0x250400,0x11020319,0x7c00100,0x250402,0x11020319,0x7d00100,0x220402,0x11020419,0x7c00100,0x220401,0x11020519,0x7c00100,
+0x220400,0x11020600,0x4000400,0x100002,0x11020600,0x4000400,0x200400,0x11020600,0x7c00500,0x130400,0x11020600,0x7c00d00,0x130400,0x11020701,0x2802400,0x962460,
+0x11020701,0x2802400,0x962461,0x11020701,0x2802400,0xc62460,0x1102080e,0x7c00100,0x220400,0x1102080e,0x7c00100,0x250400,0x11020908,0x7c00100,0x220400,0x11020908,
+0x7c00100,0x220401,0x11020908,0x7c00100,0x250400,0x11020908,0x7c00100,0x250401,0x11022800,0x24000000,0x100000,0x11022800,0x24000000,0x200000,0x11022800,0x24000000,
+0x200002,0x11022800,0x24000000,0x401000,0x11022800,0x24000000,0xf00002,0x11022800,0x24000000,0xf0ac02,0x11022800,0x24000000,0x1500000,0x11022800,0x24000002,0x100000,
+0x11022800,0x24000002,0x370000,0x11022800,0x24000002,0x470000,0x11022800,0x24000006,0x400000,0x11022800,0x24000008,0x1710000,0x11022800,0x24000008,0x1712c00,0x11022800,
+0x24000020,0x100000,0x11022800,0x24000020,0x1500000,0x11022800,0x24000020,0x1500002,0x11022900,0x4000000,0x10000e,0x11022900,0x4000000,0x10000f,0x11022919,0x7c00100,
+0x12040f,0x11022c00,0x4000000,0x100002,0x11022c00,0x4000000,0x1500002,0x11022c00,0x4000000,0x1600002,0x11022c00,0x4000000,0x1010000f,0x11022c00,0x7c00120,0x120405,
+0x11022c0e,0x7c00100,0x250401,0x11022c19,0x7c00100,0x150401,0x11022d00,0x4000000,0x100006,0x11022d00,0x4000000,0x200006,0x11022d19,0x7c00100,0x120402,0x11022d19,
+0x7c00100,0x150402,0x11022e00,0x24000000,0x200000,0x11022e00,0x24000020,0x100000,0x11022e00,0x24000020,0x10100000,0x11022f00,0x24000020,0x100000,0x11022f00,0x24000020,
+0x100001,0x11022f00,0x24000020,0x100002,0x11023000,0x24000000,0x100000,0x11023300,0x4000000,0x100002,0x11023300,0x4000000,0x100003,0x11023300,0x4000100,0x120403,
+0x11023300,0x4000100,0x150403,0x11023300,0x4000100,0x10150403,0x11023400,0x24000000,0x100000,0x11023500,0x24000000,0x100000,0x11023600,0x24000000,0x100000,0x11023600,
+0x24000020,0x100000,0x11023600,0x24000020,0x10100000,0x11023700,0x24000000,0x100000,0x11023700,0x24000000,0xe00000,0x11023700,0x24000000,0x10100000,0x11023700,0x24000000,
+0x10e00000,0x11023700,0x24000020,0x100000,0x11023700,0x24000020,0x10100000,0x11023700,0x24000020,0x10105200,0x11023800,0x4000000,0x100000,0x11023800,0x24000000,0x200000,
+0x11024e67,0,0,0x11025600,0x4000000,0x100000,0x11042a00,0x4000000,0x1600000,0x11045700,0x4000000,0x20000a,0x11045700,0x4000020,0x20000a,0x11045712,
+0x7c00100,0xe3040a,0x11045712,0x7c80100,0xe3040a,0x11045716,0x7c00100,0xe30c0a,0x11045716,0x7c00100,0x2530c0a,0x11063d00,0x4000001,0x440011,0x11065700,0x4000000,
+0x810011,0x11065700,0x4000000,0xe00011,0x11065700,0x4000000,0x1410011,0x11065700,0x4000000,0x1500011,0x11065700,0x4000000,0x1600011,0x11065700,0x4000006,0xe70011,
+0x11065700,0x4000008,0xe00011,0x11065700,0x4000008,0xe02c11,0x11065700,0x4000010,0x871411,0x11065700,0x4000010,0x1201411,0x11065700,0x4000010,0x1271011,0x11065700,
+0x4000020,0xe00011,0x11065700,0x4000400,0xe00011,0x11065700,0x4000420,0xe00011,0x11065700,0x6800000,0xe01c11,0x11065700,0x6800040,0xe00011,0x11065700,0xc000010,
+0x80ac11,0x11065700,0xc000010,0xb48011,0x11065719,0x7c00100,0xe20411,0x11065719,0x7c00100,0xe50411,0x11065719,0x7c00140,0xe20411,0x11065719,0x7c00140,0xe50411,
+0x11080100,0x6800000,0x201c00,0x11080100,0x68000c0,0x11329800,0x11080100,0x24000000,0x200000,0x11080100,0x24000000,0x810000,0x11080100,0x24000000,0x1410000,0x11080100,
+0x24000000,0x1500000,0x11080100,0x24000000,0x1600000,0x11080100,0x24000000,0x1b00000,0x11080100,0x24000000,0x2410000,0x11080100,0x24000000,0x10200000,0x11080100,0x24000006,
+0xd70000,0x11080100,0x24000008,0x1713c00,0x11080100,0x24000008,0x1714000,0x11080100,0x24000010,0x1001400,0x11080100,0x24000010,0x1071000,0x11080100,0x24000010,0x1071400,
+0x11080100,0x24000020,0x200000,0x11080100,0x24000020,0x400000,0x11080100,0x24000020,0x1600000,0x11080100,0x24000400,0x200000,0x11080100,0x24000420,0x200000,0x11080100,
+0x2c000010,0xb48000,0x11080100,0x2c000010,0x100ac00,0x11080100,0x44000001,0x1a40000,0x11080119,0x7c00100,0x220400,0x11080119,0x7c00100,0x250400,0x11080119,0x7c001c0,
+0x220400,0x11080119,0x7c001c0,0x250400,0x11080200,0x4000400,0x200002,0x11080200,0x24000000,0x200000,0x11080200,0x24000000,0x1500000,0x11080200,0x24000000,0x1600000,
+0x11080200,0x24000020,0x200000,0x110a1e12,0x7c00100,0x2130480,0x110a1e12,0x7c80100,0x2130480,0x110a3000,0x24000000,0x30e00000,0x110a3000,0x24100000,0x810001,0x110a3000,
+0x24100000,0x1410001,0x110a3700,0x24000000,0x30200000,0x110a3d00,0x4000000,0xe00000,0x110a3d00,0x4000000,0xe00002,0x110a3d00,0x24000000,0xe00000,0x110a3d11,0x7c00300,
+0xe30000,0x110a3d11,0x7c00900,0x1230400,0x110a3d12,0x2802400,0x962460,0x110a3e14,0x7c00100,0xe30000,0x110a3e14,0x7c00100,0xe30001,0x110a3e14,0x7c00100,0x2530000,
+0x110a3e14,0x7c00900,0x1230000,0x110a3e14,0x7c00900,0x1230001,0x110a3f16,0x7c00100,0xe30c00,0x110a3f16,0x7c00100,0xe30c01,0x110a3f16,0x7c00100,0x2530c00,0x110a3f16,
+0x7c00900,0x1230c00,0x110a3f16,0x7c00900,0x1230c01,0x110a4005,0x7c00100,0xe30400,0x110a4112,0x7c00100,0xe30402,0x110a4112,0x7c80100,0xe30402,0x110a4400,0x4000000,
+0xe00000,0x110a4412,0x4000000,0xe00002,0x110a4412,0x4000000,0xe00003,0x110a4416,0x4000000,0xe00c03,0x110a4500,0x4000000,0xe0000d,0x110a4516,0x4000000,0xe00c0d,
+0x110a4711,0x7c40300,0xe30000,0x110a4f11,0x7c00300,0xe30001,0x110a4f11,0x7c40300,0xe30000,0x110a5300,0x4000000,0x810010,0x110a5300,0x4000000,0xe00002,0x110a5300,
+0x4000000,0xe00010,0x110a5300,0x4000000,0x1410010,0x110a5300,0x4000002,0xe70010,0x110a5300,0x4000008,0x810010,0x110a5300,0x4000008,0x1410010,0x110a5300,0x6800000,
+0xe01c02,0x110a5300,0x6800000,0xe01c10,0x110a5400,0x4000000,0x81000c,0x110a5400,0x4000000,0xe0000c,0x110a5400,0x4000000,0x141000c,0x110a5400,0x4000000,0x150000c,
+0x110a5400,0x4000000,0x160000c,0x110a5400,0x4000002,0xe7000c,0x110a5400,0x4000010,0x87140c,0x110a5400,0x4000010,0xe7000c,0x110a5400,0x4000010,0x120140c,0x110a5400,
+0x4000010,0x127100c,0x110a5400,0x4000020,0xe0000c,0x110a5400,0x4000026,0xe7000c,0x110a5400,0xc000010,0x80ac0c,0x110a5400,0xc000010,0xb4800c,0x11400a0c,0xc000010,
+0x1049400,0x11400c0e,0x4000010,0xb00000,0x11400c0e,0x4000010,0x1071400,0x11400c0e,0xc000010,0xb48000,0x11400c11,0x7c00900,0x230400,0x11400f34,0xc000010,0x448000,
+0x11400f44,0xc000010,0x448000,0x11401d70,0x4000000,0x200000,0x11403d92,0x4000000,0xe00000,0x11445787,0x4000004,0x120000a,0x11445787,0x4000008,0x81000a,0x11445787,
+0x4000008,0x141000a,0x11445787,0x4000010,0x87000a,0x11445787,0xc000010,0x84800a,0x11445790,0x3802500,0x126246a,0x11445790,0x7c00d00,0x2530c0a,0x114a3d87,0x24000000,
+0x810000,0x114a3d87,0x24000000,0x1410000,0x114a3d87,0x24000008,0x810000,0x114a3d87,0x24000008,0x1410000,0x114a3d87,0x24000010,0x870000,0x114a3d87,0x2c000010,0x848000,
+0x114a3d8d,0x4000000,0xe00000,0x114a3d8d,0x24000000,0xe00000,0x114a3d8d,0x24000002,0x1200000,0x114a3d8d,0x24000002,0x10e00000,0x114a3d8d,0x24000008,0x810000,0x114a3d8d,
+0x24000008,0x1410000,0x114a3d90,0x7c00900,0x930c00,0x114a3d90,0x7c00900,0xe30c00,0x114a3d92,0x7c00300,0xe30000,0x114a3e90,0x7000400,0x1200c02,0x114a3f87,0x4000004,
+0x1200000,0x114a3f90,0x7c00d00,0x2530c00,0x114a4292,0x4000000,0xe00000,0x114a4292,0x4000000,0xe0000f,0x114a4492,0x4000000,0xe00002,0x114a4492,0x4000000,0xe00003,
+0x114a4492,0x4000000,0x10e00003,0x114a4592,0x4000000,0xe00002,0x114a4592,0x4000000,0xe0000d,0x1180090a,0x2802400,0x962460,0x11800c17,0x2802100,0x962460,0x11800c17,
+0x2802500,0x962460,0x11800f1d,0x2802400,0x962460,0x11800f29,0x2802400,0x962460,0x11820700,0x2802400,0x962460,0x11820700,0x2802500,0x962460,0x118a3d93,0x2802400,
+0x962460,0x118a3e90,0x2802400,0x962460,0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460,0x11c00c1b,0x6800000,0x1329800,0x11c00f58,0x6800000,0x1329800,
+0x11c0105d,0x6800000,0x1329800,0x11c01161,0x6800000,0x1329800,0x11c01265,0x6800000,0x1329800,0x11c01469,0x4000000,0x200000,0x11c01469,0x6800000,0x1329800,0x11c01469,
+0x7c00100,0x230400,0x11c0511b,0x7c00100,0x230408,0x20000067,0x1000,0,0x20000b13,0x2802400,0x962460,0x20000b13,0x2802500,0x962460,0x20001b27,0x2802100,
+0x962460,0x20001b27,0x2802100,0x962461,0x20001b27,0x2802400,0x962460,0x20001b27,0x2806400,0x962460,0x20001b27,0x2902100,0x962462,0x20001b27,0x4000000,0x200000,
+0x20001b27,0x4000000,0x400000,0x20001b27,0x4000000,0x500000,0x20001b27,0x4000000,0x810000,0x20001b27,0x4000000,0xb00000,0x20001b27,0x4000000,0xc0000b,0x20001b27,
+0x4000000,0x1410000,0x20001b27,0x4000010,0xb00000,0x20001b27,0x4000010,0xc00000,0x20001b27,0x6800000,0x1329800,0x20001b27,0x6800100,0x462540,0x20001b27,0x6800400,
+0x962540,0x20001b27,0x7c00100,0x230400,0x20001b27,0x7c00100,0x230401,0x20002619,0x7c00100,0x220401,0x20002a00,0x4000000,0x1600000,0x20004b67,0,0x1900020,
+0x20004c67,0,0x1900020,0x20004d67,0,0x1900020,0x20006d67,0x1000,0,0x20006e67,0x1000,0,0x20026d67,0,0,0x20026e67,
+0,0,0x200a4a12,0x7c00100,0x1f304c1,0x200a4a12,0x7c00100,0x20304e1,0x21005600,0x4000000,0x700000,0x21022a00,0x4000000,0x1600000,0x30000419,0x7c00100,
+0x220400,0x30000419,0x7c00100,0x220401,0x30000419,0x7c00100,0x250400,0x30000419,0x7c00100,0x250401,0x30000519,0x7c00100,0x220400,0x30000600,0x4000400,0x200400,
+0x30000600,0x7c00500,0x230400,0x30000605,0x4000400,0x200000,0x3000080e,0x7c00100,0x220400,0x30000908,0x2000,0x962460,0x30000908,0x7c00100,0x220400,0x30000908,
+0x7c00100,0x220401,0x30000908,0x7c00100,0x250400,0x30000908,0x7c00100,0x250401,0x30000a03,0x4000006,0x400000,0x30000c02,0x4000000,0x200000,0x30000c02,0x7c00100,
+0x230400,0x30000d22,0,0x218960,0x30000d22,0x2802100,0x962460,0x30000d22,0x2802400,0x962460,0x30000d22,0x2802500,0x962460,0x30000d22,0x4000000,0x200000,
+0x30000d22,0x4000010,0x200000,0x30000d22,0x7c00100,0x230400,0x30000d22,0xc000010,0x248000,0x30000e25,0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,
+0x2802100,0x962460,0x30001821,0x2806400,0x962460,0x30001821,0x4000000,0x200000,0x30001821,0x6800100,0x962540,0x30001821,0x6800100,0x962541,0x30001821,0x7c00100,
+0x230400,0x30001b27,0x2802100,0x962460,0x30001b27,0x2802400,0x962460,0x30001b27,0x4000000,0x200000,0x30001b27,0x4000000,0x400000,0x30001b27,0x7c00100,0x230400,
+0x30001c1c,0x2802100,0x1862460,0x30001c1c,0x2802400,0x1862460,0x30001c1c,0x2806400,0x1862460,0x30001c1c,0x4000000,0x200000,0x30001c1c,0x6800100,0x1862400,0x30001c1c,
+0x6800100,0x1862540,0x30001c1c,0x7c00100,0x1830000,0x30001c1c,0x7c00100,0x1830001,0x30001c1c,0xc000010,0x448000,0x30001f0b,0x4000000,0x200000,0x30001f0b,0x4000010,
+0x200000,0x30001f0b,0x4000010,0x400000,0x30001f0b,0x6800000,0x200000,0x30001f0b,0x7c00100,0x230400,0x30001f0b,0xc000010,0x248000,0x30002006,0x7c00100,0x250400,
+0x30002128,0x4000010,0x200000,0x30002128,0x7c00100,0x230400,0x30002128,0xc000010,0x248000,0x3000221d,0x4000000,0x810000,0x3000221d,0x4000000,0x1410000,0x3000221d,
+0x4000001,0x440000,0x3000221d,0x7c00100,0x230400,0x30002300,0x4000010,0x400000,0x30002320,0x7c00100,0x230400,0x30002417,0x2802100,0x1862460,0x30002417,0x2802400,
+0x1862460,0x30002417,0x2806400,0x1862460,0x30002417,0x2882000,0x1862460,0x30002417,0x4000000,0x200000,0x30002417,0x4000000,0x400000,0x30002417,0x4000000,0x1600000,
+0x30002417,0x4000010,0x400000,0x30002417,0x4000010,0x1200000,0x30002417,0x6800000,0x1329800,0x30002417,0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,
+0x7d00100,0x1830000,0x3000251b,0x80000,0xc18820,0x3000251b,0x2802100,0x962460,0x3000251b,0x3c02100,0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,
+0x500000,0x3000251b,0x4000010,0x400000,0x3000251b,0x4000010,0xb70000,0x3000251b,0x4000800,0x200000,0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,
+0x3000251b,0x7c00900,0x230400,0x3000251b,0xc000010,0xb48000,0x3000251b,0x12882000,0x962460,0x30002800,0x4000001,0xc41c0b,0x30002800,0x24000000,0x200000,0x30002800,
+0x2c000010,0x1248002,0x30002800,0x2c000010,0x11248002,0x30002a00,0x4000000,0x1600000,0x30002b01,0x2000,0x962460,0x30002c00,0x4000000,0x200000,0x30002c00,0x7c00100,
+0x10220405,0x30002d19,0x7c00100,0x250400,0x30002e00,0x24000000,0x200000,0x30003000,0x24000000,0x200000,0x30003100,0x24000000,0x200000,0x30003600,0x24000000,0x200000,
+0x30003700,0x24000000,0x200000,0x3000392e,0x24000000,0x200000,0x30005013,0x7c00100,0x2633801,0x30005600,0,0x918820,0x30020600,0x4000400,0x500400,0x30020701,
+0x2802400,0x962460,0x30020701,0x2802400,0xc62460,0x300a3a11,0x4020000,0xe00000,0x300a3a11,0x4020000,0xe00002,0x300a3b11,0x4020000,0xe00002,0x300a3c00,0x4008000,
+0xe00000,0x300a3c00,0x4010000,0xe00000,0x300a3d11,0x7c00300,0xe30002,0x300a4305,0x7c00100,0xe30400,0x300a4611,0x7c40300,0xe30000,0x300a4829,0x7c00100,0xe30400,
+0x300a4829,0x7c00900,0x1230400,0x300a4929,0x4000000,0xe00000,0x30402576,0x4000010,0x400000,0x30402576,0x4000010,0xb70000,0x30402576,0xc000010,0xb48000,0x304a3d92,
+0x4000000,0xe00000,0x30800c17,0x2802100,0x962460,0x30c01c6e,0x6800000,0x1329800,0x3100080e,0x7c00120,0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,
+0,0x3100581e,0x4000000,0x200000,0x3100581e,0x7c00100,0x230400,0x3100590d,0x7c00100,0x230400,0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,
+0x31005b00,0x4000000,0x200000,0x31005c00,0x80000,0x918820,0x31005c00,0x2802000,0x962460,0x31005c00,0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,
+0x4000000,0x200001,0x31005c00,0x6800000,0x962540,0x31005c00,0x6800400,0x962540,0x31005c01,0x2802400,0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,
+0x1329805,0x31005d00,0x7c00120,0x220405,0x31005d00,0x7c00120,0x250405,0x31006000,0x82000,0x962460,0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,
+0x310a5f11,0x7c00300,0xe30001,0x32000419,0x7c00100,0x250400,0x3200080e,0x4000020,0x200000,0x3200080e,0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,
+0x7c00100,0x220400,0x32000908,0x7c00100,0x250400,0x32000c02,0x7c00100,0x230400,0x32000e25,0x7c00100,0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,
+0x1e18820,0x32002800,0x80020,0x218820,0x32002800,0x4000001,0x440002,0x32002800,0x24000000,0x200000,0x32002800,0x24000000,0x200002,0x32002800,0x24000020,0x200000,
+0x32002800,0x2c000010,0x1248002,0x32002919,0x7c00100,0x22040f,0x32002a00,0x4000000,0x1600000,0x32002b01,0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,
+0x2802020,0x962460,0x32002c00,0x4000000,0x200000,0x32002c00,0x4000020,0x200000,0x32002c00,0x4000020,0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,
+0x250405,0x32002e00,0x24000020,0x200000,0x32002f00,0x24000020,0x200000,0x32003000,0x24000000,0x200000,0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,
+0x32003600,0x24000020,0x200000,0x32003600,0x24000020,0x10200000,0x32003700,0x24000000,0x100000,0x32003700,0x24000000,0x200000,0x32003700,0x24000000,0x10200000,0x32003800,
+0x24000000,0x810000,0x32003800,0x24000000,0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,0x32006108,0x7c00100,0x220400,0x32006108,0x7c00100,
+0x250400,0x3200622a,0x2802100,0x962460,0x3200622a,0x2806000,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,0x2802100,0x962460,0x3200632b,0x2806000,0x962460,
+0x3200632b,0x7c00100,0x230400,0x3200642c,0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,0x962460,0x3200652d,0x7c00100,0x230400,0x32006600,
+0x24000020,0x200000,0x32006700,0x24000020,0x200000,0x32006800,0x24000020,0x200000,0x32006800,0x24000020,0x10200000,0x32006900,0x24000020,0x200000,0x32006900,0x24000020,
+0x810000,0x32006900,0x24000020,0x1410000,0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,0x2882000,0xc62460,
+0x32023300,0x4000000,0x100000,0x32026c01,0x12882000,0x962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020,0x810000,0x32086600,
+0x24000020,0x1410000,0x32086900,0x24000020,0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x30200000,0x320a3d11,0x7c00100,0x1230400,0x320a3e14,0x7c00100,
+0xe30010,0x320a3e14,0x7c00100,0x2530000,0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11,0x7c00300,0xe30001,
+0x320a6b16,0x7c00100,0x2530c00,0x32406372,0xc000010,0x448000,0x324a3d95,0x4000000,0x10e00000,0x324a3d95,0x7c00100,0x1230400,0x324a3f90,0x4000002,0x1200c00,0x324a538d,
+0x24000000,0xe00000,0x32820701,0x2802000,0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200400,0x4000080e,0x7c00100,
+0x220400,0x4000080e,0x7c00100,0x250400,0x4000080e,0x7c00100,0x250402,0x40000c02,0,0x218960,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,
+0x40000c02,0x2802500,0x962460,0x40000c02,0x4000000,0x200000,0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000d22,0x7c00100,0x230400,0x40000f0a,
+0x7c00100,0x230400,0x40001004,0x7c00100,0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460,0x4000120f,0x4000000,
+0x1600000,0x4000120f,0x7c00100,0x230400,0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615,0x2802400,0x962460,
+0x40001615,0x7c00100,0x230400,0x40002417,0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002,0x200000,0x40002c00,
+0x4000000,0x200002,0x40003000,0x24000000,0x10200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40003700,0x24000000,0x10200000,0x40005a09,0x7c00100,
+0x220400,0x40005a09,0x7c00100,0x250400,0x40005d00,0x7c00120,0x220405,0x40006f30,0x2802100,0x962460,0x40006f30,0x2802400,0x962460,0x40006f30,0x4000000,0x200000,
+0x40006f30,0x6800000,0x1329800,0x40006f30,0x6800100,0x962540,0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010,0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,
+0x4000000,0x200000,0x40007208,0x7c00100,0x220400,0x4000720e,0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e,0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,
+0x220400,0x40007219,0x7c00500,0x220400,0x40007219,0x7c00500,0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300,0x24000000,0x200000,0x40007300,0x24000000,0x10200000,
+0x40007400,0x4000000,0x200000,0x40007531,0x7c00100,0x230400,0x40007631,0x7c00100,0x230400,0x40007835,0x4000010,0x400000,0x40007835,0x7c00100,0x230400,0x40007933,
+0x7c00100,0x230400,0x40007a32,0x6800000,0x1329800,0x40007a32,0x7c00100,0x230400,0x40007b2f,0x7c00100,0x230400,0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,
+0x962460,0x40020701,0x2802400,0xc62460,0x40023300,0x4000000,0x200000,0x40027d01,0x12882000,0x962460,0x400a3700,0x24000000,0x30200000,0x400a3700,0x24000000,0x30e00000,
+0x400a4400,0x4000000,0xe0000d,0x400a4412,0x4000000,0xe00002,0x400a4412,0x4000000,0xe00003,0x400a4500,0x4000000,0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,
+0x4000000,0x1410010,0x404077b8,0x4000000,0x200000,0x404077bb,0x4000000,0x200000,0x404077bb,0x4000000,0x400000,0x40c0511b,0x4000000,0x200000,0x41000419,0x7c00100,
+0x220400,0x41000419,0x7c00100,0x250400,0x4100080e,0x7c00100,0x220400,0x4100080e,0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,0x7c00100,0x250400,
+0x41000b13,0x2802000,0x962460,0x41000b13,0x2802100,0x962460,0x41000b13,0x4000000,0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,0xb00000,0x41000c02,
+0x4000000,0x1500000,0x41000f0a,0x7c00100,0x230400,0x41001004,0x7c00100,0x230400,0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,0x41001d0c,0x7c00100,
+0x230400,0x41001d0c,0x7c00100,0x23040f,0x41001f0b,0x2802100,0x962460,0x41001f0b,0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,0x24000000,0x200000,
+0x41002800,0x24000000,0x400000,0x41002919,0x7c00100,0x22040e,0x41002a00,0x4000000,0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,0x200000,0x41002c00,
+0x7c00120,0x220405,0x41003000,0x24000000,0x200000,0x41003700,0x24000000,0x200000,0x41003700,0x24000000,0x10200000,0x41003700,0x24000000,0x10205200,0x41003700,0x24000000,
+0x10e00000,0x41005d00,0x7c00120,0x220405,0x41006600,0x24000020,0x200000,0x41006600,0x24000020,0x810000,0x41006600,0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,
+0x41007219,0x7c00100,0x220400,0x41007300,0x24000000,0x200000,0x41007e0e,0x2802000,0x962460,0x41007e0e,0x4000000,0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,
+0x7c00100,0x230400,0x41008002,0x7c00100,0x230400,0x41008137,0x2802100,0x962460,0x41008137,0x4000000,0x200000,0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,
+0x230400,0x41008301,0x2802000,0x962460,0x41008407,0x4000000,0x200000,0x41008407,0x4000000,0x400000,0x41008407,0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,
+0x41008407,0x7c00100,0x250400,0x4100850b,0x7c00100,0x230400,0x4100860b,0x4000000,0x200000,0x4100860b,0x7c00100,0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,
+0x7c00100,0x220400,0x41008838,0x7c00100,0x250400,0x41008939,0x2802000,0x962460,0x41008939,0x2802100,0x962460,0x41008939,0x2806000,0x962460,0x41008939,0x4000000,
+0x200000,0x41008939,0x4000000,0x400000,0x41008939,0x7c00100,0x230400,0x41008939,0xc000010,0x448000,0x41008a00,0x4000000,0x200000,0x41008b3b,0x4000000,0x1800000,
+0x41008b3b,0x6800000,0x1329800,0x41008b3b,0x7c00100,0x1830000,0x41008b3b,0x7e00100,0x1830000,0x41008c3d,0x4000010,0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,
+0x7c00100,0x22040f,0x41008d19,0x7c00100,0x220400,0x41008d19,0x7c00100,0x22040f,0x41008e00,0x24000000,0x200000,0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,
+0x1710000,0x41008e00,0x24000006,0x400000,0x41008f3a,0x2802000,0x962460,0x41008f3a,0x2802100,0x962460,0x41008f3a,0x2806000,0x962460,0x41008f3a,0x4000000,0x200000,
+0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,0x7c00100,0x230400,0x4100903c,0x7c00100,0x23040f,0x41020701,0x2802000,0x962460,0x41020701,
+0x2802000,0xc62460,0x410a3700,0x24000000,0x30200000,0x410a3700,0x24000000,0x30e00000,0x410a4412,0x4000000,0xe00003,0x410a4711,0x7c40300,0xe30000,0x410a4f11,0x7c00300,
+0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,0x410a9100,0x4000000,0x870010,0x410a9100,0x4000000,0xb00010,0x410a9100,0x4000000,0xf00010,
+0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,0x4000000,0x1071410,0x410a9100,0x4000000,0x1410010,0x414a8292,0x4000000,0xe00000,0x41808300,
+0x2802000,0x962460,0x41c01469,0x6800000,0x1329800,0x50000419,0x7c00100,0x220400,0x50000419,0x7c00100,0x250400,0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,
+0x220400,0x50000908,0x7c00100,0x250400,0x50000b13,0x2802500,0x962460,0x50000f0a,0x7c00100,0x230400,0x50001615,0x2802100,0x962460,0x50001615,0x7c00100,0x230400,
+0x50002b01,0x2802020,0x962460,0x50002c00,0x4000000,0x200000,0x50002c19,0x7c00100,0x220400,0x50002d19,0x7c00100,0x220400,0x50003000,0x24000000,0x200000,0x50003000,
+0x24000020,0x200000,0x50003700,0x24000000,0x200000,0x50005d00,0x7c00120,0x220405,0x50005d00,0x7c00120,0x250405,0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,
+0x250400,0x50006600,0x24000020,0x200000,0x50007300,0x24000000,0x200000,0x50008301,0x2802400,0x962460,0x50008a00,0x7c00500,0x230400,0x50009257,0x2802400,0x962460,
+0x50009257,0x4000000,0x200000,0x50009257,0x4000010,0x1071400,0x50009257,0x6800000,0x1329800,0x50009257,0x7c00100,0x230400,0x50009257,0x7c00500,0x230400,0x50009257,
+0x7c00900,0x230400,0x50009257,0xc000010,0xb48000,0x5000933e,0x2802100,0x962460,0x5000933e,0x2802400,0x962460,0x5000933e,0x4000000,0x200000,0x5000933e,0x4000000,
+0x400000,0x5000933e,0x4000010,0x400000,0x5000933e,0x6800000,0x1329800,0x5000933e,0x6800100,0x962540,0x5000933e,0x6800100,0x962541,0x5000933e,0x6804400,0x962540,
+0x5000933e,0x7c00100,0x230400,0x5000933e,0x7c00100,0x230401,0x5000933e,0xc000010,0x448000,0x50009419,0x7c00100,0x220400,0x50009419,0x7c00100,0x250400,0x50009500,
+0x4000400,0x200400,0x5000965a,0x4000000,0x500000,0x5000965a,0x7c00100,0x230400,0x5000965a,0xc000010,0xb48000,0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,
+0x400000,0x5000975b,0x7c00100,0x230400,0x50009865,0x7c00100,0x230400,0x50009965,0x4000010,0x400000,0x50009965,0x7c00100,0x230400,0x50409a92,0x4000000,0x200000,
+0x5100080e,0x7c00100,0x220400,0x5100080e,0x7c00100,0x250400,0x51000c02,0x2802100,0x962460,0x51000c02,0x4000000,0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,
+0x7c00100,0x230400,0x51000f0a,0x7c00100,0x230400,0x51000f0a,0x7c00500,0x230400,0x51001110,0x2802100,0x962460,0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,
+0x230400,0x51001524,0x2802100,0x962460,0x51001524,0x4000000,0x200000,0x51001524,0x7c00100,0x230400,0x5100171a,0x2802100,0x962460,0x5100171a,0x4000000,0x200000,
+0x5100171a,0x4000000,0x1500000,0x5100171a,0x7c00100,0x230400,0x51001b27,0x4000000,0x200000,0x51001b27,0x4000000,0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,
+0x7c00100,0x230400,0x51001c1c,0x2802100,0x1862460,0x51001c1c,0x2802400,0x1862460,0x51001c1c,0x2806400,0x1862460,0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,
+0x1329800,0x51001c1c,0x6800000,0x1862400,0x51001c1c,0x6800100,0x1862400,0x51001c1c,0x6800100,0x1862540,0x51001c1c,0x6800400,0x1862400,0x51001c1c,0x7c00100,0x1830000,
+0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,0x7c00100,0x250400,0x51002800,0x80020,0x218820,0x51002c00,0x4000000,0x200000,0x51002d19,
+0x7c00100,0x230400,0x51003700,0x24000000,0x200000,0x51003700,0x24000000,0xe00000,0x51005201,0x2802400,0x962460,0x51005c00,0x4000000,0x200000,0x51006108,0x7c00100,
+0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,0x51006600,0x24000020,0x810000,0x51006600,0x24000020,0x1410000,0x51007300,0x24000000,0x200000,
+0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,0x2802000,0x962460,0x51008301,0x2802400,0x962460,0x51008a00,0x7c00500,0x230400,0x51008e00,
+0x24000000,0x200000,0x51008e00,0x24000000,0x400000,0x51008e00,0x24000000,0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00,0x24000000,0x1410000,0x51008e00,0x24000000,
+0x1710000,0x51008e00,0x24000002,0x200000,0x51008e00,0x24000500,0x230400,0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100,0x220400,0x51009419,0x7c00100,0x22040e,
+0x51009419,0x7c00100,0x22040f,0x51009419,0x7c00100,0x250400,0x51009500,0x4000000,0x200400,0x51009500,0x7c00500,0x230400,0x51009519,0x7c00100,0x220400,0x51009519,
+0x7c00100,0x22040f,0x51009519,0x7c00100,0x230400,0x51009519,0x7c00100,0x250400,0x51009b71,0x2802100,0x962460,0x51009b71,0x6800000,0x1329800,0x51009b71,0x6800100,
+0x962540,0x51009b71,0x6804400,0x962540,0x51009b71,0x7c00100,0x230400,0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400,0x962460,0x51009c52,0x2802c00,0x962460,
+0x51009c52,0x4000010,0x400000,0x51009c52,0x6800000,0x1329800,0x51009c52,0x6800100,0x962540,0x51009c52,0x7c00100,0x230400,0x51009c52,0xc000010,0x448000,0x51009d6d,
+0x6800000,0x1329800,0x51009d6d,0x7c00100,0x230400,0x51009d6d,0x7c00500,0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d,0xc000010,0x448000,0x51009e08,0x2802100,
+0x962460,0x51009f63,0x4000010,0x400000,0x51009f63,0x6800000,0x1329800,0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900,0x230400,0x51009f63,0xc000010,0x448000,
+0x51009f63,0xc000010,0xb48000,0x5100a008,0x2000,0x962460,0x5100a008,0x2802400,0x962460,0x5100a008,0x4000000,0x200000,0x5100a008,0x7c00100,0x220400,0x5100a008,
+0x7c00100,0x230400,0x5100a008,0x7c00100,0x250400,0x5100a008,0x7c00500,0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f,0x6800000,0x1329800,0x5100a16f,0x6800100,
+0x962540,0x5100a16f,0x7c00100,0x230400,0x5100a16f,0xc000010,0x448000,0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400,0x962460,0x5100a24f,0x6800000,0x1329800,
+0x5100a24f,0x7c00100,0x230400,0x5100a24f,0xc000010,0x448000,0x5100a36e,0x2802100,0x962460,0x5100a36e,0x4000000,0x200000,0x5100a36e,0x6800100,0x962540,0x5100a36e,
+0x6804400,0x962540,0x5100a36e,0x7c00100,0x230400,0x5100a442,0x2802100,0x962460,0x5100a442,0x4000000,0x200000,0x5100a442,0x6800000,0x1329800,0x5100a442,0x6800100,
+0x962540,0x5100a442,0x7c00100,0x230400,0x5100a442,0xc000010,0x448000,0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000,0x200000,0x5100a601,0x2802000,0x962460,
+0x5100a76b,0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400,0x5100aa00,0x4000000,0xe00000,0x5100ab00,
+0x4000000,0xe00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711,0x7c40300,0xe30000,0x510a7300,0x24000000,
+0x30200000,0x510aaa00,0x4000000,0x30e00000,0x5140a2b3,0x4000400,0x400000,0x514a8292,0x4000000,0xe00000,0x51802b84,0x2802000,0x962460,0x51c00908,0x2802400,0x962460,
+0x51c0a008,0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400,0x52001004,0x4000000,0x1600000,0x52001b00,
+0x4000000,0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,0x1862400,0x52001c1c,0x6800400,0x1862400,0x52001e12,0x7c00100,0x2230500,0x52001e12,0x7c00100,
+0x2330520,0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000,0x1600000,0x52002d00,0x4000000,0x200006,
+0x52003000,0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,0x7c00100,0x250400,0x52008301,0x2802400,0x962460,0x52008407,0x2802400,0x962460,0x52008407,
+0x7c00100,0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00,0x24000000,0x400000,0x52009419,0x7c00100,
+0x250400,0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400,0x962460,0x5200ac7e,0x4000010,0x200000,
+0x5200ac7e,0x7c00100,0x230400,0x5200ad28,0x7c00100,0x230400,0x5200ae6a,0x2802100,0x1862460,0x5200ae6a,0x2802400,0x962460,0x5200ae6a,0x2802400,0x1862460,0x5200ae6a,
+0x2806000,0x1862460,0x5200ae6a,0x4000000,0x1800000,0x5200ae6a,0x6800000,0x1329800,0x5200ae6a,0x6800100,0x1862400,0x5200ae6a,0x6800100,0x1862540,0x5200ae6a,0x7c00100,
+0x1830000,0x5200ae6a,0x7c00900,0x1830000,0x5200ae6a,0xc000010,0x1848000,0x5200b083,0x4000010,0x400000,0x5200b083,0x7c00100,0x230400,0x5200b083,0xc000010,0x448000,
+0x5200b182,0x2802400,0x962460,0x5200b182,0x4000000,0x200000,0x5200b182,0x4000010,0x400000,0x5200b182,0x7c00100,0x230400,0x5200b182,0xc000010,0x448000,0x5200b30a,
+0x2802400,0x962460,0x5200b30a,0x4000000,0x200000,0x5200b30a,0x7c00100,0x230400,0x5200b54e,0x2802100,0x962460,0x5200b54e,0x2802400,0x962460,0x5200b54e,0x4000000,
+0x200000,0x5200b54e,0x4000010,0x400000,0x5200b54e,0x6800000,0x1329800,0x5200b54e,0x6800100,0x962540,0x5200b54e,0x6804400,0x962540,0x5200b54e,0x7c00100,0x230400,
+0x5200b54e,0xc000010,0x448000,0x5200b61c,0x4000000,0x1800000,0x5200b61c,0x6800400,0x1862400,0x5200b61c,0x7c00100,0x1830000,0x5200b61c,0x7c00900,0x1830000,0x5200b77f,
+0x2802100,0x1862460,0x5200b77f,0x2802400,0x1862460,0x5200b77f,0x4000000,0x1800000,0x5200b77f,0x4000010,0x1800000,0x5200b77f,0x7c00100,0x1830000,0x5200b77f,0x7c00500,
+0x1830000,0x5200b77f,0x7c00900,0x1830000,0x5200b77f,0x7e00100,0x1830000,0x5200b873,0x2802100,0x962460,0x5200b873,0x2806400,0x962460,0x5200b873,0x6800000,0x1329800,
+0x5200b873,0x6800100,0x962540,0x5200b873,0x6800400,0x962540,0x5200b873,0x7c00100,0x230400,0x5200b873,0xc000010,0x448000,0x5200b912,0x7c00100,0x2230500,0x5200b912,
+0x7c00100,0x2330520,0x5200ba74,0x4000000,0x200000,0x5200ba74,0x4000010,0x400000,0x5200ba74,0x7c00100,0x230400,0x5200bb85,0x4000000,0x200000,0x5200bb85,0x7c00100,
+0x230400,0x5200bc75,0x4000000,0x400000,0x5200bc75,0x4000010,0x400000,0x5200bc75,0x7c00100,0x230400,0x5200bd7d,0x4000000,0x200000,0x5200bd7d,0x7c00100,0x230400,
+0x5200be7a,0x4000000,0x200000,0x5200be7a,0x7c00100,0x230400,0x5200bf58,0x7c00100,0x230400,0x5200c002,0x4000000,0x200000,0x5200c178,0,0x218960,0x5200c178,
+0x2802000,0x962460,0x5200c178,0x2802100,0x962460,0x5200c178,0x2802400,0x962460,0x5200c178,0x2806400,0x962460,0x5200c178,0x4000000,0x200000,0x5200c178,0x6800100,
+0x962540,0x5200c178,0x7c00100,0x230400,0x5200c178,0x7c00100,0x230401,0x5200c178,0xc000010,0x448000,0x5200c247,0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,
+0x5200c247,0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,0x4000000,0x100006,0x52023700,0x24000000,0x100000,0x52023700,0x24000000,0xe00000,0x52023700,
+0x24000000,0x10100000,0x52023700,0x24000000,0x10e00000,0x52023700,0x24000000,0x928045a0,0x52024400,0x4000000,0x100000,0x52027300,0x24000000,0x100000,0x5202c300,0x4000000,
+0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,0x5202c300,0x4000000,0x10000d,0x5202c300,0x4000100,0x150400,0x5202c300,0x4000100,0x15040d,
+0x5202c300,0x4000100,0x10150400,0x520a1e12,0x7c00100,0x2130480,0x520a3700,0x24000000,0x30e00000,0x520a3800,0x24000000,0x30100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,
+0x7c00300,0xe30001,0x520a7300,0x24000000,0x30100000,0x520ab412,0x7c00100,0x2130480,0x520ac400,0x4000000,0xe00002,0x520ac400,0x4000000,0xe0000d,0x520ac400,0x4000000,
+0x30e0000d,0x520ac414,0x4000000,0xe0000d,0x520ac511,0x7c40300,0xe30000,0x5240af78,0x6800400,0x962540,0x5240af78,0x7c00100,0x230400,0x5240af79,0x4000400,0x200000,
+0x5240af79,0x6800100,0x962540,0x5240b298,0x4000000,0x200000,0x5240b2a2,0x4000000,0x200000,0x5240b2a2,0x4000000,0x1500000,0x5240b5b6,0x7c00900,0x230400,0x524a4492,
+0x4000000,0xe00003,0x5280af78,0x2802400,0x962460,0x5280af79,0x2802400,0x962460,0x5280af7b,0x2802400,0x962460,0x5280af7d,0x2802400,0x962460,0x52c0b3ad,0x2802400,
+0x962460,0x52c0b3b1,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,0x60000c02,0x7c00100,0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100,0x962540,
+0x60000f0a,0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,0x7c00100,0x230400,0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460,0x60001b27,
+0x4000000,0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802000,0x962460,0x60002919,0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000,0x24000000,
+0x10200000,0x60003000,0x24000000,0x10e00000,0x60003700,0x24000000,0x200000,0x60003800,0x24000000,0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100,0x220400,
+0x60006108,0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,0x2802000,0x962460,0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000,0x60009519,
+0x7c00100,0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,0x220400,0x6000a008,0x7c00100,0x250400,0x6000c300,0x4000000,0x32703580,0x6000c654,0x2802000,
+0x962460,0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,0x6000c73f,0x2802000,0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000,0x200000,
+0x6000c73f,0x6800100,0x962540,0x6000c73f,0x6804000,0x962540,0x6000c73f,0x7c00100,0x230400,0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460,0x6000c941,
+0x2806000,0x962460,0x6000c941,0x4000000,0x200000,0x6000c941,0x4000010,0x200000,0x6000c941,0x6800000,0x1329800,0x6000c941,0x6800100,0x962540,0x6000c941,0x7c00100,
+0x230400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,0x6000cc00,0x4000000,0xe00000,0x6000d000,0x4000000,0x200000,0x6002c300,0x4000000,0x100000,
+0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,0x4000100,0x15040d,0x6002c300,0x4000100,0x10150400,0x600a3000,0x24000000,0x30200000,0x600a3000,
+0x24000000,0x30e00000,0x600a3700,0x24000000,0x30200000,0x600a3800,0x24000000,0x30200000,0x600a3800,0x24000000,0xb28045a0,0x600a4305,0x7c00100,0xe30400,0x600ac300,0x4000000,
+0x30100000,0x600ac400,0x4000000,0x10e0000d,0x600ac400,0x4000000,0x30e0000d,0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,0x600acc00,0x4000000,0x30e00000,
+0x600acd00,0x4000000,0x30200000,0x600acd00,0x4000000,0x30e00000,0x600acd00,0x4000000,0x30e05200,0x600acd00,0x4000000,0xb28045a0,0x600acd00,0x4000000,0xb28049c0,0x600ace00,
+0x4000000,0x30e00000,0x600ace00,0x4000000,0xb28045a0,0x600acf00,0x4000000,0x30e00000,0x600acf00,0x4000000,0x30e05200,0x600acf00,0x4000000,0xb28045a0,0x600ad111,0x7c40300,
+0xe30000,0x604ac492,0x4000000,0x30e00003,0x61000a03,0x4000000,0x1600000,0x61000c02,0,0x218960,0x6100120f,0x4000000,0x200000,0x61001a18,0x7c00100,0x1830000,
+0x61001d0c,0x7c00100,0x230400,0x61001d0c,0x7c00100,0x250400,0x61006600,0x24000020,0x200000,0x61008407,0x7c00100,0x220400,0x61008407,0x7c00100,0x250400,0x6100870c,
+0x7c00100,0x220400,0x61008e00,0x24000000,0x200000,0x61008e00,0x24000000,0x400000,0x61008e00,0x24000002,0x300000,0x6100903c,0x7c00100,0x230400,0x61009519,0x7c00100,
+0x220400,0x61009519,0x7c00100,0x250400,0x61009519,0x7c00500,0x22040f,0x61009b71,0x2802100,0x962460,0x61009b71,0x2806400,0x962460,0x61009b71,0x7c00100,0x230400,
+0x6100a008,0x2802100,0x962460,0x6100c300,0x4000000,0x20000f,0x6100cd00,0x4000000,0x200000,0x6100d202,0x2802400,0x962460,0x6100d202,0x2802500,0x962460,0x6100d202,
+0x7c00100,0x230400,0x6100d302,0x4000020,0x200000,0x6100d302,0x7c00120,0x230405,0x6100d476,0x2802100,0x962460,0x6100d476,0x2802100,0x962461,0x6100d476,0x2806400,
+0x962460,0x6100d476,0x4000000,0x400000,0x6100d476,0x6800000,0x1329800,0x6100d476,0x6800100,0x962540,0x6100d476,0x7c00100,0x230400,0x6100d476,0xc000010,0x448000,
+0x6100d573,0x2802100,0x962460,0x6100d573,0x2806400,0x962460,0x6100d573,0x6800100,0x962540,0x6100d573,0x7c00100,0x230400,0x6100d573,0x7c00900,0x230400,0x6100d573,
+0xc000010,0x448000,0x6100d68d,0x7c00100,0x230400,0x6100d756,0x7c00100,0x230400,0x6100d85c,0x2802400,0x962460,0x6100d85c,0x6800100,0x962540,0x6100d85c,0x7c00100,
+0x230400,0x6100d85c,0x7c00500,0x230400,0x6100d997,0x2802100,0x962460,0x6100d997,0x4000000,0x200000,0x6100d997,0x4000000,0x400000,0x6100d997,0x6800000,0x1329800,
+0x6100d997,0x6800100,0x962540,0x6100d997,0x6804400,0x962540,0x6100d997,0x7c00100,0x230400,0x6100d997,0x7c00100,0x230560,0x6100d997,0xc000010,0x448000,0x6100da98,
+0x6800000,0x1329800,0x6100da98,0x7c00100,0x230400,0x6100db71,0x4000000,0x200000,0x6100dc99,0x2802100,0x962460,0x6100dc99,0x2802400,0x962460,0x6100dc99,0x6800000,
+0x1329800,0x6100dc99,0x6800100,0x962540,0x6100dc99,0x6804400,0x962540,0x6100dc99,0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,0x610a4f11,0x7c00300,0xe30001,
+0x610ace00,0x4000000,0x30e00000,0x6140af78,0x7c00100,0x230400,0x6140af79,0x6800100,0x962540,0x6140af82,0x7c00100,0x230400,0x6180af79,0x2802400,0x962460,0x62002a00,
+0x4000000,0x1600000,0x63000c00,0x80000,0x918820,0x63002800,0x80000,0x918820,0x7000080e,0x7c00100,0x250400,0x70000a03,0x4000000,0x200000,0x70000c00,0,
+0x218960,0x70000f0a,0x7c00100,0x230400,0x70001004,0x7c00100,0x230400,0x70001524,0x2802100,0x962460,0x70001524,0x7c00100,0x230400,0x70001615,0x2802100,0x962460,
+0x7000171a,0x2802100,0x962460,0x70001821,0x6800000,0x1329800,0x70002320,0x7c00100,0x230400,0x70002a00,0x4000000,0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,
+0x24000000,0x200000,0x70003000,0x24000000,0x10200000,0x70003800,0x24000000,0xe00000,0x70005201,0x2802400,0x962460,0x7000581e,0x7c00100,0x230400,0x70006108,0x7c00100,
+0x220400,0x70006108,0x7c00100,0x250400,0x70006f30,0x7c00100,0x230400,0x70007300,0x24000000,0x200000,0x70007f0e,0x4000000,0x200000,0x70008301,0x2802100,0x962460,
+0x70008301,0x2802400,0x962460,0x70008e00,0x24000000,0x200000,0x70008e00,0x24000000,0x400000,0x70008e00,0x24000002,0x400000,0x70008e00,0x24000008,0x1410000,0x70008e00,
+0x24000010,0x400000,0x70008e00,0x2c000010,0x448000,0x70009519,0x7c00100,0x220400,0x70009519,0x7c00100,0x230400,0x70009519,0x7c00100,0x250400,0x70009865,0x7c00100,
+0x230400,0x70009965,0x4000010,0x400000,0x70009965,0x7c00100,0x230400,0x7000a008,0x7c00100,0x220400,0x7000a008,0x7c00100,0x250400,0x7000a008,0x7c00500,0x22040f,
+0x7000a50e,0x4000000,0x200000,0x7000b61c,0x2802400,0x1862460,0x7000b61c,0x6800400,0x1862400,0x7000b61c,0x7c00100,0x1830000,0x7000c300,0x4000000,0x100000,0x7000c941,
+0x2806000,0x962460,0x7000cc00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x200000,0x7000cd00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x10200000,0x7000cd00,0x4000000,
+0x10e00000,0x7000cd00,0x4000000,0x10e05200,0x7000cd00,0x4000000,0x928045a0,0x7000cf00,0x4000000,0xe00000,0x7000cf00,0x4000000,0x10e00000,0x7000d202,0x2802100,0x962460,
+0x7000d202,0x7c00100,0x230400,0x7000d997,0x7c00100,0x230400,0x7000d997,0xc000010,0x248000,0x7000dd86,0x2802400,0x962460,0x7000dd86,0x7c00100,0x230400,0x7000dd86,
+0xc000010,0x448000,0x7000de9f,0x4000000,0x200000,0x7000de9f,0x7c00100,0x230400,0x7000e001,0x2000,0x962460,0x7000e001,0x2802400,0x962460,0x7000e187,0x2802000,
+0x962460,0x7000e187,0x2802100,0x962460,0x7000e187,0x4000000,0x200000,0x7000e187,0x7c00100,0x230400,0x7000e187,0xc000010,0x448000,0x7000e288,0x7c00100,0x230400,
+0x7000e300,0x4000000,0x200000,0x7000e489,0x2802100,0x962460,0x7000e489,0x2802400,0x962460,0x7000e489,0x6800100,0x962540,0x7000e489,0x6800100,0x962541,0x7000e489,
+0x6804400,0x962540,0x7000e489,0x7c00100,0x230400,0x7000e489,0x7c00900,0x230400,0x7000e59d,0x2802100,0x962460,0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,
+0x200000,0x7000e59d,0x4000010,0x200000,0x7000e59d,0x6800100,0x962540,0x7000e59d,0x6804400,0x962540,0x7000e59d,0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,
+0x7000e691,0x2802100,0x962460,0x7000e691,0x2802400,0x962460,0x7000e691,0x2806400,0x962460,0x7000e691,0x6800000,0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,
+0x7c00100,0x230400,0x7000e700,0x4000400,0x200400,0x7000e70e,0x7c00100,0x220400,0x7000e719,0x7c00100,0x220400,0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,
+0x230400,0x7000e9a0,0x2802400,0x962460,0x7000e9a0,0x4000000,0x200000,0x7000e9a0,0x4000000,0x500000,0x7000e9a0,0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,
+0x7000ea79,0x4000000,0x200000,0x7000ea79,0x4000000,0xf00000,0x7000ea79,0x4000010,0x400000,0x7000ea79,0x7c00100,0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,
+0x4000000,0x200000,0x7000eb8c,0x7c00100,0x230400,0x7000eca3,0x2802100,0x962460,0x7000eca3,0x2806400,0x962460,0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,
+0x1329800,0x7000eca3,0x6800100,0x962540,0x7000eca3,0x7c00100,0x230400,0x7000eca3,0xc000010,0x448000,0x7000ed95,0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,
+0x7000ed95,0xc000010,0x448000,0x7000ee1c,0x2802400,0x1862460,0x7000ee1c,0x6800000,0x1329800,0x7000ee1c,0x7c00100,0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,
+0x4000000,0x200000,0x7000ef8f,0x7c00100,0x230400,0x7000f08e,0x4000000,0x200000,0x7000f08e,0x7c00100,0x230400,0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,
+0x230400,0x7000f200,0x4000000,0x200000,0x7000f200,0x4000000,0x1200000,0x7000f200,0x4000000,0x1710000,0x7000f34b,0x2802100,0x962460,0x7000f34b,0x4000000,0x200000,
+0x7000f34b,0x4000010,0x400000,0x7000f34b,0x6800000,0x1329800,0x7000f34b,0x7c00100,0x230400,0x7000f34b,0x7c00900,0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,
+0x4000000,0x200000,0x7000f490,0x7c00100,0x230400,0x7000f5a5,0x7c00100,0x230400,0x7000f67b,0x4000000,0x200000,0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,
+0x230400,0x7000f8a6,0x2802100,0x962460,0x7000f8a6,0x2802400,0x962460,0x7000f8a6,0x2806400,0x962460,0x7000f8a6,0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,
+0x7000f8a6,0x4000800,0x200000,0x7000f8a6,0x6800100,0x962540,0x7000f8a6,0x6800100,0x962541,0x7000f8a6,0x7c00100,0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,
+0x4000000,0x200000,0x7000fa00,0x4000000,0x200000,0x7000fb9e,0x2802100,0x962460,0x7000fb9e,0x2802400,0x962460,0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,
+0x200000,0x7000fb9e,0x6800000,0x1329800,0x7000fb9e,0x6800100,0x962540,0x7000fb9e,0x6800100,0x962541,0x7000fb9e,0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,
+0x7000fc92,0x6800000,0x1329800,0x7000fc92,0x7c00100,0x220400,0x7000fc92,0x7c00100,0x230400,0x7000fc92,0x7c00100,0x250400,0x700acd00,0x4000000,0x30e00000,0x700acd00,
+0x4000000,0xb28045a0,0x700ace00,0x4000000,0x30e00000,0x700acf00,0x4000000,0x30e00000,0x700acf00,0x4000000,0xb28045a0,0x7040dfbd,0x4000000,0x200000,0x7040f7c1,0x80000,
+0x918820,0x7080af79,0x2802400,0x962460,0x7080dfbd,0x2802400,0x962460,0x70c0e4bf,0x2802400,0x962460,0x70c0e4bf,0x6800100,0x962540,0x8000120f,0x7c00100,0x230400,
+0x80001524,0x7c00100,0x230400,0x8000171a,0x7c00100,0x230400,0x80002006,0x7c00100,0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,
+0x4000000,0x200000,0x80005208,0x2802400,0x962460,0x80005c00,0x4000000,0x200000,0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,
+0x230400,0x80009519,0x7c00100,0x250400,0x80009865,0x7c00100,0x230400,0x8000a008,0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,
+0x8000cd00,0x4000000,0xe00000,0x8000d202,0x2802500,0x962460,0x8000d202,0x7c00100,0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802400,0x962460,0x8000d997,
+0x4000000,0x200000,0x8000d997,0x4000000,0x400000,0x8000d997,0x4000000,0x500000,0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,
+0x962460,0x8000e489,0x7c00100,0x230400,0x8000e719,0x7c00100,0x220400,0x8000f8a6,0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,
+0x8000fda1,0x2802100,0x1862460,0x8000fda1,0x2806400,0x1862460,0x8000fda1,0x4000000,0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862540,0x8000fda1,
+0x7c00100,0x1830000,0x8000fda1,0xc000010,0x448000,0x8000fe9c,0x7c00100,0x230400,0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,0x7c00100,
+0x220400,0x80010165,0x7c00100,0x230400,0x800102a2,0x4000000,0x200000,0x800102a2,0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,0x448000,
+0x8001044c,0x4000000,0x200000,0x8001044c,0x7c00100,0x220400,0x8001044c,0x7c00100,0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,0x80010670,
+0x4000010,0x400000,0x80010670,0xc000010,0x448000,0x800a4711,0x7c40300,0xe30000,0x800acd00,0x4000000,0x30e00000,0x800acd00,0x4000000,0x72904de0,0x800ace00,0x4000000,
+0x30e00000,0x800acf00,0x4000000,0x30e00000,0x800b0011,0x7c40300,0xe30000,0x800b0500,0x4000000,0x30e00000,0x800b0500,0x4000000,0xb28045a0,0x90001615,0x7c00100,0x230400,
+0x9000171a,0x4000000,0x200000,0x9000171a,0x7c00100,0x230400,0x90003000,0x24000000,0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802000,0x962460,0x90008e00,
+0x24000000,0x400000,0x90009519,0x7c00100,0x250400,0x9000a16f,0x2802100,0x962460,0x9000d200,0,0x218960,0x9000d202,0x2802000,0x962460,0x9000d202,0x2802100,
+0x962460,0x9000d202,0x7c00100,0x230400,0x9000e59d,0x2802100,0x962460,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,0x962460,0x900107a7,0x2802c00,0x962460,
+0x900107a7,0x4000000,0x1400000,0x900107a7,0x6800000,0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,0x900108a8,0x2802100,0x962460,0x900108a8,
+0x2806400,0x962460,0x900108a8,0x4000000,0x200000,0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,0x6800000,0x1329800,0x900108a8,0x6800100,
+0x962540,0x900108a8,0x7c00100,0x230400,0x900108a8,0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,0x962460,0x90010ca9,0x2802100,0x962460,
+0x90010ca9,0x4000000,0x500000,0x90010ca9,0x4000010,0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,0x90010d1b,0x4000000,0x500000,0x90010eaa,
+0x2802100,0x962460,0x90010eaa,0x2802400,0x962460,0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,0x4000000,0x400000,0x90010eaa,0x4000010,
+0x400000,0x90010eaa,0x6800000,0x1329800,0x90010eaa,0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,0x448000,0x90010fab,0x7c00100,0x220400,
+0x90010fab,0x7c00100,0x250400,0x9002c300,0x4000000,0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0x30e00000,0x900acd00,0x4000000,0xb28045a0,0x900acf00,
+0x4000000,0x30e00000,0x900b0500,0x4000000,0xe00000,0x900b0500,0x4000000,0x30e00000,0x900b0500,0x4000000,0xb28045a0,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,0x7c00300,
+0xe30000,0x900b119a,0x7c00300,0xe30000,0x90408e06,0x24000000,0x400000};
 
-static const int32_t countPropsVectors=6195;
+static const int32_t countPropsVectors=6279;
 static const int32_t propsVectorsColumns=3;
 static const uint16_t scriptExtensions[194]={
 0x800e,0x8019,8,0x8059,8,2,8,0x8038,8,6,8,0x8019,3,0x800c,2,0x22,
@@ -3539,6 +3581,6 @@ static const uint16_t scriptExtensions[194]={
 0x8023,0xa,0xaf,0x19,0x1c,0x804f,0x37,0x804e,0x2f,0x31,0x8053,0x2f,0x8031,2,0x8007,0x89,
 0x67,0x8087};
 
-static const int32_t indexes[UPROPS_INDEX_COUNT]={0x28aa,0x28aa,0x28aa,0x28aa,0x606c,3,0x789f,0x7900,0x7900,0x7900,0xb11ae,0x2a75631,0,0,0,0};
+static const int32_t indexes[UPROPS_INDEX_COUNT]={0x28aa,0x28aa,0x28aa,0x28aa,0x6196,3,0x7a1d,0x7a7e,0x7a7e,0x7a7e,0xb11ae,0x2a75631,0,0,0,0};
 
 #endif  // INCLUDED_FROM_UCHAR_C
index d04d315..e0b33af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstrie.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -175,7 +175,8 @@ UCharsTrie::next(int32_t uchar) {
 }
 
 UStringTrieResult
-UCharsTrie::next(const UChar *s, int32_t sLength) {
+UCharsTrie::next(ConstChar16Ptr ptr, int32_t sLength) {
+    const UChar *s=ptr;
     if(sLength<0 ? *s==0 : sLength==0) {
         // Empty input.
         return current();
index 412a58a..694648d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstriebuilder.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 68ba8c2..b313224 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstrieiterator.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -21,7 +21,7 @@
 
 U_NAMESPACE_BEGIN
 
-UCharsTrie::Iterator::Iterator(const UChar *trieUChars, int32_t maxStringLength,
+UCharsTrie::Iterator::Iterator(ConstChar16Ptr trieUChars, int32_t maxStringLength,
                                UErrorCode &errorCode)
         : uchars_(trieUChars),
           pos_(uchars_), initialPos_(uchars_),
index fd0a407..822168f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -25,14 +25,14 @@ UCharCharacterIterator::UCharCharacterIterator()
     // never default construct!
 }
 
-UCharCharacterIterator::UCharCharacterIterator(const UChar* textPtr,
+UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
                                                int32_t length)
   : CharacterIterator(textPtr != 0 ? (length>=0 ? length : u_strlen(textPtr)) : 0),
   text(textPtr)
 {
 }
 
-UCharCharacterIterator::UCharCharacterIterator(const UChar* textPtr,
+UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
                                                int32_t length,
                                                int32_t position)
   : CharacterIterator(textPtr != 0 ? (length>=0 ? length : u_strlen(textPtr)) : 0, position),
@@ -40,7 +40,7 @@ UCharCharacterIterator::UCharCharacterIterator(const UChar* textPtr,
 {
 }
 
-UCharCharacterIterator::UCharCharacterIterator(const UChar* textPtr,
+UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
                                                int32_t length,
                                                int32_t textBegin,
                                                int32_t textEnd,
@@ -349,7 +349,7 @@ UCharCharacterIterator::move32(int32_t delta, CharacterIterator::EOrigin origin)
     return pos;
 }
 
-void UCharCharacterIterator::setText(const UChar* newText,
+void UCharCharacterIterator::setText(ConstChar16Ptr newText,
                                      int32_t      newTextLength) {
     text = newText;
     if(newText == 0 || newTextLength < 0) {
index 3c8c66a..fe6666e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucln.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e089fb2..8cabf13 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  ucln_cmn.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 56fa730..a6ecfd5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  ucln_cmn.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 352776a..1bfcde0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucln_imp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -121,7 +121,9 @@ U_CAPI void U_EXPORT2 UCLN_FINI ()
 /* READ READ READ READ!    Are you getting compilation errors from windows.h?
           Any source file which includes this (ucln_imp.h) header MUST 
           be defined with language extensions ON. */
+#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
+#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
diff --git a/source/common/ucmndata.c b/source/common/ucmndata.c
deleted file mode 100644 (file)
index 6b7d78d..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1999-2011, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************/
-
-
-/*------------------------------------------------------------------------------
- *
- *   UCommonData   An abstract interface for dealing with ICU Common Data Files.
- *                 ICU Common Data Files are a grouping of a number of individual
- *                 data items (resources, converters, tables, anything) into a
- *                 single file or dll.  The combined format includes a table of
- *                 contents for locating the individual items by name.
- *
- *                 Two formats for the table of contents are supported, which is
- *                 why there is an abstract inteface involved.
- *
- */
-
-#include "unicode/utypes.h"
-#include "unicode/udata.h"
-#include "cstring.h"
-#include "ucmndata.h"
-#include "udatamem.h"
-
-#if defined(UDATA_DEBUG) || defined(UDATA_DEBUG_DUMP)
-#   include <stdio.h>
-#endif
-
-U_CFUNC uint16_t
-udata_getHeaderSize(const DataHeader *udh) {
-    if(udh==NULL) {
-        return 0;
-    } else if(udh->info.isBigEndian==U_IS_BIG_ENDIAN) {
-        /* same endianness */
-        return udh->dataHeader.headerSize;
-    } else {
-        /* opposite endianness */
-        uint16_t x=udh->dataHeader.headerSize;
-        return (uint16_t)((x<<8)|(x>>8));
-    }
-}
-
-U_CFUNC uint16_t
-udata_getInfoSize(const UDataInfo *info) {
-    if(info==NULL) {
-        return 0;
-    } else if(info->isBigEndian==U_IS_BIG_ENDIAN) {
-        /* same endianness */
-        return info->size;
-    } else {
-        /* opposite endianness */
-        uint16_t x=info->size;
-        return (uint16_t)((x<<8)|(x>>8));
-    }
-}
-
-/*-----------------------------------------------------------------------------*
- *                                                                             *
- *  Pointer TOCs.   TODO: This form of table-of-contents should be removed     *
- *                  because DLLs must be relocated on loading to correct the   *
- *                  pointer values and this operation makes shared memory      *
- *                  mapping of the data much less likely to work.              *
- *                                                                             *
- *-----------------------------------------------------------------------------*/
-typedef struct {
-    const char       *entryName;
-    const DataHeader *pHeader;
-} PointerTOCEntry;
-
-
-typedef struct  {
-    uint32_t          count;
-    uint32_t          reserved;
-    PointerTOCEntry   entry[2];   /* Actual size is from count. */
-}  PointerTOC;
-
-
-/* definition of OffsetTOC struct types moved to ucmndata.h */
-
-/*-----------------------------------------------------------------------------*
- *                                                                             *
- *    entry point lookup implementations                                       *
- *                                                                             *
- *-----------------------------------------------------------------------------*/
-
-#ifndef MIN
-#define MIN(a,b) (((a)<(b)) ? (a) : (b))
-#endif
-
-/**
- * Compare strings where we know the shared prefix length,
- * and advance the prefix length as we find that the strings share even more characters.
- */
-static int32_t
-strcmpAfterPrefix(const char *s1, const char *s2, int32_t *pPrefixLength) {
-    int32_t pl=*pPrefixLength;
-    int32_t cmp=0;
-    s1+=pl;
-    s2+=pl;
-    for(;;) {
-        int32_t c1=(uint8_t)*s1++;
-        int32_t c2=(uint8_t)*s2++;
-        cmp=c1-c2;
-        if(cmp!=0 || c1==0) {  /* different or done */
-            break;
-        }
-        ++pl;  /* increment shared same-prefix length */
-    }
-    *pPrefixLength=pl;
-    return cmp;
-}
-
-static int32_t
-offsetTOCPrefixBinarySearch(const char *s, const char *names,
-                            const UDataOffsetTOCEntry *toc, int32_t count) {
-    int32_t start=0;
-    int32_t limit=count;
-    /*
-     * Remember the shared prefix between s, start and limit,
-     * and don't compare that shared prefix again.
-     * The shared prefix should get longer as we narrow the [start, limit[ range.
-     */
-    int32_t startPrefixLength=0;
-    int32_t limitPrefixLength=0;
-    if(count==0) {
-        return -1;
-    }
-    /*
-     * Prime the prefix lengths so that we don't keep prefixLength at 0 until
-     * both the start and limit indexes have moved.
-     * At the same time, we find if s is one of the start and (limit-1) names,
-     * and if not, exclude them from the actual binary search.
-     */
-    if(0==strcmpAfterPrefix(s, names+toc[0].nameOffset, &startPrefixLength)) {
-        return 0;
-    }
-    ++start;
-    --limit;
-    if(0==strcmpAfterPrefix(s, names+toc[limit].nameOffset, &limitPrefixLength)) {
-        return limit;
-    }
-    while(start<limit) {
-        int32_t i=(start+limit)/2;
-        int32_t prefixLength=MIN(startPrefixLength, limitPrefixLength);
-        int32_t cmp=strcmpAfterPrefix(s, names+toc[i].nameOffset, &prefixLength);
-        if(cmp<0) {
-            limit=i;
-            limitPrefixLength=prefixLength;
-        } else if(cmp==0) {
-            return i;
-        } else {
-            start=i+1;
-            startPrefixLength=prefixLength;
-        }
-    }
-    return -1;
-}
-
-static int32_t
-pointerTOCPrefixBinarySearch(const char *s, const PointerTOCEntry *toc, int32_t count) {
-    int32_t start=0;
-    int32_t limit=count;
-    /*
-     * Remember the shared prefix between s, start and limit,
-     * and don't compare that shared prefix again.
-     * The shared prefix should get longer as we narrow the [start, limit[ range.
-     */
-    int32_t startPrefixLength=0;
-    int32_t limitPrefixLength=0;
-    if(count==0) {
-        return -1;
-    }
-    /*
-     * Prime the prefix lengths so that we don't keep prefixLength at 0 until
-     * both the start and limit indexes have moved.
-     * At the same time, we find if s is one of the start and (limit-1) names,
-     * and if not, exclude them from the actual binary search.
-     */
-    if(0==strcmpAfterPrefix(s, toc[0].entryName, &startPrefixLength)) {
-        return 0;
-    }
-    ++start;
-    --limit;
-    if(0==strcmpAfterPrefix(s, toc[limit].entryName, &limitPrefixLength)) {
-        return limit;
-    }
-    while(start<limit) {
-        int32_t i=(start+limit)/2;
-        int32_t prefixLength=MIN(startPrefixLength, limitPrefixLength);
-        int32_t cmp=strcmpAfterPrefix(s, toc[i].entryName, &prefixLength);
-        if(cmp<0) {
-            limit=i;
-            limitPrefixLength=prefixLength;
-        } else if(cmp==0) {
-            return i;
-        } else {
-            start=i+1;
-            startPrefixLength=prefixLength;
-        }
-    }
-    return -1;
-}
-
-static uint32_t offsetTOCEntryCount(const UDataMemory *pData) {
-    int32_t          retVal=0;
-    const UDataOffsetTOC *toc = (UDataOffsetTOC *)pData->toc;
-    if (toc != NULL) {
-        retVal = toc->count;
-    }
-    return retVal;
-}
-
-static const DataHeader *
-offsetTOCLookupFn(const UDataMemory *pData,
-                  const char *tocEntryName,
-                  int32_t *pLength,
-                  UErrorCode *pErrorCode) {
-    const UDataOffsetTOC  *toc = (UDataOffsetTOC *)pData->toc;
-    if(toc!=NULL) {
-        const char *base=(const char *)toc;
-        int32_t number, count=(int32_t)toc->count;
-
-        /* perform a binary search for the data in the common data's table of contents */
-#if defined (UDATA_DEBUG_DUMP)
-        /* list the contents of the TOC each time .. not recommended */
-        for(number=0; number<count; ++number) {
-            fprintf(stderr, "\tx%d: %s\n", number, &base[toc->entry[number].nameOffset]);
-        }
-#endif
-        number=offsetTOCPrefixBinarySearch(tocEntryName, base, toc->entry, count);
-        if(number>=0) {
-            /* found it */
-            const UDataOffsetTOCEntry *entry=toc->entry+number;
-#ifdef UDATA_DEBUG
-            fprintf(stderr, "%s: Found.\n", tocEntryName);
-#endif
-            if((number+1) < count) {
-                *pLength = (int32_t)(entry[1].dataOffset - entry->dataOffset);
-            } else {
-                *pLength = -1;
-            }
-            return (const DataHeader *)(base+entry->dataOffset);
-        } else {
-#ifdef UDATA_DEBUG
-            fprintf(stderr, "%s: Not found.\n", tocEntryName);
-#endif
-            return NULL;
-        }
-    } else {
-#ifdef UDATA_DEBUG
-        fprintf(stderr, "returning header\n");
-#endif
-
-        return pData->pHeader;
-    }
-}
-
-
-static uint32_t pointerTOCEntryCount(const UDataMemory *pData) {
-    const PointerTOC *toc = (PointerTOC *)pData->toc;
-    return (uint32_t)((toc != NULL) ? (toc->count) : 0);
-}
-
-
-static const DataHeader *pointerTOCLookupFn(const UDataMemory *pData,
-                   const char *name,
-                   int32_t *pLength,
-                   UErrorCode *pErrorCode) {
-    if(pData->toc!=NULL) {
-        const PointerTOC *toc = (PointerTOC *)pData->toc;
-        int32_t number, count=(int32_t)toc->count;
-
-#if defined (UDATA_DEBUG_DUMP)
-        /* list the contents of the TOC each time .. not recommended */
-        for(number=0; number<count; ++number) {
-            fprintf(stderr, "\tx%d: %s\n", number, toc->entry[number].entryName);
-        }
-#endif
-        number=pointerTOCPrefixBinarySearch(name, toc->entry, count);
-        if(number>=0) {
-            /* found it */
-#ifdef UDATA_DEBUG
-            fprintf(stderr, "%s: Found.\n", toc->entry[number].entryName);
-#endif
-            *pLength=-1;
-            return UDataMemory_normalizeDataPointer(toc->entry[number].pHeader);
-        } else {
-#ifdef UDATA_DEBUG
-            fprintf(stderr, "%s: Not found.\n", name);
-#endif
-            return NULL;
-        }
-    } else {
-        return pData->pHeader;
-    }
-}
-
-static const commonDataFuncs CmnDFuncs = {offsetTOCLookupFn,  offsetTOCEntryCount};
-static const commonDataFuncs ToCPFuncs = {pointerTOCLookupFn, pointerTOCEntryCount};
-
-
-
-/*----------------------------------------------------------------------*
- *                                                                      *
- *  checkCommonData   Validate the format of a common data file.        *
- *                    Fill in the virtual function ptr based on TOC type *
- *                    If the data is invalid, close the UDataMemory     *
- *                    and set the appropriate error code.               *
- *                                                                      *
- *----------------------------------------------------------------------*/
-U_CFUNC void udata_checkCommonData(UDataMemory *udm, UErrorCode *err) {
-    if (U_FAILURE(*err)) {
-        return;
-    }
-
-    if(udm==NULL || udm->pHeader==NULL) {
-      *err=U_INVALID_FORMAT_ERROR;
-    } else if(!(udm->pHeader->dataHeader.magic1==0xda &&
-        udm->pHeader->dataHeader.magic2==0x27 &&
-        udm->pHeader->info.isBigEndian==U_IS_BIG_ENDIAN &&
-        udm->pHeader->info.charsetFamily==U_CHARSET_FAMILY)
-        ) {
-        /* header not valid */
-        *err=U_INVALID_FORMAT_ERROR;
-    }
-    else if (udm->pHeader->info.dataFormat[0]==0x43 &&
-        udm->pHeader->info.dataFormat[1]==0x6d &&
-        udm->pHeader->info.dataFormat[2]==0x6e &&
-        udm->pHeader->info.dataFormat[3]==0x44 &&
-        udm->pHeader->info.formatVersion[0]==1
-        ) {
-        /* dataFormat="CmnD" */
-        udm->vFuncs = &CmnDFuncs;
-        udm->toc=(const char *)udm->pHeader+udata_getHeaderSize(udm->pHeader);
-    }
-    else if(udm->pHeader->info.dataFormat[0]==0x54 &&
-        udm->pHeader->info.dataFormat[1]==0x6f &&
-        udm->pHeader->info.dataFormat[2]==0x43 &&
-        udm->pHeader->info.dataFormat[3]==0x50 &&
-        udm->pHeader->info.formatVersion[0]==1
-        ) {
-        /* dataFormat="ToCP" */
-        udm->vFuncs = &ToCPFuncs;
-        udm->toc=(const char *)udm->pHeader+udata_getHeaderSize(udm->pHeader);
-    }
-    else {
-        /* dataFormat not recognized */
-        *err=U_INVALID_FORMAT_ERROR;
-    }
-
-    if (U_FAILURE(*err)) {
-        /* If the data is no good and we memory-mapped it ourselves,
-         *  close the memory mapping so it doesn't leak.  Note that this has
-         *  no effect on non-memory mapped data, other than clearing fields in udm.
-         */
-        udata_close(udm);
-    }
-}
-
-/*
- * TODO: Add a udata_swapPackageHeader() function that swaps an ICU .dat package
- * header but not its sub-items.
- * This function will be needed for automatic runtime swapping.
- * Sub-items should not be swapped to limit the swapping to the parts of the
- * package that are actually used.
- *
- * Since lengths of items are implicit in the order and offsets of their
- * ToC entries, and since offsets are relative to the start of the ToC,
- * a swapped version may need to generate a different data structure
- * with pointers to the original data items and with their lengths
- * (-1 for the last one if it is not known), and maybe even pointers to the
- * swapped versions of the items.
- * These pointers to swapped versions would establish a cache;
- * instead, each open data item could simply own the storage for its swapped
- * data. This fits better with the current design.
- *
- * markus 2003sep18 Jitterbug 2235
- */
index 9e87fad..cc126d5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/ucnv.c b/source/common/ucnv.c
deleted file mode 100644 (file)
index 527f86f..0000000
+++ /dev/null
@@ -1,2918 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1998-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-*  ucnv.c:
-*  Implements APIs for the ICU's codeset conversion library;
-*  mostly calls through internal functions;
-*  created by Bertrand A. Damiba
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   04/04/99    helena      Fixed internal header inclusion.
-*   05/09/00    helena      Added implementation to handle fallback mappings.
-*   06/20/2000  helena      OS/400 port changes; mostly typecast.
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "unicode/ustring.h"
-#include "unicode/ucnv.h"
-#include "unicode/ucnv_err.h"
-#include "unicode/uset.h"
-#include "unicode/utf.h"
-#include "unicode/utf16.h"
-#include "putilimp.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "uassert.h"
-#include "utracimp.h"
-#include "ustr_imp.h"
-#include "ucnv_imp.h"
-#include "ucnv_cnv.h"
-#include "ucnv_bld.h"
-
-/* size of intermediate and preflighting buffers in ucnv_convert() */
-#define CHUNK_SIZE 1024
-
-typedef struct UAmbiguousConverter {
-    const char *name;
-    const UChar variant5c;
-} UAmbiguousConverter;
-
-static const UAmbiguousConverter ambiguousConverters[]={
-    { "ibm-897_P100-1995", 0xa5 },
-    { "ibm-942_P120-1999", 0xa5 },
-    { "ibm-943_P130-1999", 0xa5 },
-    { "ibm-946_P100-1995", 0xa5 },
-    { "ibm-33722_P120-1999", 0xa5 },
-    { "ibm-1041_P100-1995", 0xa5 },
-    /*{ "ibm-54191_P100-2006", 0xa5 },*/
-    /*{ "ibm-62383_P100-2007", 0xa5 },*/
-    /*{ "ibm-891_P100-1995", 0x20a9 },*/
-    { "ibm-944_P100-1995", 0x20a9 },
-    { "ibm-949_P110-1999", 0x20a9 },
-    { "ibm-1363_P110-1997", 0x20a9 },
-    { "ISO_2022,locale=ko,version=0", 0x20a9 },
-    { "ibm-1088_P100-1995", 0x20a9 }
-};
-
-/*Calls through createConverter */
-U_CAPI UConverter* U_EXPORT2
-ucnv_open (const char *name,
-                       UErrorCode * err)
-{
-    UConverter *r;
-
-    if (err == NULL || U_FAILURE (*err)) {
-        return NULL;
-    }
-
-    r =  ucnv_createConverter(NULL, name, err);
-    return r;
-}
-
-U_CAPI UConverter* U_EXPORT2 
-ucnv_openPackage   (const char *packageName, const char *converterName, UErrorCode * err)
-{
-    return ucnv_createConverterFromPackage(packageName, converterName,  err);
-}
-
-/*Extracts the UChar* to a char* and calls through createConverter */
-U_CAPI UConverter*   U_EXPORT2
-ucnv_openU (const UChar * name,
-                         UErrorCode * err)
-{
-    char asciiName[UCNV_MAX_CONVERTER_NAME_LENGTH];
-
-    if (err == NULL || U_FAILURE(*err))
-        return NULL;
-    if (name == NULL)
-        return ucnv_open (NULL, err);
-    if (u_strlen(name) >= UCNV_MAX_CONVERTER_NAME_LENGTH)
-    {
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-    return ucnv_open(u_austrcpy(asciiName, name), err);
-}
-
-/* Copy the string that is represented by the UConverterPlatform enum
- * @param platformString An output buffer
- * @param platform An enum representing a platform
- * @return the length of the copied string.
- */
-static int32_t
-ucnv_copyPlatformString(char *platformString, UConverterPlatform pltfrm)
-{
-    switch (pltfrm)
-    {
-    case UCNV_IBM:
-        uprv_strcpy(platformString, "ibm-");
-        return 4;
-    case UCNV_UNKNOWN:
-        break;
-    }
-
-    /* default to empty string */
-    *platformString = 0;
-    return 0;
-}
-
-/*Assumes a $platform-#codepage.$CONVERTER_FILE_EXTENSION scheme and calls
- *through createConverter*/
-U_CAPI UConverter*   U_EXPORT2
-ucnv_openCCSID (int32_t codepage,
-                UConverterPlatform platform,
-                UErrorCode * err)
-{
-    char myName[UCNV_MAX_CONVERTER_NAME_LENGTH];
-    int32_t myNameLen;
-
-    if (err == NULL || U_FAILURE (*err))
-        return NULL;
-
-    /* ucnv_copyPlatformString could return "ibm-" or "cp" */
-    myNameLen = ucnv_copyPlatformString(myName, platform);
-    T_CString_integerToString(myName + myNameLen, codepage, 10);
-
-    return ucnv_createConverter(NULL, myName, err);
-}
-
-/* Creating a temporary stack-based object that can be used in one thread, 
-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)
-{
-    UConverter *localConverter, *allocatedConverter;
-    int32_t stackBufferSize;
-    int32_t bufferSizeNeeded;
-    char *stackBufferChars = (char *)stackBuffer;
-    UErrorCode cbErr;
-    UConverterToUnicodeArgs toUArgs = {
-        sizeof(UConverterToUnicodeArgs),
-            TRUE,
-            NULL,
-            NULL,
-            NULL,
-            NULL,
-            NULL,
-            NULL
-    };
-    UConverterFromUnicodeArgs fromUArgs = {
-        sizeof(UConverterFromUnicodeArgs),
-            TRUE,
-            NULL,
-            NULL,
-            NULL,
-            NULL,
-            NULL,
-            NULL
-    };
-
-    UTRACE_ENTRY_OC(UTRACE_UCNV_CLONE);
-
-    if (status == NULL || U_FAILURE(*status)){
-        UTRACE_EXIT_STATUS(status? *status: U_ILLEGAL_ARGUMENT_ERROR);
-        return NULL;
-    }
-
-    if (cnv == NULL) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        UTRACE_EXIT_STATUS(*status);
-        return NULL;
-    }
-
-    UTRACE_DATA3(UTRACE_OPEN_CLOSE, "clone converter %s at %p into stackBuffer %p",
-                                    ucnv_getName(cnv, status), cnv, stackBuffer);
-
-    if (cnv->sharedData->impl->safeClone != NULL) {
-        /* call the custom safeClone function for sizing */
-        bufferSizeNeeded = 0;
-        cnv->sharedData->impl->safeClone(cnv, NULL, &bufferSizeNeeded, status);
-        if (U_FAILURE(*status)) {
-            UTRACE_EXIT_STATUS(*status);
-            return NULL;
-        }
-    }
-    else
-    {
-        /* inherent sizing */
-        bufferSizeNeeded = sizeof(UConverter);
-    }
-
-    if (pBufferSize == NULL) {
-        stackBufferSize = 1;
-        pBufferSize = &stackBufferSize;
-    } else {
-        stackBufferSize = *pBufferSize;
-        if (stackBufferSize <= 0){ /* 'preflighting' request - set needed size into *pBufferSize */
-            *pBufferSize = bufferSizeNeeded;
-            UTRACE_EXIT_VALUE(bufferSizeNeeded);
-            return NULL;
-        }
-    }
-
-
-    /* Pointers on 64-bit platforms need to be aligned
-     * on a 64-bit boundary in memory.
-     */
-    if (U_ALIGNMENT_OFFSET(stackBuffer) != 0) {
-        int32_t offsetUp = (int32_t)U_ALIGNMENT_OFFSET_UP(stackBufferChars);
-        if(stackBufferSize > offsetUp) {
-            stackBufferSize -= offsetUp;
-            stackBufferChars += offsetUp;
-        } else {
-            /* prevent using the stack buffer but keep the size > 0 so that we do not just preflight */
-            stackBufferSize = 1;
-        }
-    }
-
-    stackBuffer = (void *)stackBufferChars;
-    
-    /* Now, see if we must allocate any memory */
-    if (stackBufferSize < bufferSizeNeeded || stackBuffer == NULL)
-    {
-        /* allocate one here...*/
-        localConverter = allocatedConverter = (UConverter *) uprv_malloc (bufferSizeNeeded);
-
-        if(localConverter == NULL) {
-            *status = U_MEMORY_ALLOCATION_ERROR;
-            UTRACE_EXIT_STATUS(*status);
-            return NULL;
-        }
-        *status = U_SAFECLONE_ALLOCATED_WARNING;
-
-        /* record the fact that memory was allocated */
-        *pBufferSize = bufferSizeNeeded;
-    } else {
-        /* just use the stack buffer */
-        localConverter = (UConverter*) stackBuffer;
-        allocatedConverter = NULL;
-    }
-
-    uprv_memset(localConverter, 0, bufferSizeNeeded);
-
-    /* Copy initial state */
-    uprv_memcpy(localConverter, cnv, sizeof(UConverter));
-    localConverter->isCopyLocal = localConverter->isExtraLocal = FALSE;
-
-    /* copy the substitution string */
-    if (cnv->subChars == (uint8_t *)cnv->subUChars) {
-        localConverter->subChars = (uint8_t *)localConverter->subUChars;
-    } else {
-        localConverter->subChars = (uint8_t *)uprv_malloc(UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
-        if (localConverter->subChars == NULL) {
-            uprv_free(allocatedConverter);
-            UTRACE_EXIT_STATUS(*status);
-            return NULL;
-        }
-        uprv_memcpy(localConverter->subChars, cnv->subChars, UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
-    }
-
-    /* now either call the safeclone fcn or not */
-    if (cnv->sharedData->impl->safeClone != NULL) {
-        /* call the custom safeClone function */
-        localConverter = cnv->sharedData->impl->safeClone(cnv, localConverter, pBufferSize, status);
-    }
-
-    if(localConverter==NULL || U_FAILURE(*status)) {
-        if (allocatedConverter != NULL && allocatedConverter->subChars != (uint8_t *)allocatedConverter->subUChars) {
-            uprv_free(allocatedConverter->subChars);
-        }
-        uprv_free(allocatedConverter);
-        UTRACE_EXIT_STATUS(*status);
-        return NULL;
-    }
-
-    /* increment refcount of shared data if needed */
-    if (cnv->sharedData->isReferenceCounted) {
-        ucnv_incrementRefCount(cnv->sharedData);
-    }
-
-    if(localConverter == (UConverter*)stackBuffer) {
-        /* we're using user provided data - set to not destroy */
-        localConverter->isCopyLocal = TRUE;
-    }
-
-    /* allow callback functions to handle any memory allocation */
-    toUArgs.converter = fromUArgs.converter = localConverter;
-    cbErr = U_ZERO_ERROR;
-    cnv->fromCharErrorBehaviour(cnv->toUContext, &toUArgs, NULL, 0, UCNV_CLONE, &cbErr);
-    cbErr = U_ZERO_ERROR;
-    cnv->fromUCharErrorBehaviour(cnv->fromUContext, &fromUArgs, NULL, 0, 0, UCNV_CLONE, &cbErr);
-
-    UTRACE_EXIT_PTR_STATUS(localConverter, *status);
-    return localConverter;
-}
-
-
-
-/*Decreases the reference counter in the shared immutable section of the object
- *and frees the mutable part*/
-
-U_CAPI void  U_EXPORT2
-ucnv_close (UConverter * converter)
-{
-    UErrorCode errorCode = U_ZERO_ERROR;
-
-    UTRACE_ENTRY_OC(UTRACE_UCNV_CLOSE);
-
-    if (converter == NULL)
-    {
-        UTRACE_EXIT();
-        return;
-    }
-
-    UTRACE_DATA3(UTRACE_OPEN_CLOSE, "close converter %s at %p, isCopyLocal=%b",
-        ucnv_getName(converter, &errorCode), converter, converter->isCopyLocal);
-
-    /* In order to speed up the close, only call the callbacks when they have been changed.
-    This performance check will only work when the callbacks are set within a shared library
-    or from user code that statically links this code. */
-    /* first, notify the callback functions that the converter is closed */
-    if (converter->fromCharErrorBehaviour != UCNV_TO_U_DEFAULT_CALLBACK) {
-        UConverterToUnicodeArgs toUArgs = {
-            sizeof(UConverterToUnicodeArgs),
-                TRUE,
-                NULL,
-                NULL,
-                NULL,
-                NULL,
-                NULL,
-                NULL
-        };
-
-        toUArgs.converter = converter;
-        errorCode = U_ZERO_ERROR;
-        converter->fromCharErrorBehaviour(converter->toUContext, &toUArgs, NULL, 0, UCNV_CLOSE, &errorCode);
-    }
-    if (converter->fromUCharErrorBehaviour != UCNV_FROM_U_DEFAULT_CALLBACK) {
-        UConverterFromUnicodeArgs fromUArgs = {
-            sizeof(UConverterFromUnicodeArgs),
-                TRUE,
-                NULL,
-                NULL,
-                NULL,
-                NULL,
-                NULL,
-                NULL
-        };
-        fromUArgs.converter = converter;
-        errorCode = U_ZERO_ERROR;
-        converter->fromUCharErrorBehaviour(converter->fromUContext, &fromUArgs, NULL, 0, 0, UCNV_CLOSE, &errorCode);
-    }
-
-    if (converter->sharedData->impl->close != NULL) {
-        converter->sharedData->impl->close(converter);
-    }
-
-    if (converter->subChars != (uint8_t *)converter->subUChars) {
-        uprv_free(converter->subChars);
-    }
-
-    if (converter->sharedData->isReferenceCounted) {
-        ucnv_unloadSharedDataIfReady(converter->sharedData);
-    }
-
-    if(!converter->isCopyLocal){
-        uprv_free(converter);
-    }
-
-    UTRACE_EXIT();
-}
-
-/*returns a single Name from the list, will return NULL if out of bounds
- */
-U_CAPI const char*   U_EXPORT2
-ucnv_getAvailableName (int32_t n)
-{
-    if (0 <= n && n <= 0xffff) {
-        UErrorCode err = U_ZERO_ERROR;
-        const char *name = ucnv_bld_getAvailableConverter((uint16_t)n, &err);
-        if (U_SUCCESS(err)) {
-            return name;
-        }
-    }
-    return NULL;
-}
-
-U_CAPI int32_t   U_EXPORT2
-ucnv_countAvailable ()
-{
-    UErrorCode err = U_ZERO_ERROR;
-    return ucnv_bld_countAvailableConverters(&err);
-}
-
-U_CAPI void    U_EXPORT2
-ucnv_getSubstChars (const UConverter * converter,
-                    char *mySubChar,
-                    int8_t * len,
-                    UErrorCode * err)
-{
-    if (U_FAILURE (*err))
-        return;
-
-    if (converter->subCharLen <= 0) {
-        /* Unicode string or empty string from ucnv_setSubstString(). */
-        *len = 0;
-        return;
-    }
-
-    if (*len < converter->subCharLen) /*not enough space in subChars */
-    {
-        *err = U_INDEX_OUTOFBOUNDS_ERROR;
-        return;
-    }
-
-    uprv_memcpy (mySubChar, converter->subChars, converter->subCharLen);   /*fills in the subchars */
-    *len = converter->subCharLen; /*store # of bytes copied to buffer */
-}
-
-U_CAPI void    U_EXPORT2
-ucnv_setSubstChars (UConverter * converter,
-                    const char *mySubChar,
-                    int8_t len,
-                    UErrorCode * err)
-{
-    if (U_FAILURE (*err))
-        return;
-    
-    /*Makes sure that the subChar is within the codepages char length boundaries */
-    if ((len > converter->sharedData->staticData->maxBytesPerChar)
-     || (len < converter->sharedData->staticData->minBytesPerChar))
-    {
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    
-    uprv_memcpy (converter->subChars, mySubChar, len); /*copies the subchars */
-    converter->subCharLen = len;  /*sets the new len */
-
-    /*
-    * There is currently (2001Feb) no separate API to set/get subChar1.
-    * In order to always have subChar written after it is explicitly set,
-    * we set subChar1 to 0.
-    */
-    converter->subChar1 = 0;
-    
-    return;
-}
-
-U_CAPI void U_EXPORT2
-ucnv_setSubstString(UConverter *cnv,
-                    const UChar *s,
-                    int32_t length,
-                    UErrorCode *err) {
-    UAlignedMemory cloneBuffer[U_CNV_SAFECLONE_BUFFERSIZE / sizeof(UAlignedMemory) + 1];
-    char chars[UCNV_ERROR_BUFFER_LENGTH];
-
-    UConverter *clone;
-    uint8_t *subChars;
-    int32_t cloneSize, length8;
-
-    /* Let the following functions check all arguments. */
-    cloneSize = sizeof(cloneBuffer);
-    clone = ucnv_safeClone(cnv, cloneBuffer, &cloneSize, err);
-    ucnv_setFromUCallBack(clone, UCNV_FROM_U_CALLBACK_STOP, NULL, NULL, NULL, err);
-    length8 = ucnv_fromUChars(clone, chars, (int32_t)sizeof(chars), s, length, err);
-    ucnv_close(clone);
-    if (U_FAILURE(*err)) {
-        return;
-    }
-
-    if (cnv->sharedData->impl->writeSub == NULL
-#if !UCONFIG_NO_LEGACY_CONVERSION
-        || (cnv->sharedData->staticData->conversionType == UCNV_MBCS &&
-         ucnv_MBCSGetType(cnv) != UCNV_EBCDIC_STATEFUL)
-#endif
-    ) {
-        /* The converter is not stateful. Store the charset bytes as a fixed string. */
-        subChars = (uint8_t *)chars;
-    } else {
-        /*
-         * The converter has a non-default writeSub() function, indicating
-         * that it is stateful.
-         * Store the Unicode string for on-the-fly conversion for correct
-         * state handling.
-         */
-        if (length > UCNV_ERROR_BUFFER_LENGTH) {
-            /*
-             * Should not occur. The converter should output at least one byte
-             * per UChar, which means that ucnv_fromUChars() should catch all
-             * overflows.
-             */
-            *err = U_BUFFER_OVERFLOW_ERROR;
-            return;
-        }
-        subChars = (uint8_t *)s;
-        if (length < 0) {
-            length = u_strlen(s);
-        }
-        length8 = length * U_SIZEOF_UCHAR;
-    }
-
-    /*
-     * For storing the substitution string, select either the small buffer inside
-     * UConverter or allocate a subChars buffer.
-     */
-    if (length8 > UCNV_MAX_SUBCHAR_LEN) {
-        /* Use a separate buffer for the string. Outside UConverter to not make it too large. */
-        if (cnv->subChars == (uint8_t *)cnv->subUChars) {
-            /* Allocate a new buffer for the string. */
-            cnv->subChars = (uint8_t *)uprv_malloc(UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
-            if (cnv->subChars == NULL) {
-                cnv->subChars = (uint8_t *)cnv->subUChars;
-                *err = U_MEMORY_ALLOCATION_ERROR;
-                return;
-            }
-            uprv_memset(cnv->subChars, 0, UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
-        }
-    }
-
-    /* Copy the substitution string into the UConverter or its subChars buffer. */
-    if (length8 == 0) {
-        cnv->subCharLen = 0;
-    } else {
-        uprv_memcpy(cnv->subChars, subChars, length8);
-        if (subChars == (uint8_t *)chars) {
-            cnv->subCharLen = (int8_t)length8;
-        } else /* subChars == s */ {
-            cnv->subCharLen = (int8_t)-length;
-        }
-    }
-
-    /* See comment in ucnv_setSubstChars(). */
-    cnv->subChar1 = 0;
-}
-
-/*resets the internal states of a converter
- *goal : have the same behaviour than a freshly created converter
- */
-static void _reset(UConverter *converter, UConverterResetChoice choice,
-                   UBool callCallback) {
-    if(converter == NULL) {
-        return;
-    }
-
-    if(callCallback) {
-        /* first, notify the callback functions that the converter is reset */
-        UErrorCode errorCode;
-
-        if(choice<=UCNV_RESET_TO_UNICODE && converter->fromCharErrorBehaviour != UCNV_TO_U_DEFAULT_CALLBACK) {
-            UConverterToUnicodeArgs toUArgs = {
-                sizeof(UConverterToUnicodeArgs),
-                TRUE,
-                NULL,
-                NULL,
-                NULL,
-                NULL,
-                NULL,
-                NULL
-            };
-            toUArgs.converter = converter;
-            errorCode = U_ZERO_ERROR;
-            converter->fromCharErrorBehaviour(converter->toUContext, &toUArgs, NULL, 0, UCNV_RESET, &errorCode);
-        }
-        if(choice!=UCNV_RESET_TO_UNICODE && converter->fromUCharErrorBehaviour != UCNV_FROM_U_DEFAULT_CALLBACK) {
-            UConverterFromUnicodeArgs fromUArgs = {
-                sizeof(UConverterFromUnicodeArgs),
-                TRUE,
-                NULL,
-                NULL,
-                NULL,
-                NULL,
-                NULL,
-                NULL
-            };
-            fromUArgs.converter = converter;
-            errorCode = U_ZERO_ERROR;
-            converter->fromUCharErrorBehaviour(converter->fromUContext, &fromUArgs, NULL, 0, 0, UCNV_RESET, &errorCode);
-        }
-    }
-
-    /* now reset the converter itself */
-    if(choice<=UCNV_RESET_TO_UNICODE) {
-        converter->toUnicodeStatus = converter->sharedData->toUnicodeStatus;
-        converter->mode = 0;
-        converter->toULength = 0;
-        converter->invalidCharLength = converter->UCharErrorBufferLength = 0;
-        converter->preToULength = 0;
-    }
-    if(choice!=UCNV_RESET_TO_UNICODE) {
-        converter->fromUnicodeStatus = 0;
-        converter->fromUChar32 = 0;
-        converter->invalidUCharLength = converter->charErrorBufferLength = 0;
-        converter->preFromUFirstCP = U_SENTINEL;
-        converter->preFromULength = 0;
-    }
-
-    if (converter->sharedData->impl->reset != NULL) {
-        /* call the custom reset function */
-        converter->sharedData->impl->reset(converter, choice);
-    }
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_reset(UConverter *converter)
-{
-    _reset(converter, UCNV_RESET_BOTH, TRUE);
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_resetToUnicode(UConverter *converter)
-{
-    _reset(converter, UCNV_RESET_TO_UNICODE, TRUE);
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_resetFromUnicode(UConverter *converter)
-{
-    _reset(converter, UCNV_RESET_FROM_UNICODE, TRUE);
-}
-
-U_CAPI int8_t   U_EXPORT2
-ucnv_getMaxCharSize (const UConverter * converter)
-{
-    return converter->maxBytesPerUChar;
-}
-
-
-U_CAPI int8_t   U_EXPORT2
-ucnv_getMinCharSize (const UConverter * converter)
-{
-    return converter->sharedData->staticData->minBytesPerChar;
-}
-
-U_CAPI const char*   U_EXPORT2
-ucnv_getName (const UConverter * converter, UErrorCode * err)
-     
-{
-    if (U_FAILURE (*err))
-        return NULL;
-    if(converter->sharedData->impl->getName){
-        const char* temp= converter->sharedData->impl->getName(converter);
-        if(temp)
-            return temp;
-    }
-    return converter->sharedData->staticData->name;
-}
-
-U_CAPI int32_t U_EXPORT2
-ucnv_getCCSID(const UConverter * converter,
-              UErrorCode * err)
-{
-    int32_t ccsid;
-    if (U_FAILURE (*err))
-        return -1;
-
-    ccsid = converter->sharedData->staticData->codepage;
-    if (ccsid == 0) {
-        /* Rare case. This is for cases like gb18030,
-        which doesn't have an IBM canonical name, but does have an IBM alias. */
-        const char *standardName = ucnv_getStandardName(ucnv_getName(converter, err), "IBM", err);
-        if (U_SUCCESS(*err) && standardName) {
-            const char *ccsidStr = uprv_strchr(standardName, '-');
-            if (ccsidStr) {
-                ccsid = (int32_t)atol(ccsidStr+1);  /* +1 to skip '-' */
-            }
-        }
-    }
-    return ccsid;
-}
-
-
-U_CAPI UConverterPlatform   U_EXPORT2
-ucnv_getPlatform (const UConverter * converter,
-                                      UErrorCode * err)
-{
-    if (U_FAILURE (*err))
-        return UCNV_UNKNOWN;
-
-    return (UConverterPlatform)converter->sharedData->staticData->platform;
-}
-
-U_CAPI void U_EXPORT2
-    ucnv_getToUCallBack (const UConverter * converter,
-                         UConverterToUCallback *action,
-                         const void **context)
-{
-    *action = converter->fromCharErrorBehaviour;
-    *context = converter->toUContext;
-}
-
-U_CAPI void U_EXPORT2
-    ucnv_getFromUCallBack (const UConverter * converter,
-                           UConverterFromUCallback *action,
-                           const void **context)
-{
-    *action = converter->fromUCharErrorBehaviour;
-    *context = converter->fromUContext;
-}
-
-U_CAPI void    U_EXPORT2
-ucnv_setToUCallBack (UConverter * converter,
-                            UConverterToUCallback newAction,
-                            const void* newContext,
-                            UConverterToUCallback *oldAction,
-                            const void** oldContext,
-                            UErrorCode * err)
-{
-    if (U_FAILURE (*err))
-        return;
-    if (oldAction) *oldAction = converter->fromCharErrorBehaviour;
-    converter->fromCharErrorBehaviour = newAction;
-    if (oldContext) *oldContext = converter->toUContext;
-    converter->toUContext = newContext;
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_setFromUCallBack (UConverter * converter,
-                            UConverterFromUCallback newAction,
-                            const void* newContext,
-                            UConverterFromUCallback *oldAction,
-                            const void** oldContext,
-                            UErrorCode * err)
-{
-    if (U_FAILURE (*err))
-        return;
-    if (oldAction) *oldAction = converter->fromUCharErrorBehaviour;
-    converter->fromUCharErrorBehaviour = newAction;
-    if (oldContext) *oldContext = converter->fromUContext;
-    converter->fromUContext = newContext;
-}
-
-static void
-_updateOffsets(int32_t *offsets, int32_t length,
-               int32_t sourceIndex, int32_t errorInputLength) {
-    int32_t *limit;
-    int32_t delta, offset;
-
-    if(sourceIndex>=0) {
-        /*
-         * adjust each offset by adding the previous sourceIndex
-         * minus the length of the input sequence that caused an
-         * error, if any
-         */
-        delta=sourceIndex-errorInputLength;
-    } else {
-        /*
-         * set each offset to -1 because this conversion function
-         * does not handle offsets
-         */
-        delta=-1;
-    }
-
-    limit=offsets+length;
-    if(delta==0) {
-        /* most common case, nothing to do */
-    } else if(delta>0) {
-        /* add the delta to each offset (but not if the offset is <0) */
-        while(offsets<limit) {
-            offset=*offsets;
-            if(offset>=0) {
-                *offsets=offset+delta;
-            }
-            ++offsets;
-        }
-    } else /* delta<0 */ {
-        /*
-         * set each offset to -1 because this conversion function
-         * does not handle offsets
-         * or the error input sequence started in a previous buffer
-         */
-        while(offsets<limit) {
-            *offsets++=-1;
-        }
-    }
-}
-
-/* ucnv_fromUnicode --------------------------------------------------------- */
-
-/*
- * Implementation note for m:n conversions
- *
- * While collecting source units to find the longest match for m:n conversion,
- * some source units may need to be stored for a partial match.
- * When a second buffer does not yield a match on all of the previously stored
- * source units, then they must be "replayed", i.e., fed back into the converter.
- *
- * The code relies on the fact that replaying will not nest -
- * converting a replay buffer will not result in a replay.
- * This is because a replay is necessary only after the _continuation_ of a
- * partial match failed, but a replay buffer is converted as a whole.
- * It may result in some of its units being stored again for a partial match,
- * but there will not be a continuation _during_ the replay which could fail.
- *
- * It is conceivable that a callback function could call the converter
- * recursively in a way that causes another replay to be stored, but that
- * would be an error in the callback function.
- * Such violations will cause assertion failures in a debug build,
- * and wrong output, but they will not cause a crash.
- */
-
-static void
-_fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
-    UConverterFromUnicode fromUnicode;
-    UConverter *cnv;
-    const UChar *s;
-    char *t;
-    int32_t *offsets;
-    int32_t sourceIndex;
-    int32_t errorInputLength;
-    UBool converterSawEndOfInput, calledCallback;
-
-    /* variables for m:n conversion */
-    UChar replay[UCNV_EXT_MAX_UCHARS];
-    const UChar *realSource, *realSourceLimit;
-    int32_t realSourceIndex;
-    UBool realFlush;
-
-    cnv=pArgs->converter;
-    s=pArgs->source;
-    t=pArgs->target;
-    offsets=pArgs->offsets;
-
-    /* get the converter implementation function */
-    sourceIndex=0;
-    if(offsets==NULL) {
-        fromUnicode=cnv->sharedData->impl->fromUnicode;
-    } else {
-        fromUnicode=cnv->sharedData->impl->fromUnicodeWithOffsets;
-        if(fromUnicode==NULL) {
-            /* there is no WithOffsets implementation */
-            fromUnicode=cnv->sharedData->impl->fromUnicode;
-            /* we will write -1 for each offset */
-            sourceIndex=-1;
-        }
-    }
-
-    if(cnv->preFromULength>=0) {
-        /* normal mode */
-        realSource=NULL;
-
-        /* avoid compiler warnings - not otherwise necessary, and the values do not matter */
-        realSourceLimit=NULL;
-        realFlush=FALSE;
-        realSourceIndex=0;
-    } else {
-        /*
-         * Previous m:n conversion stored source units from a partial match
-         * and failed to consume all of them.
-         * We need to "replay" them from a temporary buffer and convert them first.
-         */
-        realSource=pArgs->source;
-        realSourceLimit=pArgs->sourceLimit;
-        realFlush=pArgs->flush;
-        realSourceIndex=sourceIndex;
-
-        uprv_memcpy(replay, cnv->preFromU, -cnv->preFromULength*U_SIZEOF_UCHAR);
-        pArgs->source=replay;
-        pArgs->sourceLimit=replay-cnv->preFromULength;
-        pArgs->flush=FALSE;
-        sourceIndex=-1;
-
-        cnv->preFromULength=0;
-    }
-
-    /*
-     * loop for conversion and error handling
-     *
-     * loop {
-     *   convert
-     *   loop {
-     *     update offsets
-     *     handle end of input
-     *     handle errors/call callback
-     *   }
-     * }
-     */
-    for(;;) {
-        if(U_SUCCESS(*err)) {
-            /* convert */
-            fromUnicode(pArgs, err);
-
-            /*
-             * set a flag for whether the converter
-             * successfully processed the end of the input
-             *
-             * need not check cnv->preFromULength==0 because a replay (<0) will cause
-             * s<sourceLimit before converterSawEndOfInput is checked
-             */
-            converterSawEndOfInput=
-                (UBool)(U_SUCCESS(*err) &&
-                        pArgs->flush && pArgs->source==pArgs->sourceLimit &&
-                        cnv->fromUChar32==0);
-        } else {
-            /* handle error from ucnv_convertEx() */
-            converterSawEndOfInput=FALSE;
-        }
-
-        /* no callback called yet for this iteration */
-        calledCallback=FALSE;
-
-        /* no sourceIndex adjustment for conversion, only for callback output */
-        errorInputLength=0;
-
-        /*
-         * loop for offsets and error handling
-         *
-         * iterates at most 3 times:
-         * 1. to clean up after the conversion function
-         * 2. after the callback
-         * 3. after the callback again if there was truncated input
-         */
-        for(;;) {
-            /* update offsets if we write any */
-            if(offsets!=NULL) {
-                int32_t length=(int32_t)(pArgs->target-t);
-                if(length>0) {
-                    _updateOffsets(offsets, length, sourceIndex, errorInputLength);
-
-                    /*
-                     * if a converter handles offsets and updates the offsets
-                     * pointer at the end, then pArgs->offset should not change
-                     * here;
-                     * however, some converters do not handle offsets at all
-                     * (sourceIndex<0) or may not update the offsets pointer
-                     */
-                    pArgs->offsets=offsets+=length;
-                }
-
-                if(sourceIndex>=0) {
-                    sourceIndex+=(int32_t)(pArgs->source-s);
-                }
-            }
-
-            if(cnv->preFromULength<0) {
-                /*
-                 * switch the source to new replay units (cannot occur while replaying)
-                 * after offset handling and before end-of-input and callback handling
-                 */
-                if(realSource==NULL) {
-                    realSource=pArgs->source;
-                    realSourceLimit=pArgs->sourceLimit;
-                    realFlush=pArgs->flush;
-                    realSourceIndex=sourceIndex;
-
-                    uprv_memcpy(replay, cnv->preFromU, -cnv->preFromULength*U_SIZEOF_UCHAR);
-                    pArgs->source=replay;
-                    pArgs->sourceLimit=replay-cnv->preFromULength;
-                    pArgs->flush=FALSE;
-                    if((sourceIndex+=cnv->preFromULength)<0) {
-                        sourceIndex=-1;
-                    }
-
-                    cnv->preFromULength=0;
-                } else {
-                    /* see implementation note before _fromUnicodeWithCallback() */
-                    U_ASSERT(realSource==NULL);
-                    *err=U_INTERNAL_PROGRAM_ERROR;
-                }
-            }
-
-            /* update pointers */
-            s=pArgs->source;
-            t=pArgs->target;
-
-            if(U_SUCCESS(*err)) {
-                if(s<pArgs->sourceLimit) {
-                    /*
-                     * continue with the conversion loop while there is still input left
-                     * (continue converting by breaking out of only the inner loop)
-                     */
-                    break;
-                } else if(realSource!=NULL) {
-                    /* switch back from replaying to the real source and continue */
-                    pArgs->source=realSource;
-                    pArgs->sourceLimit=realSourceLimit;
-                    pArgs->flush=realFlush;
-                    sourceIndex=realSourceIndex;
-
-                    realSource=NULL;
-                    break;
-                } else if(pArgs->flush && cnv->fromUChar32!=0) {
-                    /*
-                     * the entire input stream is consumed
-                     * and there is a partial, truncated input sequence left
-                     */
-
-                    /* inject an error and continue with callback handling */
-                    *err=U_TRUNCATED_CHAR_FOUND;
-                    calledCallback=FALSE; /* new error condition */
-                } else {
-                    /* input consumed */
-                    if(pArgs->flush) {
-                        /*
-                         * return to the conversion loop once more if the flush
-                         * flag is set and the conversion function has not
-                         * successfully processed the end of the input yet
-                         *
-                         * (continue converting by breaking out of only the inner loop)
-                         */
-                        if(!converterSawEndOfInput) {
-                            break;
-                        }
-
-                        /* reset the converter without calling the callback function */
-                        _reset(cnv, UCNV_RESET_FROM_UNICODE, FALSE);
-                    }
-
-                    /* done successfully */
-                    return;
-                }
-            }
-
-            /* U_FAILURE(*err) */
-            {
-                UErrorCode e;
-
-                if( calledCallback ||
-                    (e=*err)==U_BUFFER_OVERFLOW_ERROR ||
-                    (e!=U_INVALID_CHAR_FOUND &&
-                     e!=U_ILLEGAL_CHAR_FOUND &&
-                     e!=U_TRUNCATED_CHAR_FOUND)
-                ) {
-                    /*
-                     * the callback did not or cannot resolve the error:
-                     * set output pointers and return
-                     *
-                     * the check for buffer overflow is redundant but it is
-                     * a high-runner case and hopefully documents the intent
-                     * well
-                     *
-                     * if we were replaying, then the replay buffer must be
-                     * copied back into the UConverter
-                     * and the real arguments must be restored
-                     */
-                    if(realSource!=NULL) {
-                        int32_t length;
-
-                        U_ASSERT(cnv->preFromULength==0);
-
-                        length=(int32_t)(pArgs->sourceLimit-pArgs->source);
-                        if(length>0) {
-                            u_memcpy(cnv->preFromU, pArgs->source, length);
-                            cnv->preFromULength=(int8_t)-length;
-                        }
-
-                        pArgs->source=realSource;
-                        pArgs->sourceLimit=realSourceLimit;
-                        pArgs->flush=realFlush;
-                    }
-
-                    return;
-                }
-            }
-
-            /* callback handling */
-            {
-                UChar32 codePoint;
-
-                /* get and write the code point */
-                codePoint=cnv->fromUChar32;
-                errorInputLength=0;
-                U16_APPEND_UNSAFE(cnv->invalidUCharBuffer, errorInputLength, codePoint);
-                cnv->invalidUCharLength=(int8_t)errorInputLength;
-
-                /* set the converter state to deal with the next character */
-                cnv->fromUChar32=0;
-
-                /* call the callback function */
-                cnv->fromUCharErrorBehaviour(cnv->fromUContext, pArgs,
-                    cnv->invalidUCharBuffer, errorInputLength, codePoint,
-                    *err==U_INVALID_CHAR_FOUND ? UCNV_UNASSIGNED : UCNV_ILLEGAL,
-                    err);
-            }
-
-            /*
-             * loop back to the offset handling
-             *
-             * this flag will indicate after offset handling
-             * that a callback was called;
-             * if the callback did not resolve the error, then we return
-             */
-            calledCallback=TRUE;
-        }
-    }
-}
-
-/*
- * Output the fromUnicode overflow buffer.
- * Call this function if(cnv->charErrorBufferLength>0).
- * @return TRUE if overflow
- */
-static UBool
-ucnv_outputOverflowFromUnicode(UConverter *cnv,
-                               char **target, const char *targetLimit,
-                               int32_t **pOffsets,
-                               UErrorCode *err) {
-    int32_t *offsets;
-    char *overflow, *t;
-    int32_t i, length;
-
-    t=*target;
-    if(pOffsets!=NULL) {
-        offsets=*pOffsets;
-    } else {
-        offsets=NULL;
-    }
-
-    overflow=(char *)cnv->charErrorBuffer;
-    length=cnv->charErrorBufferLength;
-    i=0;
-    while(i<length) {
-        if(t==targetLimit) {
-            /* the overflow buffer contains too much, keep the rest */
-            int32_t j=0;
-
-            do {
-                overflow[j++]=overflow[i++];
-            } while(i<length);
-
-            cnv->charErrorBufferLength=(int8_t)j;
-            *target=t;
-            if(offsets!=NULL) {
-                *pOffsets=offsets;
-            }
-            *err=U_BUFFER_OVERFLOW_ERROR;
-            return TRUE;
-        }
-
-        /* copy the overflow contents to the target */
-        *t++=overflow[i++];
-        if(offsets!=NULL) {
-            *offsets++=-1; /* no source index available for old output */
-        }
-    }
-
-    /* the overflow buffer is completely copied to the target */
-    cnv->charErrorBufferLength=0;
-    *target=t;
-    if(offsets!=NULL) {
-        *pOffsets=offsets;
-    }
-    return FALSE;
-}
-
-U_CAPI void U_EXPORT2
-ucnv_fromUnicode(UConverter *cnv,
-                 char **target, const char *targetLimit,
-                 const UChar **source, const UChar *sourceLimit,
-                 int32_t *offsets,
-                 UBool flush,
-                 UErrorCode *err) {
-    UConverterFromUnicodeArgs args;
-    const UChar *s;
-    char *t;
-
-    /* check parameters */
-    if(err==NULL || U_FAILURE(*err)) {
-        return;
-    }
-
-    if(cnv==NULL || target==NULL || source==NULL) {
-        *err=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    s=*source;
-    t=*target;
-
-    if ((const void *)U_MAX_PTR(sourceLimit) == (const void *)sourceLimit) {
-        /*
-        Prevent code from going into an infinite loop in case we do hit this
-        limit. The limit pointer is expected to be on a UChar * boundary.
-        This also prevents the next argument check from failing.
-        */
-        sourceLimit = (const UChar *)(((const char *)sourceLimit) - 1);
-    }
-
-    /*
-     * All these conditions should never happen.
-     *
-     * 1) Make sure that the limits are >= to the address source or target
-     *
-     * 2) Make sure that the buffer sizes do not exceed the number range for
-     * int32_t because some functions use the size (in units or bytes)
-     * rather than comparing pointers, and because offsets are int32_t values.
-     *
-     * size_t is guaranteed to be unsigned and large enough for the job.
-     *
-     * Return with an error instead of adjusting the limits because we would
-     * not be able to maintain the semantics that either the source must be
-     * consumed or the target filled (unless an error occurs).
-     * An adjustment would be targetLimit=t+0x7fffffff; for example.
-     *
-     * 3) Make sure that the user didn't incorrectly cast a UChar * pointer
-     * to a char * pointer and provide an incomplete UChar code unit.
-     */
-    if (sourceLimit<s || targetLimit<t ||
-        ((size_t)(sourceLimit-s)>(size_t)0x3fffffff && sourceLimit>s) ||
-        ((size_t)(targetLimit-t)>(size_t)0x7fffffff && targetLimit>t) ||
-        (((const char *)sourceLimit-(const char *)s) & 1) != 0)
-    {
-        *err=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    
-    /* output the target overflow buffer */
-    if( cnv->charErrorBufferLength>0 &&
-        ucnv_outputOverflowFromUnicode(cnv, target, targetLimit, &offsets, err)
-    ) {
-        /* U_BUFFER_OVERFLOW_ERROR */
-        return;
-    }
-    /* *target may have moved, therefore stop using t */
-
-    if(!flush && s==sourceLimit && cnv->preFromULength>=0) {
-        /* the overflow buffer is emptied and there is no new input: we are done */
-        return;
-    }
-
-    /*
-     * Do not simply return with a buffer overflow error if
-     * !flush && t==targetLimit
-     * because it is possible that the source will not generate any output.
-     * For example, the skip callback may be called;
-     * it does not output anything.
-     */
-
-    /* prepare the converter arguments */
-    args.converter=cnv;
-    args.flush=flush;
-    args.offsets=offsets;
-    args.source=s;
-    args.sourceLimit=sourceLimit;
-    args.target=*target;
-    args.targetLimit=targetLimit;
-    args.size=sizeof(args);
-
-    _fromUnicodeWithCallback(&args, err);
-
-    *source=args.source;
-    *target=args.target;
-}
-
-/* ucnv_toUnicode() --------------------------------------------------------- */
-
-static void
-_toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
-    UConverterToUnicode toUnicode;
-    UConverter *cnv;
-    const char *s;
-    UChar *t;
-    int32_t *offsets;
-    int32_t sourceIndex;
-    int32_t errorInputLength;
-    UBool converterSawEndOfInput, calledCallback;
-
-    /* variables for m:n conversion */
-    char replay[UCNV_EXT_MAX_BYTES];
-    const char *realSource, *realSourceLimit;
-    int32_t realSourceIndex;
-    UBool realFlush;
-
-    cnv=pArgs->converter;
-    s=pArgs->source;
-    t=pArgs->target;
-    offsets=pArgs->offsets;
-
-    /* get the converter implementation function */
-    sourceIndex=0;
-    if(offsets==NULL) {
-        toUnicode=cnv->sharedData->impl->toUnicode;
-    } else {
-        toUnicode=cnv->sharedData->impl->toUnicodeWithOffsets;
-        if(toUnicode==NULL) {
-            /* there is no WithOffsets implementation */
-            toUnicode=cnv->sharedData->impl->toUnicode;
-            /* we will write -1 for each offset */
-            sourceIndex=-1;
-        }
-    }
-
-    if(cnv->preToULength>=0) {
-        /* normal mode */
-        realSource=NULL;
-
-        /* avoid compiler warnings - not otherwise necessary, and the values do not matter */
-        realSourceLimit=NULL;
-        realFlush=FALSE;
-        realSourceIndex=0;
-    } else {
-        /*
-         * Previous m:n conversion stored source units from a partial match
-         * and failed to consume all of them.
-         * We need to "replay" them from a temporary buffer and convert them first.
-         */
-        realSource=pArgs->source;
-        realSourceLimit=pArgs->sourceLimit;
-        realFlush=pArgs->flush;
-        realSourceIndex=sourceIndex;
-
-        uprv_memcpy(replay, cnv->preToU, -cnv->preToULength);
-        pArgs->source=replay;
-        pArgs->sourceLimit=replay-cnv->preToULength;
-        pArgs->flush=FALSE;
-        sourceIndex=-1;
-
-        cnv->preToULength=0;
-    }
-
-    /*
-     * loop for conversion and error handling
-     *
-     * loop {
-     *   convert
-     *   loop {
-     *     update offsets
-     *     handle end of input
-     *     handle errors/call callback
-     *   }
-     * }
-     */
-    for(;;) {
-        if(U_SUCCESS(*err)) {
-            /* convert */
-            toUnicode(pArgs, err);
-
-            /*
-             * set a flag for whether the converter
-             * successfully processed the end of the input
-             *
-             * need not check cnv->preToULength==0 because a replay (<0) will cause
-             * s<sourceLimit before converterSawEndOfInput is checked
-             */
-            converterSawEndOfInput=
-                (UBool)(U_SUCCESS(*err) &&
-                        pArgs->flush && pArgs->source==pArgs->sourceLimit &&
-                        cnv->toULength==0);
-        } else {
-            /* handle error from getNextUChar() or ucnv_convertEx() */
-            converterSawEndOfInput=FALSE;
-        }
-
-        /* no callback called yet for this iteration */
-        calledCallback=FALSE;
-
-        /* no sourceIndex adjustment for conversion, only for callback output */
-        errorInputLength=0;
-
-        /*
-         * loop for offsets and error handling
-         *
-         * iterates at most 3 times:
-         * 1. to clean up after the conversion function
-         * 2. after the callback
-         * 3. after the callback again if there was truncated input
-         */
-        for(;;) {
-            /* update offsets if we write any */
-            if(offsets!=NULL) {
-                int32_t length=(int32_t)(pArgs->target-t);
-                if(length>0) {
-                    _updateOffsets(offsets, length, sourceIndex, errorInputLength);
-
-                    /*
-                     * if a converter handles offsets and updates the offsets
-                     * pointer at the end, then pArgs->offset should not change
-                     * here;
-                     * however, some converters do not handle offsets at all
-                     * (sourceIndex<0) or may not update the offsets pointer
-                     */
-                    pArgs->offsets=offsets+=length;
-                }
-
-                if(sourceIndex>=0) {
-                    sourceIndex+=(int32_t)(pArgs->source-s);
-                }
-            }
-
-            if(cnv->preToULength<0) {
-                /*
-                 * switch the source to new replay units (cannot occur while replaying)
-                 * after offset handling and before end-of-input and callback handling
-                 */
-                if(realSource==NULL) {
-                    realSource=pArgs->source;
-                    realSourceLimit=pArgs->sourceLimit;
-                    realFlush=pArgs->flush;
-                    realSourceIndex=sourceIndex;
-
-                    uprv_memcpy(replay, cnv->preToU, -cnv->preToULength);
-                    pArgs->source=replay;
-                    pArgs->sourceLimit=replay-cnv->preToULength;
-                    pArgs->flush=FALSE;
-                    if((sourceIndex+=cnv->preToULength)<0) {
-                        sourceIndex=-1;
-                    }
-
-                    cnv->preToULength=0;
-                } else {
-                    /* see implementation note before _fromUnicodeWithCallback() */
-                    U_ASSERT(realSource==NULL);
-                    *err=U_INTERNAL_PROGRAM_ERROR;
-                }
-            }
-
-            /* update pointers */
-            s=pArgs->source;
-            t=pArgs->target;
-
-            if(U_SUCCESS(*err)) {
-                if(s<pArgs->sourceLimit) {
-                    /*
-                     * continue with the conversion loop while there is still input left
-                     * (continue converting by breaking out of only the inner loop)
-                     */
-                    break;
-                } else if(realSource!=NULL) {
-                    /* switch back from replaying to the real source and continue */
-                    pArgs->source=realSource;
-                    pArgs->sourceLimit=realSourceLimit;
-                    pArgs->flush=realFlush;
-                    sourceIndex=realSourceIndex;
-
-                    realSource=NULL;
-                    break;
-                } else if(pArgs->flush && cnv->toULength>0) {
-                    /*
-                     * the entire input stream is consumed
-                     * and there is a partial, truncated input sequence left
-                     */
-
-                    /* inject an error and continue with callback handling */
-                    *err=U_TRUNCATED_CHAR_FOUND;
-                    calledCallback=FALSE; /* new error condition */
-                } else {
-                    /* input consumed */
-                    if(pArgs->flush) {
-                        /*
-                         * return to the conversion loop once more if the flush
-                         * flag is set and the conversion function has not
-                         * successfully processed the end of the input yet
-                         *
-                         * (continue converting by breaking out of only the inner loop)
-                         */
-                        if(!converterSawEndOfInput) {
-                            break;
-                        }
-
-                        /* reset the converter without calling the callback function */
-                        _reset(cnv, UCNV_RESET_TO_UNICODE, FALSE);
-                    }
-
-                    /* done successfully */
-                    return;
-                }
-            }
-
-            /* U_FAILURE(*err) */
-            {
-                UErrorCode e;
-
-                if( calledCallback ||
-                    (e=*err)==U_BUFFER_OVERFLOW_ERROR ||
-                    (e!=U_INVALID_CHAR_FOUND &&
-                     e!=U_ILLEGAL_CHAR_FOUND &&
-                     e!=U_TRUNCATED_CHAR_FOUND &&
-                     e!=U_ILLEGAL_ESCAPE_SEQUENCE &&
-                     e!=U_UNSUPPORTED_ESCAPE_SEQUENCE)
-                ) {
-                    /*
-                     * the callback did not or cannot resolve the error:
-                     * set output pointers and return
-                     *
-                     * the check for buffer overflow is redundant but it is
-                     * a high-runner case and hopefully documents the intent
-                     * well
-                     *
-                     * if we were replaying, then the replay buffer must be
-                     * copied back into the UConverter
-                     * and the real arguments must be restored
-                     */
-                    if(realSource!=NULL) {
-                        int32_t length;
-
-                        U_ASSERT(cnv->preToULength==0);
-
-                        length=(int32_t)(pArgs->sourceLimit-pArgs->source);
-                        if(length>0) {
-                            uprv_memcpy(cnv->preToU, pArgs->source, length);
-                            cnv->preToULength=(int8_t)-length;
-                        }
-
-                        pArgs->source=realSource;
-                        pArgs->sourceLimit=realSourceLimit;
-                        pArgs->flush=realFlush;
-                    }
-
-                    return;
-                }
-            }
-
-            /* copy toUBytes[] to invalidCharBuffer[] */
-            errorInputLength=cnv->invalidCharLength=cnv->toULength;
-            if(errorInputLength>0) {
-                uprv_memcpy(cnv->invalidCharBuffer, cnv->toUBytes, errorInputLength);
-            }
-
-            /* set the converter state to deal with the next character */
-            cnv->toULength=0;
-
-            /* call the callback function */
-            if(cnv->toUCallbackReason==UCNV_ILLEGAL && *err==U_INVALID_CHAR_FOUND) {
-                cnv->toUCallbackReason = UCNV_UNASSIGNED;
-            }
-            cnv->fromCharErrorBehaviour(cnv->toUContext, pArgs,
-                cnv->invalidCharBuffer, errorInputLength,
-                cnv->toUCallbackReason,
-                err);
-            cnv->toUCallbackReason = UCNV_ILLEGAL; /* reset to default value */
-
-            /*
-             * loop back to the offset handling
-             *
-             * this flag will indicate after offset handling
-             * that a callback was called;
-             * if the callback did not resolve the error, then we return
-             */
-            calledCallback=TRUE;
-        }
-    }
-}
-
-/*
- * Output the toUnicode overflow buffer.
- * Call this function if(cnv->UCharErrorBufferLength>0).
- * @return TRUE if overflow
- */
-static UBool
-ucnv_outputOverflowToUnicode(UConverter *cnv,
-                             UChar **target, const UChar *targetLimit,
-                             int32_t **pOffsets,
-                             UErrorCode *err) {
-    int32_t *offsets;
-    UChar *overflow, *t;
-    int32_t i, length;
-
-    t=*target;
-    if(pOffsets!=NULL) {
-        offsets=*pOffsets;
-    } else {
-        offsets=NULL;
-    }
-
-    overflow=cnv->UCharErrorBuffer;
-    length=cnv->UCharErrorBufferLength;
-    i=0;
-    while(i<length) {
-        if(t==targetLimit) {
-            /* the overflow buffer contains too much, keep the rest */
-            int32_t j=0;
-
-            do {
-                overflow[j++]=overflow[i++];
-            } while(i<length);
-
-            cnv->UCharErrorBufferLength=(int8_t)j;
-            *target=t;
-            if(offsets!=NULL) {
-                *pOffsets=offsets;
-            }
-            *err=U_BUFFER_OVERFLOW_ERROR;
-            return TRUE;
-        }
-
-        /* copy the overflow contents to the target */
-        *t++=overflow[i++];
-        if(offsets!=NULL) {
-            *offsets++=-1; /* no source index available for old output */
-        }
-    }
-
-    /* the overflow buffer is completely copied to the target */
-    cnv->UCharErrorBufferLength=0;
-    *target=t;
-    if(offsets!=NULL) {
-        *pOffsets=offsets;
-    }
-    return FALSE;
-}
-
-U_CAPI void U_EXPORT2
-ucnv_toUnicode(UConverter *cnv,
-               UChar **target, const UChar *targetLimit,
-               const char **source, const char *sourceLimit,
-               int32_t *offsets,
-               UBool flush,
-               UErrorCode *err) {
-    UConverterToUnicodeArgs args;
-    const char *s;
-    UChar *t;
-
-    /* check parameters */
-    if(err==NULL || U_FAILURE(*err)) {
-        return;
-    }
-
-    if(cnv==NULL || target==NULL || source==NULL) {
-        *err=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    s=*source;
-    t=*target;
-
-    if ((const void *)U_MAX_PTR(targetLimit) == (const void *)targetLimit) {
-        /*
-        Prevent code from going into an infinite loop in case we do hit this
-        limit. The limit pointer is expected to be on a UChar * boundary.
-        This also prevents the next argument check from failing.
-        */
-        targetLimit = (const UChar *)(((const char *)targetLimit) - 1);
-    }
-
-    /*
-     * All these conditions should never happen.
-     *
-     * 1) Make sure that the limits are >= to the address source or target
-     *
-     * 2) Make sure that the buffer sizes do not exceed the number range for
-     * int32_t because some functions use the size (in units or bytes)
-     * rather than comparing pointers, and because offsets are int32_t values.
-     *
-     * size_t is guaranteed to be unsigned and large enough for the job.
-     *
-     * Return with an error instead of adjusting the limits because we would
-     * not be able to maintain the semantics that either the source must be
-     * consumed or the target filled (unless an error occurs).
-     * An adjustment would be sourceLimit=t+0x7fffffff; for example.
-     *
-     * 3) Make sure that the user didn't incorrectly cast a UChar * pointer
-     * to a char * pointer and provide an incomplete UChar code unit.
-     */
-    if (sourceLimit<s || targetLimit<t ||
-        ((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s) ||
-        ((size_t)(targetLimit-t)>(size_t)0x3fffffff && targetLimit>t) ||
-        (((const char *)targetLimit-(const char *)t) & 1) != 0
-    ) {
-        *err=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    
-    /* output the target overflow buffer */
-    if( cnv->UCharErrorBufferLength>0 &&
-        ucnv_outputOverflowToUnicode(cnv, target, targetLimit, &offsets, err)
-    ) {
-        /* U_BUFFER_OVERFLOW_ERROR */
-        return;
-    }
-    /* *target may have moved, therefore stop using t */
-
-    if(!flush && s==sourceLimit && cnv->preToULength>=0) {
-        /* the overflow buffer is emptied and there is no new input: we are done */
-        return;
-    }
-
-    /*
-     * Do not simply return with a buffer overflow error if
-     * !flush && t==targetLimit
-     * because it is possible that the source will not generate any output.
-     * For example, the skip callback may be called;
-     * it does not output anything.
-     */
-
-    /* prepare the converter arguments */
-    args.converter=cnv;
-    args.flush=flush;
-    args.offsets=offsets;
-    args.source=s;
-    args.sourceLimit=sourceLimit;
-    args.target=*target;
-    args.targetLimit=targetLimit;
-    args.size=sizeof(args);
-
-    _toUnicodeWithCallback(&args, err);
-
-    *source=args.source;
-    *target=args.target;
-}
-
-/* ucnv_to/fromUChars() ----------------------------------------------------- */
-
-U_CAPI int32_t U_EXPORT2
-ucnv_fromUChars(UConverter *cnv,
-                char *dest, int32_t destCapacity,
-                const UChar *src, int32_t srcLength,
-                UErrorCode *pErrorCode) {
-    const UChar *srcLimit;
-    char *originalDest, *destLimit;
-    int32_t destLength;
-
-    /* check arguments */
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    if( cnv==NULL ||
-        destCapacity<0 || (destCapacity>0 && dest==NULL) ||
-        srcLength<-1 || (srcLength!=0 && src==NULL)
-    ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* initialize */
-    ucnv_resetFromUnicode(cnv);
-    originalDest=dest;
-    if(srcLength==-1) {
-        srcLength=u_strlen(src);
-    }
-    if(srcLength>0) {
-        srcLimit=src+srcLength;
-        destLimit=dest+destCapacity;
-
-        /* pin the destination limit to U_MAX_PTR; NULL check is for OS/400 */
-        if(destLimit<dest || (destLimit==NULL && dest!=NULL)) {
-            destLimit=(char *)U_MAX_PTR(dest);
-        }
-
-        /* perform the conversion */
-        ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, TRUE, pErrorCode);
-        destLength=(int32_t)(dest-originalDest);
-
-        /* if an overflow occurs, then get the preflighting length */
-        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
-            char buffer[1024];
-
-            destLimit=buffer+sizeof(buffer);
-            do {
-                dest=buffer;
-                *pErrorCode=U_ZERO_ERROR;
-                ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, TRUE, pErrorCode);
-                destLength+=(int32_t)(dest-buffer);
-            } while(*pErrorCode==U_BUFFER_OVERFLOW_ERROR);
-        }
-    } else {
-        destLength=0;
-    }
-
-    return u_terminateChars(originalDest, destCapacity, destLength, pErrorCode);
-}
-
-U_CAPI int32_t U_EXPORT2
-ucnv_toUChars(UConverter *cnv,
-              UChar *dest, int32_t destCapacity,
-              const char *src, int32_t srcLength,
-              UErrorCode *pErrorCode) {
-    const char *srcLimit;
-    UChar *originalDest, *destLimit;
-    int32_t destLength;
-
-    /* check arguments */
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    if( cnv==NULL ||
-        destCapacity<0 || (destCapacity>0 && dest==NULL) ||
-        srcLength<-1 || (srcLength!=0 && src==NULL))
-    {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* initialize */
-    ucnv_resetToUnicode(cnv);
-    originalDest=dest;
-    if(srcLength==-1) {
-        srcLength=(int32_t)uprv_strlen(src);
-    }
-    if(srcLength>0) {
-        srcLimit=src+srcLength;
-        destLimit=dest+destCapacity;
-
-        /* pin the destination limit to U_MAX_PTR; NULL check is for OS/400 */
-        if(destLimit<dest || (destLimit==NULL && dest!=NULL)) {
-            destLimit=(UChar *)U_MAX_PTR(dest);
-        }
-
-        /* perform the conversion */
-        ucnv_toUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, TRUE, pErrorCode);
-        destLength=(int32_t)(dest-originalDest);
-
-        /* if an overflow occurs, then get the preflighting length */
-        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR)
-        {
-            UChar buffer[1024];
-
-            destLimit=buffer+UPRV_LENGTHOF(buffer);
-            do {
-                dest=buffer;
-                *pErrorCode=U_ZERO_ERROR;
-                ucnv_toUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, TRUE, pErrorCode);
-                destLength+=(int32_t)(dest-buffer);
-            }
-            while(*pErrorCode==U_BUFFER_OVERFLOW_ERROR);
-        }
-    } else {
-        destLength=0;
-    }
-
-    return u_terminateUChars(originalDest, destCapacity, destLength, pErrorCode);
-}
-
-/* ucnv_getNextUChar() ------------------------------------------------------ */
-
-U_CAPI UChar32 U_EXPORT2
-ucnv_getNextUChar(UConverter *cnv,
-                  const char **source, const char *sourceLimit,
-                  UErrorCode *err) {
-    UConverterToUnicodeArgs args;
-    UChar buffer[U16_MAX_LENGTH];
-    const char *s;
-    UChar32 c;
-    int32_t i, length;
-
-    /* check parameters */
-    if(err==NULL || U_FAILURE(*err)) {
-        return 0xffff;
-    }
-
-    if(cnv==NULL || source==NULL) {
-        *err=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0xffff;
-    }
-
-    s=*source;
-    if(sourceLimit<s) {
-        *err=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0xffff;
-    }
-
-    /*
-     * Make sure that the buffer sizes do not exceed the number range for
-     * int32_t because some functions use the size (in units or bytes)
-     * rather than comparing pointers, and because offsets are int32_t values.
-     *
-     * size_t is guaranteed to be unsigned and large enough for the job.
-     *
-     * Return with an error instead of adjusting the limits because we would
-     * not be able to maintain the semantics that either the source must be
-     * consumed or the target filled (unless an error occurs).
-     * An adjustment would be sourceLimit=t+0x7fffffff; for example.
-     */
-    if(((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) {
-        *err=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0xffff;
-    }
-
-    c=U_SENTINEL;
-
-    /* flush the target overflow buffer */
-    if(cnv->UCharErrorBufferLength>0) {
-        UChar *overflow;
-
-        overflow=cnv->UCharErrorBuffer;
-        i=0;
-        length=cnv->UCharErrorBufferLength;
-        U16_NEXT(overflow, i, length, c);
-
-        /* move the remaining overflow contents up to the beginning */
-        if((cnv->UCharErrorBufferLength=(int8_t)(length-i))>0) {
-            uprv_memmove(cnv->UCharErrorBuffer, cnv->UCharErrorBuffer+i,
-                         cnv->UCharErrorBufferLength*U_SIZEOF_UCHAR);
-        }
-
-        if(!U16_IS_LEAD(c) || i<length) {
-            return c;
-        }
-        /*
-         * Continue if the overflow buffer contained only a lead surrogate,
-         * in case the converter outputs single surrogates from complete
-         * input sequences.
-         */
-    }
-
-    /*
-     * flush==TRUE is implied for ucnv_getNextUChar()
-     *
-     * do not simply return even if s==sourceLimit because the converter may
-     * not have seen flush==TRUE before
-     */
-
-    /* prepare the converter arguments */
-    args.converter=cnv;
-    args.flush=TRUE;
-    args.offsets=NULL;
-    args.source=s;
-    args.sourceLimit=sourceLimit;
-    args.target=buffer;
-    args.targetLimit=buffer+1;
-    args.size=sizeof(args);
-
-    if(c<0) {
-        /*
-         * call the native getNextUChar() implementation if we are
-         * at a character boundary (toULength==0)
-         *
-         * unlike with _toUnicode(), getNextUChar() implementations must set
-         * U_TRUNCATED_CHAR_FOUND for truncated input,
-         * in addition to setting toULength/toUBytes[]
-         */
-        if(cnv->toULength==0 && cnv->sharedData->impl->getNextUChar!=NULL) {
-            c=cnv->sharedData->impl->getNextUChar(&args, err);
-            *source=s=args.source;
-            if(*err==U_INDEX_OUTOFBOUNDS_ERROR) {
-                /* reset the converter without calling the callback function */
-                _reset(cnv, UCNV_RESET_TO_UNICODE, FALSE);
-                return 0xffff; /* no output */
-            } else if(U_SUCCESS(*err) && c>=0) {
-                return c;
-            /*
-             * else fall through to use _toUnicode() because
-             *   UCNV_GET_NEXT_UCHAR_USE_TO_U: the native function did not want to handle it after all
-             *   U_FAILURE: call _toUnicode() for callback handling (do not output c)
-             */
-            }
-        }
-
-        /* convert to one UChar in buffer[0], or handle getNextUChar() errors */
-        _toUnicodeWithCallback(&args, err);
-
-        if(*err==U_BUFFER_OVERFLOW_ERROR) {
-            *err=U_ZERO_ERROR;
-        }
-
-        i=0;
-        length=(int32_t)(args.target-buffer);
-    } else {
-        /* write the lead surrogate from the overflow buffer */
-        buffer[0]=(UChar)c;
-        args.target=buffer+1;
-        i=0;
-        length=1;
-    }
-
-    /* buffer contents starts at i and ends before length */
-
-    if(U_FAILURE(*err)) {
-        c=0xffff; /* no output */
-    } else if(length==0) {
-        /* no input or only state changes */
-        *err=U_INDEX_OUTOFBOUNDS_ERROR;
-        /* no need to reset explicitly because _toUnicodeWithCallback() did it */
-        c=0xffff; /* no output */
-    } else {
-        c=buffer[0];
-        i=1;
-        if(!U16_IS_LEAD(c)) {
-            /* consume c=buffer[0], done */
-        } else {
-            /* got a lead surrogate, see if a trail surrogate follows */
-            UChar c2;
-
-            if(cnv->UCharErrorBufferLength>0) {
-                /* got overflow output from the conversion */
-                if(U16_IS_TRAIL(c2=cnv->UCharErrorBuffer[0])) {
-                    /* got a trail surrogate, too */
-                    c=U16_GET_SUPPLEMENTARY(c, c2);
-
-                    /* move the remaining overflow contents up to the beginning */
-                    if((--cnv->UCharErrorBufferLength)>0) {
-                        uprv_memmove(cnv->UCharErrorBuffer, cnv->UCharErrorBuffer+1,
-                                     cnv->UCharErrorBufferLength*U_SIZEOF_UCHAR);
-                    }
-                } else {
-                    /* c is an unpaired lead surrogate, just return it */
-                }
-            } else if(args.source<sourceLimit) {
-                /* convert once more, to buffer[1] */
-                args.targetLimit=buffer+2;
-                _toUnicodeWithCallback(&args, err);
-                if(*err==U_BUFFER_OVERFLOW_ERROR) {
-                    *err=U_ZERO_ERROR;
-                }
-
-                length=(int32_t)(args.target-buffer);
-                if(U_SUCCESS(*err) && length==2 && U16_IS_TRAIL(c2=buffer[1])) {
-                    /* got a trail surrogate, too */
-                    c=U16_GET_SUPPLEMENTARY(c, c2);
-                    i=2;
-                }
-            }
-        }
-    }
-
-    /*
-     * move leftover output from buffer[i..length[
-     * into the beginning of the overflow buffer
-     */
-    if(i<length) {
-        /* move further overflow back */
-        int32_t delta=length-i;
-        if((length=cnv->UCharErrorBufferLength)>0) {
-            uprv_memmove(cnv->UCharErrorBuffer+delta, cnv->UCharErrorBuffer,
-                         length*U_SIZEOF_UCHAR);
-        }
-        cnv->UCharErrorBufferLength=(int8_t)(length+delta);
-
-        cnv->UCharErrorBuffer[0]=buffer[i++];
-        if(delta>1) {
-            cnv->UCharErrorBuffer[1]=buffer[i];
-        }
-    }
-
-    *source=args.source;
-    return c;
-}
-
-/* ucnv_convert() and siblings ---------------------------------------------- */
-
-U_CAPI void U_EXPORT2
-ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
-               char **target, const char *targetLimit,
-               const char **source, const char *sourceLimit,
-               UChar *pivotStart, UChar **pivotSource,
-               UChar **pivotTarget, const UChar *pivotLimit,
-               UBool reset, UBool flush,
-               UErrorCode *pErrorCode) {
-    UChar pivotBuffer[CHUNK_SIZE];
-    const UChar *myPivotSource;
-    UChar *myPivotTarget;
-    const char *s;
-    char *t;
-
-    UConverterToUnicodeArgs toUArgs;
-    UConverterFromUnicodeArgs fromUArgs;
-    UConverterConvert convert;
-
-    /* error checking */
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return;
-    }
-
-    if( targetCnv==NULL || sourceCnv==NULL ||
-        source==NULL || *source==NULL ||
-        target==NULL || *target==NULL || targetLimit==NULL
-    ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    s=*source;
-    t=*target;
-    if((sourceLimit!=NULL && sourceLimit<s) || targetLimit<t) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    /*
-     * Make sure that the buffer sizes do not exceed the number range for
-     * int32_t. See ucnv_toUnicode() for a more detailed comment.
-     */
-    if(
-        (sourceLimit!=NULL && ((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) ||
-        ((size_t)(targetLimit-t)>(size_t)0x7fffffff && targetLimit>t)
-    ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    
-    if(pivotStart==NULL) {
-        if(!flush) {
-            /* streaming conversion requires an explicit pivot buffer */
-            *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-            return;
-        }
-
-        /* use the stack pivot buffer */
-        myPivotSource=myPivotTarget=pivotStart=pivotBuffer;
-        pivotSource=(UChar **)&myPivotSource;
-        pivotTarget=&myPivotTarget;
-        pivotLimit=pivotBuffer+CHUNK_SIZE;
-    } else if(  pivotStart>=pivotLimit ||
-                pivotSource==NULL || *pivotSource==NULL ||
-                pivotTarget==NULL || *pivotTarget==NULL ||
-                pivotLimit==NULL
-    ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    if(sourceLimit==NULL) {
-        /* get limit of single-byte-NUL-terminated source string */
-        sourceLimit=uprv_strchr(*source, 0);
-    }
-
-    if(reset) {
-        ucnv_resetToUnicode(sourceCnv);
-        ucnv_resetFromUnicode(targetCnv);
-        *pivotSource=*pivotTarget=pivotStart;
-    } else if(targetCnv->charErrorBufferLength>0) {
-        /* output the targetCnv overflow buffer */
-        if(ucnv_outputOverflowFromUnicode(targetCnv, target, targetLimit, NULL, pErrorCode)) {
-            /* U_BUFFER_OVERFLOW_ERROR */
-            return;
-        }
-        /* *target has moved, therefore stop using t */
-
-        if( !flush &&
-            targetCnv->preFromULength>=0 && *pivotSource==*pivotTarget &&
-            sourceCnv->UCharErrorBufferLength==0 && sourceCnv->preToULength>=0 && s==sourceLimit
-        ) {
-            /* the fromUnicode overflow buffer is emptied and there is no new input: we are done */
-            return;
-        }
-    }
-
-    /* Is direct-UTF-8 conversion available? */
-    if( sourceCnv->sharedData->staticData->conversionType==UCNV_UTF8 &&
-        targetCnv->sharedData->impl->fromUTF8!=NULL
-    ) {
-        convert=targetCnv->sharedData->impl->fromUTF8;
-    } else if( targetCnv->sharedData->staticData->conversionType==UCNV_UTF8 &&
-               sourceCnv->sharedData->impl->toUTF8!=NULL
-    ) {
-        convert=sourceCnv->sharedData->impl->toUTF8;
-    } else {
-        convert=NULL;
-    }
-
-    /*
-     * If direct-UTF-8 conversion is available, then we use a smaller
-     * pivot buffer for error handling and partial matches
-     * so that we quickly return to direct conversion.
-     *
-     * 32 is large enough for UCNV_EXT_MAX_UCHARS and UCNV_ERROR_BUFFER_LENGTH.
-     *
-     * We could reduce the pivot buffer size further, at the cost of
-     * buffer overflows from callbacks.
-     * The pivot buffer should not be smaller than the maximum number of
-     * fromUnicode extension table input UChars
-     * (for m:n conversion, see
-     * targetCnv->sharedData->mbcs.extIndexes[UCNV_EXT_COUNT_UCHARS])
-     * or 2 for surrogate pairs.
-     *
-     * Too small a buffer can cause thrashing between pivoting and direct
-     * conversion, with function call overhead outweighing the benefits
-     * of direct conversion.
-     */
-    if(convert!=NULL && (pivotLimit-pivotStart)>32) {
-        pivotLimit=pivotStart+32;
-    }
-
-    /* prepare the converter arguments */
-    fromUArgs.converter=targetCnv;
-    fromUArgs.flush=FALSE;
-    fromUArgs.offsets=NULL;
-    fromUArgs.target=*target;
-    fromUArgs.targetLimit=targetLimit;
-    fromUArgs.size=sizeof(fromUArgs);
-
-    toUArgs.converter=sourceCnv;
-    toUArgs.flush=flush;
-    toUArgs.offsets=NULL;
-    toUArgs.source=s;
-    toUArgs.sourceLimit=sourceLimit;
-    toUArgs.targetLimit=pivotLimit;
-    toUArgs.size=sizeof(toUArgs);
-
-    /*
-     * TODO: Consider separating this function into two functions,
-     * extracting exactly the conversion loop,
-     * for readability and to reduce the set of visible variables.
-     *
-     * Otherwise stop using s and t from here on.
-     */
-    s=t=NULL;
-
-    /*
-     * conversion loop
-     *
-     * The sequence of steps in the loop may appear backward,
-     * but the principle is simple:
-     * In the chain of
-     *   source - sourceCnv overflow - pivot - targetCnv overflow - target
-     * empty out later buffers before refilling them from earlier ones.
-     *
-     * The targetCnv overflow buffer is flushed out only once before the loop.
-     */
-    for(;;) {
-        /*
-         * if(pivot not empty or error or replay or flush fromUnicode) {
-         *   fromUnicode(pivot -> target);
-         * }
-         *
-         * For pivoting conversion; and for direct conversion for
-         * error callback handling and flushing the replay buffer.
-         */
-        if( *pivotSource<*pivotTarget ||
-            U_FAILURE(*pErrorCode) ||
-            targetCnv->preFromULength<0 ||
-            fromUArgs.flush
-        ) {
-            fromUArgs.source=*pivotSource;
-            fromUArgs.sourceLimit=*pivotTarget;
-            _fromUnicodeWithCallback(&fromUArgs, pErrorCode);
-            if(U_FAILURE(*pErrorCode)) {
-                /* target overflow, or conversion error */
-                *pivotSource=(UChar *)fromUArgs.source;
-                break;
-            }
-
-            /*
-             * _fromUnicodeWithCallback() must have consumed the pivot contents
-             * (*pivotSource==*pivotTarget) since it returned with U_SUCCESS()
-             */
-        }
-
-        /* The pivot buffer is empty; reset it so we start at pivotStart. */
-        *pivotSource=*pivotTarget=pivotStart;
-
-        /*
-         * if(sourceCnv overflow buffer not empty) {
-         *     move(sourceCnv overflow buffer -> pivot);
-         *     continue;
-         * }
-         */
-        /* output the sourceCnv overflow buffer */
-        if(sourceCnv->UCharErrorBufferLength>0) {
-            if(ucnv_outputOverflowToUnicode(sourceCnv, pivotTarget, pivotLimit, NULL, pErrorCode)) {
-                /* U_BUFFER_OVERFLOW_ERROR */
-                *pErrorCode=U_ZERO_ERROR;
-            }
-            continue;
-        }
-
-        /*
-         * check for end of input and break if done
-         *
-         * Checking both flush and fromUArgs.flush ensures that the converters
-         * have been called with the flush flag set if the ucnv_convertEx()
-         * caller set it.
-         */
-        if( toUArgs.source==sourceLimit &&
-            sourceCnv->preToULength>=0 && sourceCnv->toULength==0 &&
-            (!flush || fromUArgs.flush)
-        ) {
-            /* done successfully */
-            break;
-        }
-
-        /*
-         * use direct conversion if available
-         * but not if continuing a partial match
-         * or flushing the toUnicode replay buffer
-         */
-        if(convert!=NULL && targetCnv->preFromUFirstCP<0 && sourceCnv->preToULength==0) {
-            if(*pErrorCode==U_USING_DEFAULT_WARNING) {
-                /* remove a warning that may be set by this function */
-                *pErrorCode=U_ZERO_ERROR;
-            }
-            convert(&fromUArgs, &toUArgs, pErrorCode);
-            if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
-                break;
-            } else if(U_FAILURE(*pErrorCode)) {
-                if(sourceCnv->toULength>0) {
-                    /*
-                     * Fall through to calling _toUnicodeWithCallback()
-                     * for callback handling.
-                     *
-                     * The pivot buffer will be reset with
-                     *   *pivotSource=*pivotTarget=pivotStart;
-                     * which indicates a toUnicode error to the caller
-                     * (*pivotSource==pivotStart shows no pivot UChars consumed).
-                     */
-                } else {
-                    /*
-                     * Indicate a fromUnicode error to the caller
-                     * (*pivotSource>pivotStart shows some pivot UChars consumed).
-                     */
-                    *pivotSource=*pivotTarget=pivotStart+1;
-                    /*
-                     * Loop around to calling _fromUnicodeWithCallbacks()
-                     * for callback handling.
-                     */
-                    continue;
-                }
-            } else if(*pErrorCode==U_USING_DEFAULT_WARNING) {
-                /*
-                 * No error, but the implementation requested to temporarily
-                 * fall back to pivoting.
-                 */
-                *pErrorCode=U_ZERO_ERROR;
-            /*
-             * The following else branches are almost identical to the end-of-input
-             * handling in _toUnicodeWithCallback().
-             * Avoid calling it just for the end of input.
-             */
-            } else if(flush && sourceCnv->toULength>0) { /* flush==toUArgs.flush */
-                /*
-                 * the entire input stream is consumed
-                 * and there is a partial, truncated input sequence left
-                 */
-
-                /* inject an error and continue with callback handling */
-                *pErrorCode=U_TRUNCATED_CHAR_FOUND;
-            } else {
-                /* input consumed */
-                if(flush) {
-                    /* reset the converters without calling the callback functions */
-                    _reset(sourceCnv, UCNV_RESET_TO_UNICODE, FALSE);
-                    _reset(targetCnv, UCNV_RESET_FROM_UNICODE, FALSE);
-                }
-
-                /* done successfully */
-                break;
-            }
-        }
-        
-        /*
-         * toUnicode(source -> pivot);
-         *
-         * For pivoting conversion; and for direct conversion for
-         * error callback handling, continuing partial matches
-         * and flushing the replay buffer.
-         *
-         * The pivot buffer is empty and reset.
-         */
-        toUArgs.target=pivotStart; /* ==*pivotTarget */
-        /* toUArgs.targetLimit=pivotLimit; already set before the loop */
-        _toUnicodeWithCallback(&toUArgs, pErrorCode);
-        *pivotTarget=toUArgs.target;
-        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
-            /* pivot overflow: continue with the conversion loop */
-            *pErrorCode=U_ZERO_ERROR;
-        } else if(U_FAILURE(*pErrorCode) || (!flush && *pivotTarget==pivotStart)) {
-            /* conversion error, or there was nothing left to convert */
-            break;
-        }
-        /*
-         * else:
-         * _toUnicodeWithCallback() wrote into the pivot buffer,
-         * continue with fromUnicode conversion.
-         *
-         * Set the fromUnicode flush flag if we flush and if toUnicode has
-         * processed the end of the input.
-         */
-        if( flush && toUArgs.source==sourceLimit &&
-            sourceCnv->preToULength>=0 &&
-            sourceCnv->UCharErrorBufferLength==0
-        ) {
-            fromUArgs.flush=TRUE;
-        }
-    }
-
-    /*
-     * The conversion loop is exited when one of the following is true:
-     * - the entire source text has been converted successfully to the target buffer
-     * - a target buffer overflow occurred
-     * - a conversion error occurred
-     */
-
-    *source=toUArgs.source;
-    *target=fromUArgs.target;
-
-    /* terminate the target buffer if possible */
-    if(flush && U_SUCCESS(*pErrorCode)) {
-        if(*target!=targetLimit) {
-            **target=0;
-            if(*pErrorCode==U_STRING_NOT_TERMINATED_WARNING) {
-                *pErrorCode=U_ZERO_ERROR;
-            }
-        } else {
-            *pErrorCode=U_STRING_NOT_TERMINATED_WARNING;
-        }
-    }
-}
-
-/* internal implementation of ucnv_convert() etc. with preflighting */
-static int32_t
-ucnv_internalConvert(UConverter *outConverter, UConverter *inConverter,
-                     char *target, int32_t targetCapacity,
-                     const char *source, int32_t sourceLength,
-                     UErrorCode *pErrorCode) {
-    UChar pivotBuffer[CHUNK_SIZE];
-    UChar *pivot, *pivot2;
-
-    char *myTarget;
-    const char *sourceLimit;
-    const char *targetLimit;
-    int32_t targetLength=0;
-
-    /* set up */
-    if(sourceLength<0) {
-        sourceLimit=uprv_strchr(source, 0);
-    } else {
-        sourceLimit=source+sourceLength;
-    }
-
-    /* if there is no input data, we're done */
-    if(source==sourceLimit) {
-        return u_terminateChars(target, targetCapacity, 0, pErrorCode);
-    }
-
-    pivot=pivot2=pivotBuffer;
-    myTarget=target;
-    targetLength=0;
-
-    if(targetCapacity>0) {
-        /* perform real conversion */
-        targetLimit=target+targetCapacity;
-        ucnv_convertEx(outConverter, inConverter,
-                       &myTarget, targetLimit,
-                       &source, sourceLimit,
-                       pivotBuffer, &pivot, &pivot2, pivotBuffer+CHUNK_SIZE,
-                       FALSE,
-                       TRUE,
-                       pErrorCode);
-        targetLength=(int32_t)(myTarget-target);
-    }
-
-    /*
-     * If the output buffer is exhausted (or we are only "preflighting"), we need to stop writing
-     * to it but continue the conversion in order to store in targetCapacity
-     * the number of bytes that was required.
-     */
-    if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR || targetCapacity==0)
-    {
-        char targetBuffer[CHUNK_SIZE];
-
-        targetLimit=targetBuffer+CHUNK_SIZE;
-        do {
-            *pErrorCode=U_ZERO_ERROR;
-            myTarget=targetBuffer;
-            ucnv_convertEx(outConverter, inConverter,
-                           &myTarget, targetLimit,
-                           &source, sourceLimit,
-                           pivotBuffer, &pivot, &pivot2, pivotBuffer+CHUNK_SIZE,
-                           FALSE,
-                           TRUE,
-                           pErrorCode);
-            targetLength+=(int32_t)(myTarget-targetBuffer);
-        } while(*pErrorCode==U_BUFFER_OVERFLOW_ERROR);
-
-        /* done with preflighting, set warnings and errors as appropriate */
-        return u_terminateChars(target, targetCapacity, targetLength, pErrorCode);
-    }
-
-    /* no need to call u_terminateChars() because ucnv_convertEx() took care of that */
-    return targetLength;
-}
-
-U_CAPI int32_t U_EXPORT2
-ucnv_convert(const char *toConverterName, const char *fromConverterName,
-             char *target, int32_t targetCapacity,
-             const char *source, int32_t sourceLength,
-             UErrorCode *pErrorCode) {
-    UConverter in, out; /* stack-allocated */
-    UConverter *inConverter, *outConverter;
-    int32_t targetLength;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    if( source==NULL || sourceLength<-1 ||
-        targetCapacity<0 || (targetCapacity>0 && target==NULL)
-    ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* if there is no input data, we're done */
-    if(sourceLength==0 || (sourceLength<0 && *source==0)) {
-        return u_terminateChars(target, targetCapacity, 0, pErrorCode);
-    }
-
-    /* create the converters */
-    inConverter=ucnv_createConverter(&in, fromConverterName, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    outConverter=ucnv_createConverter(&out, toConverterName, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        ucnv_close(inConverter);
-        return 0;
-    }
-
-    targetLength=ucnv_internalConvert(outConverter, inConverter,
-                                      target, targetCapacity,
-                                      source, sourceLength,
-                                      pErrorCode);
-
-    ucnv_close(inConverter);
-    ucnv_close(outConverter);
-
-    return targetLength;
-}
-
-/* @internal */
-static int32_t
-ucnv_convertAlgorithmic(UBool convertToAlgorithmic,
-                        UConverterType algorithmicType,
-                        UConverter *cnv,
-                        char *target, int32_t targetCapacity,
-                        const char *source, int32_t sourceLength,
-                        UErrorCode *pErrorCode) {
-    UConverter algoConverterStatic; /* stack-allocated */
-    UConverter *algoConverter, *to, *from;
-    int32_t targetLength;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    if( cnv==NULL || source==NULL || sourceLength<-1 ||
-        targetCapacity<0 || (targetCapacity>0 && target==NULL)
-    ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* if there is no input data, we're done */
-    if(sourceLength==0 || (sourceLength<0 && *source==0)) {
-        return u_terminateChars(target, targetCapacity, 0, pErrorCode);
-    }
-
-    /* create the algorithmic converter */
-    algoConverter=ucnv_createAlgorithmicConverter(&algoConverterStatic, algorithmicType,
-                                                  "", 0, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    /* reset the other converter */
-    if(convertToAlgorithmic) {
-        /* cnv->Unicode->algo */
-        ucnv_resetToUnicode(cnv);
-        to=algoConverter;
-        from=cnv;
-    } else {
-        /* algo->Unicode->cnv */
-        ucnv_resetFromUnicode(cnv);
-        from=algoConverter;
-        to=cnv;
-    }
-
-    targetLength=ucnv_internalConvert(to, from,
-                                      target, targetCapacity,
-                                      source, sourceLength,
-                                      pErrorCode);
-
-    ucnv_close(algoConverter);
-
-    return targetLength;
-}
-
-U_CAPI int32_t U_EXPORT2
-ucnv_toAlgorithmic(UConverterType algorithmicType,
-                   UConverter *cnv,
-                   char *target, int32_t targetCapacity,
-                   const char *source, int32_t sourceLength,
-                   UErrorCode *pErrorCode) {
-    return ucnv_convertAlgorithmic(TRUE, algorithmicType, cnv,
-                                   target, targetCapacity,
-                                   source, sourceLength,
-                                   pErrorCode);
-}
-
-U_CAPI int32_t U_EXPORT2
-ucnv_fromAlgorithmic(UConverter *cnv,
-                     UConverterType algorithmicType,
-                     char *target, int32_t targetCapacity,
-                     const char *source, int32_t sourceLength,
-                     UErrorCode *pErrorCode) {
-    return ucnv_convertAlgorithmic(FALSE, algorithmicType, cnv,
-                                   target, targetCapacity,
-                                   source, sourceLength,
-                                   pErrorCode);
-}
-
-U_CAPI UConverterType  U_EXPORT2
-ucnv_getType(const UConverter* converter)
-{
-    int8_t type = converter->sharedData->staticData->conversionType;
-#if !UCONFIG_NO_LEGACY_CONVERSION
-    if(type == UCNV_MBCS) {
-        return ucnv_MBCSGetType(converter);
-    }
-#endif
-    return (UConverterType)type;
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_getStarters(const UConverter* converter, 
-                 UBool starters[256],
-                 UErrorCode* err)
-{
-    if (err == NULL || U_FAILURE(*err)) {
-        return;
-    }
-
-    if(converter->sharedData->impl->getStarters != NULL) {
-        converter->sharedData->impl->getStarters(converter, starters, err);
-    } else {
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-    }
-}
-
-static const UAmbiguousConverter *ucnv_getAmbiguous(const UConverter *cnv)
-{
-    UErrorCode errorCode;
-    const char *name;
-    int32_t i;
-
-    if(cnv==NULL) {
-        return NULL;
-    }
-
-    errorCode=U_ZERO_ERROR;
-    name=ucnv_getName(cnv, &errorCode);
-    if(U_FAILURE(errorCode)) {
-        return NULL;
-    }
-
-    for(i=0; i<UPRV_LENGTHOF(ambiguousConverters); ++i)
-    {
-        if(0==uprv_strcmp(name, ambiguousConverters[i].name))
-        {
-            return ambiguousConverters+i;
-        }
-    }
-
-    return NULL;
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_fixFileSeparator(const UConverter *cnv, 
-                      UChar* source, 
-                      int32_t sourceLength) {
-    const UAmbiguousConverter *a;
-    int32_t i;
-    UChar variant5c;
-
-    if(cnv==NULL || source==NULL || sourceLength<=0 || (a=ucnv_getAmbiguous(cnv))==NULL)
-    {
-        return;
-    }
-
-    variant5c=a->variant5c;
-    for(i=0; i<sourceLength; ++i) {
-        if(source[i]==variant5c) {
-            source[i]=0x5c;
-        }
-    }
-}
-
-U_CAPI UBool  U_EXPORT2
-ucnv_isAmbiguous(const UConverter *cnv) {
-    return (UBool)(ucnv_getAmbiguous(cnv)!=NULL);
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_setFallback(UConverter *cnv, UBool usesFallback)
-{
-    cnv->useFallback = usesFallback;
-}
-
-U_CAPI UBool  U_EXPORT2
-ucnv_usesFallback(const UConverter *cnv)
-{
-    return cnv->useFallback;
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_getInvalidChars (const UConverter * converter,
-                      char *errBytes,
-                      int8_t * len,
-                      UErrorCode * err)
-{
-    if (err == NULL || U_FAILURE(*err))
-    {
-        return;
-    }
-    if (len == NULL || errBytes == NULL || converter == NULL)
-    {
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    if (*len < converter->invalidCharLength)
-    {
-        *err = U_INDEX_OUTOFBOUNDS_ERROR;
-        return;
-    }
-    if ((*len = converter->invalidCharLength) > 0)
-    {
-        uprv_memcpy (errBytes, converter->invalidCharBuffer, *len);
-    }
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_getInvalidUChars (const UConverter * converter,
-                       UChar *errChars,
-                       int8_t * len,
-                       UErrorCode * err)
-{
-    if (err == NULL || U_FAILURE(*err))
-    {
-        return;
-    }
-    if (len == NULL || errChars == NULL || converter == NULL)
-    {
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    if (*len < converter->invalidUCharLength)
-    {
-        *err = U_INDEX_OUTOFBOUNDS_ERROR;
-        return;
-    }
-    if ((*len = converter->invalidUCharLength) > 0)
-    {
-        u_memcpy (errChars, converter->invalidUCharBuffer, *len);
-    }
-}
-
-#define SIG_MAX_LEN 5
-
-U_CAPI const char* U_EXPORT2
-ucnv_detectUnicodeSignature( const char* source,
-                             int32_t sourceLength,
-                             int32_t* signatureLength,
-                             UErrorCode* pErrorCode) {
-    int32_t dummy;
-
-    /* initial 0xa5 bytes: make sure that if we read <SIG_MAX_LEN
-     * bytes we don't misdetect something 
-     */
-    char start[SIG_MAX_LEN]={ '\xa5', '\xa5', '\xa5', '\xa5', '\xa5' };
-    int i = 0;
-
-    if((pErrorCode==NULL) || U_FAILURE(*pErrorCode)){
-        return NULL;
-    }
-    
-    if(source == NULL || sourceLength < -1){
-        *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-
-    if(signatureLength == NULL) {
-        signatureLength = &dummy;
-    }
-
-    if(sourceLength==-1){
-        sourceLength=(int32_t)uprv_strlen(source);
-    }
-
-    
-    while(i<sourceLength&& i<SIG_MAX_LEN){
-        start[i]=source[i];
-        i++;
-    }
-
-    if(start[0] == '\xFE' && start[1] == '\xFF') {
-        *signatureLength=2;
-        return  "UTF-16BE";
-    } else if(start[0] == '\xFF' && start[1] == '\xFE') {
-        if(start[2] == '\x00' && start[3] =='\x00') {
-            *signatureLength=4;
-            return "UTF-32LE";
-        } else {
-            *signatureLength=2;
-            return  "UTF-16LE";
-        }
-    } else if(start[0] == '\xEF' && start[1] == '\xBB' && start[2] == '\xBF') {
-        *signatureLength=3;
-        return  "UTF-8";
-    } else if(start[0] == '\x00' && start[1] == '\x00' && 
-              start[2] == '\xFE' && start[3]=='\xFF') {
-        *signatureLength=4;
-        return  "UTF-32BE";
-    } else if(start[0] == '\x0E' && start[1] == '\xFE' && start[2] == '\xFF') {
-        *signatureLength=3;
-        return "SCSU";
-    } else if(start[0] == '\xFB' && start[1] == '\xEE' && start[2] == '\x28') {
-        *signatureLength=3;
-        return "BOCU-1";
-    } else if(start[0] == '\x2B' && start[1] == '\x2F' && start[2] == '\x76') {
-        /*
-         * UTF-7: Initial U+FEFF is encoded as +/v8  or  +/v9  or  +/v+  or  +/v/
-         * depending on the second UTF-16 code unit.
-         * Detect the entire, closed Unicode mode sequence +/v8- for only U+FEFF
-         * if it occurs.
-         *
-         * So far we have +/v
-         */
-        if(start[3] == '\x38' && start[4] == '\x2D') {
-            /* 5 bytes +/v8- */
-            *signatureLength=5;
-            return "UTF-7";
-        } else if(start[3] == '\x38' || start[3] == '\x39' || start[3] == '\x2B' || start[3] == '\x2F') {
-            /* 4 bytes +/v8  or  +/v9  or  +/v+  or  +/v/ */
-            *signatureLength=4;
-            return "UTF-7";
-        }
-    }else if(start[0]=='\xDD' && start[1]== '\x73'&& start[2]=='\x66' && start[3]=='\x73'){
-        *signatureLength=4;
-        return "UTF-EBCDIC";
-    }
-
-
-    /* no known Unicode signature byte sequence recognized */
-    *signatureLength=0;
-    return NULL;
-}
-
-U_CAPI int32_t U_EXPORT2
-ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status)
-{
-    if(status == NULL || U_FAILURE(*status)){
-        return -1;
-    }
-    if(cnv == NULL){
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return -1;
-    }
-
-    if(cnv->preFromUFirstCP >= 0){
-        return U16_LENGTH(cnv->preFromUFirstCP)+cnv->preFromULength ;
-    }else if(cnv->preFromULength < 0){
-        return -cnv->preFromULength ;
-    }else if(cnv->fromUChar32 > 0){
-        return 1;
-    }
-    return 0; 
-
-}
-
-U_CAPI int32_t U_EXPORT2
-ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status){
-
-    if(status == NULL || U_FAILURE(*status)){
-        return -1;
-    }
-    if(cnv == NULL){
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return -1;
-    }
-
-    if(cnv->preToULength > 0){
-        return cnv->preToULength ;
-    }else if(cnv->preToULength < 0){
-        return -cnv->preToULength;
-    }else if(cnv->toULength > 0){
-        return cnv->toULength;
-    }
-    return 0;
-}
-
-U_CAPI UBool U_EXPORT2
-ucnv_isFixedWidth(UConverter *cnv, UErrorCode *status){
-    if (U_FAILURE(*status)) {
-        return FALSE;
-    }
-
-    if (cnv == NULL) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return FALSE;
-    }
-
-    switch (ucnv_getType(cnv)) {
-        case UCNV_SBCS:
-        case UCNV_DBCS:
-        case UCNV_UTF32_BigEndian:
-        case UCNV_UTF32_LittleEndian:
-        case UCNV_UTF32:
-        case UCNV_US_ASCII:
-            return TRUE;
-        default:
-            return FALSE;
-    }
-}
-#endif
-
-/*
- * Hey, Emacs, please set the following:
- *
- * Local Variables:
- * indent-tabs-mode: nil
- * End:
- *
- */
index 9c0a064..f0d0946 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  ucnv2022.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 078f293..14de21b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************
index 212c4ea..a1e2df6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/ucnv_cb.c b/source/common/ucnv_cb.c
deleted file mode 100644 (file)
index 0c9cc24..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-**********************************************************************
-*   Copyright (C) 2000-2006, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
- *  ucnv_cb.c:
- *  External APIs for the ICU's codeset conversion library
- *  Helena Shih
- *
- * Modification History:
- *
- *   Date        Name        Description
- *   7/28/2000   srl         Implementation
- */
-
-/**
- * @name Character Conversion C API
- *
- */
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "unicode/ucnv_cb.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-#include "cmemory.h"
-
-/* need to update the offsets when the target moves. */
-/* Note: Recursion may occur in the cb functions, be sure to update the offsets correctly
-if you don't use ucnv_cbXXX functions.  Make sure you don't use the same callback within
-the same call stack if the complexity arises. */
-U_CAPI void  U_EXPORT2
-ucnv_cbFromUWriteBytes (UConverterFromUnicodeArgs *args,
-                       const char* source,
-                       int32_t length,
-                       int32_t offsetIndex,
-                       UErrorCode * err)
-{
-    if(U_FAILURE(*err)) {
-        return;
-    }
-
-    ucnv_fromUWriteBytes(
-        args->converter,
-        source, length,
-        &args->target, args->targetLimit,
-        &args->offsets, offsetIndex,
-        err);
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
-                             const UChar** source,
-                             const UChar*  sourceLimit,
-                             int32_t offsetIndex,
-                             UErrorCode * err)
-{
-    /*
-    This is a fun one.  Recursion can occur - we're basically going to
-    just retry shoving data through the same converter. Note, if you got
-    here through some kind of invalid sequence, you maybe should emit a
-    reset sequence of some kind and/or call ucnv_reset().  Since this
-    IS an actual conversion, take care that you've changed the callback
-    or the data, or you'll get an infinite loop.
-
-    Please set the err value to something reasonable before calling
-    into this.
-    */
-
-    char *oldTarget;
-
-    if(U_FAILURE(*err))
-    {
-        return;
-    }
-
-    oldTarget = args->target;
-
-    ucnv_fromUnicode(args->converter,
-        &args->target,
-        args->targetLimit,
-        source,
-        sourceLimit,
-        NULL, /* no offsets */
-        FALSE, /* no flush */
-        err);
-
-    if(args->offsets)
-    {
-        while (args->target != oldTarget)  /* if it moved at all.. */
-        {
-            *(args->offsets)++ = offsetIndex;
-            oldTarget++;
-        }
-    }
-
-    /*
-    Note, if you did something like used a Stop subcallback, things would get interesting.
-    In fact, here's where we want to return the partially consumed in-source!
-    */
-    if(*err == U_BUFFER_OVERFLOW_ERROR)
-    /* && (*source < sourceLimit && args->target >= args->targetLimit)
-    -- S. Hrcek */
-    {
-        /* Overflowed the target.  Now, we'll write into the charErrorBuffer.
-        It's a fixed size. If we overflow it... Hmm */
-        char *newTarget;
-        const char *newTargetLimit;
-        UErrorCode err2 = U_ZERO_ERROR;
-
-        int8_t errBuffLen;
-
-        errBuffLen  = args->converter->charErrorBufferLength;
-
-        /* start the new target at the first free slot in the errbuff.. */
-        newTarget = (char *)(args->converter->charErrorBuffer + errBuffLen);
-
-        newTargetLimit = (char *)(args->converter->charErrorBuffer +
-            sizeof(args->converter->charErrorBuffer));
-
-        if(newTarget >= newTargetLimit)
-        {
-            *err = U_INTERNAL_PROGRAM_ERROR;
-            return;
-        }
-
-        /* We're going to tell the converter that the errbuff len is empty.
-        This prevents the existing errbuff from being 'flushed' out onto
-        itself.  If the errbuff is needed by the converter this time,
-        we're hosed - we're out of space! */
-
-        args->converter->charErrorBufferLength = 0;
-
-        ucnv_fromUnicode(args->converter,
-                         &newTarget,
-                         newTargetLimit,
-                         source,
-                         sourceLimit,
-                         NULL,
-                         FALSE,
-                         &err2);
-
-        /* We can go ahead and overwrite the  length here. We know just how
-        to recalculate it. */
-
-        args->converter->charErrorBufferLength = (int8_t)(
-            newTarget - (char*)args->converter->charErrorBuffer);
-
-        if((newTarget >= newTargetLimit) || (err2 == U_BUFFER_OVERFLOW_ERROR))
-        {
-            /* now we're REALLY in trouble.
-            Internal program error - callback shouldn't have written this much
-            data!
-            */
-            *err = U_INTERNAL_PROGRAM_ERROR;
-            return;
-        }
-        /*else {*/
-            /* sub errs could be invalid/truncated/illegal chars or w/e.
-            These might want to be passed on up.. But the problem is, we already
-            need to pass U_BUFFER_OVERFLOW_ERROR. That has to override these
-            other errs.. */
-
-            /*
-            if(U_FAILURE(err2))
-            ??
-            */
-        /*}*/
-    }
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_cbFromUWriteSub (UConverterFromUnicodeArgs *args,
-                           int32_t offsetIndex,
-                           UErrorCode * err)
-{
-    UConverter *converter;
-    int32_t length;
-
-    if(U_FAILURE(*err)) {
-        return;
-    }
-    converter = args->converter;
-    length = converter->subCharLen;
-
-    if(length == 0) {
-        return;
-    }
-
-    if(length < 0) {
-        /*
-         * Write/convert the substitution string. Its real length is -length.
-         * Unlike the escape callback, we need not change the converter's
-         * callback function because ucnv_setSubstString() verified that
-         * the string can be converted, so we will not get a conversion error
-         * and will not recurse.
-         * At worst we should get a U_BUFFER_OVERFLOW_ERROR.
-         */
-        const UChar *source = (const UChar *)converter->subChars;
-        ucnv_cbFromUWriteUChars(args, &source, source - length, offsetIndex, err);
-        return;
-    }
-
-    if(converter->sharedData->impl->writeSub!=NULL) {
-        converter->sharedData->impl->writeSub(args, offsetIndex, err);
-    }
-    else if(converter->subChar1!=0 && (uint16_t)converter->invalidUCharBuffer[0]<=(uint16_t)0xffu) {
-        /*
-        TODO: Is this untestable because the MBCS converter has a writeSub function to call
-        and the other converters don't use subChar1?
-        */
-        ucnv_cbFromUWriteBytes(args,
-                               (const char *)&converter->subChar1, 1,
-                               offsetIndex, err);
-    }
-    else {
-        ucnv_cbFromUWriteBytes(args,
-                               (const char *)converter->subChars, length,
-                               offsetIndex, err);
-    }
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
-                            const UChar* source,
-                            int32_t length,
-                            int32_t offsetIndex,
-                            UErrorCode * err)
-{
-    if(U_FAILURE(*err)) {
-        return;
-    }
-
-    ucnv_toUWriteUChars(
-        args->converter,
-        source, length,
-        &args->target, args->targetLimit,
-        &args->offsets, offsetIndex,
-        err);
-}
-
-U_CAPI void  U_EXPORT2
-ucnv_cbToUWriteSub (UConverterToUnicodeArgs *args,
-                         int32_t offsetIndex,
-                       UErrorCode * err)
-{
-    static const UChar kSubstituteChar1 = 0x1A, kSubstituteChar = 0xFFFD;
-
-    /* could optimize this case, just one uchar */
-    if(args->converter->invalidCharLength == 1 && args->converter->subChar1 != 0) {
-        ucnv_cbToUWriteUChars(args, &kSubstituteChar1, 1, offsetIndex, err);
-    } else {
-        ucnv_cbToUWriteUChars(args, &kSubstituteChar, 1, offsetIndex, err);
-    }
-}
-
-#endif
diff --git a/source/common/ucnv_cnv.c b/source/common/ucnv_cnv.c
deleted file mode 100644 (file)
index 01f8482..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1999-2004, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-*   uconv_cnv.c:
-*   Implements all the low level conversion functions
-*   T_UnicodeConverter_{to,from}Unicode_$ConversionType
-*
-*   Change history:
-*
-*   06/29/2000  helena      Major rewrite of the callback APIs.
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "unicode/ucnv_err.h"
-#include "unicode/ucnv.h"
-#include "unicode/uset.h"
-#include "ucnv_cnv.h"
-#include "ucnv_bld.h"
-#include "cmemory.h"
-
-U_CFUNC void
-ucnv_getCompleteUnicodeSet(const UConverter *cnv,
-                   const USetAdder *sa,
-                   UConverterUnicodeSet which,
-                   UErrorCode *pErrorCode) {
-    sa->addRange(sa->set, 0, 0x10ffff);
-}
-
-U_CFUNC void
-ucnv_getNonSurrogateUnicodeSet(const UConverter *cnv,
-                               const USetAdder *sa,
-                               UConverterUnicodeSet which,
-                               UErrorCode *pErrorCode) {
-    sa->addRange(sa->set, 0, 0xd7ff);
-    sa->addRange(sa->set, 0xe000, 0x10ffff);
-}
-
-U_CFUNC void
-ucnv_fromUWriteBytes(UConverter *cnv,
-                     const char *bytes, int32_t length,
-                     char **target, const char *targetLimit,
-                     int32_t **offsets,
-                     int32_t sourceIndex,
-                     UErrorCode *pErrorCode) {
-    char *t=*target;
-    int32_t *o;
-
-    /* write bytes */
-    if(offsets==NULL || (o=*offsets)==NULL) {
-        while(length>0 && t<targetLimit) {
-            *t++=*bytes++;
-            --length;
-        }
-    } else {
-        /* output with offsets */
-        while(length>0 && t<targetLimit) {
-            *t++=*bytes++;
-            *o++=sourceIndex;
-            --length;
-        }
-        *offsets=o;
-    }
-    *target=t;
-
-    /* write overflow */
-    if(length>0) {
-        if(cnv!=NULL) {
-            t=(char *)cnv->charErrorBuffer;
-            cnv->charErrorBufferLength=(int8_t)length;
-            do {
-                *t++=(uint8_t)*bytes++;
-            } while(--length>0);
-        }
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-}
-
-U_CFUNC void
-ucnv_toUWriteUChars(UConverter *cnv,
-                    const UChar *uchars, int32_t length,
-                    UChar **target, const UChar *targetLimit,
-                    int32_t **offsets,
-                    int32_t sourceIndex,
-                    UErrorCode *pErrorCode) {
-    UChar *t=*target;
-    int32_t *o;
-
-    /* write UChars */
-    if(offsets==NULL || (o=*offsets)==NULL) {
-        while(length>0 && t<targetLimit) {
-            *t++=*uchars++;
-            --length;
-        }
-    } else {
-        /* output with offsets */
-        while(length>0 && t<targetLimit) {
-            *t++=*uchars++;
-            *o++=sourceIndex;
-            --length;
-        }
-        *offsets=o;
-    }
-    *target=t;
-
-    /* write overflow */
-    if(length>0) {
-        if(cnv!=NULL) {
-            t=cnv->UCharErrorBuffer;
-            cnv->UCharErrorBufferLength=(int8_t)length;
-            do {
-                *t++=*uchars++;
-            } while(--length>0);
-        }
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-}
-
-U_CFUNC void
-ucnv_toUWriteCodePoint(UConverter *cnv,
-                       UChar32 c,
-                       UChar **target, const UChar *targetLimit,
-                       int32_t **offsets,
-                       int32_t sourceIndex,
-                       UErrorCode *pErrorCode) {
-    UChar *t;
-    int32_t *o;
-
-    t=*target;
-
-    if(t<targetLimit) {
-        if(c<=0xffff) {
-            *t++=(UChar)c;
-            c=U_SENTINEL;
-        } else /* c is a supplementary code point */ {
-            *t++=U16_LEAD(c);
-            c=U16_TRAIL(c);
-            if(t<targetLimit) {
-                *t++=(UChar)c;
-                c=U_SENTINEL;
-            }
-        }
-
-        /* write offsets */
-        if(offsets!=NULL && (o=*offsets)!=NULL) {
-            *o++=sourceIndex;
-            if((*target+1)<t) {
-                *o++=sourceIndex;
-            }
-            *offsets=o;
-        }
-    }
-
-    *target=t;
-
-    /* write overflow from c */
-    if(c>=0) {
-        if(cnv!=NULL) {
-            int8_t i=0;
-            U16_APPEND_UNSAFE(cnv->UCharErrorBuffer, i, c);
-            cnv->UCharErrorBufferLength=i;
-        }
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-}
-
-#endif
index 4394672..2eed2c6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/ucnv_ct.c b/source/common/ucnv_ct.c
deleted file mode 100644 (file)
index f76919c..0000000
+++ /dev/null
@@ -1,637 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-**********************************************************************
-*   Copyright (C) 2010-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   file name:  ucnv_ct.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2010Dec09
-*   created by: Michael Ow
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
-
-#include "unicode/ucnv.h"
-#include "unicode/uset.h"
-#include "unicode/ucnv_err.h"
-#include "unicode/ucnv_cb.h"
-#include "unicode/utf16.h"
-#include "ucnv_imp.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-#include "ucnvmbcs.h"
-#include "cstring.h"
-#include "cmemory.h"
-
-typedef enum {
-    INVALID = -2,
-    DO_SEARCH = -1,
-
-    COMPOUND_TEXT_SINGLE_0 = 0,
-    COMPOUND_TEXT_SINGLE_1 = 1,
-    COMPOUND_TEXT_SINGLE_2 = 2,
-    COMPOUND_TEXT_SINGLE_3 = 3,
-
-    COMPOUND_TEXT_DOUBLE_1 = 4,
-    COMPOUND_TEXT_DOUBLE_2 = 5,
-    COMPOUND_TEXT_DOUBLE_3 = 6,
-    COMPOUND_TEXT_DOUBLE_4 = 7,
-    COMPOUND_TEXT_DOUBLE_5 = 8,
-    COMPOUND_TEXT_DOUBLE_6 = 9,
-    COMPOUND_TEXT_DOUBLE_7 = 10,
-
-    COMPOUND_TEXT_TRIPLE_DOUBLE = 11,
-
-    IBM_915 = 12,
-    IBM_916 = 13,
-    IBM_914 = 14,
-    IBM_874 = 15,
-    IBM_912 = 16,
-    IBM_913 = 17,
-    ISO_8859_14 = 18,
-    IBM_923 = 19,
-    NUM_OF_CONVERTERS = 20
-} COMPOUND_TEXT_CONVERTERS;
-
-#define SEARCH_LENGTH 12
-
-static const uint8_t escSeqCompoundText[NUM_OF_CONVERTERS][5] = {
-    /* Single */
-    { 0x1B, 0x2D, 0x41, 0, 0 },
-    { 0x1B, 0x2D, 0x4D, 0, 0 },
-    { 0x1B, 0x2D, 0x46, 0, 0 },
-    { 0x1B, 0x2D, 0x47, 0, 0 },
-
-    /* Double */
-    { 0x1B, 0x24, 0x29, 0x41, 0 },
-    { 0x1B, 0x24, 0x29, 0x42, 0 },
-    { 0x1B, 0x24, 0x29, 0x43, 0 },
-    { 0x1B, 0x24, 0x29, 0x44, 0 },
-    { 0x1B, 0x24, 0x29, 0x47, 0 },
-    { 0x1B, 0x24, 0x29, 0x48, 0 },
-    { 0x1B, 0x24, 0x29, 0x49, 0 },
-
-    /* Triple/Double */
-    { 0x1B, 0x25, 0x47, 0, 0 },
-
-    /*IBM-915*/
-    { 0x1B, 0x2D, 0x4C, 0, 0 },
-    /*IBM-916*/
-    { 0x1B, 0x2D, 0x48, 0, 0 },
-    /*IBM-914*/
-    { 0x1B, 0x2D, 0x44, 0, 0 },
-    /*IBM-874*/
-    { 0x1B, 0x2D, 0x54, 0, 0 },
-    /*IBM-912*/
-    { 0x1B, 0x2D, 0x42, 0, 0 },
-    /* IBM-913 */
-    { 0x1B, 0x2D, 0x43, 0, 0 },
-    /* ISO-8859_14 */
-    { 0x1B, 0x2D, 0x5F, 0, 0 },
-    /* IBM-923 */
-    { 0x1B, 0x2D, 0x62, 0, 0 },
-};
-
-#define ESC_START 0x1B
-
-#define isASCIIRange(codepoint) \
-        ((codepoint == 0x0000) || (codepoint == 0x0009) || (codepoint == 0x000A) || \
-         (codepoint >= 0x0020 && codepoint <= 0x007f) || (codepoint >= 0x00A0 && codepoint <= 0x00FF))
-
-#define isIBM915(codepoint) \
-        ((codepoint >= 0x0401 && codepoint <= 0x045F) || (codepoint == 0x2116))
-
-#define isIBM916(codepoint) \
-        ((codepoint >= 0x05D0 && codepoint <= 0x05EA) || (codepoint == 0x2017) || (codepoint == 0x203E))
-
-#define isCompoundS3(codepoint) \
-        ((codepoint == 0x060C) || (codepoint == 0x061B) || (codepoint == 0x061F) || (codepoint >= 0x0621 && codepoint <= 0x063A) || \
-         (codepoint >= 0x0640 && codepoint <= 0x0652) || (codepoint >= 0x0660 && codepoint <= 0x066D) || (codepoint == 0x200B) || \
-         (codepoint >= 0x0FE70 && codepoint <= 0x0FE72) || (codepoint == 0x0FE74) || (codepoint >= 0x0FE76 && codepoint <= 0x0FEBE))
-
-#define isCompoundS2(codepoint) \
-        ((codepoint == 0x02BC) || (codepoint == 0x02BD) || (codepoint >= 0x0384 && codepoint <= 0x03CE) || (codepoint == 0x2015))
-
-#define isIBM914(codepoint) \
-        ((codepoint == 0x0100) || (codepoint == 0x0101) || (codepoint == 0x0112) || (codepoint == 0x0113) || (codepoint == 0x0116) || (codepoint == 0x0117) || \
-         (codepoint == 0x0122) || (codepoint == 0x0123) || (codepoint >= 0x0128 && codepoint <= 0x012B) || (codepoint == 0x012E) || (codepoint == 0x012F) || \
-         (codepoint >= 0x0136 && codepoint <= 0x0138) || (codepoint == 0x013B) || (codepoint == 0x013C) || (codepoint == 0x0145) || (codepoint ==  0x0146) || \
-         (codepoint >= 0x014A && codepoint <= 0x014D) || (codepoint == 0x0156) || (codepoint == 0x0157) || (codepoint >= 0x0166 && codepoint <= 0x016B) || \
-         (codepoint == 0x0172) || (codepoint == 0x0173))
-
-#define isIBM874(codepoint) \
-        ((codepoint >= 0x0E01 && codepoint <= 0x0E3A) || (codepoint >= 0x0E3F && codepoint <= 0x0E5B))
-
-#define isIBM912(codepoint) \
-        ((codepoint >= 0x0102 && codepoint <= 0x0107) || (codepoint >= 0x010C && codepoint <= 0x0111) || (codepoint >= 0x0118 && codepoint <= 0x011B) || \
-         (codepoint == 0x0139) || (codepoint == 0x013A) || (codepoint == 0x013D) || (codepoint == 0x013E) || (codepoint >= 0x0141 && codepoint <= 0x0144) || \
-         (codepoint == 0x0147) || (codepoint == 0x0147) || (codepoint == 0x0150) || (codepoint == 0x0151) || (codepoint == 0x0154) || (codepoint == 0x0155) || \
-         (codepoint >= 0x0158 && codepoint <= 0x015B) || (codepoint == 0x015E) || (codepoint == 0x015F) || (codepoint >= 0x0160 && codepoint <= 0x0165) || \
-         (codepoint == 0x016E) || (codepoint == 0x016F) || (codepoint == 0x0170) || (codepoint ==  0x0171) || (codepoint >= 0x0179 && codepoint <= 0x017E) || \
-         (codepoint == 0x02C7) || (codepoint == 0x02D8) || (codepoint == 0x02D9) || (codepoint == 0x02DB) || (codepoint == 0x02DD))
-
-#define isIBM913(codepoint) \
-        ((codepoint >= 0x0108 && codepoint <= 0x010B) || (codepoint == 0x011C) || \
-         (codepoint == 0x011D) || (codepoint == 0x0120) || (codepoint == 0x0121) || \
-         (codepoint >= 0x0124 && codepoint <= 0x0127) || (codepoint == 0x0134) || (codepoint == 0x0135) || \
-         (codepoint == 0x015C) || (codepoint == 0x015D) || (codepoint == 0x016C) || (codepoint ==  0x016D))
-
-#define isCompoundS1(codepoint) \
-        ((codepoint == 0x011E) || (codepoint == 0x011F) || (codepoint == 0x0130) || \
-         (codepoint == 0x0131) || (codepoint >= 0x0218 && codepoint <= 0x021B))
-
-#define isISO8859_14(codepoint) \
-        ((codepoint >= 0x0174 && codepoint <= 0x0177) || (codepoint == 0x1E0A) || \
-         (codepoint == 0x1E0B) || (codepoint == 0x1E1E) || (codepoint == 0x1E1F) || \
-         (codepoint == 0x1E40) || (codepoint == 0x1E41) || (codepoint == 0x1E56) || \
-         (codepoint == 0x1E57) || (codepoint == 0x1E60) || (codepoint == 0x1E61) || \
-         (codepoint == 0x1E6A) || (codepoint == 0x1E6B) || (codepoint == 0x1EF2) || \
-         (codepoint == 0x1EF3) || (codepoint >= 0x1E80 && codepoint <= 0x1E85))
-
-#define isIBM923(codepoint) \
-        ((codepoint == 0x0152) || (codepoint == 0x0153) || (codepoint == 0x0178) || (codepoint == 0x20AC))
-
-
-typedef struct{
-    UConverterSharedData *myConverterArray[NUM_OF_CONVERTERS];
-    COMPOUND_TEXT_CONVERTERS state;
-} UConverterDataCompoundText;
-
-/*********** Compound Text Converter Protos ***********/
-static void
-_CompoundTextOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode);
-
-static void
- _CompoundTextClose(UConverter *converter);
-
-static void
-_CompoundTextReset(UConverter *converter, UConverterResetChoice choice);
-
-static const char*
-_CompoundTextgetName(const UConverter* cnv);
-
-
-static int32_t findNextEsc(const char *source, const char *sourceLimit) {
-    int32_t length = sourceLimit - source;
-    int32_t i;
-    for (i = 1; i < length; i++) {
-        if (*(source + i) == 0x1B) {
-            return i;
-        }
-    }
-
-    return length;
-}
-
-static COMPOUND_TEXT_CONVERTERS getState(int codepoint) {
-    COMPOUND_TEXT_CONVERTERS state = DO_SEARCH;
-
-    if (isASCIIRange(codepoint)) {
-        state = COMPOUND_TEXT_SINGLE_0;
-    } else if (isIBM912(codepoint)) {
-        state = IBM_912;
-    }else if (isIBM913(codepoint)) {
-        state = IBM_913;
-    } else if (isISO8859_14(codepoint)) {
-        state = ISO_8859_14;
-    } else if (isIBM923(codepoint)) {
-        state = IBM_923;
-    } else if (isIBM874(codepoint)) {
-        state = IBM_874;
-    } else if (isIBM914(codepoint)) {
-        state = IBM_914;
-    } else if (isCompoundS2(codepoint)) {
-        state = COMPOUND_TEXT_SINGLE_2;
-    } else if (isCompoundS3(codepoint)) {
-        state = COMPOUND_TEXT_SINGLE_3;
-    } else if (isIBM916(codepoint)) {
-        state = IBM_916;
-    } else if (isIBM915(codepoint)) {
-        state = IBM_915;
-    } else if (isCompoundS1(codepoint)) {
-        state = COMPOUND_TEXT_SINGLE_1;
-    }
-
-    return state;
-}
-
-static COMPOUND_TEXT_CONVERTERS findStateFromEscSeq(const char* source, const char* sourceLimit, const uint8_t* toUBytesBuffer, int32_t toUBytesBufferLength, UErrorCode *err) {
-    COMPOUND_TEXT_CONVERTERS state = INVALID;
-    UBool matchFound = FALSE;
-    int32_t i, n, offset = toUBytesBufferLength;
-
-    for (i = 0; i < NUM_OF_CONVERTERS; i++) {
-        matchFound = TRUE;
-        for (n = 0; escSeqCompoundText[i][n] != 0; n++) {
-            if (n < toUBytesBufferLength) {
-                if (toUBytesBuffer[n] != escSeqCompoundText[i][n]) {
-                    matchFound = FALSE;
-                    break;
-                }
-            } else if ((source + (n - offset)) >= sourceLimit) {
-                *err = U_TRUNCATED_CHAR_FOUND;
-                matchFound = FALSE;
-                break;
-            } else if (*(source + (n - offset)) != escSeqCompoundText[i][n]) {
-                matchFound = FALSE;
-                break;
-            }
-        }
-
-        if (matchFound) {
-            break;
-        }
-    }
-
-    if (matchFound) {
-        state = (COMPOUND_TEXT_CONVERTERS)i;
-    }
-
-    return state;
-}
-
-static void
-_CompoundTextOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){
-    cnv->extraInfo = uprv_malloc (sizeof (UConverterDataCompoundText));
-    if (cnv->extraInfo != NULL) {
-        UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *) cnv->extraInfo;
-
-        UConverterNamePieces stackPieces;
-        UConverterLoadArgs stackArgs={ (int32_t)sizeof(UConverterLoadArgs) };
-
-        myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_0] = NULL;
-        myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_1] = ucnv_loadSharedData("icu-internal-compound-s1", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_2] = ucnv_loadSharedData("icu-internal-compound-s2", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_3] = ucnv_loadSharedData("icu-internal-compound-s3", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_1] = ucnv_loadSharedData("icu-internal-compound-d1", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_2] = ucnv_loadSharedData("icu-internal-compound-d2", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_3] = ucnv_loadSharedData("icu-internal-compound-d3", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_4] = ucnv_loadSharedData("icu-internal-compound-d4", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_5] = ucnv_loadSharedData("icu-internal-compound-d5", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_6] = ucnv_loadSharedData("icu-internal-compound-d6", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_7] = ucnv_loadSharedData("icu-internal-compound-d7", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[COMPOUND_TEXT_TRIPLE_DOUBLE] = ucnv_loadSharedData("icu-internal-compound-t", &stackPieces, &stackArgs, errorCode);
-
-        myConverterData->myConverterArray[IBM_915] = ucnv_loadSharedData("ibm-915_P100-1995", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[IBM_916] = ucnv_loadSharedData("ibm-916_P100-1995", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[IBM_914] = ucnv_loadSharedData("ibm-914_P100-1995", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[IBM_874] = ucnv_loadSharedData("ibm-874_P100-1995", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[IBM_912] = ucnv_loadSharedData("ibm-912_P100-1995", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[IBM_913] = ucnv_loadSharedData("ibm-913_P100-2000", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[ISO_8859_14] = ucnv_loadSharedData("iso-8859_14-1998", &stackPieces, &stackArgs, errorCode);
-        myConverterData->myConverterArray[IBM_923] = ucnv_loadSharedData("ibm-923_P100-1998", &stackPieces, &stackArgs, errorCode);
-
-        if (U_FAILURE(*errorCode) || pArgs->onlyTestIsLoadable) {
-            _CompoundTextClose(cnv);
-            return;
-        }
-
-        myConverterData->state = (COMPOUND_TEXT_CONVERTERS)0;
-    } else {
-        *errorCode = U_MEMORY_ALLOCATION_ERROR;
-    }
-}
-
-
-static void
-_CompoundTextClose(UConverter *converter) {
-    UConverterDataCompoundText* myConverterData = (UConverterDataCompoundText*)(converter->extraInfo);
-    int32_t i;
-
-    if (converter->extraInfo != NULL) {
-        /*close the array of converter pointers and free the memory*/
-        for (i = 0; i < NUM_OF_CONVERTERS; i++) {
-            if (myConverterData->myConverterArray[i] != NULL) {
-                ucnv_unloadSharedDataIfReady(myConverterData->myConverterArray[i]);
-            }
-        }
-
-        uprv_free(converter->extraInfo);
-    }
-}
-
-static void
-_CompoundTextReset(UConverter *converter, UConverterResetChoice choice) {
-}
-
-static const char*
-_CompoundTextgetName(const UConverter* cnv){
-    return "x11-compound-text";
-}
-
-static void
-UConverter_fromUnicode_CompoundText_OFFSETS(UConverterFromUnicodeArgs* args, UErrorCode* err){
-    UConverter *cnv = args->converter;
-    uint8_t *target = (uint8_t *) args->target;
-    const uint8_t *targetLimit = (const uint8_t *) args->targetLimit;
-    const UChar* source = args->source;
-    const UChar* sourceLimit = args->sourceLimit;
-    /* int32_t* offsets = args->offsets; */
-    UChar32 sourceChar;
-    UBool useFallback = cnv->useFallback;
-    uint8_t tmpTargetBuffer[7];
-    int32_t tmpTargetBufferLength = 0;
-    COMPOUND_TEXT_CONVERTERS currentState, tmpState;
-    uint32_t pValue;
-    int32_t pValueLength = 0;
-    int32_t i, n, j;
-
-    UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *) cnv->extraInfo;
-
-    currentState = myConverterData->state;
-
-    /* check if the last codepoint of previous buffer was a lead surrogate*/
-    if((sourceChar = cnv->fromUChar32)!=0 && target< targetLimit) {
-        goto getTrail;
-    }
-
-    while( source < sourceLimit){
-        if(target < targetLimit){
-
-            sourceChar  = *(source++);
-            /*check if the char is a First surrogate*/
-             if(U16_IS_SURROGATE(sourceChar)) {
-                if(U16_IS_SURROGATE_LEAD(sourceChar)) {
-getTrail:
-                    /*look ahead to find the trail surrogate*/
-                    if(source < sourceLimit) {
-                        /* test the following code unit */
-                        UChar trail=(UChar) *source;
-                        if(U16_IS_TRAIL(trail)) {
-                            source++;
-                            sourceChar=U16_GET_SUPPLEMENTARY(sourceChar, trail);
-                            cnv->fromUChar32=0x00;
-                            /* convert this supplementary code point */
-                            /* exit this condition tree */
-                        } else {
-                            /* this is an unmatched lead code unit (1st surrogate) */
-                            /* callback(illegal) */
-                            *err=U_ILLEGAL_CHAR_FOUND;
-                            cnv->fromUChar32=sourceChar;
-                            break;
-                        }
-                    } else {
-                        /* no more input */
-                        cnv->fromUChar32=sourceChar;
-                        break;
-                    }
-                } else {
-                    /* this is an unmatched trail code unit (2nd surrogate) */
-                    /* callback(illegal) */
-                    *err=U_ILLEGAL_CHAR_FOUND;
-                    cnv->fromUChar32=sourceChar;
-                    break;
-                }
-            }
-
-             tmpTargetBufferLength = 0;
-             tmpState = getState(sourceChar);
-
-             if (tmpState != DO_SEARCH && currentState != tmpState) {
-                 /* Get escape sequence if necessary */
-                 currentState = tmpState;
-                 for (i = 0; escSeqCompoundText[currentState][i] != 0; i++) {
-                     tmpTargetBuffer[tmpTargetBufferLength++] = escSeqCompoundText[currentState][i];
-                 }
-             }
-
-             if (tmpState == DO_SEARCH) {
-                 /* Test all available converters */
-                 for (i = 1; i < SEARCH_LENGTH; i++) {
-                     pValueLength = ucnv_MBCSFromUChar32(myConverterData->myConverterArray[i], sourceChar, &pValue, useFallback);
-                     if (pValueLength > 0) {
-                         tmpState = (COMPOUND_TEXT_CONVERTERS)i;
-                         if (currentState != tmpState) {
-                             currentState = tmpState;
-                             for (j = 0; escSeqCompoundText[currentState][j] != 0; j++) {
-                                 tmpTargetBuffer[tmpTargetBufferLength++] = escSeqCompoundText[currentState][j];
-                             }
-                         }
-                         for (n = (pValueLength - 1); n >= 0; n--) {
-                             tmpTargetBuffer[tmpTargetBufferLength++] = (uint8_t)(pValue >> (n * 8));
-                         }
-                         break;
-                     }
-                 }
-             } else if (tmpState == COMPOUND_TEXT_SINGLE_0) {
-                 tmpTargetBuffer[tmpTargetBufferLength++] = (uint8_t)sourceChar;
-             } else {
-                 pValueLength = ucnv_MBCSFromUChar32(myConverterData->myConverterArray[currentState], sourceChar, &pValue, useFallback);
-                 if (pValueLength > 0) {
-                     for (n = (pValueLength - 1); n >= 0; n--) {
-                         tmpTargetBuffer[tmpTargetBufferLength++] = (uint8_t)(pValue >> (n * 8));
-                     }
-                 }
-             }
-
-             for (i = 0; i < tmpTargetBufferLength; i++) {
-                 if (target < targetLimit) {
-                     *target++ = tmpTargetBuffer[i];
-                 } else {
-                     *err = U_BUFFER_OVERFLOW_ERROR;
-                     break;
-                 }
-             }
-
-             if (*err == U_BUFFER_OVERFLOW_ERROR) {
-                 for (; i < tmpTargetBufferLength; i++) {
-                     args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = tmpTargetBuffer[i];
-                 }
-             }
-        } else {
-            *err = U_BUFFER_OVERFLOW_ERROR;
-            break;
-        }
-    }
-
-    /*save the state and return */
-    myConverterData->state = currentState;
-    args->source = source;
-    args->target = (char*)target;
-}
-
-
-static void
-UConverter_toUnicode_CompoundText_OFFSETS(UConverterToUnicodeArgs *args,
-                                               UErrorCode* err){
-    const char *mySource = (char *) args->source;
-    UChar *myTarget = args->target;
-    const char *mySourceLimit = args->sourceLimit;
-    const char *tmpSourceLimit = mySourceLimit;
-    uint32_t mySourceChar = 0x0000;
-    COMPOUND_TEXT_CONVERTERS currentState, tmpState;
-    int32_t sourceOffset = 0;
-    UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *) args->converter->extraInfo;
-    UConverterSharedData* savedSharedData = NULL;
-
-    UConverterToUnicodeArgs subArgs;
-    int32_t minArgsSize;
-
-    /* set up the subconverter arguments */
-    if(args->size<sizeof(UConverterToUnicodeArgs)) {
-        minArgsSize = args->size;
-    } else {
-        minArgsSize = (int32_t)sizeof(UConverterToUnicodeArgs);
-    }
-
-    uprv_memcpy(&subArgs, args, minArgsSize);
-    subArgs.size = (uint16_t)minArgsSize;
-
-    currentState = tmpState =  myConverterData->state;
-
-    while(mySource < mySourceLimit){
-        if(myTarget < args->targetLimit){
-            if (args->converter->toULength > 0) {
-                mySourceChar = args->converter->toUBytes[0];
-            } else {
-                mySourceChar = (uint8_t)*mySource;
-            }
-
-            if (mySourceChar == ESC_START) {
-                tmpState = findStateFromEscSeq(mySource, mySourceLimit, args->converter->toUBytes, args->converter->toULength, err);
-
-                if (*err == U_TRUNCATED_CHAR_FOUND) {
-                    for (; mySource < mySourceLimit;) {
-                        args->converter->toUBytes[args->converter->toULength++] = *mySource++;
-                    }
-                    *err = U_ZERO_ERROR;
-                    break;
-                } else if (tmpState == INVALID) {
-                    if (args->converter->toULength == 0) {
-                        mySource++; /* skip over the 0x1b byte */
-                    }
-                    *err = U_ILLEGAL_CHAR_FOUND;
-                    break;
-                }
-
-                if (tmpState != currentState) {
-                    currentState = tmpState;
-                }
-
-                sourceOffset = uprv_strlen((char*)escSeqCompoundText[currentState]) - args->converter->toULength;
-
-                mySource += sourceOffset;
-
-                args->converter->toULength = 0;
-            }
-
-            if (currentState == COMPOUND_TEXT_SINGLE_0) {
-                while (mySource < mySourceLimit) {
-                    if (*mySource == ESC_START) {
-                        break;
-                    }
-                    if (myTarget < args->targetLimit) {
-                        *myTarget++ = 0x00ff&(*mySource++);
-                    } else {
-                        *err = U_BUFFER_OVERFLOW_ERROR;
-                        break;
-                    }
-                }
-            } else if (mySource < mySourceLimit){
-                sourceOffset = findNextEsc(mySource, mySourceLimit);
-
-                tmpSourceLimit = mySource + sourceOffset;
-
-                subArgs.source = mySource;
-                subArgs.sourceLimit = tmpSourceLimit;
-                subArgs.target = myTarget;
-                savedSharedData = subArgs.converter->sharedData;
-                subArgs.converter->sharedData = myConverterData->myConverterArray[currentState];
-
-                ucnv_MBCSToUnicodeWithOffsets(&subArgs, err);
-
-                subArgs.converter->sharedData = savedSharedData;
-
-                mySource = subArgs.source;
-                myTarget = subArgs.target;
-
-                if (U_FAILURE(*err)) {
-                    if(*err == U_BUFFER_OVERFLOW_ERROR) {
-                        if(subArgs.converter->UCharErrorBufferLength > 0) {
-                            uprv_memcpy(args->converter->UCharErrorBuffer, subArgs.converter->UCharErrorBuffer,
-                                        subArgs.converter->UCharErrorBufferLength);
-                        }
-                        args->converter->UCharErrorBufferLength=subArgs.converter->UCharErrorBufferLength;
-                        subArgs.converter->UCharErrorBufferLength = 0;
-                    }
-                    break;
-                }
-            }
-        } else {
-            *err = U_BUFFER_OVERFLOW_ERROR;
-            break;
-        }
-    }
-    myConverterData->state = currentState;
-    args->target = myTarget;
-    args->source = mySource;
-}
-
-static void
-_CompoundText_GetUnicodeSet(const UConverter *cnv,
-                    const USetAdder *sa,
-                    UConverterUnicodeSet which,
-                    UErrorCode *pErrorCode) {
-    UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *)cnv->extraInfo;
-    int32_t i;
-
-    for (i = 1; i < NUM_OF_CONVERTERS; i++) {
-        ucnv_MBCSGetUnicodeSetForUnicode(myConverterData->myConverterArray[i], sa, which, pErrorCode);
-    }
-    sa->add(sa->set, 0x0000);
-    sa->add(sa->set, 0x0009);
-    sa->add(sa->set, 0x000A);
-    sa->addRange(sa->set, 0x0020, 0x007F);
-    sa->addRange(sa->set, 0x00A0, 0x00FF);
-}
-
-static const UConverterImpl _CompoundTextImpl = {
-
-    UCNV_COMPOUND_TEXT,
-
-    NULL,
-    NULL,
-
-    _CompoundTextOpen,
-    _CompoundTextClose,
-    _CompoundTextReset,
-
-    UConverter_toUnicode_CompoundText_OFFSETS,
-    UConverter_toUnicode_CompoundText_OFFSETS,
-    UConverter_fromUnicode_CompoundText_OFFSETS,
-    UConverter_fromUnicode_CompoundText_OFFSETS,
-    NULL,
-
-    NULL,
-    _CompoundTextgetName,
-    NULL,
-    NULL,
-    _CompoundText_GetUnicodeSet
-};
-static const UConverterStaticData _CompoundTextStaticData = {
-    sizeof(UConverterStaticData),
-    "COMPOUND_TEXT",
-    0,
-    UCNV_IBM,
-    UCNV_COMPOUND_TEXT,
-    1,
-    6,
-    { 0xef, 0, 0, 0 },
-    1,
-    FALSE,
-    FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-const UConverterSharedData _CompoundTextData =
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_CompoundTextStaticData, &_CompoundTextImpl);
-
-#endif /* #if !UCONFIG_NO_LEGACY_CONVERSION */
diff --git a/source/common/ucnv_err.c b/source/common/ucnv_err.c
deleted file mode 100644 (file)
index c609bed..0000000
+++ /dev/null
@@ -1,481 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
- *****************************************************************************
- *
- *   Copyright (C) 1998-2016, International Business Machines
- *   Corporation and others.  All Rights Reserved.
- *
- *****************************************************************************
- *
- *  ucnv_err.c
- *  Implements error behaviour functions called by T_UConverter_{from,to}Unicode
- *
- *
-*   Change history:
-*
-*   06/29/2000  helena      Major rewrite of the callback APIs.
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "unicode/ucnv_err.h"
-#include "unicode/ucnv_cb.h"
-#include "ucnv_cnv.h"
-#include "cmemory.h"
-#include "unicode/ucnv.h"
-#include "ustrfmt.h"
-
-#define VALUE_STRING_LENGTH 48
-/*Magic # 32 = 4(number of char in value string) * 8(max number of bytes per char for any converter) */
-#define UNICODE_PERCENT_SIGN_CODEPOINT  0x0025
-#define UNICODE_U_CODEPOINT             0x0055
-#define UNICODE_X_CODEPOINT             0x0058
-#define UNICODE_RS_CODEPOINT            0x005C
-#define UNICODE_U_LOW_CODEPOINT         0x0075
-#define UNICODE_X_LOW_CODEPOINT         0x0078
-#define UNICODE_AMP_CODEPOINT           0x0026
-#define UNICODE_HASH_CODEPOINT          0x0023
-#define UNICODE_SEMICOLON_CODEPOINT     0x003B
-#define UNICODE_PLUS_CODEPOINT          0x002B
-#define UNICODE_LEFT_CURLY_CODEPOINT    0x007B
-#define UNICODE_RIGHT_CURLY_CODEPOINT   0x007D
-#define UNICODE_SPACE_CODEPOINT         0x0020
-#define UCNV_PRV_ESCAPE_ICU         0
-#define UCNV_PRV_ESCAPE_C           'C'
-#define UCNV_PRV_ESCAPE_XML_DEC     'D'
-#define UCNV_PRV_ESCAPE_XML_HEX     'X'
-#define UCNV_PRV_ESCAPE_JAVA        'J'
-#define UCNV_PRV_ESCAPE_UNICODE     'U'
-#define UCNV_PRV_ESCAPE_CSS2        'S'
-#define UCNV_PRV_STOP_ON_ILLEGAL    'i'
-
-/*
- * IS_DEFAULT_IGNORABLE_CODE_POINT
- * This is to check if a code point has the default ignorable unicode property.
- * As such, this list needs to be updated if the ignorable code point list ever
- * changes.
- * To avoid dependency on other code, this list is hard coded here.
- * When an ignorable code point is found and is unmappable, the default callbacks
- * will ignore them.
- * For a list of the default ignorable code points, use this link: http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[%3ADI%3A]&g=
- *
- * This list should be sync with the one in CharsetCallback.java
- */
-#define IS_DEFAULT_IGNORABLE_CODE_POINT(c) (\
-    (c == 0x00AD) || \
-    (c == 0x034F) || \
-    (c == 0x061C) || \
-    (c == 0x115F) || \
-    (c == 0x1160) || \
-    (0x17B4 <= c && c <= 0x17B5) || \
-    (0x180B <= c && c <= 0x180E) || \
-    (0x200B <= c && c <= 0x200F) || \
-    (0x202A <= c && c <= 0x202E) || \
-    (c == 0x2060) || \
-    (0x2066 <= c && c <= 0x2069) || \
-    (0x2061 <= c && c <= 0x2064) || \
-    (0x206A <= c && c <= 0x206F) || \
-    (c == 0x3164) || \
-    (0x0FE00 <= c && c <= 0x0FE0F) || \
-    (c == 0x0FEFF) || \
-    (c == 0x0FFA0) || \
-    (0x01BCA0  <= c && c <= 0x01BCA3) || \
-    (0x01D173 <= c && c <= 0x01D17A) || \
-    (c == 0x0E0001) || \
-    (0x0E0020 <= c && c <= 0x0E007F) || \
-    (0x0E0100 <= c && c <= 0x0E01EF) || \
-    (c == 0x2065) || \
-    (0x0FFF0 <= c && c <= 0x0FFF8) || \
-    (c == 0x0E0000) || \
-    (0x0E0002 <= c && c <= 0x0E001F) || \
-    (0x0E0080 <= c && c <= 0x0E00FF) || \
-    (0x0E01F0 <= c && c <= 0x0E0FFF) \
-    )
-
-
-/*Function Pointer STOPS at the ILLEGAL_SEQUENCE */
-U_CAPI void    U_EXPORT2
-UCNV_FROM_U_CALLBACK_STOP (
-                  const void *context,
-                  UConverterFromUnicodeArgs *fromUArgs,
-                  const UChar* codeUnits,
-                  int32_t length,
-                  UChar32 codePoint,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err)
-{
-    if (reason == UCNV_UNASSIGNED && IS_DEFAULT_IGNORABLE_CODE_POINT(codePoint))
-    {
-        /*
-         * Skip if the codepoint has unicode property of default ignorable.
-         */
-        *err = U_ZERO_ERROR;
-    }
-    /* the caller must have set the error code accordingly */
-    return;
-}
-
-
-/*Function Pointer STOPS at the ILLEGAL_SEQUENCE */
-U_CAPI void    U_EXPORT2
-UCNV_TO_U_CALLBACK_STOP (
-                   const void *context,
-                   UConverterToUnicodeArgs *toUArgs,
-                   const char* codePoints,
-                   int32_t length,
-                   UConverterCallbackReason reason,
-                   UErrorCode * err)
-{
-    /* the caller must have set the error code accordingly */
-    return;
-}
-
-U_CAPI void    U_EXPORT2
-UCNV_FROM_U_CALLBACK_SKIP (                  
-                  const void *context,
-                  UConverterFromUnicodeArgs *fromUArgs,
-                  const UChar* codeUnits,
-                  int32_t length,
-                  UChar32 codePoint,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err)
-{
-    if (reason <= UCNV_IRREGULAR)
-    {
-        if (reason == UCNV_UNASSIGNED && IS_DEFAULT_IGNORABLE_CODE_POINT(codePoint))
-        {
-            /*
-             * Skip if the codepoint has unicode property of default ignorable.
-             */
-            *err = U_ZERO_ERROR;
-        }
-        else if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
-        {
-            *err = U_ZERO_ERROR;
-        }
-        /* else the caller must have set the error code accordingly. */
-    }
-    /* else ignore the reset, close and clone calls. */
-}
-
-U_CAPI void    U_EXPORT2
-UCNV_FROM_U_CALLBACK_SUBSTITUTE (
-                  const void *context,
-                  UConverterFromUnicodeArgs *fromArgs,
-                  const UChar* codeUnits,
-                  int32_t length,
-                  UChar32 codePoint,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err)
-{
-    if (reason <= UCNV_IRREGULAR)
-    {
-        if (reason == UCNV_UNASSIGNED && IS_DEFAULT_IGNORABLE_CODE_POINT(codePoint))
-        {
-            /*
-             * Skip if the codepoint has unicode property of default ignorable.
-             */
-            *err = U_ZERO_ERROR;
-        }
-        else if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
-        {
-            *err = U_ZERO_ERROR;
-            ucnv_cbFromUWriteSub(fromArgs, 0, err);
-        }
-        /* else the caller must have set the error code accordingly. */
-    }
-    /* else ignore the reset, close and clone calls. */
-}
-
-/*uses uprv_itou to get a unicode escape sequence of the offensive sequence,
- *uses a clean copy (resetted) of the converter, to convert that unicode
- *escape sequence to the target codepage (if conversion failure happens then
- *we revert to substituting with subchar)
- */
-U_CAPI void    U_EXPORT2
-UCNV_FROM_U_CALLBACK_ESCAPE (
-                         const void *context,
-                         UConverterFromUnicodeArgs *fromArgs,
-                         const UChar *codeUnits,
-                         int32_t length,
-                         UChar32 codePoint,
-                         UConverterCallbackReason reason,
-                         UErrorCode * err)
-{
-
-  UChar valueString[VALUE_STRING_LENGTH];
-  int32_t valueStringLength = 0;
-  int32_t i = 0;
-
-  const UChar *myValueSource = NULL;
-  UErrorCode err2 = U_ZERO_ERROR;
-  UConverterFromUCallback original = NULL;
-  const void *originalContext;
-
-  UConverterFromUCallback ignoredCallback = NULL;
-  const void *ignoredContext;
-  
-  if (reason > UCNV_IRREGULAR)
-  {
-      return;
-  }
-  else if (reason == UCNV_UNASSIGNED && IS_DEFAULT_IGNORABLE_CODE_POINT(codePoint))
-  {
-      /*
-       * Skip if the codepoint has unicode property of default ignorable.
-       */
-      *err = U_ZERO_ERROR;
-      return;
-  }
-
-  ucnv_setFromUCallBack (fromArgs->converter,
-                     (UConverterFromUCallback) UCNV_FROM_U_CALLBACK_SUBSTITUTE,
-                     NULL,
-                     &original,
-                     &originalContext,
-                     &err2);
-  
-  if (U_FAILURE (err2))
-  {
-    *err = err2;
-    return;
-  } 
-  if(context==NULL)
-  { 
-      while (i < length)
-      {
-        valueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT;  /* adding % */
-        valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT; /* adding U */
-        valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4);
-      }
-  }
-  else
-  {
-      switch(*((char*)context))
-      {
-      case UCNV_PRV_ESCAPE_JAVA:
-          while (i < length)
-          {
-              valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT;    /* adding \ */
-              valueString[valueStringLength++] = (UChar) UNICODE_U_LOW_CODEPOINT; /* adding u */
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4);
-          }
-          break;
-
-      case UCNV_PRV_ESCAPE_C:
-          valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT;    /* adding \ */
-
-          if(length==2){
-              valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT; /* adding U */
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 8);
-
-          }
-          else{
-              valueString[valueStringLength++] = (UChar) UNICODE_U_LOW_CODEPOINT; /* adding u */
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 16, 4);
-          }
-          break;
-
-      case UCNV_PRV_ESCAPE_XML_DEC:
-
-          valueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT;   /* adding & */
-          valueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT;  /* adding # */
-          if(length==2){
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 10, 0);
-          }
-          else{
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 10, 0);
-          }
-          valueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
-          break;
-
-      case UCNV_PRV_ESCAPE_XML_HEX:
-
-          valueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT;   /* adding & */
-          valueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT;  /* adding # */
-          valueString[valueStringLength++] = (UChar) UNICODE_X_LOW_CODEPOINT; /* adding x */
-          if(length==2){
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 0);
-          }
-          else{
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 16, 0);
-          }
-          valueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
-          break;
-
-      case UCNV_PRV_ESCAPE_UNICODE:
-          valueString[valueStringLength++] = (UChar) UNICODE_LEFT_CURLY_CODEPOINT;    /* adding { */
-          valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT;    /* adding U */
-          valueString[valueStringLength++] = (UChar) UNICODE_PLUS_CODEPOINT; /* adding + */
-          if (length == 2) {
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 4);
-          } else {
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 16, 4);
-          }
-          valueString[valueStringLength++] = (UChar) UNICODE_RIGHT_CURLY_CODEPOINT;    /* adding } */
-          break;
-
-      case UCNV_PRV_ESCAPE_CSS2:
-          valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT;    /* adding \ */
-          valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 0);
-          /* Always add space character, becase the next character might be whitespace,
-             which would erroneously be considered the termination of the escape sequence. */
-          valueString[valueStringLength++] = (UChar) UNICODE_SPACE_CODEPOINT;
-          break;
-
-      default:
-          while (i < length)
-          {
-              valueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT;  /* adding % */
-              valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT;             /* adding U */
-              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4);
-          }
-      }
-  }  
-  myValueSource = valueString;
-
-  /* reset the error */
-  *err = U_ZERO_ERROR;
-
-  ucnv_cbFromUWriteUChars(fromArgs, &myValueSource, myValueSource+valueStringLength, 0, err);
-
-  ucnv_setFromUCallBack (fromArgs->converter,
-                         original,
-                         originalContext,
-                         &ignoredCallback,
-                         &ignoredContext,
-                         &err2);
-  if (U_FAILURE (err2))
-  {
-      *err = err2;
-      return;
-  }
-
-  return;
-}
-
-
-
-U_CAPI void  U_EXPORT2
-UCNV_TO_U_CALLBACK_SKIP (
-                 const void *context,
-                 UConverterToUnicodeArgs *toArgs,
-                 const char* codeUnits,
-                 int32_t length,
-                 UConverterCallbackReason reason,
-                 UErrorCode * err)
-{
-    if (reason <= UCNV_IRREGULAR)
-    {
-        if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
-        {
-            *err = U_ZERO_ERROR;
-        }
-        /* else the caller must have set the error code accordingly. */
-    }
-    /* else ignore the reset, close and clone calls. */
-}
-
-U_CAPI void    U_EXPORT2
-UCNV_TO_U_CALLBACK_SUBSTITUTE (
-                 const void *context,
-                 UConverterToUnicodeArgs *toArgs,
-                 const char* codeUnits,
-                 int32_t length,
-                 UConverterCallbackReason reason,
-                 UErrorCode * err)
-{
-    if (reason <= UCNV_IRREGULAR)
-    {
-        if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
-        {
-            *err = U_ZERO_ERROR;
-            ucnv_cbToUWriteSub(toArgs,0,err);
-        }
-        /* else the caller must have set the error code accordingly. */
-    }
-    /* else ignore the reset, close and clone calls. */
-}
-
-/*uses uprv_itou to get a unicode escape sequence of the offensive sequence,
- *and uses that as the substitution sequence
- */
-U_CAPI void   U_EXPORT2
-UCNV_TO_U_CALLBACK_ESCAPE (
-                 const void *context,
-                 UConverterToUnicodeArgs *toArgs,
-                 const char* codeUnits,
-                 int32_t length,
-                 UConverterCallbackReason reason,
-                 UErrorCode * err)
-{
-    UChar uniValueString[VALUE_STRING_LENGTH];
-    int32_t valueStringLength = 0;
-    int32_t i = 0;
-
-    if (reason > UCNV_IRREGULAR)
-    {
-        return;
-    }
-
-    if(context==NULL)
-    {    
-        while (i < length)
-        {
-            uniValueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
-            uniValueString[valueStringLength++] = (UChar) UNICODE_X_CODEPOINT;    /* adding X */
-            valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t) codeUnits[i++], 16, 2);
-        }
-    }
-    else
-    {
-        switch(*((char*)context))
-        {
-        case UCNV_PRV_ESCAPE_XML_DEC:
-            while (i < length)
-            {
-                uniValueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT;   /* adding & */
-                uniValueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT;  /* adding # */
-                valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t)codeUnits[i++], 10, 0);
-                uniValueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
-            }
-            break;
-
-        case UCNV_PRV_ESCAPE_XML_HEX:
-            while (i < length)
-            {
-                uniValueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT;   /* adding & */
-                uniValueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT;  /* adding # */
-                uniValueString[valueStringLength++] = (UChar) UNICODE_X_LOW_CODEPOINT; /* adding x */
-                valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t)codeUnits[i++], 16, 0);
-                uniValueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
-            }
-            break;
-        case UCNV_PRV_ESCAPE_C:
-            while (i < length)
-            {
-                uniValueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT;    /* adding \ */
-                uniValueString[valueStringLength++] = (UChar) UNICODE_X_LOW_CODEPOINT; /* adding x */
-                valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t)codeUnits[i++], 16, 2);
-            }
-            break;
-        default:
-            while (i < length)
-            {
-                uniValueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
-                uniValueString[valueStringLength++] = (UChar) UNICODE_X_CODEPOINT;    /* adding X */
-                uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t) codeUnits[i++], 16, 2);
-                valueStringLength += 2;
-            }
-        }
-    }
-    /* reset the error */
-    *err = U_ZERO_ERROR;
-
-    ucnv_cbToUWriteUChars(toArgs, uniValueString, valueStringLength, 0, err);
-}
-
-#endif
index f860518..7dea4ee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnv_ext.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -23,6 +23,7 @@
 #if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION
 
 #include "unicode/uset.h"
+#include "unicode/ustring.h"
 #include "ucnv_bld.h"
 #include "ucnv_cnv.h"
 #include "ucnv_ext.h"
index c2f459c..dceea7e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnv_ext.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 81aa80f..c5e6aeb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c3301e1..7a95a3f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 8b35857..8f2d7b5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
diff --git a/source/common/ucnv_lmb.c b/source/common/ucnv_lmb.c
deleted file mode 100644 (file)
index e427790..0000000
+++ /dev/null
@@ -1,1378 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*  
-**********************************************************************
-*   Copyright (C) 2000-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   file name:  ucnv_lmb.cpp
-*   encoding:   US-ASCII
-*   tab size:   4 (not used)
-*   indentation:4
-*
-*   created on: 2000feb09
-*   created by: Brendan Murray
-*   extensively hacked up by: Jim Snyder-Grant
-*
-* Modification History:
-* 
-*   Date        Name             Description
-* 
-*   06/20/2000  helena           OS/400 port changes; mostly typecast.
-*   06/27/2000  Jim Snyder-Grant Deal with partial characters and small buffers.
-*                                Add comments to document LMBCS format and implementation
-*                                restructured order & breakdown of functions
-*   06/28/2000  helena           Major rewrite for the callback API changes.
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
-
-#include "unicode/ucnv_err.h"
-#include "unicode/ucnv.h"
-#include "unicode/uset.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "uassert.h"
-#include "ucnv_imp.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-
-#ifdef EBCDIC_RTL
-    #include "ascii_a.h"
-#endif
-
-/*
-  LMBCS
-
-  (Lotus Multi-Byte Character Set)
-
-  LMBCS was invented in the late 1980's and is primarily used in Lotus Notes 
-  databases and in Lotus 1-2-3 files. Programmers who work with the APIs 
-  into these products will sometimes need to deal with strings in this format.
-
-  The code in this file provides an implementation for an ICU converter of 
-  LMBCS to and from Unicode. 
-
-  Since the LMBCS character set is only sparsely documented in existing 
-  printed or online material, we have added  extensive annotation to this 
-  file to serve as a guide to understanding LMBCS. 
-
-  LMBCS was originally designed with these four sometimes-competing design goals:
-
-  -Provide encodings for the characters in 12 existing national standards
-   (plus a few other characters)
-  -Minimal memory footprint
-  -Maximal speed of conversion into the existing national character sets
-  -No need to track a changing state as you interpret a string.
-
-
-  All of the national character sets LMBCS was trying to encode are 'ANSI'
-  based, in that the bytes from 0x20 - 0x7F are almost exactly the 
-  same common Latin unaccented characters and symbols in all character sets. 
-
-  So, in order to help meet the speed & memory design goals, the common ANSI 
-  bytes from 0x20-0x7F are represented by the same single-byte values in LMBCS. 
-
-  The general LMBCS code unit is from 1-3 bytes. We can describe the 3 bytes as
-  follows:
-
-  [G] D1 [D2]
-
-  That is, a sometimes-optional 'group' byte, followed by 1 and sometimes 2
-  data bytes. The maximum size of a LMBCS chjaracter is 3 bytes:
-*/
-#define ULMBCS_CHARSIZE_MAX      3
-/*
-  The single-byte values from 0x20 to 0x7F are examples of single D1 bytes.
-  We often have to figure out if byte values are below or above this, so we 
-  use the ANSI nomenclature 'C0' and 'C1' to refer to the range of control 
-  characters just above & below the common lower-ANSI  range */
-#define ULMBCS_C0END           0x1F   
-#define ULMBCS_C1START         0x80   
-/*
-  Since LMBCS is always dealing in byte units. we create a local type here for 
-  dealing with these units of LMBCS code units:
-
-*/  
-typedef uint8_t ulmbcs_byte_t;
-
-/* 
-   Most of the values less than 0x20 are reserved in LMBCS to announce 
-   which national  character standard is being used for the 'D' bytes. 
-   In the comments we show the common name and the IBM character-set ID
-   for these character-set announcers:
-*/
-
-#define ULMBCS_GRP_L1         0x01   /* Latin-1    :ibm-850  */
-#define ULMBCS_GRP_GR         0x02   /* Greek      :ibm-851  */
-#define ULMBCS_GRP_HE         0x03   /* Hebrew     :ibm-1255 */
-#define ULMBCS_GRP_AR         0x04   /* Arabic     :ibm-1256 */
-#define ULMBCS_GRP_RU         0x05   /* Cyrillic   :ibm-1251 */
-#define ULMBCS_GRP_L2         0x06   /* Latin-2    :ibm-852  */
-#define ULMBCS_GRP_TR         0x08   /* Turkish    :ibm-1254 */
-#define ULMBCS_GRP_TH         0x0B   /* Thai       :ibm-874  */
-#define ULMBCS_GRP_JA         0x10   /* Japanese   :ibm-943  */
-#define ULMBCS_GRP_KO         0x11   /* Korean     :ibm-1261 */
-#define ULMBCS_GRP_TW         0x12   /* Chinese SC :ibm-950  */
-#define ULMBCS_GRP_CN         0x13   /* Chinese TC :ibm-1386 */
-
-/*
-   So, the beginning of understanding LMBCS is that IF the first byte of a LMBCS 
-   character is one of those 12 values, you can interpret the remaining bytes of 
-   that character as coming from one of those character sets. Since the lower 
-   ANSI bytes already are represented in single bytes, using one of the character 
-   set announcers is used to announce a character that starts with a byte of 
-   0x80 or greater.
-
-   The character sets are  arranged so that the single byte sets all appear 
-   before the multi-byte character sets. When we need to tell whether a 
-   group byte is for a single byte char set or not we use this define: */
-
-#define ULMBCS_DOUBLEOPTGROUP_START  0x10   
-
-/* 
-However, to fully understand LMBCS, you must also understand a series of 
-exceptions & optimizations made in service of the design goals. 
-
-First, those of you who are character set mavens may have noticed that
-the 'double-byte' character sets are actually multi-byte character sets 
-that can have 1 or two bytes, even in the upper-ascii range. To force
-each group byte to introduce a fixed-width encoding (to make it faster to 
-count characters), we use a convention of doubling up on the group byte 
-to introduce any single-byte character > 0x80 in an otherwise double-byte
-character set. So, for example, the LMBCS sequence x10 x10 xAE is the 
-same as '0xAE' in the Japanese code page 943.
-
-Next, you will notice that the list of group bytes has some gaps. 
-These are used in various ways.
-
-We reserve a few special single byte values for common control 
-characters. These are in the same place as their ANSI eqivalents for speed.
-*/
-                     
-#define ULMBCS_HT    0x09   /* Fixed control char - Horizontal Tab */
-#define ULMBCS_LF    0x0A   /* Fixed control char - Line Feed */
-#define ULMBCS_CR    0x0D   /* Fixed control char - Carriage Return */
-
-/* Then, 1-2-3 reserved a special single-byte character to put at the 
-beginning of internal 'system' range names: */
-
-#define ULMBCS_123SYSTEMRANGE  0x19   
-
-/* Then we needed a place to put all the other ansi control characters 
-that must be moved to different values because LMBCS reserves those 
-values for other purposes. To represent the control characters, we start 
-with a first byte of 0xF & add the control chaarcter value as the 
-second byte */
-#define ULMBCS_GRP_CTRL       0x0F   
-
-/* For the C0 controls (less than 0x20), we add 0x20 to preserve the 
-useful doctrine that any byte less than 0x20 in a LMBCS char must be 
-the first byte of a character:*/
-#define ULMBCS_CTRLOFFSET      0x20   
-
-/* 
-Where to put the characters that aren't part of any of the 12 national 
-character sets? The first thing that was done, in the earlier years of 
-LMBCS, was to use up the spaces of the form
-
-  [G] D1, 
-  
- where  'G' was one of the single-byte character groups, and
- D1 was less than 0x80. These sequences are gathered together 
- into a Lotus-invented doublebyte character set to represent a 
- lot of stray values. Internally, in this implementation, we track this 
- as group '0', as a place to tuck this exceptions list.*/
-
-#define ULMBCS_GRP_EXCEPT     0x00    
-/*
- Finally, as the durability and usefulness of UNICODE became clear, 
- LOTUS added a new group 0x14 to hold Unicode values not otherwise 
- represented in LMBCS: */
-#define ULMBCS_GRP_UNICODE    0x14   
-/* The two bytes appearing after a 0x14 are intrepreted as UFT-16 BE
-(Big-Endian) characters. The exception comes when the UTF16 
-representation would have a zero as the second byte. In that case,
-'F6' is used in its place, and the bytes are swapped. (This prevents 
-LMBCS from encoding any Unicode values of the form U+F6xx, but that's OK:
-0xF6xx is in the middle of the Private Use Area.)*/
-#define ULMBCS_UNICOMPATZERO   0xF6   
-
-/* It is also useful in our code to have a constant for the size of 
-a LMBCS char that holds a literal Unicode value */
-#define ULMBCS_UNICODE_SIZE      3    
-
-/* 
-To squish the LMBCS representations down even further, and to make 
-translations even faster,sometimes the optimization group byte can be dropped 
-from a LMBCS character. This is decided on a process-by-process basis. The 
-group byte that is dropped is called the 'optimization group'.
-
-For Notes, the optimzation group is always 0x1.*/
-#define ULMBCS_DEFAULTOPTGROUP 0x1    
-/* For 1-2-3 files, the optimzation group is stored in the header of the 1-2-3 
-file. 
-
- In any case, when using ICU, you either pass in the 
-optimization group as part of the name of the converter (LMBCS-1, LMBCS-2, 
-etc.). Using plain 'LMBCS' as the name of the converter will give you 
-LMBCS-1.
-
-
-*** Implementation strategy ***
-
-
-Because of the extensive use of other character sets, the LMBCS converter
-keeps a mapping between optimization groups and IBM character sets, so that
-ICU converters can be created and used as needed. */
-
-/* As you can see, even though any byte below 0x20 could be an optimization 
-byte, only those at 0x13 or below can map to an actual converter. To limit
-some loops and searches, we define a value for that last group converter:*/
-
-#define ULMBCS_GRP_LAST       0x13   /* last LMBCS group that has a converter */
-
-static const char * const OptGroupByteToCPName[ULMBCS_GRP_LAST + 1] = {
-   /* 0x0000 */ "lmb-excp", /* internal home for the LOTUS exceptions list */
-   /* 0x0001 */ "ibm-850",
-   /* 0x0002 */ "ibm-851",
-   /* 0x0003 */ "windows-1255",
-   /* 0x0004 */ "windows-1256",
-   /* 0x0005 */ "windows-1251",
-   /* 0x0006 */ "ibm-852",
-   /* 0x0007 */ NULL,      /* Unused */
-   /* 0x0008 */ "windows-1254",
-   /* 0x0009 */ NULL,      /* Control char HT */
-   /* 0x000A */ NULL,      /* Control char LF */
-   /* 0x000B */ "windows-874",
-   /* 0x000C */ NULL,      /* Unused */
-   /* 0x000D */ NULL,      /* Control char CR */
-   /* 0x000E */ NULL,      /* Unused */
-   /* 0x000F */ NULL,      /* Control chars: 0x0F20 + C0/C1 character: algorithmic */
-   /* 0x0010 */ "windows-932",
-   /* 0x0011 */ "windows-949",
-   /* 0x0012 */ "windows-950",
-   /* 0x0013 */ "windows-936"
-
-   /* The rest are null, including the 0x0014 Unicode compatibility region
-   and 0x0019, the 1-2-3 system range control char */      
-};
-
-
-/* That's approximately all the data that's needed for translating 
-  LMBCS to Unicode. 
-
-
-However, to translate Unicode to LMBCS, we need some more support.
-
-That's because there are often more than one possible mappings from a Unicode
-code point back into LMBCS. The first thing we do is look up into a table
-to figure out if there are more than one possible mappings. This table,
-arranged by Unicode values (including ranges) either lists which group 
-to use, or says that it could go into one or more of the SBCS sets, or
-into one or more of the DBCS sets.  (If the character exists in both DBCS & 
-SBCS, the table will place it in the SBCS sets, to make the LMBCS code point 
-length as small as possible. Here's the two special markers we use to indicate
-ambiguous mappings: */
-
-#define ULMBCS_AMBIGUOUS_SBCS   0x80   /* could fit in more than one 
-                                          LMBCS sbcs native encoding 
-                                          (example: most accented latin) */
-#define ULMBCS_AMBIGUOUS_MBCS   0x81   /* could fit in more than one 
-                                          LMBCS mbcs native encoding 
-                                          (example: Unihan) */
-#define ULMBCS_AMBIGUOUS_ALL   0x82
-/* And here's a simple way to see if a group falls in an appropriate range */
-#define ULMBCS_AMBIGUOUS_MATCH(agroup, xgroup) \
-                  ((((agroup) == ULMBCS_AMBIGUOUS_SBCS) && \
-                  (xgroup) < ULMBCS_DOUBLEOPTGROUP_START) || \
-                  (((agroup) == ULMBCS_AMBIGUOUS_MBCS) && \
-                  (xgroup) >= ULMBCS_DOUBLEOPTGROUP_START)) || \
-                  ((agroup) == ULMBCS_AMBIGUOUS_ALL)
-
-
-/* The table & some code to use it: */
-
-
-static const struct _UniLMBCSGrpMap  
-{
-   const UChar uniStartRange;
-   const UChar uniEndRange;
-   const ulmbcs_byte_t  GrpType;
-} UniLMBCSGrpMap[]
-=
-{
-
-    {0x0001, 0x001F,  ULMBCS_GRP_CTRL},
-    {0x0080, 0x009F,  ULMBCS_GRP_CTRL},
-    {0x00A0, 0x00A6,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x00A7, 0x00A8,  ULMBCS_AMBIGUOUS_ALL},
-    {0x00A9, 0x00AF,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x00B0, 0x00B1,  ULMBCS_AMBIGUOUS_ALL},
-    {0x00B2, 0x00B3,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x00B4, 0x00B4,  ULMBCS_AMBIGUOUS_ALL},
-    {0x00B5, 0x00B5,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x00B6, 0x00B6,  ULMBCS_AMBIGUOUS_ALL},
-    {0x00B7, 0x00D6,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x00D7, 0x00D7,  ULMBCS_AMBIGUOUS_ALL},
-    {0x00D8, 0x00F6,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x00F7, 0x00F7,  ULMBCS_AMBIGUOUS_ALL},
-    {0x00F8, 0x01CD,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x01CE, 0x01CE,  ULMBCS_GRP_TW },
-    {0x01CF, 0x02B9,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x02BA, 0x02BA,  ULMBCS_GRP_CN},
-    {0x02BC, 0x02C8,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x02C9, 0x02D0,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x02D8, 0x02DD,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x0384, 0x0390,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x0391, 0x03A9,  ULMBCS_AMBIGUOUS_ALL},
-    {0x03AA, 0x03B0,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x03B1, 0x03C9,  ULMBCS_AMBIGUOUS_ALL},
-    {0x03CA, 0x03CE,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x0400, 0x0400,  ULMBCS_GRP_RU},
-    {0x0401, 0x0401,  ULMBCS_AMBIGUOUS_ALL},
-    {0x0402, 0x040F,  ULMBCS_GRP_RU},
-    {0x0410, 0x0431,  ULMBCS_AMBIGUOUS_ALL},
-    {0x0432, 0x044E,  ULMBCS_GRP_RU},
-    {0x044F, 0x044F,  ULMBCS_AMBIGUOUS_ALL},
-    {0x0450, 0x0491,  ULMBCS_GRP_RU},
-    {0x05B0, 0x05F2,  ULMBCS_GRP_HE},
-    {0x060C, 0x06AF,  ULMBCS_GRP_AR},
-    {0x0E01, 0x0E5B,  ULMBCS_GRP_TH},
-    {0x200C, 0x200F,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2010, 0x2010,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2013, 0x2014,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2015, 0x2015,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2016, 0x2016,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2017, 0x2017,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2018, 0x2019,  ULMBCS_AMBIGUOUS_ALL},
-    {0x201A, 0x201B,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x201C, 0x201D,  ULMBCS_AMBIGUOUS_ALL},
-    {0x201E, 0x201F,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2020, 0x2021,  ULMBCS_AMBIGUOUS_ALL},
-    {0x2022, 0x2024,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2025, 0x2025,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2026, 0x2026,  ULMBCS_AMBIGUOUS_ALL},
-    {0x2027, 0x2027,  ULMBCS_GRP_TW},
-    {0x2030, 0x2030,  ULMBCS_AMBIGUOUS_ALL},
-    {0x2031, 0x2031,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2032, 0x2033,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2035, 0x2035,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2039, 0x203A,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x203B, 0x203B,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x203C, 0x203C,  ULMBCS_GRP_EXCEPT},
-    {0x2074, 0x2074,  ULMBCS_GRP_KO},
-    {0x207F, 0x207F,  ULMBCS_GRP_EXCEPT},
-    {0x2081, 0x2084,  ULMBCS_GRP_KO},
-    {0x20A4, 0x20AC,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2103, 0x2109,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2111, 0x2120,  ULMBCS_AMBIGUOUS_SBCS},
-    /*zhujin: upgrade, for regressiont test, spr HKIA4YHTSU*/
-    {0x2121, 0x2121,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2122, 0x2126,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x212B, 0x212B,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2135, 0x2135,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2153, 0x2154,  ULMBCS_GRP_KO},
-    {0x215B, 0x215E,  ULMBCS_GRP_EXCEPT},
-    {0x2160, 0x2179,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2190, 0x2193,  ULMBCS_AMBIGUOUS_ALL},
-    {0x2194, 0x2195,  ULMBCS_GRP_EXCEPT},
-    {0x2196, 0x2199,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x21A8, 0x21A8,  ULMBCS_GRP_EXCEPT},
-    {0x21B8, 0x21B9,  ULMBCS_GRP_CN},
-    {0x21D0, 0x21D1,  ULMBCS_GRP_EXCEPT},
-    {0x21D2, 0x21D2,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x21D3, 0x21D3,  ULMBCS_GRP_EXCEPT},
-    {0x21D4, 0x21D4,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x21D5, 0x21D5,  ULMBCS_GRP_EXCEPT},
-    {0x21E7, 0x21E7,  ULMBCS_GRP_CN},
-    {0x2200, 0x2200,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2201, 0x2201,  ULMBCS_GRP_EXCEPT},
-    {0x2202, 0x2202,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2203, 0x2203,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2204, 0x2206,  ULMBCS_GRP_EXCEPT},
-    {0x2207, 0x2208,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2209, 0x220A,  ULMBCS_GRP_EXCEPT},
-    {0x220B, 0x220B,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x220F, 0x2215,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2219, 0x2219,  ULMBCS_GRP_EXCEPT},
-    {0x221A, 0x221A,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x221B, 0x221C,  ULMBCS_GRP_EXCEPT},
-    {0x221D, 0x221E,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x221F, 0x221F,  ULMBCS_GRP_EXCEPT},
-    {0x2220, 0x2220,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2223, 0x222A,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x222B, 0x223D,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2245, 0x2248,  ULMBCS_GRP_EXCEPT},
-    {0x224C, 0x224C,  ULMBCS_GRP_TW},
-    {0x2252, 0x2252,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2260, 0x2261,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2262, 0x2265,  ULMBCS_GRP_EXCEPT},
-    {0x2266, 0x226F,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2282, 0x2283,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2284, 0x2285,  ULMBCS_GRP_EXCEPT},
-    {0x2286, 0x2287,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2288, 0x2297,  ULMBCS_GRP_EXCEPT},
-    {0x2299, 0x22BF,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x22C0, 0x22C0,  ULMBCS_GRP_EXCEPT},
-    {0x2310, 0x2310,  ULMBCS_GRP_EXCEPT},
-    {0x2312, 0x2312,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2318, 0x2321,  ULMBCS_GRP_EXCEPT},
-    {0x2318, 0x2321,  ULMBCS_GRP_CN},
-    {0x2460, 0x24E9,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2500, 0x2500,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2501, 0x2501,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2502, 0x2502,  ULMBCS_AMBIGUOUS_ALL},
-    {0x2503, 0x2503,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x2504, 0x2505,  ULMBCS_GRP_TW},
-    {0x2506, 0x2665,  ULMBCS_AMBIGUOUS_ALL},
-    {0x2666, 0x2666,  ULMBCS_GRP_EXCEPT},
-    {0x2667, 0x2669,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x266A, 0x266A,  ULMBCS_AMBIGUOUS_ALL},
-    {0x266B, 0x266C,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x266D, 0x266D,  ULMBCS_AMBIGUOUS_MBCS},
-    {0x266E, 0x266E,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x266F, 0x266F,  ULMBCS_GRP_JA},
-    {0x2670, 0x2E7F,  ULMBCS_AMBIGUOUS_SBCS},
-    {0x2E80, 0xF861,  ULMBCS_AMBIGUOUS_MBCS},
-    {0xF862, 0xF8FF,  ULMBCS_GRP_EXCEPT},
-    {0xF900, 0xFA2D,  ULMBCS_AMBIGUOUS_MBCS},
-    {0xFB00, 0xFEFF,  ULMBCS_AMBIGUOUS_SBCS},
-    {0xFF01, 0xFFEE,  ULMBCS_AMBIGUOUS_MBCS},
-    {0xFFFF, 0xFFFF,  ULMBCS_GRP_UNICODE}
-};
-   
-static ulmbcs_byte_t 
-FindLMBCSUniRange(UChar uniChar)
-{
-   const struct _UniLMBCSGrpMap * pTable = UniLMBCSGrpMap;
-
-   while (uniChar > pTable->uniEndRange) 
-   {
-      pTable++;
-   }
-
-   if (uniChar >= pTable->uniStartRange) 
-   {
-      return pTable->GrpType;
-   }
-   return ULMBCS_GRP_UNICODE;
-}
-
-/* 
-We also ask the creator of a converter to send in a preferred locale 
-that we can use in resolving ambiguous mappings. They send the locale
-in as a string, and we map it, if possible, to one of the 
-LMBCS groups. We use this table, and the associated code, to 
-do the lookup: */
-
-/**************************************************
-  This table maps locale ID's to LMBCS opt groups.
-  The default return is group 0x01. Note that for
-  performance reasons, the table is sorted in
-  increasing alphabetic order, with the notable
-  exception of zhTW. This is to force the check
-  for Traditonal Chinese before dropping back to
-  Simplified.
-
-  Note too that the Latin-1 groups have been
-  commented out because it's the default, and
-  this shortens the table, allowing a serial
-  search to go quickly.
- *************************************************/
-
-static const struct _LocaleLMBCSGrpMap
-{
-   const char    *LocaleID;
-   const ulmbcs_byte_t OptGroup;
-} LocaleLMBCSGrpMap[] =
-{
-    {"ar", ULMBCS_GRP_AR},
-    {"be", ULMBCS_GRP_RU},
-    {"bg", ULMBCS_GRP_L2},
-   /* {"ca", ULMBCS_GRP_L1}, */
-    {"cs", ULMBCS_GRP_L2},
-   /* {"da", ULMBCS_GRP_L1}, */
-   /* {"de", ULMBCS_GRP_L1}, */
-    {"el", ULMBCS_GRP_GR},
-   /* {"en", ULMBCS_GRP_L1}, */
-   /* {"es", ULMBCS_GRP_L1}, */
-   /* {"et", ULMBCS_GRP_L1}, */
-   /* {"fi", ULMBCS_GRP_L1}, */
-   /* {"fr", ULMBCS_GRP_L1}, */
-    {"he", ULMBCS_GRP_HE},
-    {"hu", ULMBCS_GRP_L2},
-   /* {"is", ULMBCS_GRP_L1}, */
-   /* {"it", ULMBCS_GRP_L1}, */
-    {"iw", ULMBCS_GRP_HE},
-    {"ja", ULMBCS_GRP_JA},
-    {"ko", ULMBCS_GRP_KO},
-   /* {"lt", ULMBCS_GRP_L1}, */
-   /* {"lv", ULMBCS_GRP_L1}, */
-    {"mk", ULMBCS_GRP_RU},
-   /* {"nl", ULMBCS_GRP_L1}, */
-   /* {"no", ULMBCS_GRP_L1}, */
-    {"pl", ULMBCS_GRP_L2},
-   /* {"pt", ULMBCS_GRP_L1}, */
-    {"ro", ULMBCS_GRP_L2},
-    {"ru", ULMBCS_GRP_RU},
-    {"sh", ULMBCS_GRP_L2},
-    {"sk", ULMBCS_GRP_L2},
-    {"sl", ULMBCS_GRP_L2},
-    {"sq", ULMBCS_GRP_L2},
-    {"sr", ULMBCS_GRP_RU},
-   /* {"sv", ULMBCS_GRP_L1}, */
-    {"th", ULMBCS_GRP_TH},
-    {"tr", ULMBCS_GRP_TR},
-    {"uk", ULMBCS_GRP_RU},
-   /* {"vi", ULMBCS_GRP_L1}, */
-    {"zhTW", ULMBCS_GRP_TW},
-    {"zh", ULMBCS_GRP_CN},
-    {NULL, ULMBCS_GRP_L1}
-};
-
-
-static ulmbcs_byte_t 
-FindLMBCSLocale(const char *LocaleID)
-{
-   const struct _LocaleLMBCSGrpMap *pTable = LocaleLMBCSGrpMap;
-
-   if ((!LocaleID) || (!*LocaleID)) 
-   {
-      return 0;
-   }
-
-   while (pTable->LocaleID)
-   {
-      if (*pTable->LocaleID == *LocaleID) /* Check only first char for speed */
-      {
-         /* First char matches - check whole name, for entry-length */
-         if (uprv_strncmp(pTable->LocaleID, LocaleID, strlen(pTable->LocaleID)) == 0)
-            return pTable->OptGroup;
-      }
-      else
-      if (*pTable->LocaleID > *LocaleID) /* Sorted alphabetically - exit */
-         break;
-      pTable++;
-   }
-   return ULMBCS_GRP_L1;
-}
-
-
-/* 
-  Before we get to the main body of code, here's how we hook up to the rest 
-  of ICU. ICU converters are required to define a structure that includes 
-  some function pointers, and some common data, in the style of a C++
-  vtable. There is also room in there for converter-specific data. LMBCS
-  uses that converter-specific data to keep track of the 12 subconverters
-  we use, the optimization group, and the group (if any) that matches the 
-  locale. We have one structure instantiated for each of the 12 possible
-  optimization groups. To avoid typos & to avoid boring the reader, we 
-  put the declarations of these structures and functions into macros. To see 
-  the definitions of these structures, see unicode\ucnv_bld.h
-*/
-
-typedef struct
-  {
-    UConverterSharedData *OptGrpConverter[ULMBCS_GRP_LAST+1];    /* Converter per Opt. grp. */
-    uint8_t    OptGroup;                  /* default Opt. grp. for this LMBCS session */
-    uint8_t    localeConverterIndex;      /* reasonable locale match for index */
-  }
-UConverterDataLMBCS;
-
-static void _LMBCSClose(UConverter * _this);
-
-#define DECLARE_LMBCS_DATA(n) \
-static const UConverterImpl _LMBCSImpl##n={\
-    UCNV_LMBCS_##n,\
-    NULL,NULL,\
-    _LMBCSOpen##n,\
-    _LMBCSClose,\
-    NULL,\
-    _LMBCSToUnicodeWithOffsets,\
-    _LMBCSToUnicodeWithOffsets,\
-    _LMBCSFromUnicode,\
-    _LMBCSFromUnicode,\
-    NULL,\
-    NULL,\
-    NULL,\
-    NULL,\
-    _LMBCSSafeClone,\
-    ucnv_getCompleteUnicodeSet\
-};\
-static const UConverterStaticData _LMBCSStaticData##n={\
-  sizeof(UConverterStaticData),\
- "LMBCS-"  #n,\
-    0, UCNV_IBM, UCNV_LMBCS_##n, 1, 3,\
-    { 0x3f, 0, 0, 0 },1,FALSE,FALSE,0,0,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} \
-};\
-const UConverterSharedData _LMBCSData##n= \
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_LMBCSStaticData##n, &_LMBCSImpl##n);
-
- /* The only function we needed to duplicate 12 times was the 'open'
-function, which will do basically the same thing except set a  different
-optimization group. So, we put the common stuff into a worker function, 
-and set up another macro to stamp out the 12 open functions:*/
-#define DEFINE_LMBCS_OPEN(n) \
-static void \
-   _LMBCSOpen##n(UConverter* _this, UConverterLoadArgs* pArgs, UErrorCode* err) \
-{ _LMBCSOpenWorker(_this, pArgs, err, n); }
-
-
-
-/* Here's the open worker & the common close function */
-static void 
-_LMBCSOpenWorker(UConverter*  _this,
-                 UConverterLoadArgs *pArgs,
-                 UErrorCode*  err,
-                 ulmbcs_byte_t OptGroup)
-{
-    UConverterDataLMBCS * extraInfo = _this->extraInfo =
-        (UConverterDataLMBCS*)uprv_malloc (sizeof (UConverterDataLMBCS));
-    if(extraInfo != NULL)
-    {
-        UConverterNamePieces stackPieces;
-        UConverterLoadArgs stackArgs={ (int32_t)sizeof(UConverterLoadArgs) };
-        ulmbcs_byte_t i;
-
-        uprv_memset(extraInfo, 0, sizeof(UConverterDataLMBCS));
-
-        stackArgs.onlyTestIsLoadable = pArgs->onlyTestIsLoadable;
-
-        for (i=0; i <= ULMBCS_GRP_LAST && U_SUCCESS(*err); i++)         
-        {
-            if(OptGroupByteToCPName[i] != NULL) {
-                extraInfo->OptGrpConverter[i] = ucnv_loadSharedData(OptGroupByteToCPName[i], &stackPieces, &stackArgs, err);
-            }
-        }
-
-        if(U_FAILURE(*err) || pArgs->onlyTestIsLoadable) {
-            _LMBCSClose(_this);
-            return;
-        }
-        extraInfo->OptGroup = OptGroup;
-        extraInfo->localeConverterIndex = FindLMBCSLocale(pArgs->locale);
-    }
-    else
-    {
-        *err = U_MEMORY_ALLOCATION_ERROR;
-    }
-}
-
-static void 
-_LMBCSClose(UConverter *   _this) 
-{
-    if (_this->extraInfo != NULL)
-    {
-        ulmbcs_byte_t Ix;
-        UConverterDataLMBCS * extraInfo = (UConverterDataLMBCS *) _this->extraInfo;
-
-        for (Ix=0; Ix <= ULMBCS_GRP_LAST; Ix++)
-        {
-           if (extraInfo->OptGrpConverter[Ix] != NULL)
-              ucnv_unloadSharedDataIfReady(extraInfo->OptGrpConverter[Ix]);
-        }
-        if (!_this->isExtraLocal) {
-            uprv_free (_this->extraInfo);
-            _this->extraInfo = NULL;
-        }
-    }
-}
-
-typedef struct LMBCSClone {
-    UConverter cnv;
-    UConverterDataLMBCS lmbcs;
-} LMBCSClone;
-
-static UConverter * 
-_LMBCSSafeClone(const UConverter *cnv, 
-                void *stackBuffer, 
-                int32_t *pBufferSize, 
-                UErrorCode *status) {
-    LMBCSClone *newLMBCS;
-    UConverterDataLMBCS *extraInfo;
-    int32_t i;
-
-    if(*pBufferSize<=0) {
-        *pBufferSize=(int32_t)sizeof(LMBCSClone);
-        return NULL;
-    }
-
-    extraInfo=(UConverterDataLMBCS *)cnv->extraInfo;
-    newLMBCS=(LMBCSClone *)stackBuffer;
-
-    /* ucnv.c/ucnv_safeClone() copied the main UConverter already */
-
-    uprv_memcpy(&newLMBCS->lmbcs, extraInfo, sizeof(UConverterDataLMBCS));
-
-    /* share the subconverters */
-    for(i = 0; i <= ULMBCS_GRP_LAST; ++i) {
-        if(extraInfo->OptGrpConverter[i] != NULL) {
-            ucnv_incrementRefCount(extraInfo->OptGrpConverter[i]);
-        }
-    }
-
-    newLMBCS->cnv.extraInfo = &newLMBCS->lmbcs;
-    newLMBCS->cnv.isExtraLocal = TRUE;
-    return &newLMBCS->cnv;
-}
-
-/*
- * There used to be a _LMBCSGetUnicodeSet() function here (up to svn revision 20117)
- * which added all code points except for U+F6xx
- * because those cannot be represented in the Unicode group.
- * However, it turns out that windows-950 has roundtrips for all of U+F6xx
- * which means that LMBCS can convert all Unicode code points after all.
- * We now simply use ucnv_getCompleteUnicodeSet().
- *
- * This may need to be looked at again as Lotus uses _LMBCSGetUnicodeSet(). (091216)
- */
-
-/* 
-   Here's the basic helper function that we use when converting from
-   Unicode to LMBCS, and we suspect that a Unicode character will fit into 
-   one of the 12 groups. The return value is the number of bytes written 
-   starting at pStartLMBCS (if any).
-*/
-
-static size_t
-LMBCSConversionWorker (
-   UConverterDataLMBCS * extraInfo,    /* subconverters, opt & locale groups */
-   ulmbcs_byte_t group,                /* The group to try */
-   ulmbcs_byte_t  * pStartLMBCS,              /* where to put the results */
-   UChar * pUniChar,                   /* The input unicode character */
-   ulmbcs_byte_t * lastConverterIndex, /* output: track last successful group used */
-   UBool * groups_tried                /* output: track any unsuccessful groups */
-)   
-{
-   ulmbcs_byte_t  * pLMBCS = pStartLMBCS;
-   UConverterSharedData * xcnv = extraInfo->OptGrpConverter[group];
-
-   int bytesConverted;
-   uint32_t value;
-   ulmbcs_byte_t firstByte;
-
-   U_ASSERT(xcnv);
-   U_ASSERT(group<ULMBCS_GRP_UNICODE);
-
-   bytesConverted = ucnv_MBCSFromUChar32(xcnv, *pUniChar, &value, FALSE);
-
-   /* get the first result byte */
-   if(bytesConverted > 0) {
-      firstByte = (ulmbcs_byte_t)(value >> ((bytesConverted - 1) * 8));
-   } else {
-      /* most common failure mode is an unassigned character */
-      groups_tried[group] = TRUE;
-      return 0;
-   }
-
-   *lastConverterIndex = group;
-
-   /* All initial byte values in lower ascii range should have been caught by now,
-      except with the exception group.
-    */
-   U_ASSERT((firstByte <= ULMBCS_C0END) || (firstByte >= ULMBCS_C1START) || (group == ULMBCS_GRP_EXCEPT));
-   
-   /* use converted data: first write 0, 1 or two group bytes */
-   if (group != ULMBCS_GRP_EXCEPT && extraInfo->OptGroup != group)
-   {
-      *pLMBCS++ = group;
-      if (bytesConverted == 1 && group >= ULMBCS_DOUBLEOPTGROUP_START)
-      {
-         *pLMBCS++ = group;
-      }
-   }
-
-  /* don't emit control chars */
-   if ( bytesConverted == 1 && firstByte < 0x20 )
-      return 0;
-
-
-   /* then move over the converted data */
-   switch(bytesConverted)
-   {
-   case 4:
-      *pLMBCS++ = (ulmbcs_byte_t)(value >> 24);
-      U_FALLTHROUGH;
-   case 3:
-      *pLMBCS++ = (ulmbcs_byte_t)(value >> 16);
-      U_FALLTHROUGH;
-   case 2:
-      *pLMBCS++ = (ulmbcs_byte_t)(value >> 8);
-      U_FALLTHROUGH;
-   case 1:
-      *pLMBCS++ = (ulmbcs_byte_t)value;
-      U_FALLTHROUGH;
-   default:
-      /* will never occur */
-      break;
-   }
-
-   return (pLMBCS - pStartLMBCS);
-}
-
-
-/* This is a much simpler version of above, when we 
-know we are writing LMBCS using the Unicode group
-*/
-static size_t 
-LMBCSConvertUni(ulmbcs_byte_t * pLMBCS, UChar uniChar)  
-{
-     /* encode into LMBCS Unicode range */
-   uint8_t LowCh =   (uint8_t)(uniChar & 0x00FF);
-   uint8_t HighCh  = (uint8_t)(uniChar >> 8);
-
-   *pLMBCS++ = ULMBCS_GRP_UNICODE;
-
-   if (LowCh == 0)
-   {
-      *pLMBCS++ = ULMBCS_UNICOMPATZERO;
-      *pLMBCS++ = HighCh;
-   }
-   else
-   {
-      *pLMBCS++ = HighCh;
-      *pLMBCS++ = LowCh;
-   }
-   return ULMBCS_UNICODE_SIZE;
-}
-
-
-
-/* The main Unicode to LMBCS conversion function */
-static void 
-_LMBCSFromUnicode(UConverterFromUnicodeArgs*     args,
-                  UErrorCode*     err)
-{
-   ulmbcs_byte_t lastConverterIndex = 0;
-   UChar uniChar;
-   ulmbcs_byte_t  LMBCS[ULMBCS_CHARSIZE_MAX];
-   ulmbcs_byte_t  * pLMBCS;
-   int32_t bytes_written;
-   UBool groups_tried[ULMBCS_GRP_LAST+1];
-   UConverterDataLMBCS * extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo;
-   int sourceIndex = 0; 
-
-   /* Basic strategy: attempt to fill in local LMBCS 1-char buffer.(LMBCS)
-      If that succeeds, see if it will all fit into the target & copy it over 
-      if it does.
-
-      We try conversions in the following order:
-
-      1. Single-byte ascii & special fixed control chars (&null)
-      2. Look up group in table & try that (could be 
-            A) Unicode group
-            B) control group,
-            C) national encoding, 
-               or ambiguous SBCS or MBCS group (on to step 4...)
-        
-      3. If its ambiguous, try this order:
-         A) The optimization group
-         B) The locale group
-         C) The last group that succeeded with this string.
-         D) every other group that's relevent (single or double)
-         E) If its single-byte ambiguous, try the exceptions group
-
-      4. And as a grand fallback: Unicode
-   */
-
-    /*Fix for SPR#DJOE66JFN3 (Lotus)*/
-    ulmbcs_byte_t OldConverterIndex = 0;
-
-   while (args->source < args->sourceLimit && !U_FAILURE(*err))
-   {
-      /*Fix for SPR#DJOE66JFN3 (Lotus)*/
-      OldConverterIndex = extraInfo->localeConverterIndex;
-
-      if (args->target >= args->targetLimit)
-      {
-         *err = U_BUFFER_OVERFLOW_ERROR;
-         break;
-      }
-      uniChar = *(args->source);
-      bytes_written = 0;
-      pLMBCS = LMBCS;
-
-      /* check cases in rough order of how common they are, for speed */
-
-      /* single byte matches: strategy 1 */
-      /*Fix for SPR#DJOE66JFN3 (Lotus)*/
-      if((uniChar>=0x80) && (uniChar<=0xff)
-      /*Fix for SPR#JUYA6XAERU and TSAO7GL5NK (Lotus)*/ &&(uniChar!=0xB1) &&(uniChar!=0xD7) &&(uniChar!=0xF7)
-        &&(uniChar!=0xB0) &&(uniChar!=0xB4) &&(uniChar!=0xB6) &&(uniChar!=0xA7) &&(uniChar!=0xA8))
-      {
-            extraInfo->localeConverterIndex = ULMBCS_GRP_L1;
-      }
-      if (((uniChar > ULMBCS_C0END) && (uniChar < ULMBCS_C1START)) ||
-          uniChar == 0 || uniChar == ULMBCS_HT || uniChar == ULMBCS_CR || 
-          uniChar == ULMBCS_LF || uniChar == ULMBCS_123SYSTEMRANGE 
-          )
-      {
-         *pLMBCS++ = (ulmbcs_byte_t ) uniChar;
-         bytes_written = 1;
-      }
-
-
-      if (!bytes_written) 
-      {
-         /* Check by UNICODE range (Strategy 2) */
-         ulmbcs_byte_t group = FindLMBCSUniRange(uniChar);
-         
-         if (group == ULMBCS_GRP_UNICODE)  /* (Strategy 2A) */
-         {
-            pLMBCS += LMBCSConvertUni(pLMBCS,uniChar);
-            
-            bytes_written = (int32_t)(pLMBCS - LMBCS);
-         }
-         else if (group == ULMBCS_GRP_CTRL)  /* (Strategy 2B) */
-         {
-            /* Handle control characters here */
-            if (uniChar <= ULMBCS_C0END)
-            {
-               *pLMBCS++ = ULMBCS_GRP_CTRL;
-               *pLMBCS++ = (ulmbcs_byte_t)(ULMBCS_CTRLOFFSET + uniChar);
-            }
-            else if (uniChar >= ULMBCS_C1START && uniChar <= ULMBCS_C1START + ULMBCS_CTRLOFFSET)
-            {
-               *pLMBCS++ = ULMBCS_GRP_CTRL;
-               *pLMBCS++ = (ulmbcs_byte_t ) (uniChar & 0x00FF);
-            }
-            bytes_written = (int32_t)(pLMBCS - LMBCS);
-         }
-         else if (group < ULMBCS_GRP_UNICODE)  /* (Strategy 2C) */
-         {
-            /* a specific converter has been identified - use it */
-            bytes_written = (int32_t)LMBCSConversionWorker (
-                              extraInfo, group, pLMBCS, &uniChar, 
-                              &lastConverterIndex, groups_tried);
-         }
-         if (!bytes_written)    /* the ambiguous group cases  (Strategy 3) */
-         {
-            uprv_memset(groups_tried, 0, sizeof(groups_tried));
-
-            /* check for non-default optimization group (Strategy 3A )*/
-            if ((extraInfo->OptGroup != 1) && (ULMBCS_AMBIGUOUS_MATCH(group, extraInfo->OptGroup)))
-            {
-                /*zhujin: upgrade, merge #39299 here (Lotus) */
-                /*To make R5 compatible translation, look for exceptional group first for non-DBCS*/
-
-                if(extraInfo->localeConverterIndex < ULMBCS_DOUBLEOPTGROUP_START)
-                {
-                  bytes_written = LMBCSConversionWorker (extraInfo,
-                     ULMBCS_GRP_L1, pLMBCS, &uniChar,
-                     &lastConverterIndex, groups_tried);
-
-                  if(!bytes_written)
-                  {
-                     bytes_written = LMBCSConversionWorker (extraInfo,
-                         ULMBCS_GRP_EXCEPT, pLMBCS, &uniChar,
-                         &lastConverterIndex, groups_tried);
-                  }
-                  if(!bytes_written)
-                  {
-                      bytes_written = LMBCSConversionWorker (extraInfo,
-                          extraInfo->localeConverterIndex, pLMBCS, &uniChar,
-                          &lastConverterIndex, groups_tried);
-                  }
-                }
-                else
-                {
-                     bytes_written = LMBCSConversionWorker (extraInfo,
-                         extraInfo->localeConverterIndex, pLMBCS, &uniChar,
-                         &lastConverterIndex, groups_tried);
-                }
-            }
-            /* check for locale optimization group (Strategy 3B) */
-            if (!bytes_written && (extraInfo->localeConverterIndex) && (ULMBCS_AMBIGUOUS_MATCH(group, extraInfo->localeConverterIndex)))
-            {
-                bytes_written = (int32_t)LMBCSConversionWorker (extraInfo,
-                        extraInfo->localeConverterIndex, pLMBCS, &uniChar, &lastConverterIndex, groups_tried);
-            }
-            /* check for last optimization group used for this string (Strategy 3C) */
-            if (!bytes_written && (lastConverterIndex) && (ULMBCS_AMBIGUOUS_MATCH(group, lastConverterIndex)))
-            {
-                bytes_written = (int32_t)LMBCSConversionWorker (extraInfo,
-                        lastConverterIndex, pLMBCS, &uniChar, &lastConverterIndex, groups_tried);
-            }
-            if (!bytes_written)
-            {
-               /* just check every possible matching converter (Strategy 3D) */ 
-               ulmbcs_byte_t grp_start;
-               ulmbcs_byte_t grp_end;  
-               ulmbcs_byte_t grp_ix;
-               grp_start = (ulmbcs_byte_t)((group == ULMBCS_AMBIGUOUS_MBCS) 
-                        ? ULMBCS_DOUBLEOPTGROUP_START 
-                        :  ULMBCS_GRP_L1);
-               grp_end = (ulmbcs_byte_t)((group == ULMBCS_AMBIGUOUS_MBCS) 
-                        ? ULMBCS_GRP_LAST 
-                        :  ULMBCS_GRP_TH);
-               if(group == ULMBCS_AMBIGUOUS_ALL)
-               {
-                   grp_start = ULMBCS_GRP_L1;
-                   grp_end = ULMBCS_GRP_LAST;
-               }
-               for (grp_ix = grp_start;
-                   grp_ix <= grp_end && !bytes_written; 
-                    grp_ix++)
-               {
-                  if (extraInfo->OptGrpConverter [grp_ix] && !groups_tried [grp_ix])
-                  {
-                     bytes_written = (int32_t)LMBCSConversionWorker (extraInfo,
-                       grp_ix, pLMBCS, &uniChar, 
-                       &lastConverterIndex, groups_tried);
-                  }
-               }
-                /* a final conversion fallback to the exceptions group if its likely 
-                     to be single byte  (Strategy 3E) */
-               if (!bytes_written && grp_start == ULMBCS_GRP_L1)
-               {
-                  bytes_written = (int32_t)LMBCSConversionWorker (extraInfo,
-                     ULMBCS_GRP_EXCEPT, pLMBCS, &uniChar, 
-                     &lastConverterIndex, groups_tried);
-               }
-            }
-            /* all of our other strategies failed. Fallback to Unicode. (Strategy 4)*/
-            if (!bytes_written)
-            {
-
-               pLMBCS += LMBCSConvertUni(pLMBCS, uniChar);
-               bytes_written = (int32_t)(pLMBCS - LMBCS);
-            }
-         }
-      }
-  
-      /* we have a translation. increment source and write as much as posible to target */
-      args->source++;
-      pLMBCS = LMBCS;
-      while (args->target < args->targetLimit && bytes_written--)
-      {
-         *(args->target)++ = *pLMBCS++;
-         if (args->offsets)
-         {
-            *(args->offsets)++ = sourceIndex;
-         }
-      }
-      sourceIndex++;
-      if (bytes_written > 0)
-      {
-         /* write any bytes that didn't fit in target to the error buffer,
-            common code will move this to target if we get called back with
-            enough target room
-         */
-         uint8_t * pErrorBuffer = args->converter->charErrorBuffer;
-         *err = U_BUFFER_OVERFLOW_ERROR;
-         args->converter->charErrorBufferLength = (int8_t)bytes_written;
-         while (bytes_written--)
-         {
-            *pErrorBuffer++ = *pLMBCS++;
-         }
-      }
-      /*Fix for SPR#DJOE66JFN3 (Lotus)*/
-      extraInfo->localeConverterIndex = OldConverterIndex;
-   }     
-}
-
-
-/* Now, the Unicode from LMBCS section */
-
-
-/* A function to call when we are looking at the Unicode group byte in LMBCS */
-static UChar
-GetUniFromLMBCSUni(char const ** ppLMBCSin)  /* Called with LMBCS-style Unicode byte stream */
-{
-   uint8_t  HighCh = *(*ppLMBCSin)++;  /* Big-endian Unicode in LMBCS compatibility group*/
-   uint8_t  LowCh  = *(*ppLMBCSin)++;
-
-   if (HighCh == ULMBCS_UNICOMPATZERO ) 
-   {
-      HighCh = LowCh;
-      LowCh = 0; /* zero-byte in LSB special character */
-   }
-   return (UChar)((HighCh << 8) | LowCh);
-}
-
-
-
-/* CHECK_SOURCE_LIMIT: Helper macro to verify that there are at least'index' 
-   bytes left in source up to  sourceLimit.Errors appropriately if not.
-   If we reach the limit, then update the source pointer to there to consume
-   all input as required by ICU converter semantics.
-*/
-
-#define CHECK_SOURCE_LIMIT(index) \
-     if (args->source+index > args->sourceLimit){\
-         *err = U_TRUNCATED_CHAR_FOUND;\
-         args->source = args->sourceLimit;\
-         return 0xffff;}
-
-/* Return the Unicode representation for the current LMBCS character */
-
-static UChar32 
-_LMBCSGetNextUCharWorker(UConverterToUnicodeArgs*   args,
-                         UErrorCode*   err)
-{
-    UChar32 uniChar = 0;    /* an output UNICODE char */
-    ulmbcs_byte_t   CurByte; /* A byte from the input stream */
-
-    /* error check */
-    if (args->source >= args->sourceLimit)
-    {
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0xffff;
-    }
-    /* Grab first byte & save address for error recovery */
-    CurByte = *((ulmbcs_byte_t  *) (args->source++));
-   
-    /*
-    * at entry of each if clause:
-    * 1. 'CurByte' points at the first byte of a LMBCS character
-    * 2. '*source'points to the next byte of the source stream after 'CurByte' 
-    *
-    * the job of each if clause is:
-    * 1. set '*source' to point at the beginning of next char (nop if LMBCS char is only 1 byte)
-    * 2. set 'uniChar' up with the right Unicode value, or set 'err' appropriately
-    */
-   
-    /* First lets check the simple fixed values. */
-
-    if(((CurByte > ULMBCS_C0END) && (CurByte < ULMBCS_C1START)) /* ascii range */
-    ||  (CurByte == 0) 
-    ||  CurByte == ULMBCS_HT || CurByte == ULMBCS_CR 
-    ||  CurByte == ULMBCS_LF || CurByte == ULMBCS_123SYSTEMRANGE)
-    {
-        uniChar = CurByte;
-    }
-    else  
-    {
-        UConverterDataLMBCS * extraInfo;
-        ulmbcs_byte_t group; 
-        UConverterSharedData *cnv; 
-        
-        if (CurByte == ULMBCS_GRP_CTRL)  /* Control character group - no opt group update */
-        {
-            ulmbcs_byte_t  C0C1byte;
-            CHECK_SOURCE_LIMIT(1);
-            C0C1byte = *(args->source)++;
-            uniChar = (C0C1byte < ULMBCS_C1START) ? C0C1byte - ULMBCS_CTRLOFFSET : C0C1byte;
-        }
-        else 
-        if (CurByte == ULMBCS_GRP_UNICODE) /* Unicode compatibility group: BigEndian UTF16 */
-        {
-            CHECK_SOURCE_LIMIT(2);
-     
-            /* don't check for error indicators fffe/ffff below */
-            return GetUniFromLMBCSUni(&(args->source));
-        }
-        else if (CurByte <= ULMBCS_CTRLOFFSET)  
-        {
-            group = CurByte;                   /* group byte is in the source */
-            extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo;
-            if (group > ULMBCS_GRP_LAST || (cnv = extraInfo->OptGrpConverter[group]) == NULL)
-            {
-                /* this is not a valid group byte - no converter*/
-                *err = U_INVALID_CHAR_FOUND;
-            }      
-            else if (group >= ULMBCS_DOUBLEOPTGROUP_START)    /* double byte conversion */
-            {
-
-                CHECK_SOURCE_LIMIT(2);
-
-                /* check for LMBCS doubled-group-byte case */
-                if (*args->source == group) {
-                    /* single byte */
-                    ++args->source;
-                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, args->source, 1, FALSE);
-                    ++args->source;
-                } else {
-                    /* double byte */
-                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, args->source, 2, FALSE);
-                    args->source += 2;
-                }
-            }
-            else {                                  /* single byte conversion */
-                CHECK_SOURCE_LIMIT(1);
-                CurByte = *(args->source)++;
-        
-                if (CurByte >= ULMBCS_C1START)
-                {
-                    uniChar = _MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(cnv, CurByte);
-                }
-                else
-                {
-                    /* The non-optimizable oddballs where there is an explicit byte 
-                    * AND the second byte is not in the upper ascii range
-                    */
-                    char bytes[2];
-
-                    extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo;
-                    cnv = extraInfo->OptGrpConverter [ULMBCS_GRP_EXCEPT];  
-        
-                    /* Lookup value must include opt group */
-                    bytes[0] = group;
-                    bytes[1] = CurByte;
-                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, bytes, 2, FALSE);
-                }
-            }
-        }
-        else if (CurByte >= ULMBCS_C1START) /* group byte is implicit */
-        {
-            extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo;
-            group = extraInfo->OptGroup;
-            cnv = extraInfo->OptGrpConverter[group];
-            if (group >= ULMBCS_DOUBLEOPTGROUP_START)    /* double byte conversion */
-            {
-                if (!ucnv_MBCSIsLeadByte(cnv, CurByte))
-                {
-                    CHECK_SOURCE_LIMIT(0);
-
-                    /* let the MBCS conversion consume CurByte again */
-                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, args->source - 1, 1, FALSE);
-                }
-                else
-                {
-                    CHECK_SOURCE_LIMIT(1);
-                    /* let the MBCS conversion consume CurByte again */
-                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, args->source - 1, 2, FALSE);
-                    ++args->source;
-                }
-            }
-            else                                   /* single byte conversion */
-            {
-                uniChar = _MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(cnv, CurByte);
-            }
-        }
-    }
-    return uniChar;
-}
-
-
-/* The exported function that converts lmbcs to one or more
-   UChars - currently UTF-16
-*/
-static void 
-_LMBCSToUnicodeWithOffsets(UConverterToUnicodeArgs*    args,
-                     UErrorCode*    err)
-{
-   char LMBCS [ULMBCS_CHARSIZE_MAX];
-   UChar uniChar;    /* one output UNICODE char */
-   const char * saveSource; /* beginning of current code point */
-   const char * pStartLMBCS = args->source;  /* beginning of whole string */
-   const char * errSource = NULL; /* pointer to actual input in case an error occurs */
-   int8_t savebytes = 0;
-
-   /* Process from source to limit, or until error */
-   while (U_SUCCESS(*err) && args->sourceLimit > args->source && args->targetLimit > args->target)
-   {
-      saveSource = args->source; /* beginning of current code point */
-
-      if (args->converter->toULength) /* reassemble char from previous call */
-      {
-        const char *saveSourceLimit; 
-        size_t size_old = args->converter->toULength;
-
-         /* limit from source is either remainder of temp buffer, or user limit on source */
-        size_t size_new_maybe_1 = sizeof(LMBCS) - size_old;
-        size_t size_new_maybe_2 = args->sourceLimit - args->source;
-        size_t size_new = (size_new_maybe_1 < size_new_maybe_2) ? size_new_maybe_1 : size_new_maybe_2;
-         
-      
-        uprv_memcpy(LMBCS, args->converter->toUBytes, size_old);
-        uprv_memcpy(LMBCS + size_old, args->source, size_new);
-        saveSourceLimit = args->sourceLimit;
-        args->source = errSource = LMBCS;
-        args->sourceLimit = LMBCS+size_old+size_new;
-        savebytes = (int8_t)(size_old+size_new);
-        uniChar = (UChar) _LMBCSGetNextUCharWorker(args, err);
-        args->source = saveSource + ((args->source - LMBCS) - size_old);
-        args->sourceLimit = saveSourceLimit;
-
-        if (*err == U_TRUNCATED_CHAR_FOUND)
-        {
-            /* evil special case: source buffers so small a char spans more than 2 buffers */
-            args->converter->toULength = savebytes;
-            uprv_memcpy(args->converter->toUBytes, LMBCS, savebytes);
-            args->source = args->sourceLimit;
-            *err = U_ZERO_ERROR;
-            return;
-         }
-         else
-         {
-            /* clear the partial-char marker */
-            args->converter->toULength = 0;
-         }
-      }
-      else
-      {
-         errSource = saveSource;
-         uniChar = (UChar) _LMBCSGetNextUCharWorker(args, err);
-         savebytes = (int8_t)(args->source - saveSource);
-      }
-      if (U_SUCCESS(*err))
-      {
-         if (uniChar < 0xfffe)
-         {
-            *(args->target)++ = uniChar;
-            if(args->offsets)
-            {
-               *(args->offsets)++ = (int32_t)(saveSource - pStartLMBCS);
-            }
-         }
-         else if (uniChar == 0xfffe)
-         {
-            *err = U_INVALID_CHAR_FOUND;
-         }
-         else /* if (uniChar == 0xffff) */
-         {
-            *err = U_ILLEGAL_CHAR_FOUND;
-         }
-      }
-   }
-   /* if target ran out before source, return U_BUFFER_OVERFLOW_ERROR */
-   if (U_SUCCESS(*err) && args->sourceLimit > args->source && args->targetLimit <= args->target)
-   {
-      *err = U_BUFFER_OVERFLOW_ERROR;
-   }
-   else if (U_FAILURE(*err)) 
-   {
-      /* If character incomplete or unmappable/illegal, store it in toUBytes[] */
-      args->converter->toULength = savebytes;
-      if (savebytes > 0) {
-         uprv_memcpy(args->converter->toUBytes, errSource, savebytes);
-      }
-      if (*err == U_TRUNCATED_CHAR_FOUND) {
-         *err = U_ZERO_ERROR;
-      }
-   }
-}
-
-/* And now, the macroized declarations of data & functions: */
-DEFINE_LMBCS_OPEN(1)
-DEFINE_LMBCS_OPEN(2)
-DEFINE_LMBCS_OPEN(3)
-DEFINE_LMBCS_OPEN(4)
-DEFINE_LMBCS_OPEN(5)
-DEFINE_LMBCS_OPEN(6)
-DEFINE_LMBCS_OPEN(8)
-DEFINE_LMBCS_OPEN(11)
-DEFINE_LMBCS_OPEN(16)
-DEFINE_LMBCS_OPEN(17)
-DEFINE_LMBCS_OPEN(18)
-DEFINE_LMBCS_OPEN(19)
-
-
-DECLARE_LMBCS_DATA(1)
-DECLARE_LMBCS_DATA(2)
-DECLARE_LMBCS_DATA(3)
-DECLARE_LMBCS_DATA(4)
-DECLARE_LMBCS_DATA(5)
-DECLARE_LMBCS_DATA(6)
-DECLARE_LMBCS_DATA(8)
-DECLARE_LMBCS_DATA(11)
-DECLARE_LMBCS_DATA(16)
-DECLARE_LMBCS_DATA(17)
-DECLARE_LMBCS_DATA(18)
-DECLARE_LMBCS_DATA(19)
-
-#endif /* #if !UCONFIG_NO_LEGACY_CONVERSION */
diff --git a/source/common/ucnv_set.c b/source/common/ucnv_set.c
deleted file mode 100644 (file)
index c3933ab..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2003-2007, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  ucnv_set.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2004sep07
-*   created by: Markus W. Scherer
-*
-*   Conversion API functions using USet (ucnv_getUnicodeSet())
-*   moved here from ucnv.c for removing the dependency of other ucnv_
-*   implementation functions on the USet implementation.
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/uset.h"
-#include "unicode/ucnv.h"
-#include "ucnv_bld.h"
-#include "uset_imp.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-U_CAPI void U_EXPORT2
-ucnv_getUnicodeSet(const UConverter *cnv,
-                   USet *setFillIn,
-                   UConverterUnicodeSet whichSet,
-                   UErrorCode *pErrorCode) {
-    /* argument checking */
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return;
-    }
-    if(cnv==NULL || setFillIn==NULL || whichSet<UCNV_ROUNDTRIP_SET || UCNV_SET_COUNT<=whichSet) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    /* does this converter support this function? */
-    if(cnv->sharedData->impl->getUnicodeSet==NULL) {
-        *pErrorCode=U_UNSUPPORTED_ERROR;
-        return;
-    }
-
-    {
-        USetAdder sa={
-            NULL,
-            uset_add,
-            uset_addRange,
-            uset_addString,
-            uset_remove,
-            uset_removeRange
-        };
-        sa.set=setFillIn;
-
-        /* empty the set */
-        uset_clear(setFillIn);
-
-        /* call the converter to add the code points it supports */
-        cnv->sharedData->impl->getUnicodeSet(cnv, &sa, whichSet, pErrorCode);
-    }
-}
-
-#endif
diff --git a/source/common/ucnv_u16.c b/source/common/ucnv_u16.c
deleted file mode 100644 (file)
index 1458a8a..0000000
+++ /dev/null
@@ -1,1563 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*  
-**********************************************************************
-*   Copyright (C) 2002-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   file name:  ucnv_u16.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2002jul01
-*   created by: Markus W. Scherer
-*
-*   UTF-16 converter implementation. Used to be in ucnv_utf.c.
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "unicode/ucnv.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-#include "cmemory.h"
-
-enum {
-    UCNV_NEED_TO_WRITE_BOM=1
-};
-
-/*
- * The UTF-16 toUnicode implementation is also used for the Java-specific
- * "with BOM" variants of UTF-16BE and UTF-16LE.
- */
-static void
-_UTF16ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                           UErrorCode *pErrorCode);
-
-/* UTF-16BE ----------------------------------------------------------------- */
-
-#if U_IS_BIG_ENDIAN
-#   define _UTF16PEFromUnicodeWithOffsets   _UTF16BEFromUnicodeWithOffsets
-#else
-#   define _UTF16PEFromUnicodeWithOffsets   _UTF16LEFromUnicodeWithOffsets
-#endif
-
-
-static void
-_UTF16BEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
-                               UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    const UChar *source;
-    char *target;
-    int32_t *offsets;
-
-    uint32_t targetCapacity, length, sourceIndex;
-    UChar c, trail;
-    char overflow[4];
-
-    source=pArgs->source;
-    length=(int32_t)(pArgs->sourceLimit-source);
-    if(length<=0) {
-        /* no input, nothing to do */
-        return;
-    }
-
-    cnv=pArgs->converter;
-
-    /* write the BOM if necessary */
-    if(cnv->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
-        static const char bom[]={ (char)0xfe, (char)0xff };
-        ucnv_fromUWriteBytes(cnv,
-                             bom, 2,
-                             &pArgs->target, pArgs->targetLimit,
-                             &pArgs->offsets, -1,
-                             pErrorCode);
-        cnv->fromUnicodeStatus=0;
-    }
-
-    target=pArgs->target;
-    if(target >= pArgs->targetLimit) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        return;
-    }
-
-    targetCapacity=(uint32_t)(pArgs->targetLimit-target);
-    offsets=pArgs->offsets;
-    sourceIndex=0;
-
-    /* c!=0 indicates in several places outside the main loops that a surrogate was found */
-
-    if((c=(UChar)cnv->fromUChar32)!=0 && U16_IS_TRAIL(trail=*source) && targetCapacity>=4) {
-        /* the last buffer ended with a lead surrogate, output the surrogate pair */
-        ++source;
-        --length;
-        target[0]=(uint8_t)(c>>8);
-        target[1]=(uint8_t)c;
-        target[2]=(uint8_t)(trail>>8);
-        target[3]=(uint8_t)trail;
-        target+=4;
-        targetCapacity-=4;
-        if(offsets!=NULL) {
-            *offsets++=-1;
-            *offsets++=-1;
-            *offsets++=-1;
-            *offsets++=-1;
-        }
-        sourceIndex=1;
-        cnv->fromUChar32=c=0;
-    }
-
-    if(c==0) {
-        /* copy an even number of bytes for complete UChars */
-        uint32_t count=2*length;
-        if(count>targetCapacity) {
-            count=targetCapacity&~1;
-        }
-        /* count is even */
-        targetCapacity-=count;
-        count>>=1;
-        length-=count;
-
-        if(offsets==NULL) {
-            while(count>0) {
-                c=*source++;
-                if(U16_IS_SINGLE(c)) {
-                    target[0]=(uint8_t)(c>>8);
-                    target[1]=(uint8_t)c;
-                    target+=2;
-                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 && U16_IS_TRAIL(trail=*source)) {
-                    ++source;
-                    --count;
-                    target[0]=(uint8_t)(c>>8);
-                    target[1]=(uint8_t)c;
-                    target[2]=(uint8_t)(trail>>8);
-                    target[3]=(uint8_t)trail;
-                    target+=4;
-                } else {
-                    break;
-                }
-                --count;
-            }
-        } else {
-            while(count>0) {
-                c=*source++;
-                if(U16_IS_SINGLE(c)) {
-                    target[0]=(uint8_t)(c>>8);
-                    target[1]=(uint8_t)c;
-                    target+=2;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex++;
-                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 && U16_IS_TRAIL(trail=*source)) {
-                    ++source;
-                    --count;
-                    target[0]=(uint8_t)(c>>8);
-                    target[1]=(uint8_t)c;
-                    target[2]=(uint8_t)(trail>>8);
-                    target[3]=(uint8_t)trail;
-                    target+=4;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex;
-                    sourceIndex+=2;
-                } else {
-                    break;
-                }
-                --count;
-            }
-        }
-
-        if(count==0) {
-            /* done with the loop for complete UChars */
-            if(length>0 && targetCapacity>0) {
-                /*
-                 * there is more input and some target capacity -
-                 * it must be targetCapacity==1 because otherwise
-                 * the above would have copied more;
-                 * prepare for overflow output
-                 */
-                if(U16_IS_SINGLE(c=*source++)) {
-                    overflow[0]=(char)(c>>8);
-                    overflow[1]=(char)c;
-                    length=2; /* 2 bytes to output */
-                    c=0;
-                /* } else { keep c for surrogate handling, length will be set there */
-                }
-            } else {
-                length=0;
-                c=0;
-            }
-        } else {
-            /* keep c for surrogate handling, length will be set there */
-            targetCapacity+=2*count;
-        }
-    } else {
-        length=0; /* from here on, length counts the bytes in overflow[] */
-    }
-    
-    if(c!=0) {
-        /*
-         * c is a surrogate, and
-         * - source or target too short
-         * - or the surrogate is unmatched
-         */
-        length=0;
-        if(U16_IS_SURROGATE_LEAD(c)) {
-            if(source<pArgs->sourceLimit) {
-                if(U16_IS_TRAIL(trail=*source)) {
-                    /* output the surrogate pair, will overflow (see conditions comment above) */
-                    ++source;
-                    overflow[0]=(char)(c>>8);
-                    overflow[1]=(char)c;
-                    overflow[2]=(char)(trail>>8);
-                    overflow[3]=(char)trail;
-                    length=4; /* 4 bytes to output */
-                    c=0;
-                } else {
-                    /* unmatched lead surrogate */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                }
-            } else {
-                /* see if the trail surrogate is in the next buffer */
-            }
-        } else {
-            /* unmatched trail surrogate */
-            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-        }
-        cnv->fromUChar32=c;
-    }
-
-    if(length>0) {
-        /* output length bytes with overflow (length>targetCapacity>0) */
-        ucnv_fromUWriteBytes(cnv,
-                             overflow, length,
-                             (char **)&target, pArgs->targetLimit,
-                             &offsets, sourceIndex,
-                             pErrorCode);
-        targetCapacity=(uint32_t)(pArgs->targetLimit-(char *)target);
-    }
-
-    if(U_SUCCESS(*pErrorCode) && source<pArgs->sourceLimit && targetCapacity==0) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    /* write back the updated pointers */
-    pArgs->source=source;
-    pArgs->target=(char *)target;
-    pArgs->offsets=offsets;
-}
-
-static void
-_UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                             UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    const uint8_t *source;
-    UChar *target;
-    int32_t *offsets;
-
-    uint32_t targetCapacity, length, count, sourceIndex;
-    UChar c, trail;
-
-    if(pArgs->converter->mode<8) {
-        _UTF16ToUnicodeWithOffsets(pArgs, pErrorCode);
-        return;
-    }
-
-    cnv=pArgs->converter;
-    source=(const uint8_t *)pArgs->source;
-    length=(int32_t)((const uint8_t *)pArgs->sourceLimit-source);
-    if(length<=0 && cnv->toUnicodeStatus==0) {
-        /* no input, nothing to do */
-        return;
-    }
-
-    target=pArgs->target;
-    if(target >= pArgs->targetLimit) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        return;
-    }
-
-    targetCapacity=(uint32_t)(pArgs->targetLimit-target);
-    offsets=pArgs->offsets;
-    sourceIndex=0;
-    c=0;
-
-    /* complete a partial UChar or pair from the last call */
-    if(cnv->toUnicodeStatus!=0) {
-        /*
-         * special case: single byte from a previous buffer,
-         * where the byte turned out not to belong to a trail surrogate
-         * and the preceding, unmatched lead surrogate was put into toUBytes[]
-         * for error handling
-         */
-        cnv->toUBytes[0]=(uint8_t)cnv->toUnicodeStatus;
-        cnv->toULength=1;
-        cnv->toUnicodeStatus=0;
-    }
-    if((count=cnv->toULength)!=0) {
-        uint8_t *p=cnv->toUBytes;
-        do {
-            p[count++]=*source++;
-            ++sourceIndex;
-            --length;
-            if(count==2) {
-                c=((UChar)p[0]<<8)|p[1];
-                if(U16_IS_SINGLE(c)) {
-                    /* output the BMP code point */
-                    *target++=c;
-                    if(offsets!=NULL) {
-                        *offsets++=-1;
-                    }
-                    --targetCapacity;
-                    count=0;
-                    c=0;
-                    break;
-                } else if(U16_IS_SURROGATE_LEAD(c)) {
-                    /* continue collecting bytes for the trail surrogate */
-                    c=0; /* avoid unnecessary surrogate handling below */
-                } else {
-                    /* fall through to error handling for an unmatched trail surrogate */
-                    break;
-                }
-            } else if(count==4) {
-                c=((UChar)p[0]<<8)|p[1];
-                trail=((UChar)p[2]<<8)|p[3];
-                if(U16_IS_TRAIL(trail)) {
-                    /* output the surrogate pair */
-                    *target++=c;
-                    if(targetCapacity>=2) {
-                        *target++=trail;
-                        if(offsets!=NULL) {
-                            *offsets++=-1;
-                            *offsets++=-1;
-                        }
-                        targetCapacity-=2;
-                    } else /* targetCapacity==1 */ {
-                        targetCapacity=0;
-                        cnv->UCharErrorBuffer[0]=trail;
-                        cnv->UCharErrorBufferLength=1;
-                        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                    }
-                    count=0;
-                    c=0;
-                    break;
-                } else {
-                    /* unmatched lead surrogate, handle here for consistent toUBytes[] */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-
-                    /* back out reading the code unit after it */
-                    if(((const uint8_t *)pArgs->source-source)>=2) {
-                        source-=2;
-                    } else {
-                        /*
-                         * if the trail unit's first byte was in a previous buffer, then
-                         * we need to put it into a special place because toUBytes[] will be
-                         * used for the lead unit's bytes
-                         */
-                        cnv->toUnicodeStatus=0x100|p[2];
-                        --source;
-                    }
-                    cnv->toULength=2;
-
-                    /* write back the updated pointers */
-                    pArgs->source=(const char *)source;
-                    pArgs->target=target;
-                    pArgs->offsets=offsets;
-                    return;
-                }
-            }
-        } while(length>0);
-        cnv->toULength=(int8_t)count;
-    }
-
-    /* copy an even number of bytes for complete UChars */
-    count=2*targetCapacity;
-    if(count>length) {
-        count=length&~1;
-    }
-    if(c==0 && count>0) {
-        length-=count;
-        count>>=1;
-        targetCapacity-=count;
-        if(offsets==NULL) {
-            do {
-                c=((UChar)source[0]<<8)|source[1];
-                source+=2;
-                if(U16_IS_SINGLE(c)) {
-                    *target++=c;
-                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
-                          U16_IS_TRAIL(trail=((UChar)source[0]<<8)|source[1])
-                ) {
-                    source+=2;
-                    --count;
-                    *target++=c;
-                    *target++=trail;
-                } else {
-                    break;
-                }
-            } while(--count>0);
-        } else {
-            do {
-                c=((UChar)source[0]<<8)|source[1];
-                source+=2;
-                if(U16_IS_SINGLE(c)) {
-                    *target++=c;
-                    *offsets++=sourceIndex;
-                    sourceIndex+=2;
-                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
-                          U16_IS_TRAIL(trail=((UChar)source[0]<<8)|source[1])
-                ) {
-                    source+=2;
-                    --count;
-                    *target++=c;
-                    *target++=trail;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex;
-                    sourceIndex+=4;
-                } else {
-                    break;
-                }
-            } while(--count>0);
-        }
-
-        if(count==0) {
-            /* done with the loop for complete UChars */
-            c=0;
-        } else {
-            /* keep c for surrogate handling, trail will be set there */
-            length+=2*(count-1); /* one more byte pair was consumed than count decremented */
-            targetCapacity+=count;
-        }
-    }
-
-    if(c!=0) {
-        /*
-         * c is a surrogate, and
-         * - source or target too short
-         * - or the surrogate is unmatched
-         */
-        cnv->toUBytes[0]=(uint8_t)(c>>8);
-        cnv->toUBytes[1]=(uint8_t)c;
-        cnv->toULength=2;
-
-        if(U16_IS_SURROGATE_LEAD(c)) {
-            if(length>=2) {
-                if(U16_IS_TRAIL(trail=((UChar)source[0]<<8)|source[1])) {
-                    /* output the surrogate pair, will overflow (see conditions comment above) */
-                    source+=2;
-                    length-=2;
-                    *target++=c;
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                    }
-                    cnv->UCharErrorBuffer[0]=trail;
-                    cnv->UCharErrorBufferLength=1;
-                    cnv->toULength=0;
-                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                } else {
-                    /* unmatched lead surrogate */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                }
-            } else {
-                /* see if the trail surrogate is in the next buffer */
-            }
-        } else {
-            /* unmatched trail surrogate */
-            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-        }
-    }
-
-    if(U_SUCCESS(*pErrorCode)) {
-        /* check for a remaining source byte */
-        if(length>0) {
-            if(targetCapacity==0) {
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            } else {
-                /* it must be length==1 because otherwise the above would have copied more */
-                cnv->toUBytes[cnv->toULength++]=*source++;
-            }
-        }
-    }
-
-    /* write back the updated pointers */
-    pArgs->source=(const char *)source;
-    pArgs->target=target;
-    pArgs->offsets=offsets;
-}
-
-static UChar32
-_UTF16BEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
-    const uint8_t *s, *sourceLimit;
-    UChar32 c;
-
-    if(pArgs->converter->mode<8) {
-        return UCNV_GET_NEXT_UCHAR_USE_TO_U;
-    }
-
-    s=(const uint8_t *)pArgs->source;
-    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
-
-    if(s>=sourceLimit) {
-        /* no input */
-        *err=U_INDEX_OUTOFBOUNDS_ERROR;
-        return 0xffff;
-    }
-
-    if(s+2>sourceLimit) {
-        /* only one byte: truncated UChar */
-        pArgs->converter->toUBytes[0]=*s++;
-        pArgs->converter->toULength=1;
-        pArgs->source=(const char *)s;
-        *err = U_TRUNCATED_CHAR_FOUND;
-        return 0xffff;
-    }
-
-    /* get one UChar */
-    c=((UChar32)*s<<8)|s[1];
-    s+=2;
-
-    /* check for a surrogate pair */
-    if(U_IS_SURROGATE(c)) {
-        if(U16_IS_SURROGATE_LEAD(c)) {
-            if(s+2<=sourceLimit) {
-                UChar trail;
-
-                /* get a second UChar and see if it is a trail surrogate */
-                trail=((UChar)*s<<8)|s[1];
-                if(U16_IS_TRAIL(trail)) {
-                    c=U16_GET_SUPPLEMENTARY(c, trail);
-                    s+=2;
-                } else {
-                    /* unmatched lead surrogate */
-                    c=-2;
-                }
-            } else {
-                /* too few (2 or 3) bytes for a surrogate pair: truncated code point */
-                uint8_t *bytes=pArgs->converter->toUBytes;
-                s-=2;
-                pArgs->converter->toULength=(int8_t)(sourceLimit-s);
-                do {
-                    *bytes++=*s++;
-                } while(s<sourceLimit);
-
-                c=0xffff;
-                *err=U_TRUNCATED_CHAR_FOUND;
-            }
-        } else {
-            /* unmatched trail surrogate */
-            c=-2;
-        }
-
-        if(c<0) {
-            /* write the unmatched surrogate */
-            uint8_t *bytes=pArgs->converter->toUBytes;
-            pArgs->converter->toULength=2;
-            *bytes=*(s-2);
-            bytes[1]=*(s-1);
-
-            c=0xffff;
-            *err=U_ILLEGAL_CHAR_FOUND;
-        }
-    }
-
-    pArgs->source=(const char *)s;
-    return c;
-} 
-
-static void
-_UTF16BEReset(UConverter *cnv, UConverterResetChoice choice) {
-    if(choice<=UCNV_RESET_TO_UNICODE) {
-        /* reset toUnicode state */
-        if(UCNV_GET_VERSION(cnv)==0) {
-            cnv->mode=8; /* no BOM handling */
-        } else {
-            cnv->mode=0; /* Java-specific "UnicodeBig" requires BE BOM or no BOM */
-        }
-    }
-    if(choice!=UCNV_RESET_TO_UNICODE && UCNV_GET_VERSION(cnv)==1) {
-        /* reset fromUnicode for "UnicodeBig": prepare to output the UTF-16BE BOM */
-        cnv->fromUnicodeStatus=UCNV_NEED_TO_WRITE_BOM;
-    }
-}
-
-static void
-_UTF16BEOpen(UConverter *cnv,
-             UConverterLoadArgs *pArgs,
-             UErrorCode *pErrorCode) {
-    if(UCNV_GET_VERSION(cnv)<=1) {
-        _UTF16BEReset(cnv, UCNV_RESET_BOTH);
-    } else {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-    }
-}
-
-static const char *
-_UTF16BEGetName(const UConverter *cnv) {
-    if(UCNV_GET_VERSION(cnv)==0) {
-        return "UTF-16BE";
-    } else {
-        return "UTF-16BE,version=1";
-    }
-}
-
-static const UConverterImpl _UTF16BEImpl={
-    UCNV_UTF16_BigEndian,
-
-    NULL,
-    NULL,
-
-    _UTF16BEOpen,
-    NULL,
-    _UTF16BEReset,
-
-    _UTF16BEToUnicodeWithOffsets,
-    _UTF16BEToUnicodeWithOffsets,
-    _UTF16BEFromUnicodeWithOffsets,
-    _UTF16BEFromUnicodeWithOffsets,
-    _UTF16BEGetNextUChar,
-
-    NULL,
-    _UTF16BEGetName,
-    NULL,
-    NULL,
-    ucnv_getNonSurrogateUnicodeSet,
-
-    NULL,
-    NULL
-};
-
-static const UConverterStaticData _UTF16BEStaticData={
-    sizeof(UConverterStaticData),
-    "UTF-16BE",
-    1200, UCNV_IBM, UCNV_UTF16_BigEndian, 2, 2,
-    { 0xff, 0xfd, 0, 0 },2,FALSE,FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-
-const UConverterSharedData _UTF16BEData=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF16BEStaticData, &_UTF16BEImpl);
-
-/* UTF-16LE ----------------------------------------------------------------- */
-
-static void
-_UTF16LEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
-                               UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    const UChar *source;
-    char *target;
-    int32_t *offsets;
-
-    uint32_t targetCapacity, length, sourceIndex;
-    UChar c, trail;
-    char overflow[4];
-
-    source=pArgs->source;
-    length=(int32_t)(pArgs->sourceLimit-source);
-    if(length<=0) {
-        /* no input, nothing to do */
-        return;
-    }
-
-    cnv=pArgs->converter;
-
-    /* write the BOM if necessary */
-    if(cnv->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
-        static const char bom[]={ (char)0xff, (char)0xfe };
-        ucnv_fromUWriteBytes(cnv,
-                             bom, 2,
-                             &pArgs->target, pArgs->targetLimit,
-                             &pArgs->offsets, -1,
-                             pErrorCode);
-        cnv->fromUnicodeStatus=0;
-    }
-
-    target=pArgs->target;
-    if(target >= pArgs->targetLimit) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        return;
-    }
-
-    targetCapacity=(uint32_t)(pArgs->targetLimit-pArgs->target);
-    offsets=pArgs->offsets;
-    sourceIndex=0;
-
-    /* c!=0 indicates in several places outside the main loops that a surrogate was found */
-
-    if((c=(UChar)cnv->fromUChar32)!=0 && U16_IS_TRAIL(trail=*source) && targetCapacity>=4) {
-        /* the last buffer ended with a lead surrogate, output the surrogate pair */
-        ++source;
-        --length;
-        target[0]=(uint8_t)c;
-        target[1]=(uint8_t)(c>>8);
-        target[2]=(uint8_t)trail;
-        target[3]=(uint8_t)(trail>>8);
-        target+=4;
-        targetCapacity-=4;
-        if(offsets!=NULL) {
-            *offsets++=-1;
-            *offsets++=-1;
-            *offsets++=-1;
-            *offsets++=-1;
-        }
-        sourceIndex=1;
-        cnv->fromUChar32=c=0;
-    }
-
-    if(c==0) {
-        /* copy an even number of bytes for complete UChars */
-        uint32_t count=2*length;
-        if(count>targetCapacity) {
-            count=targetCapacity&~1;
-        }
-        /* count is even */
-        targetCapacity-=count;
-        count>>=1;
-        length-=count;
-
-        if(offsets==NULL) {
-            while(count>0) {
-                c=*source++;
-                if(U16_IS_SINGLE(c)) {
-                    target[0]=(uint8_t)c;
-                    target[1]=(uint8_t)(c>>8);
-                    target+=2;
-                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 && U16_IS_TRAIL(trail=*source)) {
-                    ++source;
-                    --count;
-                    target[0]=(uint8_t)c;
-                    target[1]=(uint8_t)(c>>8);
-                    target[2]=(uint8_t)trail;
-                    target[3]=(uint8_t)(trail>>8);
-                    target+=4;
-                } else {
-                    break;
-                }
-                --count;
-            }
-        } else {
-            while(count>0) {
-                c=*source++;
-                if(U16_IS_SINGLE(c)) {
-                    target[0]=(uint8_t)c;
-                    target[1]=(uint8_t)(c>>8);
-                    target+=2;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex++;
-                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 && U16_IS_TRAIL(trail=*source)) {
-                    ++source;
-                    --count;
-                    target[0]=(uint8_t)c;
-                    target[1]=(uint8_t)(c>>8);
-                    target[2]=(uint8_t)trail;
-                    target[3]=(uint8_t)(trail>>8);
-                    target+=4;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex;
-                    sourceIndex+=2;
-                } else {
-                    break;
-                }
-                --count;
-            }
-        }
-
-        if(count==0) {
-            /* done with the loop for complete UChars */
-            if(length>0 && targetCapacity>0) {
-                /*
-                 * there is more input and some target capacity -
-                 * it must be targetCapacity==1 because otherwise
-                 * the above would have copied more;
-                 * prepare for overflow output
-                 */
-                if(U16_IS_SINGLE(c=*source++)) {
-                    overflow[0]=(char)c;
-                    overflow[1]=(char)(c>>8);
-                    length=2; /* 2 bytes to output */
-                    c=0;
-                /* } else { keep c for surrogate handling, length will be set there */
-                }
-            } else {
-                length=0;
-                c=0;
-            }
-        } else {
-            /* keep c for surrogate handling, length will be set there */
-            targetCapacity+=2*count;
-        }
-    } else {
-        length=0; /* from here on, length counts the bytes in overflow[] */
-    }
-    
-    if(c!=0) {
-        /*
-         * c is a surrogate, and
-         * - source or target too short
-         * - or the surrogate is unmatched
-         */
-        length=0;
-        if(U16_IS_SURROGATE_LEAD(c)) {
-            if(source<pArgs->sourceLimit) {
-                if(U16_IS_TRAIL(trail=*source)) {
-                    /* output the surrogate pair, will overflow (see conditions comment above) */
-                    ++source;
-                    overflow[0]=(char)c;
-                    overflow[1]=(char)(c>>8);
-                    overflow[2]=(char)trail;
-                    overflow[3]=(char)(trail>>8);
-                    length=4; /* 4 bytes to output */
-                    c=0;
-                } else {
-                    /* unmatched lead surrogate */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                }
-            } else {
-                /* see if the trail surrogate is in the next buffer */
-            }
-        } else {
-            /* unmatched trail surrogate */
-            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-        }
-        cnv->fromUChar32=c;
-    }
-
-    if(length>0) {
-        /* output length bytes with overflow (length>targetCapacity>0) */
-        ucnv_fromUWriteBytes(cnv,
-                             overflow, length,
-                             &target, pArgs->targetLimit,
-                             &offsets, sourceIndex,
-                             pErrorCode);
-        targetCapacity=(uint32_t)(pArgs->targetLimit-(char *)target);
-    }
-
-    if(U_SUCCESS(*pErrorCode) && source<pArgs->sourceLimit && targetCapacity==0) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    /* write back the updated pointers */
-    pArgs->source=source;
-    pArgs->target=target;
-    pArgs->offsets=offsets;
-}
-
-static void
-_UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                             UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    const uint8_t *source;
-    UChar *target;
-    int32_t *offsets;
-
-    uint32_t targetCapacity, length, count, sourceIndex;
-    UChar c, trail;
-
-    if(pArgs->converter->mode<8) {
-        _UTF16ToUnicodeWithOffsets(pArgs, pErrorCode);
-        return;
-    }
-
-    cnv=pArgs->converter;
-    source=(const uint8_t *)pArgs->source;
-    length=(int32_t)((const uint8_t *)pArgs->sourceLimit-source);
-    if(length<=0 && cnv->toUnicodeStatus==0) {
-        /* no input, nothing to do */
-        return;
-    }
-
-    target=pArgs->target;
-    if(target >= pArgs->targetLimit) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        return;
-    }
-
-    targetCapacity=(uint32_t)(pArgs->targetLimit-pArgs->target);
-    offsets=pArgs->offsets;
-    sourceIndex=0;
-    c=0;
-
-    /* complete a partial UChar or pair from the last call */
-    if(cnv->toUnicodeStatus!=0) {
-        /*
-         * special case: single byte from a previous buffer,
-         * where the byte turned out not to belong to a trail surrogate
-         * and the preceding, unmatched lead surrogate was put into toUBytes[]
-         * for error handling
-         */
-        cnv->toUBytes[0]=(uint8_t)cnv->toUnicodeStatus;
-        cnv->toULength=1;
-        cnv->toUnicodeStatus=0;
-    }
-    if((count=cnv->toULength)!=0) {
-        uint8_t *p=cnv->toUBytes;
-        do {
-            p[count++]=*source++;
-            ++sourceIndex;
-            --length;
-            if(count==2) {
-                c=((UChar)p[1]<<8)|p[0];
-                if(U16_IS_SINGLE(c)) {
-                    /* output the BMP code point */
-                    *target++=c;
-                    if(offsets!=NULL) {
-                        *offsets++=-1;
-                    }
-                    --targetCapacity;
-                    count=0;
-                    c=0;
-                    break;
-                } else if(U16_IS_SURROGATE_LEAD(c)) {
-                    /* continue collecting bytes for the trail surrogate */
-                    c=0; /* avoid unnecessary surrogate handling below */
-                } else {
-                    /* fall through to error handling for an unmatched trail surrogate */
-                    break;
-                }
-            } else if(count==4) {
-                c=((UChar)p[1]<<8)|p[0];
-                trail=((UChar)p[3]<<8)|p[2];
-                if(U16_IS_TRAIL(trail)) {
-                    /* output the surrogate pair */
-                    *target++=c;
-                    if(targetCapacity>=2) {
-                        *target++=trail;
-                        if(offsets!=NULL) {
-                            *offsets++=-1;
-                            *offsets++=-1;
-                        }
-                        targetCapacity-=2;
-                    } else /* targetCapacity==1 */ {
-                        targetCapacity=0;
-                        cnv->UCharErrorBuffer[0]=trail;
-                        cnv->UCharErrorBufferLength=1;
-                        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                    }
-                    count=0;
-                    c=0;
-                    break;
-                } else {
-                    /* unmatched lead surrogate, handle here for consistent toUBytes[] */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-
-                    /* back out reading the code unit after it */
-                    if(((const uint8_t *)pArgs->source-source)>=2) {
-                        source-=2;
-                    } else {
-                        /*
-                         * if the trail unit's first byte was in a previous buffer, then
-                         * we need to put it into a special place because toUBytes[] will be
-                         * used for the lead unit's bytes
-                         */
-                        cnv->toUnicodeStatus=0x100|p[2];
-                        --source;
-                    }
-                    cnv->toULength=2;
-
-                    /* write back the updated pointers */
-                    pArgs->source=(const char *)source;
-                    pArgs->target=target;
-                    pArgs->offsets=offsets;
-                    return;
-                }
-            }
-        } while(length>0);
-        cnv->toULength=(int8_t)count;
-    }
-
-    /* copy an even number of bytes for complete UChars */
-    count=2*targetCapacity;
-    if(count>length) {
-        count=length&~1;
-    }
-    if(c==0 && count>0) {
-        length-=count;
-        count>>=1;
-        targetCapacity-=count;
-        if(offsets==NULL) {
-            do {
-                c=((UChar)source[1]<<8)|source[0];
-                source+=2;
-                if(U16_IS_SINGLE(c)) {
-                    *target++=c;
-                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
-                          U16_IS_TRAIL(trail=((UChar)source[1]<<8)|source[0])
-                ) {
-                    source+=2;
-                    --count;
-                    *target++=c;
-                    *target++=trail;
-                } else {
-                    break;
-                }
-            } while(--count>0);
-        } else {
-            do {
-                c=((UChar)source[1]<<8)|source[0];
-                source+=2;
-                if(U16_IS_SINGLE(c)) {
-                    *target++=c;
-                    *offsets++=sourceIndex;
-                    sourceIndex+=2;
-                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
-                          U16_IS_TRAIL(trail=((UChar)source[1]<<8)|source[0])
-                ) {
-                    source+=2;
-                    --count;
-                    *target++=c;
-                    *target++=trail;
-                    *offsets++=sourceIndex;
-                    *offsets++=sourceIndex;
-                    sourceIndex+=4;
-                } else {
-                    break;
-                }
-            } while(--count>0);
-        }
-
-        if(count==0) {
-            /* done with the loop for complete UChars */
-            c=0;
-        } else {
-            /* keep c for surrogate handling, trail will be set there */
-            length+=2*(count-1); /* one more byte pair was consumed than count decremented */
-            targetCapacity+=count;
-        }
-    }
-
-    if(c!=0) {
-        /*
-         * c is a surrogate, and
-         * - source or target too short
-         * - or the surrogate is unmatched
-         */
-        cnv->toUBytes[0]=(uint8_t)c;
-        cnv->toUBytes[1]=(uint8_t)(c>>8);
-        cnv->toULength=2;
-
-        if(U16_IS_SURROGATE_LEAD(c)) {
-            if(length>=2) {
-                if(U16_IS_TRAIL(trail=((UChar)source[1]<<8)|source[0])) {
-                    /* output the surrogate pair, will overflow (see conditions comment above) */
-                    source+=2;
-                    length-=2;
-                    *target++=c;
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                    }
-                    cnv->UCharErrorBuffer[0]=trail;
-                    cnv->UCharErrorBufferLength=1;
-                    cnv->toULength=0;
-                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                } else {
-                    /* unmatched lead surrogate */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                }
-            } else {
-                /* see if the trail surrogate is in the next buffer */
-            }
-        } else {
-            /* unmatched trail surrogate */
-            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-        }
-    }
-
-    if(U_SUCCESS(*pErrorCode)) {
-        /* check for a remaining source byte */
-        if(length>0) {
-            if(targetCapacity==0) {
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            } else {
-                /* it must be length==1 because otherwise the above would have copied more */
-                cnv->toUBytes[cnv->toULength++]=*source++;
-            }
-        }
-    }
-
-    /* write back the updated pointers */
-    pArgs->source=(const char *)source;
-    pArgs->target=target;
-    pArgs->offsets=offsets;
-}
-
-static UChar32
-_UTF16LEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
-    const uint8_t *s, *sourceLimit;
-    UChar32 c;
-
-    if(pArgs->converter->mode<8) {
-        return UCNV_GET_NEXT_UCHAR_USE_TO_U;
-    }
-
-    s=(const uint8_t *)pArgs->source;
-    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
-
-    if(s>=sourceLimit) {
-        /* no input */
-        *err=U_INDEX_OUTOFBOUNDS_ERROR;
-        return 0xffff;
-    }
-
-    if(s+2>sourceLimit) {
-        /* only one byte: truncated UChar */
-        pArgs->converter->toUBytes[0]=*s++;
-        pArgs->converter->toULength=1;
-        pArgs->source=(const char *)s;
-        *err = U_TRUNCATED_CHAR_FOUND;
-        return 0xffff;
-    }
-
-    /* get one UChar */
-    c=((UChar32)s[1]<<8)|*s;
-    s+=2;
-
-    /* check for a surrogate pair */
-    if(U_IS_SURROGATE(c)) {
-        if(U16_IS_SURROGATE_LEAD(c)) {
-            if(s+2<=sourceLimit) {
-                UChar trail;
-
-                /* get a second UChar and see if it is a trail surrogate */
-                trail=((UChar)s[1]<<8)|*s;
-                if(U16_IS_TRAIL(trail)) {
-                    c=U16_GET_SUPPLEMENTARY(c, trail);
-                    s+=2;
-                } else {
-                    /* unmatched lead surrogate */
-                    c=-2;
-                }
-            } else {
-                /* too few (2 or 3) bytes for a surrogate pair: truncated code point */
-                uint8_t *bytes=pArgs->converter->toUBytes;
-                s-=2;
-                pArgs->converter->toULength=(int8_t)(sourceLimit-s);
-                do {
-                    *bytes++=*s++;
-                } while(s<sourceLimit);
-
-                c=0xffff;
-                *err=U_TRUNCATED_CHAR_FOUND;
-            }
-        } else {
-            /* unmatched trail surrogate */
-            c=-2;
-        }
-
-        if(c<0) {
-            /* write the unmatched surrogate */
-            uint8_t *bytes=pArgs->converter->toUBytes;
-            pArgs->converter->toULength=2;
-            *bytes=*(s-2);
-            bytes[1]=*(s-1);
-
-            c=0xffff;
-            *err=U_ILLEGAL_CHAR_FOUND;
-        }
-    }
-
-    pArgs->source=(const char *)s;
-    return c;
-} 
-
-static void
-_UTF16LEReset(UConverter *cnv, UConverterResetChoice choice) {
-    if(choice<=UCNV_RESET_TO_UNICODE) {
-        /* reset toUnicode state */
-        if(UCNV_GET_VERSION(cnv)==0) {
-            cnv->mode=8; /* no BOM handling */
-        } else {
-            cnv->mode=0; /* Java-specific "UnicodeLittle" requires LE BOM or no BOM */
-        }
-    }
-    if(choice!=UCNV_RESET_TO_UNICODE && UCNV_GET_VERSION(cnv)==1) {
-        /* reset fromUnicode for "UnicodeLittle": prepare to output the UTF-16LE BOM */
-        cnv->fromUnicodeStatus=UCNV_NEED_TO_WRITE_BOM;
-    }
-}
-
-static void
-_UTF16LEOpen(UConverter *cnv,
-             UConverterLoadArgs *pArgs,
-             UErrorCode *pErrorCode) {
-    if(UCNV_GET_VERSION(cnv)<=1) {
-        _UTF16LEReset(cnv, UCNV_RESET_BOTH);
-    } else {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-    }
-}
-
-static const char *
-_UTF16LEGetName(const UConverter *cnv) {
-    if(UCNV_GET_VERSION(cnv)==0) {
-        return "UTF-16LE";
-    } else {
-        return "UTF-16LE,version=1";
-    }
-}
-
-static const UConverterImpl _UTF16LEImpl={
-    UCNV_UTF16_LittleEndian,
-
-    NULL,
-    NULL,
-
-    _UTF16LEOpen,
-    NULL,
-    _UTF16LEReset,
-
-    _UTF16LEToUnicodeWithOffsets,
-    _UTF16LEToUnicodeWithOffsets,
-    _UTF16LEFromUnicodeWithOffsets,
-    _UTF16LEFromUnicodeWithOffsets,
-    _UTF16LEGetNextUChar,
-
-    NULL,
-    _UTF16LEGetName,
-    NULL,
-    NULL,
-    ucnv_getNonSurrogateUnicodeSet,
-
-    NULL,
-    NULL
-};
-
-
-static const UConverterStaticData _UTF16LEStaticData={
-    sizeof(UConverterStaticData),
-    "UTF-16LE",
-    1202, UCNV_IBM, UCNV_UTF16_LittleEndian, 2, 2,
-    { 0xfd, 0xff, 0, 0 },2,FALSE,FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-
-const UConverterSharedData _UTF16LEData=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF16LEStaticData, &_UTF16LEImpl);
-
-/* UTF-16 (Detect BOM) ------------------------------------------------------ */
-
-/*
- * Detect a BOM at the beginning of the stream and select UTF-16BE or UTF-16LE
- * accordingly.
- * This is a simpler version of the UTF-32 converter, with
- * fewer states for shorter BOMs.
- *
- * State values:
- * 0    initial state
- * 1    saw first byte
- * 2..5 -
- * 6..7 see _UTF16ToUnicodeWithOffsets() comments in state 1
- * 8    UTF-16BE mode
- * 9    UTF-16LE mode
- *
- * During detection: state==number of initial bytes seen so far.
- *
- * On output, emit U+FEFF as the first code point.
- *
- * Variants:
- * - UTF-16,version=1 (Java "Unicode" encoding) treats a missing BOM as an error.
- * - UTF-16BE,version=1 (Java "UnicodeBig" encoding) and
- *   UTF-16LE,version=1 (Java "UnicodeLittle" encoding) treat a reverse BOM as an error.
- */
-
-static void
-_UTF16Reset(UConverter *cnv, UConverterResetChoice choice) {
-    if(choice<=UCNV_RESET_TO_UNICODE) {
-        /* reset toUnicode: state=0 */
-        cnv->mode=0;
-    }
-    if(choice!=UCNV_RESET_TO_UNICODE) {
-        /* reset fromUnicode: prepare to output the UTF-16PE BOM */
-        cnv->fromUnicodeStatus=UCNV_NEED_TO_WRITE_BOM;
-    }
-}
-
-static const UConverterSharedData _UTF16v2Data;
-
-static void
-_UTF16Open(UConverter *cnv,
-           UConverterLoadArgs *pArgs,
-           UErrorCode *pErrorCode) {
-    if(UCNV_GET_VERSION(cnv)<=2) {
-        if(UCNV_GET_VERSION(cnv)==2 && !pArgs->onlyTestIsLoadable) {
-            /*
-             * Switch implementation, and switch the staticData that's different
-             * and was copied into the UConverter.
-             * (See ucnv_createConverterFromSharedData() in ucnv_bld.c.)
-             * UTF-16,version=2 fromUnicode() always writes a big-endian byte stream.
-             */
-            cnv->sharedData=(UConverterSharedData*)&_UTF16v2Data;
-            uprv_memcpy(cnv->subChars, _UTF16v2Data.staticData->subChar, UCNV_MAX_SUBCHAR_LEN);
-        }
-        _UTF16Reset(cnv, UCNV_RESET_BOTH);
-    } else {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-    }
-}
-
-static const char *
-_UTF16GetName(const UConverter *cnv) {
-    if(UCNV_GET_VERSION(cnv)==0) {
-        return "UTF-16";
-    } else if(UCNV_GET_VERSION(cnv)==1) {
-        return "UTF-16,version=1";
-    } else {
-        return "UTF-16,version=2";
-    }
-}
-
-const UConverterSharedData _UTF16Data;
-
-#define IS_UTF16BE(cnv) ((cnv)->sharedData==&_UTF16BEData)
-#define IS_UTF16LE(cnv) ((cnv)->sharedData==&_UTF16LEData)
-#define IS_UTF16(cnv) ((cnv)->sharedData==&_UTF16Data || (cnv)->sharedData==&_UTF16v2Data)
-
-static void
-_UTF16ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                           UErrorCode *pErrorCode) {
-    UConverter *cnv=pArgs->converter;
-    const char *source=pArgs->source;
-    const char *sourceLimit=pArgs->sourceLimit;
-    int32_t *offsets=pArgs->offsets;
-
-    int32_t state, offsetDelta;
-    uint8_t b;
-
-    state=cnv->mode;
-
-    /*
-     * If we detect a BOM in this buffer, then we must add the BOM size to the
-     * offsets because the actual converter function will not see and count the BOM.
-     * offsetDelta will have the number of the BOM bytes that are in the current buffer.
-     */
-    offsetDelta=0;
-
-    while(source<sourceLimit && U_SUCCESS(*pErrorCode)) {
-        switch(state) {
-        case 0:
-            cnv->toUBytes[0]=(uint8_t)*source++;
-            cnv->toULength=1;
-            state=1;
-            break;
-        case 1:
-            /*
-             * Only inside this switch case can the state variable
-             * temporarily take two additional values:
-             * 6: BOM error, continue with BE
-             * 7: BOM error, continue with LE
-             */
-            b=*source;
-            if(cnv->toUBytes[0]==0xfe && b==0xff) {
-                if(IS_UTF16LE(cnv)) {
-                    state=7; /* illegal reverse BOM for Java "UnicodeLittle" */
-                } else {
-                    state=8; /* detect UTF-16BE */
-                }
-            } else if(cnv->toUBytes[0]==0xff && b==0xfe) {
-                if(IS_UTF16BE(cnv)) {
-                    state=6; /* illegal reverse BOM for Java "UnicodeBig" */
-                } else {
-                    state=9; /* detect UTF-16LE */
-                }
-            } else if((IS_UTF16(cnv) && UCNV_GET_VERSION(cnv)==1)) {
-                state=6; /* illegal missing BOM for Java "Unicode" */
-            }
-            if(state>=8) {
-                /* BOM detected, consume it */
-                ++source;
-                cnv->toULength=0;
-                offsetDelta=(int32_t)(source-pArgs->source);
-            } else if(state<6) {
-                /* ok: no BOM, and not a reverse BOM */
-                if(source!=pArgs->source) {
-                    /* reset the source for a correct first offset */
-                    source=pArgs->source;
-                    cnv->toULength=0;
-                }
-                if(IS_UTF16LE(cnv)) {
-                    /* Make Java "UnicodeLittle" default to LE. */
-                    state=9;
-                } else {
-                    /* Make standard UTF-16 and Java "UnicodeBig" default to BE. */
-                    state=8;
-                }
-            } else {
-                /*
-                 * error: missing BOM, or reverse BOM
-                 * UTF-16,version=1: Java-specific "Unicode" requires a BOM.
-                 * UTF-16BE,version=1: Java-specific "UnicodeBig" requires a BE BOM or no BOM.
-                 * UTF-16LE,version=1: Java-specific "UnicodeLittle" requires an LE BOM or no BOM.
-                 */
-                /* report the non-BOM or reverse BOM as an illegal sequence */
-                cnv->toUBytes[1]=b;
-                cnv->toULength=2;
-                pArgs->source=source+1;
-                /* continue with conversion if the callback resets the error */
-                /*
-                 * Make Java "Unicode" default to BE like standard UTF-16.
-                 * Make Java "UnicodeBig" and "UnicodeLittle" default
-                 * to their normal endiannesses.
-                 */
-                cnv->mode=state+2;
-                *pErrorCode=U_ILLEGAL_ESCAPE_SEQUENCE;
-                return;
-            }
-            /* convert the rest of the stream */
-            cnv->mode=state;
-            continue;
-        case 8:
-            /* call UTF-16BE */
-            pArgs->source=source;
-            _UTF16BEToUnicodeWithOffsets(pArgs, pErrorCode);
-            source=pArgs->source;
-            break;
-        case 9:
-            /* call UTF-16LE */
-            pArgs->source=source;
-            _UTF16LEToUnicodeWithOffsets(pArgs, pErrorCode);
-            source=pArgs->source;
-            break;
-        default:
-            break; /* does not occur */
-        }
-    }
-
-    /* add BOM size to offsets - see comment at offsetDelta declaration */
-    if(offsets!=NULL && offsetDelta!=0) {
-        int32_t *offsetsLimit=pArgs->offsets;
-        while(offsets<offsetsLimit) {
-            *offsets++ += offsetDelta;
-        }
-    }
-
-    pArgs->source=source;
-
-    if(source==sourceLimit && pArgs->flush) {
-        /* handle truncated input */
-        switch(state) {
-        case 0:
-            break; /* no input at all, nothing to do */
-        case 8:
-            _UTF16BEToUnicodeWithOffsets(pArgs, pErrorCode);
-            break;
-        case 9:
-            _UTF16LEToUnicodeWithOffsets(pArgs, pErrorCode);
-            break;
-        default:
-            /* 0<state<8: framework will report truncation, nothing to do here */
-            break;
-        }
-    }
-
-    cnv->mode=state;
-}
-
-static UChar32
-_UTF16GetNextUChar(UConverterToUnicodeArgs *pArgs,
-                   UErrorCode *pErrorCode) {
-    switch(pArgs->converter->mode) {
-    case 8:
-        return _UTF16BEGetNextUChar(pArgs, pErrorCode);
-    case 9:
-        return _UTF16LEGetNextUChar(pArgs, pErrorCode);
-    default:
-        return UCNV_GET_NEXT_UCHAR_USE_TO_U;
-    }
-}
-
-static const UConverterImpl _UTF16Impl = {
-    UCNV_UTF16,
-
-    NULL,
-    NULL,
-
-    _UTF16Open,
-    NULL,
-    _UTF16Reset,
-
-    _UTF16ToUnicodeWithOffsets,
-    _UTF16ToUnicodeWithOffsets,
-    _UTF16PEFromUnicodeWithOffsets,
-    _UTF16PEFromUnicodeWithOffsets,
-    _UTF16GetNextUChar,
-
-    NULL, /* ### TODO implement getStarters for all Unicode encodings?! */
-    _UTF16GetName,
-    NULL,
-    NULL,
-    ucnv_getNonSurrogateUnicodeSet,
-
-    NULL,
-    NULL
-};
-
-static const UConverterStaticData _UTF16StaticData = {
-    sizeof(UConverterStaticData),
-    "UTF-16",
-    1204, /* CCSID for BOM sensitive UTF-16 */
-    UCNV_IBM, UCNV_UTF16, 2, 2,
-#if U_IS_BIG_ENDIAN
-    { 0xff, 0xfd, 0, 0 }, 2,
-#else
-    { 0xfd, 0xff, 0, 0 }, 2,
-#endif
-    FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-const UConverterSharedData _UTF16Data =
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF16StaticData, &_UTF16Impl);
-
-static const UConverterImpl _UTF16v2Impl = {
-    UCNV_UTF16,
-
-    NULL,
-    NULL,
-
-    _UTF16Open,
-    NULL,
-    _UTF16Reset,
-
-    _UTF16ToUnicodeWithOffsets,
-    _UTF16ToUnicodeWithOffsets,
-    _UTF16BEFromUnicodeWithOffsets,
-    _UTF16BEFromUnicodeWithOffsets,
-    _UTF16GetNextUChar,
-
-    NULL, /* ### TODO implement getStarters for all Unicode encodings?! */
-    _UTF16GetName,
-    NULL,
-    NULL,
-    ucnv_getNonSurrogateUnicodeSet,
-
-    NULL,
-    NULL
-};
-
-static const UConverterStaticData _UTF16v2StaticData = {
-    sizeof(UConverterStaticData),
-    "UTF-16,version=2",
-    1204, /* CCSID for BOM sensitive UTF-16 */
-    UCNV_IBM, UCNV_UTF16, 2, 2,
-    { 0xff, 0xfd, 0, 0 }, 2,
-    FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-static const UConverterSharedData _UTF16v2Data =
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF16v2StaticData, &_UTF16v2Impl);
-
-#endif
diff --git a/source/common/ucnv_u32.c b/source/common/ucnv_u32.c
deleted file mode 100644 (file)
index b0a0fe2..0000000
+++ /dev/null
@@ -1,1251 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*  
-**********************************************************************
-*   Copyright (C) 2002-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   file name:  ucnv_u32.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2002jul01
-*   created by: Markus W. Scherer
-*
-*   UTF-32 converter implementation. Used to be in ucnv_utf.c.
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
-
-#include "unicode/ucnv.h"
-#include "unicode/utf.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-#include "cmemory.h"
-
-#define MAXIMUM_UCS2            0x0000FFFF
-#define MAXIMUM_UTF             0x0010FFFF
-#define HALF_SHIFT              10
-#define HALF_BASE               0x0010000
-#define HALF_MASK               0x3FF
-#define SURROGATE_HIGH_START    0xD800
-#define SURROGATE_LOW_START     0xDC00
-
-/* -SURROGATE_LOW_START + HALF_BASE */
-#define SURROGATE_LOW_BASE      9216
-
-enum {
-    UCNV_NEED_TO_WRITE_BOM=1
-};
-
-/* UTF-32BE ----------------------------------------------------------------- */
-
-static void
-T_UConverter_toUnicode_UTF32_BE(UConverterToUnicodeArgs * args,
-                                UErrorCode * err)
-{
-    const unsigned char *mySource = (unsigned char *) args->source;
-    UChar *myTarget = args->target;
-    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
-    const UChar *targetLimit = args->targetLimit;
-    unsigned char *toUBytes = args->converter->toUBytes;
-    uint32_t ch, i;
-
-    /* Restore state of current sequence */
-    if (args->converter->toUnicodeStatus && myTarget < targetLimit) {
-        i = args->converter->toULength;       /* restore # of bytes consumed */
-        args->converter->toULength = 0;
-
-        ch = args->converter->toUnicodeStatus - 1;/*Stores the previously calculated ch from a previous call*/
-        args->converter->toUnicodeStatus = 0;
-        goto morebytes;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit) {
-        i = 0;
-        ch = 0;
-morebytes:
-        while (i < sizeof(uint32_t)) {
-            if (mySource < sourceLimit) {
-                ch = (ch << 8) | (uint8_t)(*mySource);
-                toUBytes[i++] = (char) *(mySource++);
-            }
-            else {
-                /* stores a partially calculated target*/
-                /* + 1 to make 0 a valid character */
-                args->converter->toUnicodeStatus = ch + 1;
-                args->converter->toULength = (int8_t) i;
-                goto donefornow;
-            }
-        }
-
-        if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch)) {
-            /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
-            if (ch <= MAXIMUM_UCS2) 
-            {
-                /* fits in 16 bits */
-                *(myTarget++) = (UChar) ch;
-            }
-            else {
-                /* write out the surrogates */
-                *(myTarget++) = U16_LEAD(ch);
-                ch = U16_TRAIL(ch);
-                if (myTarget < targetLimit) {
-                    *(myTarget++) = (UChar)ch;
-                }
-                else {
-                    /* Put in overflow buffer (not handled here) */
-                    args->converter->UCharErrorBuffer[0] = (UChar) ch;
-                    args->converter->UCharErrorBufferLength = 1;
-                    *err = U_BUFFER_OVERFLOW_ERROR;
-                    break;
-                }
-            }
-        }
-        else {
-            args->converter->toULength = (int8_t)i;
-            *err = U_ILLEGAL_CHAR_FOUND;
-            break;
-        }
-    }
-
-donefornow:
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err)) {
-        /* End of target buffer */
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = myTarget;
-    args->source = (const char *) mySource;
-}
-
-static void
-T_UConverter_toUnicode_UTF32_BE_OFFSET_LOGIC(UConverterToUnicodeArgs * args,
-                                             UErrorCode * err)
-{
-    const unsigned char *mySource = (unsigned char *) args->source;
-    UChar *myTarget = args->target;
-    int32_t *myOffsets = args->offsets;
-    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
-    const UChar *targetLimit = args->targetLimit;
-    unsigned char *toUBytes = args->converter->toUBytes;
-    uint32_t ch, i;
-    int32_t offsetNum = 0;
-
-    /* Restore state of current sequence */
-    if (args->converter->toUnicodeStatus && myTarget < targetLimit) {
-        i = args->converter->toULength;       /* restore # of bytes consumed */
-        args->converter->toULength = 0;
-
-        ch = args->converter->toUnicodeStatus - 1;/*Stores the previously calculated ch from a previous call*/
-        args->converter->toUnicodeStatus = 0;
-        goto morebytes;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit) {
-        i = 0;
-        ch = 0;
-morebytes:
-        while (i < sizeof(uint32_t)) {
-            if (mySource < sourceLimit) {
-                ch = (ch << 8) | (uint8_t)(*mySource);
-                toUBytes[i++] = (char) *(mySource++);
-            }
-            else {
-                /* stores a partially calculated target*/
-                /* + 1 to make 0 a valid character */
-                args->converter->toUnicodeStatus = ch + 1;
-                args->converter->toULength = (int8_t) i;
-                goto donefornow;
-            }
-        }
-
-        if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch)) {
-            /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
-            if (ch <= MAXIMUM_UCS2) {
-                /* fits in 16 bits */
-                *(myTarget++) = (UChar) ch;
-                *(myOffsets++) = offsetNum;
-            }
-            else {
-                /* write out the surrogates */
-                *(myTarget++) = U16_LEAD(ch);
-                *myOffsets++ = offsetNum;
-                ch = U16_TRAIL(ch);
-                if (myTarget < targetLimit)
-                {
-                    *(myTarget++) = (UChar)ch;
-                    *(myOffsets++) = offsetNum;
-                }
-                else {
-                    /* Put in overflow buffer (not handled here) */
-                    args->converter->UCharErrorBuffer[0] = (UChar) ch;
-                    args->converter->UCharErrorBufferLength = 1;
-                    *err = U_BUFFER_OVERFLOW_ERROR;
-                    break;
-                }
-            }
-        }
-        else {
-            args->converter->toULength = (int8_t)i;
-            *err = U_ILLEGAL_CHAR_FOUND;
-            break;
-        }
-        offsetNum += i;
-    }
-
-donefornow:
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
-    {
-        /* End of target buffer */
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = myTarget;
-    args->source = (const char *) mySource;
-    args->offsets = myOffsets;
-}
-
-static void
-T_UConverter_fromUnicode_UTF32_BE(UConverterFromUnicodeArgs * args,
-                                  UErrorCode * err)
-{
-    const UChar *mySource = args->source;
-    unsigned char *myTarget;
-    const UChar *sourceLimit = args->sourceLimit;
-    const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
-    UChar32 ch, ch2;
-    unsigned int indexToWrite;
-    unsigned char temp[sizeof(uint32_t)];
-
-    if(mySource >= sourceLimit) {
-        /* no input, nothing to do */
-        return;
-    }
-
-    /* write the BOM if necessary */
-    if(args->converter->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
-        static const char bom[]={ 0, 0, (char)0xfe, (char)0xff };
-        ucnv_fromUWriteBytes(args->converter,
-                             bom, 4,
-                             &args->target, args->targetLimit,
-                             &args->offsets, -1,
-                             err);
-        args->converter->fromUnicodeStatus=0;
-    }
-
-    myTarget = (unsigned char *) args->target;
-    temp[0] = 0;
-
-    if (args->converter->fromUChar32) {
-        ch = args->converter->fromUChar32;
-        args->converter->fromUChar32 = 0;
-        goto lowsurogate;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit) {
-        ch = *(mySource++);
-
-        if (U_IS_SURROGATE(ch)) {
-            if (U_IS_LEAD(ch)) {
-lowsurogate:
-                if (mySource < sourceLimit) {
-                    ch2 = *mySource;
-                    if (U_IS_TRAIL(ch2)) {
-                        ch = ((ch - SURROGATE_HIGH_START) << HALF_SHIFT) + ch2 + SURROGATE_LOW_BASE;
-                        mySource++;
-                    }
-                    else {
-                        /* this is an unmatched trail code unit (2nd surrogate) */
-                        /* callback(illegal) */
-                        args->converter->fromUChar32 = ch;
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                        break;
-                    }
-                }
-                else {
-                    /* ran out of source */
-                    args->converter->fromUChar32 = ch;
-                    if (args->flush) {
-                        /* this is an unmatched trail code unit (2nd surrogate) */
-                        /* callback(illegal) */
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                    }
-                    break;
-                }
-            }
-            else {
-                /* this is an unmatched trail code unit (2nd surrogate) */
-                /* callback(illegal) */
-                args->converter->fromUChar32 = ch;
-                *err = U_ILLEGAL_CHAR_FOUND;
-                break;
-            }
-        }
-
-        /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
-        temp[1] = (uint8_t) (ch >> 16 & 0x1F);
-        temp[2] = (uint8_t) (ch >> 8);  /* unsigned cast implicitly does (ch & FF) */
-        temp[3] = (uint8_t) (ch);       /* unsigned cast implicitly does (ch & FF) */
-
-        for (indexToWrite = 0; indexToWrite <= sizeof(uint32_t) - 1; indexToWrite++) {
-            if (myTarget < targetLimit) {
-                *(myTarget++) = temp[indexToWrite];
-            }
-            else {
-                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
-                *err = U_BUFFER_OVERFLOW_ERROR;
-            }
-        }
-    }
-
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err)) {
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = (char *) myTarget;
-    args->source = mySource;
-}
-
-static void
-T_UConverter_fromUnicode_UTF32_BE_OFFSET_LOGIC(UConverterFromUnicodeArgs * args,
-                                               UErrorCode * err)
-{
-    const UChar *mySource = args->source;
-    unsigned char *myTarget;
-    int32_t *myOffsets;
-    const UChar *sourceLimit = args->sourceLimit;
-    const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
-    UChar32 ch, ch2;
-    int32_t offsetNum = 0;
-    unsigned int indexToWrite;
-    unsigned char temp[sizeof(uint32_t)];
-
-    if(mySource >= sourceLimit) {
-        /* no input, nothing to do */
-        return;
-    }
-
-    /* write the BOM if necessary */
-    if(args->converter->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
-        static const char bom[]={ 0, 0, (char)0xfe, (char)0xff };
-        ucnv_fromUWriteBytes(args->converter,
-                             bom, 4,
-                             &args->target, args->targetLimit,
-                             &args->offsets, -1,
-                             err);
-        args->converter->fromUnicodeStatus=0;
-    }
-
-    myTarget = (unsigned char *) args->target;
-    myOffsets = args->offsets;
-    temp[0] = 0;
-
-    if (args->converter->fromUChar32) {
-        ch = args->converter->fromUChar32;
-        args->converter->fromUChar32 = 0;
-        goto lowsurogate;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit) {
-        ch = *(mySource++);
-
-        if (U_IS_SURROGATE(ch)) {
-            if (U_IS_LEAD(ch)) {
-lowsurogate:
-                if (mySource < sourceLimit) {
-                    ch2 = *mySource;
-                    if (U_IS_TRAIL(ch2)) {
-                        ch = ((ch - SURROGATE_HIGH_START) << HALF_SHIFT) + ch2 + SURROGATE_LOW_BASE;
-                        mySource++;
-                    }
-                    else {
-                        /* this is an unmatched trail code unit (2nd surrogate) */
-                        /* callback(illegal) */
-                        args->converter->fromUChar32 = ch;
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                        break;
-                    }
-                }
-                else {
-                    /* ran out of source */
-                    args->converter->fromUChar32 = ch;
-                    if (args->flush) {
-                        /* this is an unmatched trail code unit (2nd surrogate) */
-                        /* callback(illegal) */
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                    }
-                    break;
-                }
-            }
-            else {
-                /* this is an unmatched trail code unit (2nd surrogate) */
-                /* callback(illegal) */
-                args->converter->fromUChar32 = ch;
-                *err = U_ILLEGAL_CHAR_FOUND;
-                break;
-            }
-        }
-
-        /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
-        temp[1] = (uint8_t) (ch >> 16 & 0x1F);
-        temp[2] = (uint8_t) (ch >> 8);  /* unsigned cast implicitly does (ch & FF) */
-        temp[3] = (uint8_t) (ch);       /* unsigned cast implicitly does (ch & FF) */
-
-        for (indexToWrite = 0; indexToWrite <= sizeof(uint32_t) - 1; indexToWrite++) {
-            if (myTarget < targetLimit) {
-                *(myTarget++) = temp[indexToWrite];
-                *(myOffsets++) = offsetNum;
-            }
-            else {
-                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
-                *err = U_BUFFER_OVERFLOW_ERROR;
-            }
-        }
-        offsetNum = offsetNum + 1 + (temp[1] != 0);
-    }
-
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err)) {
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = (char *) myTarget;
-    args->source = mySource;
-    args->offsets = myOffsets;
-}
-
-static UChar32
-T_UConverter_getNextUChar_UTF32_BE(UConverterToUnicodeArgs* args,
-                                   UErrorCode* err)
-{
-    const uint8_t *mySource;
-    UChar32 myUChar;
-    int32_t length;
-
-    mySource = (const uint8_t *)args->source;
-    if (mySource >= (const uint8_t *)args->sourceLimit)
-    {
-        /* no input */
-        *err = U_INDEX_OUTOFBOUNDS_ERROR;
-        return 0xffff;
-    }
-
-    length = (int32_t)((const uint8_t *)args->sourceLimit - mySource);
-    if (length < 4) 
-    {
-        /* got a partial character */
-        uprv_memcpy(args->converter->toUBytes, mySource, length);
-        args->converter->toULength = (int8_t)length;
-        args->source = (const char *)(mySource + length);
-        *err = U_TRUNCATED_CHAR_FOUND;
-        return 0xffff;
-    }
-
-    /* Don't even try to do a direct cast because the value may be on an odd address. */
-    myUChar = ((UChar32)mySource[0] << 24)
-            | ((UChar32)mySource[1] << 16)
-            | ((UChar32)mySource[2] << 8)
-            | ((UChar32)mySource[3]);
-
-    args->source = (const char *)(mySource + 4);
-    if ((uint32_t)myUChar <= MAXIMUM_UTF && !U_IS_SURROGATE(myUChar)) {
-        return myUChar;
-    }
-
-    uprv_memcpy(args->converter->toUBytes, mySource, 4);
-    args->converter->toULength = 4;
-
-    *err = U_ILLEGAL_CHAR_FOUND;
-    return 0xffff;
-}
-
-static const UConverterImpl _UTF32BEImpl = {
-    UCNV_UTF32_BigEndian,
-
-    NULL,
-    NULL,
-
-    NULL,
-    NULL,
-    NULL,
-
-    T_UConverter_toUnicode_UTF32_BE,
-    T_UConverter_toUnicode_UTF32_BE_OFFSET_LOGIC,
-    T_UConverter_fromUnicode_UTF32_BE,
-    T_UConverter_fromUnicode_UTF32_BE_OFFSET_LOGIC,
-    T_UConverter_getNextUChar_UTF32_BE,
-
-    NULL,
-    NULL,
-    NULL,
-    NULL,
-    ucnv_getNonSurrogateUnicodeSet,
-
-    NULL,
-    NULL
-};
-
-/* The 1232 CCSID refers to any version of Unicode with any endianess of UTF-32 */
-static const UConverterStaticData _UTF32BEStaticData = {
-    sizeof(UConverterStaticData),
-    "UTF-32BE",
-    1232,
-    UCNV_IBM, UCNV_UTF32_BigEndian, 4, 4,
-    { 0, 0, 0xff, 0xfd }, 4, FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-const UConverterSharedData _UTF32BEData =
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF32BEStaticData, &_UTF32BEImpl);
-
-/* UTF-32LE ---------------------------------------------------------- */
-
-static void
-T_UConverter_toUnicode_UTF32_LE(UConverterToUnicodeArgs * args,
-                                UErrorCode * err)
-{
-    const unsigned char *mySource = (unsigned char *) args->source;
-    UChar *myTarget = args->target;
-    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
-    const UChar *targetLimit = args->targetLimit;
-    unsigned char *toUBytes = args->converter->toUBytes;
-    uint32_t ch, i;
-
-    /* Restore state of current sequence */
-    if (args->converter->toUnicodeStatus && myTarget < targetLimit)
-    {
-        i = args->converter->toULength;       /* restore # of bytes consumed */
-        args->converter->toULength = 0;
-
-        /* Stores the previously calculated ch from a previous call*/
-        ch = args->converter->toUnicodeStatus - 1;
-        args->converter->toUnicodeStatus = 0;
-        goto morebytes;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit)
-    {
-        i = 0;
-        ch = 0;
-morebytes:
-        while (i < sizeof(uint32_t))
-        {
-            if (mySource < sourceLimit)
-            {
-                ch |= ((uint8_t)(*mySource)) << (i * 8);
-                toUBytes[i++] = (char) *(mySource++);
-            }
-            else
-            {
-                /* stores a partially calculated target*/
-                /* + 1 to make 0 a valid character */
-                args->converter->toUnicodeStatus = ch + 1;
-                args->converter->toULength = (int8_t) i;
-                goto donefornow;
-            }
-        }
-
-        if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch)) {
-            /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
-            if (ch <= MAXIMUM_UCS2) {
-                /* fits in 16 bits */
-                *(myTarget++) = (UChar) ch;
-            }
-            else {
-                /* write out the surrogates */
-                *(myTarget++) = U16_LEAD(ch);
-                ch = U16_TRAIL(ch);
-                if (myTarget < targetLimit) {
-                    *(myTarget++) = (UChar)ch;
-                }
-                else {
-                    /* Put in overflow buffer (not handled here) */
-                    args->converter->UCharErrorBuffer[0] = (UChar) ch;
-                    args->converter->UCharErrorBufferLength = 1;
-                    *err = U_BUFFER_OVERFLOW_ERROR;
-                    break;
-                }
-            }
-        }
-        else {
-            args->converter->toULength = (int8_t)i;
-            *err = U_ILLEGAL_CHAR_FOUND;
-            break;
-        }
-    }
-
-donefornow:
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
-    {
-        /* End of target buffer */
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = myTarget;
-    args->source = (const char *) mySource;
-}
-
-static void
-T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC(UConverterToUnicodeArgs * args,
-                                             UErrorCode * err)
-{
-    const unsigned char *mySource = (unsigned char *) args->source;
-    UChar *myTarget = args->target;
-    int32_t *myOffsets = args->offsets;
-    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
-    const UChar *targetLimit = args->targetLimit;
-    unsigned char *toUBytes = args->converter->toUBytes;
-    uint32_t ch, i;
-    int32_t offsetNum = 0;
-
-    /* Restore state of current sequence */
-    if (args->converter->toUnicodeStatus && myTarget < targetLimit)
-    {
-        i = args->converter->toULength;       /* restore # of bytes consumed */
-        args->converter->toULength = 0;
-
-        /* Stores the previously calculated ch from a previous call*/
-        ch = args->converter->toUnicodeStatus - 1;
-        args->converter->toUnicodeStatus = 0;
-        goto morebytes;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit)
-    {
-        i = 0;
-        ch = 0;
-morebytes:
-        while (i < sizeof(uint32_t))
-        {
-            if (mySource < sourceLimit)
-            {
-                ch |= ((uint8_t)(*mySource)) << (i * 8);
-                toUBytes[i++] = (char) *(mySource++);
-            }
-            else
-            {
-                /* stores a partially calculated target*/
-                /* + 1 to make 0 a valid character */
-                args->converter->toUnicodeStatus = ch + 1;
-                args->converter->toULength = (int8_t) i;
-                goto donefornow;
-            }
-        }
-
-        if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch))
-        {
-            /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
-            if (ch <= MAXIMUM_UCS2) 
-            {
-                /* fits in 16 bits */
-                *(myTarget++) = (UChar) ch;
-                *(myOffsets++) = offsetNum;
-            }
-            else {
-                /* write out the surrogates */
-                *(myTarget++) = U16_LEAD(ch);
-                *(myOffsets++) = offsetNum;
-                ch = U16_TRAIL(ch);
-                if (myTarget < targetLimit)
-                {
-                    *(myTarget++) = (UChar)ch;
-                    *(myOffsets++) = offsetNum;
-                }
-                else
-                {
-                    /* Put in overflow buffer (not handled here) */
-                    args->converter->UCharErrorBuffer[0] = (UChar) ch;
-                    args->converter->UCharErrorBufferLength = 1;
-                    *err = U_BUFFER_OVERFLOW_ERROR;
-                    break;
-                }
-            }
-        }
-        else
-        {
-            args->converter->toULength = (int8_t)i;
-            *err = U_ILLEGAL_CHAR_FOUND;
-            break;
-        }
-        offsetNum += i;
-    }
-
-donefornow:
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
-    {
-        /* End of target buffer */
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = myTarget;
-    args->source = (const char *) mySource;
-    args->offsets = myOffsets;
-}
-
-static void
-T_UConverter_fromUnicode_UTF32_LE(UConverterFromUnicodeArgs * args,
-                                  UErrorCode * err)
-{
-    const UChar *mySource = args->source;
-    unsigned char *myTarget;
-    const UChar *sourceLimit = args->sourceLimit;
-    const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
-    UChar32 ch, ch2;
-    unsigned int indexToWrite;
-    unsigned char temp[sizeof(uint32_t)];
-
-    if(mySource >= sourceLimit) {
-        /* no input, nothing to do */
-        return;
-    }
-
-    /* write the BOM if necessary */
-    if(args->converter->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
-        static const char bom[]={ (char)0xff, (char)0xfe, 0, 0 };
-        ucnv_fromUWriteBytes(args->converter,
-                             bom, 4,
-                             &args->target, args->targetLimit,
-                             &args->offsets, -1,
-                             err);
-        args->converter->fromUnicodeStatus=0;
-    }
-
-    myTarget = (unsigned char *) args->target;
-    temp[3] = 0;
-
-    if (args->converter->fromUChar32)
-    {
-        ch = args->converter->fromUChar32;
-        args->converter->fromUChar32 = 0;
-        goto lowsurogate;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit)
-    {
-        ch = *(mySource++);
-
-        if (U16_IS_SURROGATE(ch)) {
-            if (U16_IS_LEAD(ch))
-            {
-lowsurogate:
-                if (mySource < sourceLimit)
-                {
-                    ch2 = *mySource;
-                    if (U16_IS_TRAIL(ch2)) {
-                        ch = ((ch - SURROGATE_HIGH_START) << HALF_SHIFT) + ch2 + SURROGATE_LOW_BASE;
-                        mySource++;
-                    }
-                    else {
-                        /* this is an unmatched trail code unit (2nd surrogate) */
-                        /* callback(illegal) */
-                        args->converter->fromUChar32 = ch;
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                        break;
-                    }
-                }
-                else {
-                    /* ran out of source */
-                    args->converter->fromUChar32 = ch;
-                    if (args->flush) {
-                        /* this is an unmatched trail code unit (2nd surrogate) */
-                        /* callback(illegal) */
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                    }
-                    break;
-                }
-            }
-            else {
-                /* this is an unmatched trail code unit (2nd surrogate) */
-                /* callback(illegal) */
-                args->converter->fromUChar32 = ch;
-                *err = U_ILLEGAL_CHAR_FOUND;
-                break;
-            }
-        }
-
-        /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
-        temp[2] = (uint8_t) (ch >> 16 & 0x1F);
-        temp[1] = (uint8_t) (ch >> 8);  /* unsigned cast implicitly does (ch & FF) */
-        temp[0] = (uint8_t) (ch);       /* unsigned cast implicitly does (ch & FF) */
-
-        for (indexToWrite = 0; indexToWrite <= sizeof(uint32_t) - 1; indexToWrite++)
-        {
-            if (myTarget < targetLimit)
-            {
-                *(myTarget++) = temp[indexToWrite];
-            }
-            else
-            {
-                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
-                *err = U_BUFFER_OVERFLOW_ERROR;
-            }
-        }
-    }
-
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
-    {
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = (char *) myTarget;
-    args->source = mySource;
-}
-
-static void
-T_UConverter_fromUnicode_UTF32_LE_OFFSET_LOGIC(UConverterFromUnicodeArgs * args,
-                                               UErrorCode * err)
-{
-    const UChar *mySource = args->source;
-    unsigned char *myTarget;
-    int32_t *myOffsets;
-    const UChar *sourceLimit = args->sourceLimit;
-    const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
-    UChar32 ch, ch2;
-    unsigned int indexToWrite;
-    unsigned char temp[sizeof(uint32_t)];
-    int32_t offsetNum = 0;
-
-    if(mySource >= sourceLimit) {
-        /* no input, nothing to do */
-        return;
-    }
-
-    /* write the BOM if necessary */
-    if(args->converter->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
-        static const char bom[]={ (char)0xff, (char)0xfe, 0, 0 };
-        ucnv_fromUWriteBytes(args->converter,
-                             bom, 4,
-                             &args->target, args->targetLimit,
-                             &args->offsets, -1,
-                             err);
-        args->converter->fromUnicodeStatus=0;
-    }
-
-    myTarget = (unsigned char *) args->target;
-    myOffsets = args->offsets;
-    temp[3] = 0;
-
-    if (args->converter->fromUChar32)
-    {
-        ch = args->converter->fromUChar32;
-        args->converter->fromUChar32 = 0;
-        goto lowsurogate;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit)
-    {
-        ch = *(mySource++);
-
-        if (U16_IS_SURROGATE(ch)) {
-            if (U16_IS_LEAD(ch))
-            {
-lowsurogate:
-                if (mySource < sourceLimit)
-                {
-                    ch2 = *mySource;
-                    if (U16_IS_TRAIL(ch2))
-                    {
-                        ch = ((ch - SURROGATE_HIGH_START) << HALF_SHIFT) + ch2 + SURROGATE_LOW_BASE;
-                        mySource++;
-                    }
-                    else {
-                        /* this is an unmatched trail code unit (2nd surrogate) */
-                        /* callback(illegal) */
-                        args->converter->fromUChar32 = ch;
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                        break;
-                    }
-                }
-                else {
-                    /* ran out of source */
-                    args->converter->fromUChar32 = ch;
-                    if (args->flush) {
-                        /* this is an unmatched trail code unit (2nd surrogate) */
-                        /* callback(illegal) */
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                    }
-                    break;
-                }
-            }
-            else {
-                /* this is an unmatched trail code unit (2nd surrogate) */
-                /* callback(illegal) */
-                args->converter->fromUChar32 = ch;
-                *err = U_ILLEGAL_CHAR_FOUND;
-                break;
-            }
-        }
-
-        /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
-        temp[2] = (uint8_t) (ch >> 16 & 0x1F);
-        temp[1] = (uint8_t) (ch >> 8);  /* unsigned cast implicitly does (ch & FF) */
-        temp[0] = (uint8_t) (ch);       /* unsigned cast implicitly does (ch & FF) */
-
-        for (indexToWrite = 0; indexToWrite <= sizeof(uint32_t) - 1; indexToWrite++)
-        {
-            if (myTarget < targetLimit)
-            {
-                *(myTarget++) = temp[indexToWrite];
-                *(myOffsets++) = offsetNum;
-            }
-            else
-            {
-                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
-                *err = U_BUFFER_OVERFLOW_ERROR;
-            }
-        }
-        offsetNum = offsetNum + 1 + (temp[2] != 0);
-    }
-
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
-    {
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = (char *) myTarget;
-    args->source = mySource;
-    args->offsets = myOffsets;
-}
-
-static UChar32
-T_UConverter_getNextUChar_UTF32_LE(UConverterToUnicodeArgs* args,
-                                   UErrorCode* err)
-{
-    const uint8_t *mySource;
-    UChar32 myUChar;
-    int32_t length;
-
-    mySource = (const uint8_t *)args->source;
-    if (mySource >= (const uint8_t *)args->sourceLimit)
-    {
-        /* no input */
-        *err = U_INDEX_OUTOFBOUNDS_ERROR;
-        return 0xffff;
-    }
-
-    length = (int32_t)((const uint8_t *)args->sourceLimit - mySource);
-    if (length < 4) 
-    {
-        /* got a partial character */
-        uprv_memcpy(args->converter->toUBytes, mySource, length);
-        args->converter->toULength = (int8_t)length;
-        args->source = (const char *)(mySource + length);
-        *err = U_TRUNCATED_CHAR_FOUND;
-        return 0xffff;
-    }
-
-    /* Don't even try to do a direct cast because the value may be on an odd address. */
-    myUChar = ((UChar32)mySource[3] << 24)
-            | ((UChar32)mySource[2] << 16)
-            | ((UChar32)mySource[1] << 8)
-            | ((UChar32)mySource[0]);
-
-    args->source = (const char *)(mySource + 4);
-    if ((uint32_t)myUChar <= MAXIMUM_UTF && !U_IS_SURROGATE(myUChar)) {
-        return myUChar;
-    }
-
-    uprv_memcpy(args->converter->toUBytes, mySource, 4);
-    args->converter->toULength = 4;
-
-    *err = U_ILLEGAL_CHAR_FOUND;
-    return 0xffff;
-}
-
-static const UConverterImpl _UTF32LEImpl = {
-    UCNV_UTF32_LittleEndian,
-
-    NULL,
-    NULL,
-
-    NULL,
-    NULL,
-    NULL,
-
-    T_UConverter_toUnicode_UTF32_LE,
-    T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC,
-    T_UConverter_fromUnicode_UTF32_LE,
-    T_UConverter_fromUnicode_UTF32_LE_OFFSET_LOGIC,
-    T_UConverter_getNextUChar_UTF32_LE,
-
-    NULL,
-    NULL,
-    NULL,
-    NULL,
-    ucnv_getNonSurrogateUnicodeSet,
-
-    NULL,
-    NULL
-};
-
-/* The 1232 CCSID refers to any version of Unicode with any endianess of UTF-32 */
-static const UConverterStaticData _UTF32LEStaticData = {
-    sizeof(UConverterStaticData),
-    "UTF-32LE",
-    1234,
-    UCNV_IBM, UCNV_UTF32_LittleEndian, 4, 4,
-    { 0xfd, 0xff, 0, 0 }, 4, FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-
-const UConverterSharedData _UTF32LEData =
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF32LEStaticData, &_UTF32LEImpl);
-
-/* UTF-32 (Detect BOM) ------------------------------------------------------ */
-
-/*
- * Detect a BOM at the beginning of the stream and select UTF-32BE or UTF-32LE
- * accordingly.
- *
- * State values:
- * 0    initial state
- * 1    saw 00
- * 2    saw 00 00
- * 3    saw 00 00 FE
- * 4    -
- * 5    saw FF
- * 6    saw FF FE
- * 7    saw FF FE 00
- * 8    UTF-32BE mode
- * 9    UTF-32LE mode
- *
- * During detection: state&3==number of matching bytes so far.
- *
- * On output, emit U+FEFF as the first code point.
- */
-
-static void
-_UTF32Reset(UConverter *cnv, UConverterResetChoice choice) {
-    if(choice<=UCNV_RESET_TO_UNICODE) {
-        /* reset toUnicode: state=0 */
-        cnv->mode=0;
-    }
-    if(choice!=UCNV_RESET_TO_UNICODE) {
-        /* reset fromUnicode: prepare to output the UTF-32PE BOM */
-        cnv->fromUnicodeStatus=UCNV_NEED_TO_WRITE_BOM;
-    }
-}
-
-static void
-_UTF32Open(UConverter *cnv,
-           UConverterLoadArgs *pArgs,
-           UErrorCode *pErrorCode) {
-    _UTF32Reset(cnv, UCNV_RESET_BOTH);
-}
-
-static const char utf32BOM[8]={ 0, 0, (char)0xfe, (char)0xff,    (char)0xff, (char)0xfe, 0, 0 };
-
-static void
-_UTF32ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                           UErrorCode *pErrorCode) {
-    UConverter *cnv=pArgs->converter;
-    const char *source=pArgs->source;
-    const char *sourceLimit=pArgs->sourceLimit;
-    int32_t *offsets=pArgs->offsets;
-
-    int32_t state, offsetDelta;
-    char b;
-
-    state=cnv->mode;
-
-    /*
-     * If we detect a BOM in this buffer, then we must add the BOM size to the
-     * offsets because the actual converter function will not see and count the BOM.
-     * offsetDelta will have the number of the BOM bytes that are in the current buffer.
-     */
-    offsetDelta=0;
-
-    while(source<sourceLimit && U_SUCCESS(*pErrorCode)) {
-        switch(state) {
-        case 0:
-            b=*source;
-            if(b==0) {
-                state=1; /* could be 00 00 FE FF */
-            } else if(b==(char)0xff) {
-                state=5; /* could be FF FE 00 00 */
-            } else {
-                state=8; /* default to UTF-32BE */
-                continue;
-            }
-            ++source;
-            break;
-        case 1:
-        case 2:
-        case 3:
-        case 5:
-        case 6:
-        case 7:
-            if(*source==utf32BOM[state]) {
-                ++state;
-                ++source;
-                if(state==4) {
-                    state=8; /* detect UTF-32BE */
-                    offsetDelta=(int32_t)(source-pArgs->source);
-                } else if(state==8) {
-                    state=9; /* detect UTF-32LE */
-                    offsetDelta=(int32_t)(source-pArgs->source);
-                }
-            } else {
-                /* switch to UTF-32BE and pass the previous bytes */
-                int32_t count=(int32_t)(source-pArgs->source); /* number of bytes from this buffer */
-
-                /* reset the source */
-                source=pArgs->source;
-
-                if(count==(state&3)) {
-                    /* simple: all in the same buffer, just reset source */
-                } else {
-                    UBool oldFlush=pArgs->flush;
-
-                    /* some of the bytes are from a previous buffer, replay those first */
-                    pArgs->source=utf32BOM+(state&4); /* select the correct BOM */
-                    pArgs->sourceLimit=pArgs->source+((state&3)-count); /* replay previous bytes */
-                    pArgs->flush=FALSE; /* this sourceLimit is not the real source stream limit */
-
-                    /* no offsets: bytes from previous buffer, and not enough for output */
-                    T_UConverter_toUnicode_UTF32_BE(pArgs, pErrorCode);
-
-                    /* restore real pointers; pArgs->source will be set in case 8/9 */
-                    pArgs->sourceLimit=sourceLimit;
-                    pArgs->flush=oldFlush;
-                }
-                state=8;
-                continue;
-            }
-            break;
-        case 8:
-            /* call UTF-32BE */
-            pArgs->source=source;
-            if(offsets==NULL) {
-                T_UConverter_toUnicode_UTF32_BE(pArgs, pErrorCode);
-            } else {
-                T_UConverter_toUnicode_UTF32_BE_OFFSET_LOGIC(pArgs, pErrorCode);
-            }
-            source=pArgs->source;
-            break;
-        case 9:
-            /* call UTF-32LE */
-            pArgs->source=source;
-            if(offsets==NULL) {
-                T_UConverter_toUnicode_UTF32_LE(pArgs, pErrorCode);
-            } else {
-                T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC(pArgs, pErrorCode);
-            }
-            source=pArgs->source;
-            break;
-        default:
-            break; /* does not occur */
-        }
-    }
-
-    /* add BOM size to offsets - see comment at offsetDelta declaration */
-    if(offsets!=NULL && offsetDelta!=0) {
-        int32_t *offsetsLimit=pArgs->offsets;
-        while(offsets<offsetsLimit) {
-            *offsets++ += offsetDelta;
-        }
-    }
-
-    pArgs->source=source;
-
-    if(source==sourceLimit && pArgs->flush) {
-        /* handle truncated input */
-        switch(state) {
-        case 0:
-            break; /* no input at all, nothing to do */
-        case 8:
-            T_UConverter_toUnicode_UTF32_BE(pArgs, pErrorCode);
-            break;
-        case 9:
-            T_UConverter_toUnicode_UTF32_LE(pArgs, pErrorCode);
-            break;
-        default:
-            /* handle 0<state<8: call UTF-32BE with too-short input */
-            pArgs->source=utf32BOM+(state&4); /* select the correct BOM */
-            pArgs->sourceLimit=pArgs->source+(state&3); /* replay bytes */
-
-            /* no offsets: not enough for output */
-            T_UConverter_toUnicode_UTF32_BE(pArgs, pErrorCode);
-            pArgs->source=source;
-            pArgs->sourceLimit=sourceLimit;
-            state=8;
-            break;
-        }
-    }
-
-    cnv->mode=state;
-}
-
-static UChar32
-_UTF32GetNextUChar(UConverterToUnicodeArgs *pArgs,
-                   UErrorCode *pErrorCode) {
-    switch(pArgs->converter->mode) {
-    case 8:
-        return T_UConverter_getNextUChar_UTF32_BE(pArgs, pErrorCode);
-    case 9:
-        return T_UConverter_getNextUChar_UTF32_LE(pArgs, pErrorCode);
-    default:
-        return UCNV_GET_NEXT_UCHAR_USE_TO_U;
-    }
-}
-
-static const UConverterImpl _UTF32Impl = {
-    UCNV_UTF32,
-
-    NULL,
-    NULL,
-
-    _UTF32Open,
-    NULL,
-    _UTF32Reset,
-
-    _UTF32ToUnicodeWithOffsets,
-    _UTF32ToUnicodeWithOffsets,
-#if U_IS_BIG_ENDIAN
-    T_UConverter_fromUnicode_UTF32_BE,
-    T_UConverter_fromUnicode_UTF32_BE_OFFSET_LOGIC,
-#else
-    T_UConverter_fromUnicode_UTF32_LE,
-    T_UConverter_fromUnicode_UTF32_LE_OFFSET_LOGIC,
-#endif
-    _UTF32GetNextUChar,
-
-    NULL, /* ### TODO implement getStarters for all Unicode encodings?! */
-    NULL,
-    NULL,
-    NULL,
-    ucnv_getNonSurrogateUnicodeSet,
-
-    NULL,
-    NULL
-};
-
-/* The 1236 CCSID refers to any version of Unicode with a BOM sensitive endianess of UTF-32 */
-static const UConverterStaticData _UTF32StaticData = {
-    sizeof(UConverterStaticData),
-    "UTF-32",
-    1236,
-    UCNV_IBM, UCNV_UTF32, 4, 4,
-#if U_IS_BIG_ENDIAN
-    { 0, 0, 0xff, 0xfd }, 4,
-#else
-    { 0xfd, 0xff, 0, 0 }, 4,
-#endif
-    FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-const UConverterSharedData _UTF32Data = 
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF32StaticData, &_UTF32Impl);
-
-#endif
diff --git a/source/common/ucnv_u7.c b/source/common/ucnv_u7.c
deleted file mode 100644 (file)
index c3b4d74..0000000
+++ /dev/null
@@ -1,1484 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*  
-**********************************************************************
-*   Copyright (C) 2002-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   file name:  ucnv_u7.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2002jul01
-*   created by: Markus W. Scherer
-*
-*   UTF-7 converter implementation. Used to be in ucnv_utf.c.
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
-
-#include "cmemory.h"
-#include "unicode/ucnv.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-#include "uassert.h"
-
-/* UTF-7 -------------------------------------------------------------------- */
-
-/*
- * UTF-7 is a stateful encoding of Unicode.
- * It is defined in RFC 2152. (http://www.ietf.org/rfc/rfc2152.txt)
- * It was intended for use in Internet email systems, using in its bytewise
- * encoding only a subset of 7-bit US-ASCII.
- * UTF-7 is deprecated in favor of UTF-8/16/32 and SCSU, but still
- * occasionally used.
- *
- * For converting Unicode to UTF-7, the RFC allows to encode some US-ASCII
- * characters directly or in base64. Especially, the characters in set O
- * as defined in the RFC (see below) may be encoded directly but are not
- * allowed in, e.g., email headers.
- * By default, the ICU UTF-7 converter encodes set O directly.
- * By choosing the option "version=1", set O will be escaped instead.
- * For example:
- *     utf7Converter=ucnv_open("UTF-7,version=1");
- *
- * For details about email headers see RFC 2047.
- */
-
-/*
- * Tests for US-ASCII characters belonging to character classes
- * defined in UTF-7.
- *
- * Set D (directly encoded characters) consists of the following
- * characters: the upper and lower case letters A through Z
- * and a through z, the 10 digits 0-9, and the following nine special
- * characters (note that "+" and "=" are omitted):
- *     '(),-./:?
- *
- * Set O (optional direct characters) consists of the following
- * characters (note that "\" and "~" are omitted):
- *     !"#$%&*;<=>@[]^_`{|}
- *
- * According to the rules in RFC 2152, the byte values for the following
- * US-ASCII characters are not used in UTF-7 and are therefore illegal:
- * - all C0 control codes except for CR LF TAB
- * - BACKSLASH
- * - TILDE
- * - DEL
- * - all codes beyond US-ASCII, i.e. all >127
- */
-#define inSetD(c) \
-    ((uint8_t)((c)-97)<26 || (uint8_t)((c)-65)<26 || /* letters */ \
-     (uint8_t)((c)-48)<10 ||    /* digits */ \
-     (uint8_t)((c)-39)<3 ||     /* '() */ \
-     (uint8_t)((c)-44)<4 ||     /* ,-./ */ \
-     (c)==58 || (c)==63         /* :? */ \
-    )
-
-#define inSetO(c) \
-    ((uint8_t)((c)-33)<6 ||         /* !"#$%& */ \
-     (uint8_t)((c)-59)<4 ||         /* ;<=> */ \
-     (uint8_t)((c)-93)<4 ||         /* ]^_` */ \
-     (uint8_t)((c)-123)<3 ||        /* {|} */ \
-     (c)==42 || (c)==64 || (c)==91  /* *@[ */ \
-    )
-
-#define isCRLFTAB(c) ((c)==13 || (c)==10 || (c)==9)
-#define isCRLFSPTAB(c) ((c)==32 || (c)==13 || (c)==10 || (c)==9)
-
-#define PLUS  43
-#define MINUS 45
-#define BACKSLASH 92
-#define TILDE 126
-
-/* legal byte values: all US-ASCII graphic characters from space to before tilde, and CR LF TAB */
-#define isLegalUTF7(c) (((uint8_t)((c)-32)<94 && (c)!=BACKSLASH) || isCRLFTAB(c))
-
-/* encode directly sets D and O and CR LF SP TAB */
-static const UBool encodeDirectlyMaximum[128]={
- /* 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 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, 0, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
-
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
-};
-
-/* encode directly set D and CR LF SP TAB but not set O */
-static const UBool encodeDirectlyRestricted[128]={
- /* 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
-    1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
-
-    0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-
-    0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
-};
-
-static const uint8_t
-toBase64[64]={
-    /* A-Z */
-    65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
-    78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
-    /* a-z */
-    97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
-    110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
-    /* 0-9 */
-    48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-    /* +/ */
-    43, 47
-};
-
-static const int8_t
-fromBase64[128]={
-    /* C0 controls, -1 for legal ones (CR LF TAB), -3 for illegal ones */
-    -3, -3, -3, -3, -3, -3, -3, -3, -3, -1, -1, -3, -3, -1, -3, -3,
-    -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
-
-    /* general punctuation with + and / and a special value (-2) for - */
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -2, -1, 63,
-    /* digits */
-    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
-
-    /* A-Z */
-    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -3, -1, -1, -1,
-
-    /* a-z */
-    -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
-    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -3, -3
-};
-
-/*
- * converter status values:
- *
- * toUnicodeStatus:
- *     24 inDirectMode (boolean)
- * 23..16 base64Counter (-1..7)
- * 15..0  bits (up to 14 bits incoming base64)
- *
- * fromUnicodeStatus:
- * 31..28 version (0: set O direct  1: set O escaped)
- *     24 inDirectMode (boolean)
- * 23..16 base64Counter (0..2)
- *  7..0  bits (6 bits outgoing base64)
- *
- */
-
-static void
-_UTF7Reset(UConverter *cnv, UConverterResetChoice choice) {
-    if(choice<=UCNV_RESET_TO_UNICODE) {
-        /* reset toUnicode */
-        cnv->toUnicodeStatus=0x1000000; /* inDirectMode=TRUE */
-        cnv->toULength=0;
-    }
-    if(choice!=UCNV_RESET_TO_UNICODE) {
-        /* reset fromUnicode */
-        cnv->fromUnicodeStatus=(cnv->fromUnicodeStatus&0xf0000000)|0x1000000; /* keep version, inDirectMode=TRUE */
-    }
-}
-
-static void
-_UTF7Open(UConverter *cnv,
-          UConverterLoadArgs *pArgs,
-          UErrorCode *pErrorCode) {
-    if(UCNV_GET_VERSION(cnv)<=1) {
-        /* TODO(markus): Should just use cnv->options rather than copying the version number. */
-        cnv->fromUnicodeStatus=UCNV_GET_VERSION(cnv)<<28;
-        _UTF7Reset(cnv, UCNV_RESET_BOTH);
-    } else {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-    }
-}
-
-static void
-_UTF7ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                          UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    const uint8_t *source, *sourceLimit;
-    UChar *target;
-    const UChar *targetLimit;
-    int32_t *offsets;
-
-    uint8_t *bytes;
-    uint8_t byteIndex;
-
-    int32_t length, targetCapacity;
-
-    /* UTF-7 state */
-    uint16_t bits;
-    int8_t base64Counter;
-    UBool inDirectMode;
-
-    int8_t base64Value;
-
-    int32_t sourceIndex, nextSourceIndex;
-
-    uint8_t b;
-    /* set up the local pointers */
-    cnv=pArgs->converter;
-
-    source=(const uint8_t *)pArgs->source;
-    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
-    target=pArgs->target;
-    targetLimit=pArgs->targetLimit;
-    offsets=pArgs->offsets;
-    /* get the state machine state */
-    {
-        uint32_t status=cnv->toUnicodeStatus;
-        inDirectMode=(UBool)((status>>24)&1);
-        base64Counter=(int8_t)(status>>16);
-        bits=(uint16_t)status;
-    }
-    bytes=cnv->toUBytes;
-    byteIndex=cnv->toULength;
-
-    /* sourceIndex=-1 if the current character began in the previous buffer */
-    sourceIndex=byteIndex==0 ? 0 : -1;
-    nextSourceIndex=0;
-
-    if(inDirectMode) {
-directMode:
-        /*
-         * In Direct Mode, most US-ASCII characters are encoded directly, i.e.,
-         * with their US-ASCII byte values.
-         * Backslash and Tilde and most control characters are not allowed in UTF-7.
-         * A plus sign starts Unicode (or "escape") Mode.
-         *
-         * In Direct Mode, only the sourceIndex is used.
-         */
-        byteIndex=0;
-        length=(int32_t)(sourceLimit-source);
-        targetCapacity=(int32_t)(targetLimit-target);
-        if(length>targetCapacity) {
-            length=targetCapacity;
-        }
-        while(length>0) {
-            b=*source++;
-            if(!isLegalUTF7(b)) {
-                /* illegal */
-                bytes[0]=b;
-                byteIndex=1;
-                *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                break;
-            } else if(b!=PLUS) {
-                /* write directly encoded character */
-                *target++=b;
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex++;
-                }
-            } else /* PLUS */ {
-                /* switch to Unicode mode */
-                nextSourceIndex=++sourceIndex;
-                inDirectMode=FALSE;
-                byteIndex=0;
-                bits=0;
-                base64Counter=-1;
-                goto unicodeMode;
-            }
-            --length;
-        }
-        if(source<sourceLimit && target>=targetLimit) {
-            /* target is full */
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        }
-    } else {
-unicodeMode:
-        /*
-         * In Unicode (or "escape") Mode, UTF-16BE is base64-encoded.
-         * The base64 sequence ends with any character that is not in the base64 alphabet.
-         * A terminating minus sign is consumed.
-         *
-         * In Unicode Mode, the sourceIndex has the index to the start of the current
-         * base64 bytes, while nextSourceIndex is precisely parallel to source,
-         * keeping the index to the following byte.
-         * Note that in 2 out of 3 cases, UChars overlap within a base64 byte.
-         */
-        while(source<sourceLimit) {
-            if(target<targetLimit) {
-                bytes[byteIndex++]=b=*source++;
-                ++nextSourceIndex;
-                base64Value = -3; /* initialize as illegal */
-                if(b>=126 || (base64Value=fromBase64[b])==-3 || base64Value==-1) {
-                    /* either
-                     * base64Value==-1 for any legal character except base64 and minus sign, or
-                     * base64Value==-3 for illegal characters:
-                     * 1. In either case, leave Unicode mode.
-                     * 2.1. If we ended with an incomplete UChar or none after the +, then
-                     *      generate an error for the preceding erroneous sequence and deal with
-                     *      the current (possibly illegal) character next time through.
-                     * 2.2. Else the current char comes after a complete UChar, which was already
-                     *      pushed to the output buf, so:
-                     * 2.2.1. If the current char is legal, just save it for processing next time.
-                     *        It may be for example, a plus which we need to deal with in direct mode.
-                     * 2.2.2. Else if the current char is illegal, we might as well deal with it here.
-                     */
-                    inDirectMode=TRUE;
-                    if(base64Counter==-1) {
-                        /* illegal: + immediately followed by something other than base64 or minus sign */
-                        /* include the plus sign in the reported sequence, but not the subsequent char */
-                        --source;
-                        bytes[0]=PLUS;
-                        byteIndex=1;
-                        *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                        break;
-                    } else if(bits!=0) {
-                        /* bits are illegally left over, a UChar is incomplete */
-                        /* don't include current char (legal or illegal) in error seq */
-                        --source;
-                        --byteIndex;
-                        *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                        break;
-                    } else {
-                        /* previous UChar was complete */
-                        if(base64Value==-3) {
-                            /* current character is illegal, deal with it here */
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            break;
-                        } else {
-                            /* un-read the current character in case it is a plus sign */
-                            --source;
-                            sourceIndex=nextSourceIndex-1;
-                            goto directMode;
-                        }
-                    }
-                } else if(base64Value>=0) {
-                    /* collect base64 bytes into UChars */
-                    switch(base64Counter) {
-                    case -1: /* -1 is immediately after the + */
-                    case 0:
-                        bits=base64Value;
-                        base64Counter=1;
-                        break;
-                    case 1:
-                    case 3:
-                    case 4:
-                    case 6:
-                        bits=(uint16_t)((bits<<6)|base64Value);
-                        ++base64Counter;
-                        break;
-                    case 2:
-                        *target++=(UChar)((bits<<4)|(base64Value>>2));
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex;
-                            sourceIndex=nextSourceIndex-1;
-                        }
-                        bytes[0]=b; /* keep this byte in case an error occurs */
-                        byteIndex=1;
-                        bits=(uint16_t)(base64Value&3);
-                        base64Counter=3;
-                        break;
-                    case 5:
-                        *target++=(UChar)((bits<<2)|(base64Value>>4));
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex;
-                            sourceIndex=nextSourceIndex-1;
-                        }
-                        bytes[0]=b; /* keep this byte in case an error occurs */
-                        byteIndex=1;
-                        bits=(uint16_t)(base64Value&15);
-                        base64Counter=6;
-                        break;
-                    case 7:
-                        *target++=(UChar)((bits<<6)|base64Value);
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex;
-                            sourceIndex=nextSourceIndex;
-                        }
-                        byteIndex=0;
-                        bits=0;
-                        base64Counter=0;
-                        break;
-                    default:
-                        /* will never occur */
-                        break;
-                    }
-                } else /*base64Value==-2*/ {
-                    /* minus sign terminates the base64 sequence */
-                    inDirectMode=TRUE;
-                    if(base64Counter==-1) {
-                        /* +- i.e. a minus immediately following a plus */
-                        *target++=PLUS;
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex-1;
-                        }
-                    } else {
-                        /* absorb the minus and leave the Unicode Mode */
-                        if(bits!=0) {
-                            /* bits are illegally left over, a UChar is incomplete */
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            break;
-                        }
-                    }
-                    sourceIndex=nextSourceIndex;
-                    goto directMode;
-                }
-            } else {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-        }
-    }
-
-    if(U_SUCCESS(*pErrorCode) && pArgs->flush && source==sourceLimit && bits==0) {
-        /*
-         * if we are in Unicode mode, then the byteIndex might not be 0,
-         * but that is ok if bits==0
-         * -> we set byteIndex=0 at the end of the stream to avoid a truncated error
-         * (not true for IMAP-mailbox-name where we must end in direct mode)
-         */
-        byteIndex=0;
-    }
-
-    /* set the converter state back into UConverter */
-    cnv->toUnicodeStatus=((uint32_t)inDirectMode<<24)|((uint32_t)((uint8_t)base64Counter)<<16)|(uint32_t)bits;
-    cnv->toULength=byteIndex;
-
-    /* write back the updated pointers */
-    pArgs->source=(const char *)source;
-    pArgs->target=target;
-    pArgs->offsets=offsets;
-    return;
-}
-
-static void
-_UTF7FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
-                            UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    const UChar *source, *sourceLimit;
-    uint8_t *target, *targetLimit;
-    int32_t *offsets;
-
-    int32_t length, targetCapacity, sourceIndex;
-    UChar c;
-
-    /* UTF-7 state */
-    const UBool *encodeDirectly;
-    uint8_t bits;
-    int8_t base64Counter;
-    UBool inDirectMode;
-
-    /* set up the local pointers */
-    cnv=pArgs->converter;
-
-    /* set up the local pointers */
-    source=pArgs->source;
-    sourceLimit=pArgs->sourceLimit;
-    target=(uint8_t *)pArgs->target;
-    targetLimit=(uint8_t *)pArgs->targetLimit;
-    offsets=pArgs->offsets;
-
-    /* get the state machine state */
-    {
-        uint32_t status=cnv->fromUnicodeStatus;
-        encodeDirectly= status<0x10000000 ? encodeDirectlyMaximum : encodeDirectlyRestricted;
-        inDirectMode=(UBool)((status>>24)&1);
-        base64Counter=(int8_t)(status>>16);
-        bits=(uint8_t)status;
-        U_ASSERT(bits<=UPRV_LENGTHOF(toBase64));
-    }
-
-    /* UTF-7 always encodes UTF-16 code units, therefore we need only a simple sourceIndex */
-    sourceIndex=0;
-
-    if(inDirectMode) {
-directMode:
-        length=(int32_t)(sourceLimit-source);
-        targetCapacity=(int32_t)(targetLimit-target);
-        if(length>targetCapacity) {
-            length=targetCapacity;
-        }
-        while(length>0) {
-            c=*source++;
-            /* currently always encode CR LF SP TAB directly */
-            if(c<=127 && encodeDirectly[c]) {
-                /* encode directly */
-                *target++=(uint8_t)c;
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex++;
-                }
-            } else if(c==PLUS) {
-                /* output +- for + */
-                *target++=PLUS;
-                if(target<targetLimit) {
-                    *target++=MINUS;
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                        *offsets++=sourceIndex++;
-                    }
-                    /* realign length and targetCapacity */
-                    goto directMode;
-                } else {
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex++;
-                    }
-                    cnv->charErrorBuffer[0]=MINUS;
-                    cnv->charErrorBufferLength=1;
-                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                    break;
-                }
-            } else {
-                /* un-read this character and switch to Unicode Mode */
-                --source;
-                *target++=PLUS;
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex;
-                }
-                inDirectMode=FALSE;
-                base64Counter=0;
-                goto unicodeMode;
-            }
-            --length;
-        }
-        if(source<sourceLimit && target>=targetLimit) {
-            /* target is full */
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        }
-    } else {
-unicodeMode:
-        while(source<sourceLimit) {
-            if(target<targetLimit) {
-                c=*source++;
-                if(c<=127 && encodeDirectly[c]) {
-                    /* encode directly */
-                    inDirectMode=TRUE;
-
-                    /* trick: back out this character to make this easier */
-                    --source;
-
-                    /* terminate the base64 sequence */
-                    if(base64Counter!=0) {
-                        /* write remaining bits for the previous character */
-                        *target++=toBase64[bits];
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex-1;
-                        }
-                    }
-                    if(fromBase64[c]!=-1) {
-                        /* need to terminate with a minus */
-                        if(target<targetLimit) {
-                            *target++=MINUS;
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex-1;
-                            }
-                        } else {
-                            cnv->charErrorBuffer[0]=MINUS;
-                            cnv->charErrorBufferLength=1;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                            break;
-                        }
-                    }
-                    goto directMode;
-                } else {
-                    /*
-                     * base64 this character:
-                     * Output 2 or 3 base64 bytes for the remaining bits of the previous character
-                     * and the bits of this character, each implicitly in UTF-16BE.
-                     *
-                     * Here, bits is an 8-bit variable because only 6 bits need to be kept from one
-                     * character to the next. The actual 2 or 4 bits are shifted to the left edge
-                     * of the 6-bits field 5..0 to make the termination of the base64 sequence easier.
-                     */
-                    switch(base64Counter) {
-                    case 0:
-                        *target++=toBase64[c>>10];
-                        if(target<targetLimit) {
-                            *target++=toBase64[(c>>4)&0x3f];
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex;
-                                *offsets++=sourceIndex++;
-                            }
-                        } else {
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex++;
-                            }
-                            cnv->charErrorBuffer[0]=toBase64[(c>>4)&0x3f];
-                            cnv->charErrorBufferLength=1;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                        }
-                        bits=(uint8_t)((c&15)<<2);
-                        base64Counter=1;
-                        break;
-                    case 1:
-                        *target++=toBase64[bits|(c>>14)];
-                        if(target<targetLimit) {
-                            *target++=toBase64[(c>>8)&0x3f];
-                            if(target<targetLimit) {
-                                *target++=toBase64[(c>>2)&0x3f];
-                                if(offsets!=NULL) {
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex++;
-                                }
-                            } else {
-                                if(offsets!=NULL) {
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex++;
-                                }
-                                cnv->charErrorBuffer[0]=toBase64[(c>>2)&0x3f];
-                                cnv->charErrorBufferLength=1;
-                                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                            }
-                        } else {
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex++;
-                            }
-                            cnv->charErrorBuffer[0]=toBase64[(c>>8)&0x3f];
-                            cnv->charErrorBuffer[1]=toBase64[(c>>2)&0x3f];
-                            cnv->charErrorBufferLength=2;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                        }
-                        bits=(uint8_t)((c&3)<<4);
-                        base64Counter=2;
-                        break;
-                    case 2:
-                        *target++=toBase64[bits|(c>>12)];
-                        if(target<targetLimit) {
-                            *target++=toBase64[(c>>6)&0x3f];
-                            if(target<targetLimit) {
-                                *target++=toBase64[c&0x3f];
-                                if(offsets!=NULL) {
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex++;
-                                }
-                            } else {
-                                if(offsets!=NULL) {
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex++;
-                                }
-                                cnv->charErrorBuffer[0]=toBase64[c&0x3f];
-                                cnv->charErrorBufferLength=1;
-                                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                            }
-                        } else {
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex++;
-                            }
-                            cnv->charErrorBuffer[0]=toBase64[(c>>6)&0x3f];
-                            cnv->charErrorBuffer[1]=toBase64[c&0x3f];
-                            cnv->charErrorBufferLength=2;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                        }
-                        bits=0;
-                        base64Counter=0;
-                        break;
-                    default:
-                        /* will never occur */
-                        break;
-                    }
-                }
-            } else {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-        }
-    }
-
-    if(pArgs->flush && source>=sourceLimit) {
-        /* flush remaining bits to the target */
-        if(!inDirectMode) {
-            if (base64Counter!=0) {
-                if(target<targetLimit) {
-                    *target++=toBase64[bits];
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex-1;
-                    }
-                } else {
-                    cnv->charErrorBuffer[cnv->charErrorBufferLength++]=toBase64[bits];
-                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                }
-            }
-            /* Add final MINUS to terminate unicodeMode */
-            if(target<targetLimit) {
-                *target++=MINUS;
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex-1;
-                }
-            } else {
-                cnv->charErrorBuffer[cnv->charErrorBufferLength++]=MINUS;
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            }
-        }
-        /* reset the state for the next conversion */
-        cnv->fromUnicodeStatus=(cnv->fromUnicodeStatus&0xf0000000)|0x1000000; /* keep version, inDirectMode=TRUE */
-    } else {
-        /* set the converter state back into UConverter */
-        cnv->fromUnicodeStatus=
-            (cnv->fromUnicodeStatus&0xf0000000)|    /* keep version*/
-            ((uint32_t)inDirectMode<<24)|((uint32_t)base64Counter<<16)|(uint32_t)bits;
-    }
-
-    /* write back the updated pointers */
-    pArgs->source=source;
-    pArgs->target=(char *)target;
-    pArgs->offsets=offsets;
-    return;
-}
-
-static const char *
-_UTF7GetName(const UConverter *cnv) {
-    switch(cnv->fromUnicodeStatus>>28) {
-    case 1:
-        return "UTF-7,version=1";
-    default:
-        return "UTF-7";
-    }
-}
-
-static const UConverterImpl _UTF7Impl={
-    UCNV_UTF7,
-
-    NULL,
-    NULL,
-
-    _UTF7Open,
-    NULL,
-    _UTF7Reset,
-
-    _UTF7ToUnicodeWithOffsets,
-    _UTF7ToUnicodeWithOffsets,
-    _UTF7FromUnicodeWithOffsets,
-    _UTF7FromUnicodeWithOffsets,
-    NULL,
-
-    NULL,
-    _UTF7GetName,
-    NULL, /* we don't need writeSub() because we never call a callback at fromUnicode() */
-    NULL,
-    ucnv_getCompleteUnicodeSet,
-
-    NULL,
-    NULL
-};
-
-static const UConverterStaticData _UTF7StaticData={
-    sizeof(UConverterStaticData),
-    "UTF-7",
-    0, /* TODO CCSID for UTF-7 */
-    UCNV_IBM, UCNV_UTF7,
-    1, 4,
-    { 0x3f, 0, 0, 0 }, 1, /* the subchar is not used */
-    FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-const UConverterSharedData _UTF7Data=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF7StaticData, &_UTF7Impl);
-
-/* IMAP mailbox name encoding ----------------------------------------------- */
-
-/*
- * RFC 2060: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
- * http://www.ietf.org/rfc/rfc2060.txt
- *
- * 5.1.3.  Mailbox International Naming Convention
- *
- * By convention, international mailbox names are specified using a
- * modified version of the UTF-7 encoding described in [UTF-7].  The
- * purpose of these modifications is to correct the following problems
- * with UTF-7:
- *
- *    1) UTF-7 uses the "+" character for shifting; this conflicts with
- *       the common use of "+" in mailbox names, in particular USENET
- *       newsgroup names.
- *
- *    2) UTF-7's encoding is BASE64 which uses the "/" character; this
- *       conflicts with the use of "/" as a popular hierarchy delimiter.
- *
- *    3) UTF-7 prohibits the unencoded usage of "\"; this conflicts with
- *       the use of "\" as a popular hierarchy delimiter.
- *
- *    4) UTF-7 prohibits the unencoded usage of "~"; this conflicts with
- *       the use of "~" in some servers as a home directory indicator.
- *
- *    5) UTF-7 permits multiple alternate forms to represent the same
- *       string; in particular, printable US-ASCII chararacters can be
- *       represented in encoded form.
- *
- * In modified UTF-7, printable US-ASCII characters except for "&"
- * represent themselves; that is, characters with octet values 0x20-0x25
- * and 0x27-0x7e.  The character "&" (0x26) is represented by the two-
- * octet sequence "&-".
- *
- * All other characters (octet values 0x00-0x1f, 0x7f-0xff, and all
- * Unicode 16-bit octets) are represented in modified BASE64, with a
- * further modification from [UTF-7] that "," is used instead of "/".
- * Modified BASE64 MUST NOT be used to represent any printing US-ASCII
- * character which can represent itself.
- *
- * "&" is used to shift to modified BASE64 and "-" to shift back to US-
- * ASCII.  All names start in US-ASCII, and MUST end in US-ASCII (that
- * is, a name that ends with a Unicode 16-bit octet MUST end with a "-
- * ").
- *
- * For example, here is a mailbox name which mixes English, Japanese,
- * and Chinese text: ~peter/mail/&ZeVnLIqe-/&U,BTFw-
- */
-
-/*
- * Tests for US-ASCII characters belonging to character classes
- * defined in UTF-7.
- *
- * Set D (directly encoded characters) consists of the following
- * characters: the upper and lower case letters A through Z
- * and a through z, the 10 digits 0-9, and the following nine special
- * characters (note that "+" and "=" are omitted):
- *     '(),-./:?
- *
- * Set O (optional direct characters) consists of the following
- * characters (note that "\" and "~" are omitted):
- *     !"#$%&*;<=>@[]^_`{|}
- *
- * According to the rules in RFC 2152, the byte values for the following
- * US-ASCII characters are not used in UTF-7 and are therefore illegal:
- * - all C0 control codes except for CR LF TAB
- * - BACKSLASH
- * - TILDE
- * - DEL
- * - all codes beyond US-ASCII, i.e. all >127
- */
-
-/* uses '&' not '+' to start a base64 sequence */
-#define AMPERSAND 0x26
-#define COMMA 0x2c
-#define SLASH 0x2f
-
-/* legal byte values: all US-ASCII graphic characters 0x20..0x7e */
-#define isLegalIMAP(c) (0x20<=(c) && (c)<=0x7e)
-
-/* direct-encode all of printable ASCII 0x20..0x7e except '&' 0x26 */
-#define inSetDIMAP(c) (isLegalIMAP(c) && c!=AMPERSAND)
-
-#define TO_BASE64_IMAP(n) ((n)<63 ? toBase64[n] : COMMA)
-#define FROM_BASE64_IMAP(c) ((c)==COMMA ? 63 : (c)==SLASH ? -1 : fromBase64[c])
-
-/*
- * converter status values:
- *
- * toUnicodeStatus:
- *     24 inDirectMode (boolean)
- * 23..16 base64Counter (-1..7)
- * 15..0  bits (up to 14 bits incoming base64)
- *
- * fromUnicodeStatus:
- *     24 inDirectMode (boolean)
- * 23..16 base64Counter (0..2)
- *  7..0  bits (6 bits outgoing base64)
- *
- * ignore bits 31..25
- */
-
-static void
-_IMAPToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                          UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    const uint8_t *source, *sourceLimit;
-    UChar *target;
-    const UChar *targetLimit;
-    int32_t *offsets;
-
-    uint8_t *bytes;
-    uint8_t byteIndex;
-
-    int32_t length, targetCapacity;
-
-    /* UTF-7 state */
-    uint16_t bits;
-    int8_t base64Counter;
-    UBool inDirectMode;
-
-    int8_t base64Value;
-
-    int32_t sourceIndex, nextSourceIndex;
-
-    UChar c;
-    uint8_t b;
-
-    /* set up the local pointers */
-    cnv=pArgs->converter;
-
-    source=(const uint8_t *)pArgs->source;
-    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
-    target=pArgs->target;
-    targetLimit=pArgs->targetLimit;
-    offsets=pArgs->offsets;
-    /* get the state machine state */
-    {
-        uint32_t status=cnv->toUnicodeStatus;
-        inDirectMode=(UBool)((status>>24)&1);
-        base64Counter=(int8_t)(status>>16);
-        bits=(uint16_t)status;
-    }
-    bytes=cnv->toUBytes;
-    byteIndex=cnv->toULength;
-
-    /* sourceIndex=-1 if the current character began in the previous buffer */
-    sourceIndex=byteIndex==0 ? 0 : -1;
-    nextSourceIndex=0;
-
-    if(inDirectMode) {
-directMode:
-        /*
-         * In Direct Mode, US-ASCII characters are encoded directly, i.e.,
-         * with their US-ASCII byte values.
-         * An ampersand starts Unicode (or "escape") Mode.
-         *
-         * In Direct Mode, only the sourceIndex is used.
-         */
-        byteIndex=0;
-        length=(int32_t)(sourceLimit-source);
-        targetCapacity=(int32_t)(targetLimit-target);
-        if(length>targetCapacity) {
-            length=targetCapacity;
-        }
-        while(length>0) {
-            b=*source++;
-            if(!isLegalIMAP(b)) {
-                /* illegal */
-                bytes[0]=b;
-                byteIndex=1;
-                *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                break;
-            } else if(b!=AMPERSAND) {
-                /* write directly encoded character */
-                *target++=b;
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex++;
-                }
-            } else /* AMPERSAND */ {
-                /* switch to Unicode mode */
-                nextSourceIndex=++sourceIndex;
-                inDirectMode=FALSE;
-                byteIndex=0;
-                bits=0;
-                base64Counter=-1;
-                goto unicodeMode;
-            }
-            --length;
-        }
-        if(source<sourceLimit && target>=targetLimit) {
-            /* target is full */
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        }
-    } else {
-unicodeMode:
-        /*
-         * In Unicode (or "escape") Mode, UTF-16BE is base64-encoded.
-         * The base64 sequence ends with any character that is not in the base64 alphabet.
-         * A terminating minus sign is consumed.
-         * US-ASCII must not be base64-ed.
-         *
-         * In Unicode Mode, the sourceIndex has the index to the start of the current
-         * base64 bytes, while nextSourceIndex is precisely parallel to source,
-         * keeping the index to the following byte.
-         * Note that in 2 out of 3 cases, UChars overlap within a base64 byte.
-         */
-        while(source<sourceLimit) {
-            if(target<targetLimit) {
-                bytes[byteIndex++]=b=*source++;
-                ++nextSourceIndex;
-                if(b>0x7e) {
-                    /* illegal - test other illegal US-ASCII values by base64Value==-3 */
-                    inDirectMode=TRUE;
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    break;
-                } else if((base64Value=FROM_BASE64_IMAP(b))>=0) {
-                    /* collect base64 bytes into UChars */
-                    switch(base64Counter) {
-                    case -1: /* -1 is immediately after the & */
-                    case 0:
-                        bits=base64Value;
-                        base64Counter=1;
-                        break;
-                    case 1:
-                    case 3:
-                    case 4:
-                    case 6:
-                        bits=(uint16_t)((bits<<6)|base64Value);
-                        ++base64Counter;
-                        break;
-                    case 2:
-                        c=(UChar)((bits<<4)|(base64Value>>2));
-                        if(isLegalIMAP(c)) {
-                            /* illegal */
-                            inDirectMode=TRUE;
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            goto endloop;
-                        }
-                        *target++=c;
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex;
-                            sourceIndex=nextSourceIndex-1;
-                        }
-                        bytes[0]=b; /* keep this byte in case an error occurs */
-                        byteIndex=1;
-                        bits=(uint16_t)(base64Value&3);
-                        base64Counter=3;
-                        break;
-                    case 5:
-                        c=(UChar)((bits<<2)|(base64Value>>4));
-                        if(isLegalIMAP(c)) {
-                            /* illegal */
-                            inDirectMode=TRUE;
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            goto endloop;
-                        }
-                        *target++=c;
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex;
-                            sourceIndex=nextSourceIndex-1;
-                        }
-                        bytes[0]=b; /* keep this byte in case an error occurs */
-                        byteIndex=1;
-                        bits=(uint16_t)(base64Value&15);
-                        base64Counter=6;
-                        break;
-                    case 7:
-                        c=(UChar)((bits<<6)|base64Value);
-                        if(isLegalIMAP(c)) {
-                            /* illegal */
-                            inDirectMode=TRUE;
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            goto endloop;
-                        }
-                        *target++=c;
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex;
-                            sourceIndex=nextSourceIndex;
-                        }
-                        byteIndex=0;
-                        bits=0;
-                        base64Counter=0;
-                        break;
-                    default:
-                        /* will never occur */
-                        break;
-                    }
-                } else if(base64Value==-2) {
-                    /* minus sign terminates the base64 sequence */
-                    inDirectMode=TRUE;
-                    if(base64Counter==-1) {
-                        /* &- i.e. a minus immediately following an ampersand */
-                        *target++=AMPERSAND;
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex-1;
-                        }
-                    } else {
-                        /* absorb the minus and leave the Unicode Mode */
-                        if(bits!=0 || (base64Counter!=0 && base64Counter!=3 && base64Counter!=6)) {
-                            /* bits are illegally left over, a UChar is incomplete */
-                            /* base64Counter other than 0, 3, 6 means non-minimal zero-padding, also illegal */
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            break;
-                        }
-                    }
-                    sourceIndex=nextSourceIndex;
-                    goto directMode;
-                } else {
-                    if(base64Counter==-1) {
-                        /* illegal: & immediately followed by something other than base64 or minus sign */
-                        /* include the ampersand in the reported sequence */
-                        --sourceIndex;
-                        bytes[0]=AMPERSAND;
-                        bytes[1]=b;
-                        byteIndex=2;
-                    }
-                    /* base64Value==-1 for characters that are illegal only in Unicode mode */
-                    /* base64Value==-3 for illegal characters */
-                    /* illegal */
-                    inDirectMode=TRUE;
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    break;
-                }
-            } else {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-        }
-    }
-endloop:
-
-    /*
-     * the end of the input stream and detection of truncated input
-     * are handled by the framework, but here we must check if we are in Unicode
-     * mode and byteIndex==0 because we must end in direct mode
-     *
-     * conditions:
-     *   successful
-     *   in Unicode mode and byteIndex==0
-     *   end of input and no truncated input
-     */
-    if( U_SUCCESS(*pErrorCode) &&
-        !inDirectMode && byteIndex==0 &&
-        pArgs->flush && source>=sourceLimit
-    ) {
-        if(base64Counter==-1) {
-            /* & at the very end of the input */
-            /* make the ampersand the reported sequence */
-            bytes[0]=AMPERSAND;
-            byteIndex=1;
-        }
-        /* else if(base64Counter!=-1) byteIndex remains 0 because there is no particular byte sequence */
-
-        inDirectMode=TRUE; /* avoid looping */
-        *pErrorCode=U_TRUNCATED_CHAR_FOUND;
-    }
-
-    /* set the converter state back into UConverter */
-    cnv->toUnicodeStatus=((uint32_t)inDirectMode<<24)|((uint32_t)((uint8_t)base64Counter)<<16)|(uint32_t)bits;
-    cnv->toULength=byteIndex;
-
-    /* write back the updated pointers */
-    pArgs->source=(const char *)source;
-    pArgs->target=target;
-    pArgs->offsets=offsets;
-    return;
-}
-
-static void
-_IMAPFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
-                            UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    const UChar *source, *sourceLimit;
-    uint8_t *target, *targetLimit;
-    int32_t *offsets;
-
-    int32_t length, targetCapacity, sourceIndex;
-    UChar c;
-    uint8_t b;
-
-    /* UTF-7 state */
-    uint8_t bits;
-    int8_t base64Counter;
-    UBool inDirectMode;
-
-    /* set up the local pointers */
-    cnv=pArgs->converter;
-
-    /* set up the local pointers */
-    source=pArgs->source;
-    sourceLimit=pArgs->sourceLimit;
-    target=(uint8_t *)pArgs->target;
-    targetLimit=(uint8_t *)pArgs->targetLimit;
-    offsets=pArgs->offsets;
-
-    /* get the state machine state */
-    {
-        uint32_t status=cnv->fromUnicodeStatus;
-        inDirectMode=(UBool)((status>>24)&1);
-        base64Counter=(int8_t)(status>>16);
-        bits=(uint8_t)status;
-    }
-
-    /* UTF-7 always encodes UTF-16 code units, therefore we need only a simple sourceIndex */
-    sourceIndex=0;
-
-    if(inDirectMode) {
-directMode:
-        length=(int32_t)(sourceLimit-source);
-        targetCapacity=(int32_t)(targetLimit-target);
-        if(length>targetCapacity) {
-            length=targetCapacity;
-        }
-        while(length>0) {
-            c=*source++;
-            /* encode 0x20..0x7e except '&' directly */
-            if(inSetDIMAP(c)) {
-                /* encode directly */
-                *target++=(uint8_t)c;
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex++;
-                }
-            } else if(c==AMPERSAND) {
-                /* output &- for & */
-                *target++=AMPERSAND;
-                if(target<targetLimit) {
-                    *target++=MINUS;
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                        *offsets++=sourceIndex++;
-                    }
-                    /* realign length and targetCapacity */
-                    goto directMode;
-                } else {
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex++;
-                    }
-                    cnv->charErrorBuffer[0]=MINUS;
-                    cnv->charErrorBufferLength=1;
-                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                    break;
-                }
-            } else {
-                /* un-read this character and switch to Unicode Mode */
-                --source;
-                *target++=AMPERSAND;
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex;
-                }
-                inDirectMode=FALSE;
-                base64Counter=0;
-                goto unicodeMode;
-            }
-            --length;
-        }
-        if(source<sourceLimit && target>=targetLimit) {
-            /* target is full */
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        }
-    } else {
-unicodeMode:
-        while(source<sourceLimit) {
-            if(target<targetLimit) {
-                c=*source++;
-                if(isLegalIMAP(c)) {
-                    /* encode directly */
-                    inDirectMode=TRUE;
-
-                    /* trick: back out this character to make this easier */
-                    --source;
-
-                    /* terminate the base64 sequence */
-                    if(base64Counter!=0) {
-                        /* write remaining bits for the previous character */
-                        *target++=TO_BASE64_IMAP(bits);
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex-1;
-                        }
-                    }
-                    /* need to terminate with a minus */
-                    if(target<targetLimit) {
-                        *target++=MINUS;
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex-1;
-                        }
-                    } else {
-                        cnv->charErrorBuffer[0]=MINUS;
-                        cnv->charErrorBufferLength=1;
-                        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                        break;
-                    }
-                    goto directMode;
-                } else {
-                    /*
-                     * base64 this character:
-                     * Output 2 or 3 base64 bytes for the remaining bits of the previous character
-                     * and the bits of this character, each implicitly in UTF-16BE.
-                     *
-                     * Here, bits is an 8-bit variable because only 6 bits need to be kept from one
-                     * character to the next. The actual 2 or 4 bits are shifted to the left edge
-                     * of the 6-bits field 5..0 to make the termination of the base64 sequence easier.
-                     */
-                    switch(base64Counter) {
-                    case 0:
-                        b=(uint8_t)(c>>10);
-                        *target++=TO_BASE64_IMAP(b);
-                        if(target<targetLimit) {
-                            b=(uint8_t)((c>>4)&0x3f);
-                            *target++=TO_BASE64_IMAP(b);
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex;
-                                *offsets++=sourceIndex++;
-                            }
-                        } else {
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex++;
-                            }
-                            b=(uint8_t)((c>>4)&0x3f);
-                            cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
-                            cnv->charErrorBufferLength=1;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                        }
-                        bits=(uint8_t)((c&15)<<2);
-                        base64Counter=1;
-                        break;
-                    case 1:
-                        b=(uint8_t)(bits|(c>>14));
-                        *target++=TO_BASE64_IMAP(b);
-                        if(target<targetLimit) {
-                            b=(uint8_t)((c>>8)&0x3f);
-                            *target++=TO_BASE64_IMAP(b);
-                            if(target<targetLimit) {
-                                b=(uint8_t)((c>>2)&0x3f);
-                                *target++=TO_BASE64_IMAP(b);
-                                if(offsets!=NULL) {
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex++;
-                                }
-                            } else {
-                                if(offsets!=NULL) {
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex++;
-                                }
-                                b=(uint8_t)((c>>2)&0x3f);
-                                cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
-                                cnv->charErrorBufferLength=1;
-                                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                            }
-                        } else {
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex++;
-                            }
-                            b=(uint8_t)((c>>8)&0x3f);
-                            cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
-                            b=(uint8_t)((c>>2)&0x3f);
-                            cnv->charErrorBuffer[1]=TO_BASE64_IMAP(b);
-                            cnv->charErrorBufferLength=2;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                        }
-                        bits=(uint8_t)((c&3)<<4);
-                        base64Counter=2;
-                        break;
-                    case 2:
-                        b=(uint8_t)(bits|(c>>12));
-                        *target++=TO_BASE64_IMAP(b);
-                        if(target<targetLimit) {
-                            b=(uint8_t)((c>>6)&0x3f);
-                            *target++=TO_BASE64_IMAP(b);
-                            if(target<targetLimit) {
-                                b=(uint8_t)(c&0x3f);
-                                *target++=TO_BASE64_IMAP(b);
-                                if(offsets!=NULL) {
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex++;
-                                }
-                            } else {
-                                if(offsets!=NULL) {
-                                    *offsets++=sourceIndex;
-                                    *offsets++=sourceIndex++;
-                                }
-                                b=(uint8_t)(c&0x3f);
-                                cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
-                                cnv->charErrorBufferLength=1;
-                                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                            }
-                        } else {
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex++;
-                            }
-                            b=(uint8_t)((c>>6)&0x3f);
-                            cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
-                            b=(uint8_t)(c&0x3f);
-                            cnv->charErrorBuffer[1]=TO_BASE64_IMAP(b);
-                            cnv->charErrorBufferLength=2;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                        }
-                        bits=0;
-                        base64Counter=0;
-                        break;
-                    default:
-                        /* will never occur */
-                        break;
-                    }
-                }
-            } else {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-        }
-    }
-
-    if(pArgs->flush && source>=sourceLimit) {
-        /* flush remaining bits to the target */
-        if(!inDirectMode) {
-            if(base64Counter!=0) {
-                if(target<targetLimit) {
-                    *target++=TO_BASE64_IMAP(bits);
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex-1;
-                    }
-                } else {
-                    cnv->charErrorBuffer[cnv->charErrorBufferLength++]=TO_BASE64_IMAP(bits);
-                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                }
-            }
-            /* need to terminate with a minus */
-            if(target<targetLimit) {
-                *target++=MINUS;
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex-1;
-                }
-            } else {
-                cnv->charErrorBuffer[cnv->charErrorBufferLength++]=MINUS;
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            }
-        }
-        /* reset the state for the next conversion */
-        cnv->fromUnicodeStatus=(cnv->fromUnicodeStatus&0xf0000000)|0x1000000; /* keep version, inDirectMode=TRUE */
-    } else {
-        /* set the converter state back into UConverter */
-        cnv->fromUnicodeStatus=
-            (cnv->fromUnicodeStatus&0xf0000000)|    /* keep version*/
-            ((uint32_t)inDirectMode<<24)|((uint32_t)base64Counter<<16)|(uint32_t)bits;
-    }
-
-    /* write back the updated pointers */
-    pArgs->source=source;
-    pArgs->target=(char *)target;
-    pArgs->offsets=offsets;
-    return;
-}
-
-static const UConverterImpl _IMAPImpl={
-    UCNV_IMAP_MAILBOX,
-
-    NULL,
-    NULL,
-
-    _UTF7Open,
-    NULL,
-    _UTF7Reset,
-
-    _IMAPToUnicodeWithOffsets,
-    _IMAPToUnicodeWithOffsets,
-    _IMAPFromUnicodeWithOffsets,
-    _IMAPFromUnicodeWithOffsets,
-    NULL,
-
-    NULL,
-    NULL,
-    NULL, /* we don't need writeSub() because we never call a callback at fromUnicode() */
-    NULL,
-    ucnv_getCompleteUnicodeSet
-};
-
-static const UConverterStaticData _IMAPStaticData={
-    sizeof(UConverterStaticData),
-    "IMAP-mailbox-name",
-    0, /* TODO CCSID for IMAP-mailbox-name */
-    UCNV_IBM, UCNV_IMAP_MAILBOX,
-    1, 4,
-    { 0x3f, 0, 0, 0 }, 1, /* the subchar is not used */
-    FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-const UConverterSharedData _IMAPData=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_IMAPStaticData, &_IMAPImpl);
-
-#endif
diff --git a/source/common/ucnv_u8.c b/source/common/ucnv_u8.c
deleted file mode 100644 (file)
index 0258347..0000000
+++ /dev/null
@@ -1,1098 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*  
-**********************************************************************
-*   Copyright (C) 2002-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   file name:  ucnv_u8.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2002jul01
-*   created by: Markus W. Scherer
-*
-*   UTF-8 converter implementation. Used to be in ucnv_utf.c.
-*
-*   Also, CESU-8 implementation, see UTR 26.
-*   The CESU-8 converter uses all the same functions as the
-*   UTF-8 converter, with a branch for converting supplementary code points.
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "unicode/ucnv.h"
-#include "unicode/utf.h"
-#include "unicode/utf8.h"
-#include "unicode/utf16.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-#include "cmemory.h"
-
-/* Prototypes --------------------------------------------------------------- */
-
-/* Keep these here to make finicky compilers happy */
-
-U_CFUNC void ucnv_fromUnicode_UTF8(UConverterFromUnicodeArgs *args,
-                                           UErrorCode *err);
-U_CFUNC void ucnv_fromUnicode_UTF8_OFFSETS_LOGIC(UConverterFromUnicodeArgs *args,
-                                                        UErrorCode *err);
-
-
-/* UTF-8 -------------------------------------------------------------------- */
-
-/* UTF-8 Conversion DATA
- *   for more information see Unicode Standard 2.0, Transformation Formats Appendix A-9
- */
-/*static const uint32_t REPLACEMENT_CHARACTER = 0x0000FFFD;*/
-#define MAXIMUM_UCS2            0x0000FFFF
-#define MAXIMUM_UTF             0x0010FFFF
-#define MAXIMUM_UCS4            0x7FFFFFFF
-#define HALF_SHIFT              10
-#define HALF_BASE               0x0010000
-#define HALF_MASK               0x3FF
-#define SURROGATE_HIGH_START    0xD800
-#define SURROGATE_HIGH_END      0xDBFF
-#define SURROGATE_LOW_START     0xDC00
-#define SURROGATE_LOW_END       0xDFFF
-
-/* -SURROGATE_LOW_START + HALF_BASE */
-#define SURROGATE_LOW_BASE      9216
-
-static const uint32_t offsetsFromUTF8[7] = {0,
-  (uint32_t) 0x00000000, (uint32_t) 0x00003080, (uint32_t) 0x000E2080,
-  (uint32_t) 0x03C82080, (uint32_t) 0xFA082080, (uint32_t) 0x82082080
-};
-
-/* END OF UTF-8 Conversion DATA */
-
-static const int8_t bytesFromUTF8[256] = {
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
-};
-
-/*
- * Starting with Unicode 3.0.1:
- * UTF-8 byte sequences of length N _must_ encode code points of or above utf8_minChar32[N];
- * byte sequences with more than 4 bytes are illegal in UTF-8,
- * which is tested with impossible values for them
- */
-static const uint32_t
-utf8_minChar32[7]={ 0, 0, 0x80, 0x800, 0x10000, 0xffffffff, 0xffffffff };
-
-static UBool hasCESU8Data(const UConverter *cnv)
-{
-#if UCONFIG_ONLY_HTML_CONVERSION
-    return FALSE;
-#else
-    return (UBool)(cnv->sharedData == &_CESU8Data);
-#endif
-}
-
-static void ucnv_toUnicode_UTF8 (UConverterToUnicodeArgs * args,
-                                  UErrorCode * err)
-{
-    UConverter *cnv = args->converter;
-    const unsigned char *mySource = (unsigned char *) args->source;
-    UChar *myTarget = args->target;
-    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
-    const UChar *targetLimit = args->targetLimit;
-    unsigned char *toUBytes = cnv->toUBytes;
-    UBool isCESU8 = hasCESU8Data(cnv);
-    uint32_t ch, ch2 = 0;
-    int32_t i, inBytes;
-
-    /* Restore size of current sequence */
-    if (cnv->toUnicodeStatus && myTarget < targetLimit)
-    {
-        inBytes = cnv->mode;            /* restore # of bytes to consume */
-        i = cnv->toULength;             /* restore # of bytes consumed */
-        cnv->toULength = 0;
-
-        ch = cnv->toUnicodeStatus;/*Stores the previously calculated ch from a previous call*/
-        cnv->toUnicodeStatus = 0;
-        goto morebytes;
-    }
-
-
-    while (mySource < sourceLimit && myTarget < targetLimit)
-    {
-        ch = *(mySource++);
-        if (ch < 0x80)        /* Simple case */
-        {
-            *(myTarget++) = (UChar) ch;
-        }
-        else
-        {
-            /* store the first char */
-            toUBytes[0] = (char)ch;
-            inBytes = bytesFromUTF8[ch]; /* lookup current sequence length */
-            i = 1;
-
-morebytes:
-            while (i < inBytes)
-            {
-                if (mySource < sourceLimit)
-                {
-                    toUBytes[i] = (char) (ch2 = *mySource);
-                    if (!U8_IS_TRAIL(ch2))
-                    {
-                        break; /* i < inBytes */
-                    }
-                    ch = (ch << 6) + ch2;
-                    ++mySource;
-                    i++;
-                }
-                else
-                {
-                    /* stores a partially calculated target*/
-                    cnv->toUnicodeStatus = ch;
-                    cnv->mode = inBytes;
-                    cnv->toULength = (int8_t) i;
-                    goto donefornow;
-                }
-            }
-
-            /* Remove the accumulated high bits */
-            ch -= offsetsFromUTF8[inBytes];
-
-            /*
-             * Legal UTF-8 byte sequences in Unicode 3.0.1 and up:
-             * - use only trail bytes after a lead byte (checked above)
-             * - use the right number of trail bytes for a given lead byte
-             * - encode a code point <= U+10ffff
-             * - use the fewest possible number of bytes for their code points
-             * - use at most 4 bytes (for i>=5 it is 0x10ffff<utf8_minChar32[])
-             *
-             * Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8.
-             * There are no irregular sequences any more.
-             * In CESU-8, only surrogates, not supplementary code points, are encoded directly.
-             */
-            if (i == inBytes && ch <= MAXIMUM_UTF && ch >= utf8_minChar32[i] &&
-                (isCESU8 ? i <= 3 : !U_IS_SURROGATE(ch)))
-            {
-                /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
-                if (ch <= MAXIMUM_UCS2) 
-                {
-                    /* fits in 16 bits */
-                    *(myTarget++) = (UChar) ch;
-                }
-                else
-                {
-                    /* write out the surrogates */
-                    ch -= HALF_BASE;
-                    *(myTarget++) = (UChar) ((ch >> HALF_SHIFT) + SURROGATE_HIGH_START);
-                    ch = (ch & HALF_MASK) + SURROGATE_LOW_START;
-                    if (myTarget < targetLimit)
-                    {
-                        *(myTarget++) = (UChar)ch;
-                    }
-                    else
-                    {
-                        /* Put in overflow buffer (not handled here) */
-                        cnv->UCharErrorBuffer[0] = (UChar) ch;
-                        cnv->UCharErrorBufferLength = 1;
-                        *err = U_BUFFER_OVERFLOW_ERROR;
-                        break;
-                    }
-                }
-            }
-            else
-            {
-                cnv->toULength = (int8_t)i;
-                *err = U_ILLEGAL_CHAR_FOUND;
-                break;
-            }
-        }
-    }
-
-donefornow:
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
-    {
-        /* End of target buffer */
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = myTarget;
-    args->source = (const char *) mySource;
-}
-
-static void ucnv_toUnicode_UTF8_OFFSETS_LOGIC (UConverterToUnicodeArgs * args,
-                                                UErrorCode * err)
-{
-    UConverter *cnv = args->converter;
-    const unsigned char *mySource = (unsigned char *) args->source;
-    UChar *myTarget = args->target;
-    int32_t *myOffsets = args->offsets;
-    int32_t offsetNum = 0;
-    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
-    const UChar *targetLimit = args->targetLimit;
-    unsigned char *toUBytes = cnv->toUBytes;
-    UBool isCESU8 = hasCESU8Data(cnv);
-    uint32_t ch, ch2 = 0;
-    int32_t i, inBytes;
-
-    /* Restore size of current sequence */
-    if (cnv->toUnicodeStatus && myTarget < targetLimit)
-    {
-        inBytes = cnv->mode;            /* restore # of bytes to consume */
-        i = cnv->toULength;             /* restore # of bytes consumed */
-        cnv->toULength = 0;
-
-        ch = cnv->toUnicodeStatus;/*Stores the previously calculated ch from a previous call*/
-        cnv->toUnicodeStatus = 0;
-        goto morebytes;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit)
-    {
-        ch = *(mySource++);
-        if (ch < 0x80)        /* Simple case */
-        {
-            *(myTarget++) = (UChar) ch;
-            *(myOffsets++) = offsetNum++;
-        }
-        else
-        {
-            toUBytes[0] = (char)ch;
-            inBytes = bytesFromUTF8[ch];
-            i = 1;
-
-morebytes:
-            while (i < inBytes)
-            {
-                if (mySource < sourceLimit)
-                {
-                    toUBytes[i] = (char) (ch2 = *mySource);
-                    if (!U8_IS_TRAIL(ch2))
-                    {
-                        break; /* i < inBytes */
-                    }
-                    ch = (ch << 6) + ch2;
-                    ++mySource;
-                    i++;
-                }
-                else
-                {
-                    cnv->toUnicodeStatus = ch;
-                    cnv->mode = inBytes;
-                    cnv->toULength = (int8_t)i;
-                    goto donefornow;
-                }
-            }
-
-            /* Remove the accumulated high bits */
-            ch -= offsetsFromUTF8[inBytes];
-
-            /*
-             * Legal UTF-8 byte sequences in Unicode 3.0.1 and up:
-             * - use only trail bytes after a lead byte (checked above)
-             * - use the right number of trail bytes for a given lead byte
-             * - encode a code point <= U+10ffff
-             * - use the fewest possible number of bytes for their code points
-             * - use at most 4 bytes (for i>=5 it is 0x10ffff<utf8_minChar32[])
-             *
-             * Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8.
-             * There are no irregular sequences any more.
-             * In CESU-8, only surrogates, not supplementary code points, are encoded directly.
-             */
-            if (i == inBytes && ch <= MAXIMUM_UTF && ch >= utf8_minChar32[i] &&
-                (isCESU8 ? i <= 3 : !U_IS_SURROGATE(ch)))
-            {
-                /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
-                if (ch <= MAXIMUM_UCS2) 
-                {
-                    /* fits in 16 bits */
-                    *(myTarget++) = (UChar) ch;
-                    *(myOffsets++) = offsetNum;
-                }
-                else
-                {
-                    /* write out the surrogates */
-                    ch -= HALF_BASE;
-                    *(myTarget++) = (UChar) ((ch >> HALF_SHIFT) + SURROGATE_HIGH_START);
-                    *(myOffsets++) = offsetNum;
-                    ch = (ch & HALF_MASK) + SURROGATE_LOW_START;
-                    if (myTarget < targetLimit)
-                    {
-                        *(myTarget++) = (UChar)ch;
-                        *(myOffsets++) = offsetNum;
-                    }
-                    else
-                    {
-                        cnv->UCharErrorBuffer[0] = (UChar) ch;
-                        cnv->UCharErrorBufferLength = 1;
-                        *err = U_BUFFER_OVERFLOW_ERROR;
-                    }
-                }
-                offsetNum += i;
-            }
-            else
-            {
-                cnv->toULength = (int8_t)i;
-                *err = U_ILLEGAL_CHAR_FOUND;
-                break;
-            }
-        }
-    }
-
-donefornow:
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
-    {   /* End of target buffer */
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = myTarget;
-    args->source = (const char *) mySource;
-    args->offsets = myOffsets;
-}
-
-U_CFUNC void ucnv_fromUnicode_UTF8 (UConverterFromUnicodeArgs * args,
-                                    UErrorCode * err)
-{
-    UConverter *cnv = args->converter;
-    const UChar *mySource = args->source;
-    const UChar *sourceLimit = args->sourceLimit;
-    uint8_t *myTarget = (uint8_t *) args->target;
-    const uint8_t *targetLimit = (uint8_t *) args->targetLimit;
-    uint8_t *tempPtr;
-    UChar32 ch;
-    uint8_t tempBuf[4];
-    int32_t indexToWrite;
-    UBool isNotCESU8 = !hasCESU8Data(cnv);
-
-    if (cnv->fromUChar32 && myTarget < targetLimit)
-    {
-        ch = cnv->fromUChar32;
-        cnv->fromUChar32 = 0;
-        goto lowsurrogate;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit)
-    {
-        ch = *(mySource++);
-
-        if (ch < 0x80)        /* Single byte */
-        {
-            *(myTarget++) = (uint8_t) ch;
-        }
-        else if (ch < 0x800)  /* Double byte */
-        {
-            *(myTarget++) = (uint8_t) ((ch >> 6) | 0xc0);
-            if (myTarget < targetLimit)
-            {
-                *(myTarget++) = (uint8_t) ((ch & 0x3f) | 0x80);
-            }
-            else
-            {
-                cnv->charErrorBuffer[0] = (uint8_t) ((ch & 0x3f) | 0x80);
-                cnv->charErrorBufferLength = 1;
-                *err = U_BUFFER_OVERFLOW_ERROR;
-            }
-        }
-        else {
-            /* Check for surrogates */
-            if(U16_IS_SURROGATE(ch) && isNotCESU8) {
-lowsurrogate:
-                if (mySource < sourceLimit) {
-                    /* test both code units */
-                    if(U16_IS_SURROGATE_LEAD(ch) && U16_IS_TRAIL(*mySource)) {
-                        /* convert and consume this supplementary code point */
-                        ch=U16_GET_SUPPLEMENTARY(ch, *mySource);
-                        ++mySource;
-                        /* exit this condition tree */
-                    }
-                    else {
-                        /* this is an unpaired trail or lead code unit */
-                        /* callback(illegal) */
-                        cnv->fromUChar32 = ch;
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                        break;
-                    }
-                }
-                else {
-                    /* no more input */
-                    cnv->fromUChar32 = ch;
-                    break;
-                }
-            }
-
-            /* Do we write the buffer directly for speed,
-            or do we have to be careful about target buffer space? */
-            tempPtr = (((targetLimit - myTarget) >= 4) ? myTarget : tempBuf);
-
-            if (ch <= MAXIMUM_UCS2) {
-                indexToWrite = 2;
-                tempPtr[0] = (uint8_t) ((ch >> 12) | 0xe0);
-            }
-            else {
-                indexToWrite = 3;
-                tempPtr[0] = (uint8_t) ((ch >> 18) | 0xf0);
-                tempPtr[1] = (uint8_t) (((ch >> 12) & 0x3f) | 0x80);
-            }
-            tempPtr[indexToWrite-1] = (uint8_t) (((ch >> 6) & 0x3f) | 0x80);
-            tempPtr[indexToWrite] = (uint8_t) ((ch & 0x3f) | 0x80);
-
-            if (tempPtr == myTarget) {
-                /* There was enough space to write the codepoint directly. */
-                myTarget += (indexToWrite + 1);
-            }
-            else {
-                /* We might run out of room soon. Write it slowly. */
-                for (; tempPtr <= (tempBuf + indexToWrite); tempPtr++) {
-                    if (myTarget < targetLimit) {
-                        *(myTarget++) = *tempPtr;
-                    }
-                    else {
-                        cnv->charErrorBuffer[cnv->charErrorBufferLength++] = *tempPtr;
-                        *err = U_BUFFER_OVERFLOW_ERROR;
-                    }
-                }
-            }
-        }
-    }
-
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
-    {
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = (char *) myTarget;
-    args->source = mySource;
-}
-
-U_CFUNC void ucnv_fromUnicode_UTF8_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args,
-                                                  UErrorCode * err)
-{
-    UConverter *cnv = args->converter;
-    const UChar *mySource = args->source;
-    int32_t *myOffsets = args->offsets;
-    const UChar *sourceLimit = args->sourceLimit;
-    uint8_t *myTarget = (uint8_t *) args->target;
-    const uint8_t *targetLimit = (uint8_t *) args->targetLimit;
-    uint8_t *tempPtr;
-    UChar32 ch;
-    int32_t offsetNum, nextSourceIndex;
-    int32_t indexToWrite;
-    uint8_t tempBuf[4];
-    UBool isNotCESU8 = !hasCESU8Data(cnv);
-
-    if (cnv->fromUChar32 && myTarget < targetLimit)
-    {
-        ch = cnv->fromUChar32;
-        cnv->fromUChar32 = 0;
-        offsetNum = -1;
-        nextSourceIndex = 0;
-        goto lowsurrogate;
-    } else {
-        offsetNum = 0;
-    }
-
-    while (mySource < sourceLimit && myTarget < targetLimit)
-    {
-        ch = *(mySource++);
-
-        if (ch < 0x80)        /* Single byte */
-        {
-            *(myOffsets++) = offsetNum++;
-            *(myTarget++) = (char) ch;
-        }
-        else if (ch < 0x800)  /* Double byte */
-        {
-            *(myOffsets++) = offsetNum;
-            *(myTarget++) = (uint8_t) ((ch >> 6) | 0xc0);
-            if (myTarget < targetLimit)
-            {
-                *(myOffsets++) = offsetNum++;
-                *(myTarget++) = (uint8_t) ((ch & 0x3f) | 0x80);
-            }
-            else
-            {
-                cnv->charErrorBuffer[0] = (uint8_t) ((ch & 0x3f) | 0x80);
-                cnv->charErrorBufferLength = 1;
-                *err = U_BUFFER_OVERFLOW_ERROR;
-            }
-        }
-        else
-        /* Check for surrogates */
-        {
-            nextSourceIndex = offsetNum + 1;
-
-            if(U16_IS_SURROGATE(ch) && isNotCESU8) {
-lowsurrogate:
-                if (mySource < sourceLimit) {
-                    /* test both code units */
-                    if(U16_IS_SURROGATE_LEAD(ch) && U16_IS_TRAIL(*mySource)) {
-                        /* convert and consume this supplementary code point */
-                        ch=U16_GET_SUPPLEMENTARY(ch, *mySource);
-                        ++mySource;
-                        ++nextSourceIndex;
-                        /* exit this condition tree */
-                    }
-                    else {
-                        /* this is an unpaired trail or lead code unit */
-                        /* callback(illegal) */
-                        cnv->fromUChar32 = ch;
-                        *err = U_ILLEGAL_CHAR_FOUND;
-                        break;
-                    }
-                }
-                else {
-                    /* no more input */
-                    cnv->fromUChar32 = ch;
-                    break;
-                }
-            }
-
-            /* Do we write the buffer directly for speed,
-            or do we have to be careful about target buffer space? */
-            tempPtr = (((targetLimit - myTarget) >= 4) ? myTarget : tempBuf);
-
-            if (ch <= MAXIMUM_UCS2) {
-                indexToWrite = 2;
-                tempPtr[0] = (uint8_t) ((ch >> 12) | 0xe0);
-            }
-            else {
-                indexToWrite = 3;
-                tempPtr[0] = (uint8_t) ((ch >> 18) | 0xf0);
-                tempPtr[1] = (uint8_t) (((ch >> 12) & 0x3f) | 0x80);
-            }
-            tempPtr[indexToWrite-1] = (uint8_t) (((ch >> 6) & 0x3f) | 0x80);
-            tempPtr[indexToWrite] = (uint8_t) ((ch & 0x3f) | 0x80);
-
-            if (tempPtr == myTarget) {
-                /* There was enough space to write the codepoint directly. */
-                myTarget += (indexToWrite + 1);
-                myOffsets[0] = offsetNum;
-                myOffsets[1] = offsetNum;
-                myOffsets[2] = offsetNum;
-                if (indexToWrite >= 3) {
-                    myOffsets[3] = offsetNum;
-                }
-                myOffsets += (indexToWrite + 1);
-            }
-            else {
-                /* We might run out of room soon. Write it slowly. */
-                for (; tempPtr <= (tempBuf + indexToWrite); tempPtr++) {
-                    if (myTarget < targetLimit)
-                    {
-                        *(myOffsets++) = offsetNum;
-                        *(myTarget++) = *tempPtr;
-                    }
-                    else
-                    {
-                        cnv->charErrorBuffer[cnv->charErrorBufferLength++] = *tempPtr;
-                        *err = U_BUFFER_OVERFLOW_ERROR;
-                    }
-                }
-            }
-            offsetNum = nextSourceIndex;
-        }
-    }
-
-    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
-    {
-        *err = U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    args->target = (char *) myTarget;
-    args->source = mySource;
-    args->offsets = myOffsets;
-}
-
-static UChar32 ucnv_getNextUChar_UTF8(UConverterToUnicodeArgs *args,
-                                               UErrorCode *err) {
-    UConverter *cnv;
-    const uint8_t *sourceInitial;
-    const uint8_t *source;
-    uint16_t extraBytesToWrite;
-    uint8_t myByte;
-    UChar32 ch;
-    int8_t i, isLegalSequence;
-
-    /* UTF-8 only here, the framework handles CESU-8 to combine surrogate pairs */
-
-    cnv = args->converter;
-    sourceInitial = source = (const uint8_t *)args->source;
-    if (source >= (const uint8_t *)args->sourceLimit)
-    {
-        /* no input */
-        *err = U_INDEX_OUTOFBOUNDS_ERROR;
-        return 0xffff;
-    }
-
-    myByte = (uint8_t)*(source++);
-    if (myByte < 0x80)
-    {
-        args->source = (const char *)source;
-        return (UChar32)myByte;
-    }
-
-    extraBytesToWrite = (uint16_t)bytesFromUTF8[myByte];
-    if (extraBytesToWrite == 0) {
-        cnv->toUBytes[0] = myByte;
-        cnv->toULength = 1;
-        *err = U_ILLEGAL_CHAR_FOUND;
-        args->source = (const char *)source;
-        return 0xffff;
-    }
-
-    /*The byte sequence is longer than the buffer area passed*/
-    if (((const char *)source + extraBytesToWrite - 1) > args->sourceLimit)
-    {
-        /* check if all of the remaining bytes are trail bytes */
-        cnv->toUBytes[0] = myByte;
-        i = 1;
-        *err = U_TRUNCATED_CHAR_FOUND;
-        while(source < (const uint8_t *)args->sourceLimit) {
-            if(U8_IS_TRAIL(myByte = *source)) {
-                cnv->toUBytes[i++] = myByte;
-                ++source;
-            } else {
-                /* error even before we run out of input */
-                *err = U_ILLEGAL_CHAR_FOUND;
-                break;
-            }
-        }
-        cnv->toULength = i;
-        args->source = (const char *)source;
-        return 0xffff;
-    }
-
-    isLegalSequence = 1;
-    ch = myByte << 6;
-    switch(extraBytesToWrite)
-    {     
-      /* note: code falls through cases! (sic)*/ 
-    case 6:
-        ch += (myByte = *source);
-        ch <<= 6;
-        if (!U8_IS_TRAIL(myByte))
-        {
-            isLegalSequence = 0;
-            break;
-        }
-        ++source;
-        U_FALLTHROUGH;
-    case 5:
-        ch += (myByte = *source);
-        ch <<= 6;
-        if (!U8_IS_TRAIL(myByte))
-        {
-            isLegalSequence = 0;
-            break;
-        }
-        ++source;
-        U_FALLTHROUGH;
-    case 4:
-        ch += (myByte = *source);
-        ch <<= 6;
-        if (!U8_IS_TRAIL(myByte))
-        {
-            isLegalSequence = 0;
-            break;
-        }
-        ++source;
-        U_FALLTHROUGH;
-    case 3:
-        ch += (myByte = *source);
-        ch <<= 6;
-        if (!U8_IS_TRAIL(myByte))
-        {
-            isLegalSequence = 0;
-            break;
-        }
-        ++source;
-        U_FALLTHROUGH;
-    case 2:
-        ch += (myByte = *source);
-        if (!U8_IS_TRAIL(myByte))
-        {
-            isLegalSequence = 0;
-            break;
-        }
-        ++source;
-    };
-    ch -= offsetsFromUTF8[extraBytesToWrite];
-    args->source = (const char *)source;
-
-    /*
-     * Legal UTF-8 byte sequences in Unicode 3.0.1 and up:
-     * - use only trail bytes after a lead byte (checked above)
-     * - use the right number of trail bytes for a given lead byte
-     * - encode a code point <= U+10ffff
-     * - use the fewest possible number of bytes for their code points
-     * - use at most 4 bytes (for i>=5 it is 0x10ffff<utf8_minChar32[])
-     *
-     * Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8.
-     * There are no irregular sequences any more.
-     */
-    if (isLegalSequence &&
-        (uint32_t)ch <= MAXIMUM_UTF &&
-        (uint32_t)ch >= utf8_minChar32[extraBytesToWrite] &&
-        !U_IS_SURROGATE(ch)
-    ) {
-        return ch; /* return the code point */
-    }
-
-    for(i = 0; sourceInitial < source; ++i) {
-        cnv->toUBytes[i] = *sourceInitial++;
-    }
-    cnv->toULength = i;
-    *err = U_ILLEGAL_CHAR_FOUND;
-    return 0xffff;
-} 
-
-/* UTF-8-from-UTF-8 conversion functions ------------------------------------ */
-
-/* minimum code point values for n-byte UTF-8 sequences, n=0..4 */
-static const UChar32
-utf8_minLegal[5]={ 0, 0, 0x80, 0x800, 0x10000 };
-
-/* offsets for n-byte UTF-8 sequences that were calculated with ((lead<<6)+trail)<<6+trail... */
-static const UChar32
-utf8_offsets[7]={ 0, 0, 0x3080, 0xE2080, 0x3C82080 };
-
-/* "Convert" UTF-8 to UTF-8: Validate and copy. Modified from ucnv_DBCSFromUTF8(). */
-static void
-ucnv_UTF8FromUTF8(UConverterFromUnicodeArgs *pFromUArgs,
-                  UConverterToUnicodeArgs *pToUArgs,
-                  UErrorCode *pErrorCode) {
-    UConverter *utf8;
-    const uint8_t *source, *sourceLimit;
-    uint8_t *target;
-    int32_t targetCapacity;
-    int32_t count;
-
-    int8_t oldToULength, toULength, toULimit;
-
-    UChar32 c;
-    uint8_t b, t1, t2;
-
-    /* set up the local pointers */
-    utf8=pToUArgs->converter;
-    source=(uint8_t *)pToUArgs->source;
-    sourceLimit=(uint8_t *)pToUArgs->sourceLimit;
-    target=(uint8_t *)pFromUArgs->target;
-    targetCapacity=(int32_t)(pFromUArgs->targetLimit-pFromUArgs->target);
-
-    /* get the converter state from the UTF-8 UConverter */
-    c=(UChar32)utf8->toUnicodeStatus;
-    if(c!=0) {
-        toULength=oldToULength=utf8->toULength;
-        toULimit=(int8_t)utf8->mode;
-    } else {
-        toULength=oldToULength=toULimit=0;
-    }
-
-    count=(int32_t)(sourceLimit-source)+oldToULength;
-    if(count<toULimit) {
-        /*
-         * Not enough input to complete the partial character.
-         * Jump to moreBytes below - it will not output to target.
-         */
-    } else if(targetCapacity<toULimit) {
-        /*
-         * Not enough target capacity to output the partial character.
-         * Let the standard converter handle this.
-         */
-        *pErrorCode=U_USING_DEFAULT_WARNING;
-        return;
-    } else {
-        /*
-         * Use a single counter for source and target, counting the minimum of
-         * the source length and the target capacity.
-         * As a result, the source length is checked only once per multi-byte
-         * character instead of twice.
-         *
-         * Make sure that the last byte sequence is complete, or else
-         * stop just before it.
-         * (The longest legal byte sequence has 3 trail bytes.)
-         * Count oldToULength (number of source bytes from a previous buffer)
-         * into the source length but reduce the source index by toULimit
-         * while going back over trail bytes in order to not go back into
-         * the bytes that will be read for finishing a partial
-         * sequence from the previous buffer.
-         * Let the standard converter handle edge cases.
-         */
-        int32_t i;
-
-        if(count>targetCapacity) {
-            count=targetCapacity;
-        }
-
-        i=0;
-        while(i<3 && i<(count-toULimit)) {
-            b=source[count-oldToULength-i-1];
-            if(U8_IS_TRAIL(b)) {
-                ++i;
-            } else {
-                if(i<U8_COUNT_TRAIL_BYTES(b)) {
-                    /* stop converting before the lead byte if there are not enough trail bytes for it */
-                    count-=i+1;
-                }
-                break;
-            }
-        }
-    }
-
-    if(c!=0) {
-        utf8->toUnicodeStatus=0;
-        utf8->toULength=0;
-        goto moreBytes;
-        /* See note in ucnv_SBCSFromUTF8() about this goto. */
-    }
-
-    /* conversion loop */
-    while(count>0) {
-        b=*source++;
-        if((int8_t)b>=0) {
-            /* convert ASCII */
-            *target++=b;
-            --count;
-            continue;
-        } else {
-            if(b>0xe0) {
-                if( /* handle U+1000..U+D7FF inline */
-                    (t1=source[0]) >= 0x80 && ((b<0xed && (t1 <= 0xbf)) ||
-                                               (b==0xed && (t1 <= 0x9f))) &&
-                    (t2=source[1]) >= 0x80 && t2 <= 0xbf
-                ) {
-                    source+=2;
-                    *target++=b;
-                    *target++=t1;
-                    *target++=t2;
-                    count-=3;
-                    continue;
-                }
-            } else if(b<0xe0) {
-                if( /* handle U+0080..U+07FF inline */
-                    b>=0xc2 &&
-                    (t1=*source) >= 0x80 && t1 <= 0xbf
-                ) {
-                    ++source;
-                    *target++=b;
-                    *target++=t1;
-                    count-=2;
-                    continue;
-                }
-            } else if(b==0xe0) {
-                if( /* handle U+0800..U+0FFF inline */
-                    (t1=source[0]) >= 0xa0 && t1 <= 0xbf &&
-                    (t2=source[1]) >= 0x80 && t2 <= 0xbf
-                ) {
-                    source+=2;
-                    *target++=b;
-                    *target++=t1;
-                    *target++=t2;
-                    count-=3;
-                    continue;
-                }
-            }
-
-            /* handle "complicated" and error cases, and continuing partial characters */
-            oldToULength=0;
-            toULength=1;
-            toULimit=U8_COUNT_TRAIL_BYTES(b)+1;
-            c=b;
-moreBytes:
-            while(toULength<toULimit) {
-                if(source<sourceLimit) {
-                    b=*source;
-                    if(U8_IS_TRAIL(b)) {
-                        ++source;
-                        ++toULength;
-                        c=(c<<6)+b;
-                    } else {
-                        break; /* sequence too short, stop with toULength<toULimit */
-                    }
-                } else {
-                    /* store the partial UTF-8 character, compatible with the regular UTF-8 converter */
-                    source-=(toULength-oldToULength);
-                    while(oldToULength<toULength) {
-                        utf8->toUBytes[oldToULength++]=*source++;
-                    }
-                    utf8->toUnicodeStatus=c;
-                    utf8->toULength=toULength;
-                    utf8->mode=toULimit;
-                    pToUArgs->source=(char *)source;
-                    pFromUArgs->target=(char *)target;
-                    return;
-                }
-            }
-
-            if( toULength==toULimit &&      /* consumed all trail bytes */
-                (toULength==3 || toULength==2) &&             /* BMP */
-                (c-=utf8_offsets[toULength])>=utf8_minLegal[toULength] &&
-                (c<=0xd7ff || 0xe000<=c)    /* not a surrogate */
-            ) {
-                /* legal byte sequence for BMP code point */
-            } else if(
-                toULength==toULimit && toULength==4 &&
-                (0x10000<=(c-=utf8_offsets[4]) && c<=0x10ffff)
-            ) {
-                /* legal byte sequence for supplementary code point */
-            } else {
-                /* error handling: illegal UTF-8 byte sequence */
-                source-=(toULength-oldToULength);
-                while(oldToULength<toULength) {
-                    utf8->toUBytes[oldToULength++]=*source++;
-                }
-                utf8->toULength=toULength;
-                pToUArgs->source=(char *)source;
-                pFromUArgs->target=(char *)target;
-                *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                return;
-            }
-
-            /* copy the legal byte sequence to the target */
-            {
-                int8_t i;
-
-                for(i=0; i<oldToULength; ++i) {
-                    *target++=utf8->toUBytes[i];
-                }
-                source-=(toULength-oldToULength);
-                for(; i<toULength; ++i) {
-                    *target++=*source++;
-                }
-                count-=toULength;
-            }
-        }
-    }
-
-    if(U_SUCCESS(*pErrorCode) && source<sourceLimit) {
-        if(target==(const uint8_t *)pFromUArgs->targetLimit) {
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        } else {
-            b=*source;
-            toULimit=U8_COUNT_TRAIL_BYTES(b)+1;
-            if(toULimit>(sourceLimit-source)) {
-                /* collect a truncated byte sequence */
-                toULength=0;
-                c=b;
-                for(;;) {
-                    utf8->toUBytes[toULength++]=b;
-                    if(++source==sourceLimit) {
-                        /* partial byte sequence at end of source */
-                        utf8->toUnicodeStatus=c;
-                        utf8->toULength=toULength;
-                        utf8->mode=toULimit;
-                        break;
-                    } else if(!U8_IS_TRAIL(b=*source)) {
-                        /* lead byte in trail byte position */
-                        utf8->toULength=toULength;
-                        *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                        break;
-                    }
-                    c=(c<<6)+b;
-                }
-            } else {
-                /* partial-sequence target overflow: fall back to the pivoting implementation */
-                *pErrorCode=U_USING_DEFAULT_WARNING;
-            }
-        }
-    }
-
-    /* write back the updated pointers */
-    pToUArgs->source=(char *)source;
-    pFromUArgs->target=(char *)target;
-}
-
-/* UTF-8 converter data ----------------------------------------------------- */
-
-static const UConverterImpl _UTF8Impl={
-    UCNV_UTF8,
-
-    NULL,
-    NULL,
-
-    NULL,
-    NULL,
-    NULL,
-
-    ucnv_toUnicode_UTF8,
-    ucnv_toUnicode_UTF8_OFFSETS_LOGIC,
-    ucnv_fromUnicode_UTF8,
-    ucnv_fromUnicode_UTF8_OFFSETS_LOGIC,
-    ucnv_getNextUChar_UTF8,
-
-    NULL,
-    NULL,
-    NULL,
-    NULL,
-    ucnv_getNonSurrogateUnicodeSet,
-
-    ucnv_UTF8FromUTF8,
-    ucnv_UTF8FromUTF8
-};
-
-/* The 1208 CCSID refers to any version of Unicode of UTF-8 */
-static const UConverterStaticData _UTF8StaticData={
-    sizeof(UConverterStaticData),
-    "UTF-8",
-    1208, UCNV_IBM, UCNV_UTF8,
-    1, 3, /* max 3 bytes per UChar from UTF-8 (4 bytes from surrogate _pair_) */
-    { 0xef, 0xbf, 0xbd, 0 },3,FALSE,FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-
-const UConverterSharedData _UTF8Data=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF8StaticData, &_UTF8Impl);
-
-/* CESU-8 converter data ---------------------------------------------------- */
-
-static const UConverterImpl _CESU8Impl={
-    UCNV_CESU8,
-
-    NULL,
-    NULL,
-
-    NULL,
-    NULL,
-    NULL,
-
-    ucnv_toUnicode_UTF8,
-    ucnv_toUnicode_UTF8_OFFSETS_LOGIC,
-    ucnv_fromUnicode_UTF8,
-    ucnv_fromUnicode_UTF8_OFFSETS_LOGIC,
-    NULL,
-
-    NULL,
-    NULL,
-    NULL,
-    NULL,
-    ucnv_getCompleteUnicodeSet,
-
-    NULL,
-    NULL
-};
-
-static const UConverterStaticData _CESU8StaticData={
-    sizeof(UConverterStaticData),
-    "CESU-8",
-    9400, /* CCSID for CESU-8 */
-    UCNV_UNKNOWN, UCNV_CESU8, 1, 3,
-    { 0xef, 0xbf, 0xbd, 0 },3,FALSE,FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-
-const UConverterSharedData _CESU8Data=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_CESU8StaticData, &_CESU8Impl);
-
-#endif
index 69763ca..5b66c50 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnvbocu.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ucnvdisp.c b/source/common/ucnvdisp.c
deleted file mode 100644 (file)
index e30f665..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1998-2004, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-*  ucnvdisp.c:
-*  Implements APIs for the ICU's codeset conversion library display names.
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   04/04/99    helena      Fixed internal header inclusion.
-*   05/09/00    helena      Added implementation to handle fallback mappings.
-*   06/20/2000  helena      OS/400 port changes; mostly typecast.
-*   09/08/2004  grhoten     split from ucnv.c
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "unicode/ustring.h"
-#include "unicode/ures.h"
-#include "unicode/ucnv.h"
-#include "cstring.h"
-#include "ustr_imp.h"
-#include "ucnv_imp.h"
-#include "putilimp.h"
-
-U_CAPI int32_t U_EXPORT2
-ucnv_getDisplayName(const UConverter *cnv,
-                    const char *displayLocale,
-                    UChar *displayName, int32_t displayNameCapacity,
-                    UErrorCode *pErrorCode) {
-    UResourceBundle *rb;
-    const UChar *name;
-    int32_t length;
-    UErrorCode localStatus = U_ZERO_ERROR;
-
-    /* check arguments */
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    if(cnv==NULL || displayNameCapacity<0 || (displayNameCapacity>0 && displayName==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* open the resource bundle and get the display name string */
-    rb=ures_open(NULL, displayLocale, pErrorCode);
-    if(U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    /* use the internal name as the key */
-    name=ures_getStringByKey(rb, cnv->sharedData->staticData->name, &length, &localStatus);
-    ures_close(rb);
-
-    if(U_SUCCESS(localStatus)) {
-        /* copy the string */
-        if (*pErrorCode == U_ZERO_ERROR) {
-            *pErrorCode = localStatus;
-        }
-        u_memcpy(displayName, name, uprv_min(length, displayNameCapacity)*U_SIZEOF_UCHAR);
-    } else {
-        /* convert the internal name into a Unicode string */
-        length=(int32_t)uprv_strlen(cnv->sharedData->staticData->name);
-        u_charsToUChars(cnv->sharedData->staticData->name, displayName, uprv_min(length, displayNameCapacity));
-    }
-    return u_terminateUChars(displayName, displayNameCapacity, length, pErrorCode);
-}
-
-#endif
-
-/*
- * Hey, Emacs, please set the following:
- *
- * Local Variables:
- * indent-tabs-mode: nil
- * End:
- *
- */
diff --git a/source/common/ucnvhz.c b/source/common/ucnvhz.c
deleted file mode 100644 (file)
index d355516..0000000
+++ /dev/null
@@ -1,631 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*  
-**********************************************************************
-*   Copyright (C) 2000-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   file name:  ucnvhz.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2000oct16
-*   created by: Ram Viswanadha
-*   10/31/2000  Ram     Implemented offsets logic function
-*   
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
-
-#include "cmemory.h"
-#include "unicode/ucnv.h"
-#include "unicode/ucnv_cb.h"
-#include "unicode/uset.h"
-#include "unicode/utf16.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-#include "ucnv_imp.h"
-
-#define UCNV_TILDE 0x7E          /* ~ */
-#define UCNV_OPEN_BRACE 0x7B     /* { */
-#define UCNV_CLOSE_BRACE 0x7D   /* } */
-#define SB_ESCAPE    "\x7E\x7D"
-#define DB_ESCAPE    "\x7E\x7B"
-#define TILDE_ESCAPE "\x7E\x7E"
-#define ESC_LEN       2
-
-
-#define CONCAT_ESCAPE_MACRO( args, targetIndex,targetLength,strToAppend, err, len,sourceIndex){                             \
-    while(len-->0){                                                                                                         \
-        if(targetIndex < targetLength){                                                                                     \
-            args->target[targetIndex] = (unsigned char) *strToAppend;                                                       \
-            if(args->offsets!=NULL){                                                                                        \
-                *(offsets++) = sourceIndex-1;                                                                               \
-            }                                                                                                               \
-            targetIndex++;                                                                                                  \
-        }                                                                                                                   \
-        else{                                                                                                               \
-            args->converter->charErrorBuffer[(int)args->converter->charErrorBufferLength++] = (unsigned char) *strToAppend; \
-            *err =U_BUFFER_OVERFLOW_ERROR;                                                                                  \
-        }                                                                                                                   \
-        strToAppend++;                                                                                                      \
-    }                                                                                                                       \
-}
-
-
-typedef struct{
-    UConverter* gbConverter;
-    int32_t targetIndex;
-    int32_t sourceIndex;
-    UBool isEscapeAppended;
-    UBool isStateDBCS;
-    UBool isTargetUCharDBCS;
-    UBool isEmptySegment;
-}UConverterDataHZ;
-
-
-
-static void 
-_HZOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){
-    UConverter *gbConverter;
-    if(pArgs->onlyTestIsLoadable) {
-        ucnv_canCreateConverter("GBK", errorCode);  /* errorCode carries result */
-        return;
-    }
-    gbConverter = ucnv_open("GBK", errorCode);
-    if(U_FAILURE(*errorCode)) {
-        return;
-    }
-    cnv->toUnicodeStatus = 0;
-    cnv->fromUnicodeStatus= 0;
-    cnv->mode=0;
-    cnv->fromUChar32=0x0000;
-    cnv->extraInfo = uprv_calloc(1, sizeof(UConverterDataHZ));
-    if(cnv->extraInfo != NULL){
-        ((UConverterDataHZ*)cnv->extraInfo)->gbConverter = gbConverter;
-    }
-    else {
-        ucnv_close(gbConverter);
-        *errorCode = U_MEMORY_ALLOCATION_ERROR;
-        return;
-    }
-}
-
-static void 
-_HZClose(UConverter *cnv){
-    if(cnv->extraInfo != NULL) {
-        ucnv_close (((UConverterDataHZ *) (cnv->extraInfo))->gbConverter);
-        if(!cnv->isExtraLocal) {
-            uprv_free(cnv->extraInfo);
-        }
-        cnv->extraInfo = NULL;
-    }
-}
-
-static void 
-_HZReset(UConverter *cnv, UConverterResetChoice choice){
-    if(choice<=UCNV_RESET_TO_UNICODE) {
-        cnv->toUnicodeStatus = 0;
-        cnv->mode=0;
-        if(cnv->extraInfo != NULL){
-            ((UConverterDataHZ*)cnv->extraInfo)->isStateDBCS = FALSE;
-            ((UConverterDataHZ*)cnv->extraInfo)->isEmptySegment = FALSE;
-        }
-    }
-    if(choice!=UCNV_RESET_TO_UNICODE) {
-        cnv->fromUnicodeStatus= 0;
-        cnv->fromUChar32=0x0000; 
-        if(cnv->extraInfo != NULL){
-            ((UConverterDataHZ*)cnv->extraInfo)->isEscapeAppended = FALSE;
-            ((UConverterDataHZ*)cnv->extraInfo)->targetIndex = 0;
-            ((UConverterDataHZ*)cnv->extraInfo)->sourceIndex = 0;
-            ((UConverterDataHZ*)cnv->extraInfo)->isTargetUCharDBCS = FALSE;
-        }
-    }
-}
-
-/**************************************HZ Encoding*************************************************
-* Rules for HZ encoding
-* 
-*   In ASCII mode, a byte is interpreted as an ASCII character, unless a
-*   '~' is encountered. The character '~' is an escape character. By
-*   convention, it must be immediately followed ONLY by '~', '{' or '\n'
-*   (<LF>), with the following special meaning.
-
-*   1. The escape sequence '~~' is interpreted as a '~'.
-*   2. The escape-to-GB sequence '~{' switches the mode from ASCII to GB.
-*   3. The escape sequence '~\n' is a line-continuation marker to be
-*     consumed with no output produced.
-*   In GB mode, characters are interpreted two bytes at a time as (pure)
-*   GB codes until the escape-from-GB code '~}' is read. This code
-*   switches the mode from GB back to ASCII.  (Note that the escape-
-*   from-GB code '~}' ($7E7D) is outside the defined GB range.)
-*
-*   Source: RFC 1842
-*
-*   Note that the formal syntax in RFC 1842 is invalid. I assume that the
-*   intended definition of single-byte-segment is as follows (pedberg):
-*   single-byte-segment = single-byte-seq 1*single-byte-char
-*/
-
-
-static void 
-UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
-                                                            UErrorCode* err){
-    char tempBuf[2];
-    const char *mySource = ( char *) args->source;
-    UChar *myTarget = args->target;
-    const char *mySourceLimit = args->sourceLimit;
-    UChar32 targetUniChar = 0x0000;
-    int32_t mySourceChar = 0x0000;
-    UConverterDataHZ* myData=(UConverterDataHZ*)(args->converter->extraInfo);
-    tempBuf[0]=0; 
-    tempBuf[1]=0;
-
-    /* Calling code already handles this situation. */
-    /*if ((args->converter == NULL) || (args->targetLimit < args->target) || (mySourceLimit < args->source)){
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }*/
-    
-    while(mySource< mySourceLimit){
-        
-        if(myTarget < args->targetLimit){
-            
-            mySourceChar= (unsigned char) *mySource++;
-
-            if(args->converter->mode == UCNV_TILDE) {
-                /* second byte after ~ */
-                args->converter->mode=0;
-                switch(mySourceChar) {
-                case 0x0A:
-                    /* no output for ~\n (line-continuation marker) */
-                    continue;
-                case UCNV_TILDE:
-                    if(args->offsets) {
-                        args->offsets[myTarget - args->target]=(int32_t)(mySource - args->source - 2);
-                    }
-                    *(myTarget++)=(UChar)mySourceChar;
-                    myData->isEmptySegment = FALSE;
-                    continue;
-                case UCNV_OPEN_BRACE:
-                case UCNV_CLOSE_BRACE:
-                    myData->isStateDBCS = (mySourceChar == UCNV_OPEN_BRACE);
-                    if (myData->isEmptySegment) {
-                        myData->isEmptySegment = FALSE; /* we are handling it, reset to avoid future spurious errors */
-                        *err = U_ILLEGAL_ESCAPE_SEQUENCE;
-                        args->converter->toUCallbackReason = UCNV_IRREGULAR;
-                        args->converter->toUBytes[0] = UCNV_TILDE;
-                        args->converter->toUBytes[1] = mySourceChar;
-                        args->converter->toULength = 2;
-                        args->target = myTarget;
-                        args->source = mySource;
-                        return;
-                    }
-                    myData->isEmptySegment = TRUE;
-                    continue;
-                default:
-                     /* if the first byte is equal to TILDE and the trail byte
-                     * is not a valid byte then it is an error condition
-                     */
-                    /*
-                     * Ticket 5691: consistent illegal sequences:
-                     * - We include at least the first byte in the illegal sequence.
-                     * - If any of the non-initial bytes could be the start of a character,
-                     *   we stop the illegal sequence before the first one of those.
-                     */
-                    myData->isEmptySegment = FALSE; /* different error here, reset this to avoid spurious future error */
-                    *err = U_ILLEGAL_ESCAPE_SEQUENCE;
-                    args->converter->toUBytes[0] = UCNV_TILDE;
-                    if( myData->isStateDBCS ?
-                            (0x21 <= mySourceChar && mySourceChar <= 0x7e) :
-                            mySourceChar <= 0x7f
-                    ) {
-                        /* The current byte could be the start of a character: Back it out. */
-                        args->converter->toULength = 1;
-                        --mySource;
-                    } else {
-                        /* Include the current byte in the illegal sequence. */
-                        args->converter->toUBytes[1] = mySourceChar;
-                        args->converter->toULength = 2;
-                    }
-                    args->target = myTarget;
-                    args->source = mySource;
-                    return;
-                }
-            } else if(myData->isStateDBCS) {
-                if(args->converter->toUnicodeStatus == 0x00){
-                    /* lead byte */
-                    if(mySourceChar == UCNV_TILDE) {
-                        args->converter->mode = UCNV_TILDE;
-                    } else {
-                        /* add another bit to distinguish a 0 byte from not having seen a lead byte */
-                        args->converter->toUnicodeStatus = (uint32_t) (mySourceChar | 0x100);
-                        myData->isEmptySegment = FALSE; /* the segment has something, either valid or will produce a different error, so reset this */
-                    }
-                    continue;
-                }
-                else{
-                    /* trail byte */
-                    int leadIsOk, trailIsOk;
-                    uint32_t leadByte = args->converter->toUnicodeStatus & 0xff;
-                    targetUniChar = 0xffff;
-                    /*
-                     * Ticket 5691: consistent illegal sequences:
-                     * - We include at least the first byte in the illegal sequence.
-                     * - If any of the non-initial bytes could be the start of a character,
-                     *   we stop the illegal sequence before the first one of those.
-                     *
-                     * In HZ DBCS, if the second byte is in the 21..7e range,
-                     * we report only the first byte as the illegal sequence.
-                     * Otherwise we convert or report the pair of bytes.
-                     */
-                    leadIsOk = (uint8_t)(leadByte - 0x21) <= (0x7d - 0x21);
-                    trailIsOk = (uint8_t)(mySourceChar - 0x21) <= (0x7e - 0x21);
-                    if (leadIsOk && trailIsOk) {
-                        tempBuf[0] = (char) (leadByte+0x80) ;
-                        tempBuf[1] = (char) (mySourceChar+0x80);
-                        targetUniChar = ucnv_MBCSSimpleGetNextUChar(myData->gbConverter->sharedData,
-                            tempBuf, 2, args->converter->useFallback);
-                        mySourceChar= (leadByte << 8) | mySourceChar;
-                    } else if (trailIsOk) {
-                        /* report a single illegal byte and continue with the following DBCS starter byte */
-                        --mySource;
-                        mySourceChar = (int32_t)leadByte;
-                    } else {
-                        /* report a pair of illegal bytes if the second byte is not a DBCS starter */
-                        /* add another bit so that the code below writes 2 bytes in case of error */
-                        mySourceChar= 0x10000 | (leadByte << 8) | mySourceChar;
-                    }
-                    args->converter->toUnicodeStatus =0x00;
-                }
-            }
-            else{
-                if(mySourceChar == UCNV_TILDE) {
-                    args->converter->mode = UCNV_TILDE;
-                    continue;
-                } else if(mySourceChar <= 0x7f) {
-                    targetUniChar = (UChar)mySourceChar;  /* ASCII */
-                    myData->isEmptySegment = FALSE; /* the segment has something valid */
-                } else {
-                    targetUniChar = 0xffff;
-                    myData->isEmptySegment = FALSE; /* different error here, reset this to avoid spurious future error */
-                }
-            }
-            if(targetUniChar < 0xfffe){
-                if(args->offsets) {
-                    args->offsets[myTarget - args->target]=(int32_t)(mySource - args->source - 1-(myData->isStateDBCS));
-                }
-
-                *(myTarget++)=(UChar)targetUniChar;
-            }
-            else /* targetUniChar>=0xfffe */ {
-                if(targetUniChar == 0xfffe){
-                    *err = U_INVALID_CHAR_FOUND;
-                }
-                else{
-                    *err = U_ILLEGAL_CHAR_FOUND;
-                }
-                if(mySourceChar > 0xff){
-                    args->converter->toUBytes[0] = (uint8_t)(mySourceChar >> 8);
-                    args->converter->toUBytes[1] = (uint8_t)mySourceChar;
-                    args->converter->toULength=2;
-                }
-                else{
-                    args->converter->toUBytes[0] = (uint8_t)mySourceChar;
-                    args->converter->toULength=1;
-                }
-                break;
-            }
-        }
-        else{
-            *err =U_BUFFER_OVERFLOW_ERROR;
-            break;
-        }
-    }
-
-    args->target = myTarget;
-    args->source = mySource;
-}
-
-
-static void 
-UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args,
-                                                      UErrorCode * err){
-    const UChar *mySource = args->source;
-    char *myTarget = args->target;
-    int32_t* offsets = args->offsets;
-    int32_t mySourceIndex = 0;
-    int32_t myTargetIndex = 0;
-    int32_t targetLength = (int32_t)(args->targetLimit - myTarget);
-    int32_t mySourceLength = (int32_t)(args->sourceLimit - args->source);
-    uint32_t targetUniChar = 0x0000;
-    UChar32 mySourceChar = 0x0000;
-    UConverterDataHZ *myConverterData=(UConverterDataHZ*)args->converter->extraInfo;
-    UBool isTargetUCharDBCS = (UBool) myConverterData->isTargetUCharDBCS;
-    UBool oldIsTargetUCharDBCS;
-    int len =0;
-    const char* escSeq=NULL;
-    
-    /* Calling code already handles this situation. */
-    /*if ((args->converter == NULL) || (args->targetLimit < myTarget) || (args->sourceLimit < args->source)){
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }*/
-    if(args->converter->fromUChar32!=0 && myTargetIndex < targetLength) {
-        goto getTrail;
-    }
-    /*writing the char to the output stream */
-    while (mySourceIndex < mySourceLength){
-        targetUniChar = missingCharMarker;
-        if (myTargetIndex < targetLength){
-            
-            mySourceChar = (UChar) mySource[mySourceIndex++];
-            
-
-            oldIsTargetUCharDBCS = isTargetUCharDBCS;
-            if(mySourceChar ==UCNV_TILDE){
-                /*concatEscape(args, &myTargetIndex, &targetLength,"\x7E\x7E",err,2,&mySourceIndex);*/
-                len = ESC_LEN;
-                escSeq = TILDE_ESCAPE;
-                CONCAT_ESCAPE_MACRO(args, myTargetIndex, targetLength, escSeq,err,len,mySourceIndex);
-                continue;
-            } else if(mySourceChar <= 0x7f) {
-                targetUniChar = mySourceChar;
-            } else {
-                int32_t length= ucnv_MBCSFromUChar32(myConverterData->gbConverter->sharedData,
-                    mySourceChar,&targetUniChar,args->converter->useFallback);
-                /* we can only use lead bytes 21..7D and trail bytes 21..7E */
-                if( length == 2 &&
-                    (uint16_t)(targetUniChar - 0xa1a1) <= (0xfdfe - 0xa1a1) &&
-                    (uint8_t)(targetUniChar - 0xa1) <= (0xfe - 0xa1)
-                ) {
-                    targetUniChar -= 0x8080;
-                } else {
-                    targetUniChar = missingCharMarker;
-                }
-            }
-            if (targetUniChar != missingCharMarker){
-               myConverterData->isTargetUCharDBCS = isTargetUCharDBCS = (UBool)(targetUniChar>0x00FF);     
-                 if(oldIsTargetUCharDBCS != isTargetUCharDBCS || !myConverterData->isEscapeAppended ){
-                    /*Shifting from a double byte to single byte mode*/
-                    if(!isTargetUCharDBCS){
-                        len =ESC_LEN;
-                        escSeq = SB_ESCAPE;
-                        CONCAT_ESCAPE_MACRO(args, myTargetIndex, targetLength, escSeq,err,len,mySourceIndex);
-                        myConverterData->isEscapeAppended = TRUE;
-                    }
-                    else{ /* Shifting from a single byte to double byte mode*/
-                        len =ESC_LEN;
-                        escSeq = DB_ESCAPE;
-                        CONCAT_ESCAPE_MACRO(args, myTargetIndex, targetLength, escSeq,err,len,mySourceIndex);
-                        myConverterData->isEscapeAppended = TRUE;
-                        
-                    }
-                }
-            
-                if(isTargetUCharDBCS){
-                    if( myTargetIndex <targetLength){
-                        myTarget[myTargetIndex++] =(char) (targetUniChar >> 8);
-                        if(offsets){
-                            *(offsets++) = mySourceIndex-1;
-                        }
-                        if(myTargetIndex < targetLength){
-                            myTarget[myTargetIndex++] =(char) targetUniChar;
-                            if(offsets){
-                                *(offsets++) = mySourceIndex-1;
-                            }
-                        }else{
-                            args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar;
-                            *err = U_BUFFER_OVERFLOW_ERROR;
-                        } 
-                    }else{
-                        args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =(char) (targetUniChar >> 8);
-                        args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar;
-                        *err = U_BUFFER_OVERFLOW_ERROR;
-                    }
-
-                }else{
-                    if( myTargetIndex <targetLength){
-                        myTarget[myTargetIndex++] = (char) (targetUniChar );
-                        if(offsets){
-                            *(offsets++) = mySourceIndex-1;
-                        }
-                        
-                    }else{
-                        args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar;
-                        *err = U_BUFFER_OVERFLOW_ERROR;
-                    }
-                }
-
-            }
-            else{
-                /* oops.. the code point is unassigned */
-                /*Handle surrogates */
-                /*check if the char is a First surrogate*/
-                if(U16_IS_SURROGATE(mySourceChar)) {
-                    if(U16_IS_SURROGATE_LEAD(mySourceChar)) {
-                        args->converter->fromUChar32=mySourceChar;
-getTrail:
-                        /*look ahead to find the trail surrogate*/
-                        if(mySourceIndex <  mySourceLength) {
-                            /* test the following code unit */
-                            UChar trail=(UChar) args->source[mySourceIndex];
-                            if(U16_IS_TRAIL(trail)) {
-                                ++mySourceIndex;
-                                mySourceChar=U16_GET_SUPPLEMENTARY(args->converter->fromUChar32, trail);
-                                args->converter->fromUChar32=0x00;
-                                /* there are no surrogates in GB2312*/
-                                *err = U_INVALID_CHAR_FOUND;
-                                /* exit this condition tree */
-                            } else {
-                                /* this is an unmatched lead code unit (1st surrogate) */
-                                /* callback(illegal) */
-                                *err=U_ILLEGAL_CHAR_FOUND;
-                            }
-                        } else {
-                            /* no more input */
-                            *err = U_ZERO_ERROR;
-                        }
-                    } else {
-                        /* this is an unmatched trail code unit (2nd surrogate) */
-                        /* callback(illegal) */
-                        *err=U_ILLEGAL_CHAR_FOUND;
-                    }
-                } else {
-                    /* callback(unassigned) for a BMP code point */
-                    *err = U_INVALID_CHAR_FOUND;
-                }
-
-                args->converter->fromUChar32=mySourceChar;
-                break;
-            }
-        }
-        else{
-            *err = U_BUFFER_OVERFLOW_ERROR;
-            break;
-        }
-        targetUniChar=missingCharMarker;
-    }
-
-    args->target += myTargetIndex;
-    args->source += mySourceIndex;
-    myConverterData->isTargetUCharDBCS = isTargetUCharDBCS;
-}
-
-static void
-_HZ_WriteSub(UConverterFromUnicodeArgs *args, int32_t offsetIndex, UErrorCode *err) {
-    UConverter *cnv = args->converter;
-    UConverterDataHZ *convData=(UConverterDataHZ *) cnv->extraInfo;
-    char *p;
-    char buffer[4];
-    p = buffer;
-    
-    if( convData->isTargetUCharDBCS){
-        *p++= UCNV_TILDE;
-        *p++= UCNV_CLOSE_BRACE;
-        convData->isTargetUCharDBCS=FALSE;
-    }
-    *p++= (char)cnv->subChars[0];
-
-    ucnv_cbFromUWriteBytes(args,
-                           buffer, (int32_t)(p - buffer),
-                           offsetIndex, err);
-}
-
-/*
- * Structure for cloning an HZ converter into a single memory block.
- * ucnv_safeClone() of the HZ converter will align the entire cloneHZStruct,
- * and then ucnv_safeClone() of the sub-converter may additionally align
- * subCnv inside the cloneHZStruct, for which we need the deadSpace after
- * subCnv. This is because UAlignedMemory may be larger than the actually
- * necessary alignment size for the platform.
- * The other cloneHZStruct fields will not be moved around,
- * and are aligned properly with cloneHZStruct's alignment.
- */
-struct cloneHZStruct
-{
-    UConverter cnv;
-    UConverter subCnv;
-    UAlignedMemory deadSpace;
-    UConverterDataHZ mydata;
-};
-
-
-static UConverter * 
-_HZ_SafeClone(const UConverter *cnv, 
-              void *stackBuffer, 
-              int32_t *pBufferSize, 
-              UErrorCode *status)
-{
-    struct cloneHZStruct * localClone;
-    int32_t size, bufferSizeNeeded = sizeof(struct cloneHZStruct);
-
-    if (U_FAILURE(*status)){
-        return 0;
-    }
-
-    if (*pBufferSize == 0){ /* 'preflighting' request - set needed size into *pBufferSize */
-        *pBufferSize = bufferSizeNeeded;
-        return 0;
-    }
-
-    localClone = (struct cloneHZStruct *)stackBuffer;
-    /* ucnv.c/ucnv_safeClone() copied the main UConverter already */
-
-    uprv_memcpy(&localClone->mydata, cnv->extraInfo, sizeof(UConverterDataHZ));
-    localClone->cnv.extraInfo = &localClone->mydata;
-    localClone->cnv.isExtraLocal = TRUE;
-
-    /* deep-clone the sub-converter */
-    size = (int32_t)(sizeof(UConverter) + sizeof(UAlignedMemory)); /* include size of padding */
-    ((UConverterDataHZ*)localClone->cnv.extraInfo)->gbConverter =
-        ucnv_safeClone(((UConverterDataHZ*)cnv->extraInfo)->gbConverter, &localClone->subCnv, &size, status);
-
-    return &localClone->cnv;
-}
-
-static void
-_HZ_GetUnicodeSet(const UConverter *cnv,
-                  const USetAdder *sa,
-                  UConverterUnicodeSet which,
-                  UErrorCode *pErrorCode) {
-    /* HZ converts all of ASCII */
-    sa->addRange(sa->set, 0, 0x7f);
-
-    /* add all of the code points that the sub-converter handles */
-    ucnv_MBCSGetFilteredUnicodeSetForUnicode(
-        ((UConverterDataHZ*)cnv->extraInfo)->gbConverter->sharedData,
-        sa, which, UCNV_SET_FILTER_HZ,
-        pErrorCode);
-}
-
-static const UConverterImpl _HZImpl={
-
-    UCNV_HZ,
-    
-    NULL,
-    NULL,
-    
-    _HZOpen,
-    _HZClose,
-    _HZReset,
-    
-    UConverter_toUnicode_HZ_OFFSETS_LOGIC,
-    UConverter_toUnicode_HZ_OFFSETS_LOGIC,
-    UConverter_fromUnicode_HZ_OFFSETS_LOGIC,
-    UConverter_fromUnicode_HZ_OFFSETS_LOGIC,
-    NULL,
-    
-    NULL,
-    NULL,
-    _HZ_WriteSub,
-    _HZ_SafeClone,
-    _HZ_GetUnicodeSet
-};
-
-static const UConverterStaticData _HZStaticData={
-    sizeof(UConverterStaticData),
-        "HZ",
-         0, 
-         UCNV_IBM, 
-         UCNV_HZ, 
-         1, 
-         4,
-        { 0x1a, 0, 0, 0 },
-        1,
-        FALSE, 
-        FALSE,
-        0,
-        0,
-        { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, /* reserved */
-
-};
-
-const UConverterSharedData _HZData=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_HZStaticData, &_HZImpl);
-
-#endif /* #if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION */
diff --git a/source/common/ucnvisci.c b/source/common/ucnvisci.c
deleted file mode 100644 (file)
index b520fc2..0000000
+++ /dev/null
@@ -1,1625 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-**********************************************************************
-*   Copyright (C) 2000-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   file name:  ucnvisci.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2001JUN26
-*   created by: Ram Viswanadha
-*
-*   Date        Name        Description
-*   24/7/2001   Ram         Added support for EXT character handling
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
-
-#include "unicode/ucnv.h"
-#include "unicode/ucnv_cb.h"
-#include "unicode/utf16.h"
-#include "cmemory.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-#include "cstring.h"
-#include "uassert.h"
-
-#define UCNV_OPTIONS_VERSION_MASK 0xf
-#define NUKTA               0x093c
-#define HALANT              0x094d
-#define ZWNJ                0x200c /* Zero Width Non Joiner */
-#define ZWJ                 0x200d /* Zero width Joiner */
-#define INVALID_CHAR        0xffff
-#define ATR                 0xEF   /* Attribute code */
-#define EXT                 0xF0   /* Extension code */
-#define DANDA               0x0964
-#define DOUBLE_DANDA        0x0965
-#define ISCII_NUKTA         0xE9
-#define ISCII_HALANT        0xE8
-#define ISCII_DANDA         0xEA
-#define ISCII_INV           0xD9
-#define ISCII_VOWEL_SIGN_E  0xE0
-#define INDIC_BLOCK_BEGIN   0x0900
-#define INDIC_BLOCK_END     0x0D7F
-#define INDIC_RANGE         (INDIC_BLOCK_END - INDIC_BLOCK_BEGIN)
-#define VOCALLIC_RR         0x0931
-#define LF                  0x0A
-#define ASCII_END           0xA0
-#define NO_CHAR_MARKER      0xFFFE
-#define TELUGU_DELTA        DELTA * TELUGU
-#define DEV_ABBR_SIGN       0x0970
-#define DEV_ANUDATTA        0x0952
-#define EXT_RANGE_BEGIN     0xA1
-#define EXT_RANGE_END       0xEE
-
-#define PNJ_DELTA           0x0100
-#define PNJ_BINDI           0x0A02
-#define PNJ_TIPPI           0x0A70
-#define PNJ_SIGN_VIRAMA     0x0A4D
-#define PNJ_ADHAK           0x0A71
-#define PNJ_HA              0x0A39
-#define PNJ_RRA             0x0A5C
-
-typedef enum {
-    DEVANAGARI =0,
-    BENGALI,
-    GURMUKHI,
-    GUJARATI,
-    ORIYA,
-    TAMIL,
-    TELUGU,
-    KANNADA,
-    MALAYALAM,
-    DELTA=0x80
-}UniLang;
-
-/**
- * Enumeration for switching code pages if <ATR>+<one of below values>
- * is encountered
- */
-typedef enum {
-    DEF = 0x40,
-    RMN = 0x41,
-    DEV = 0x42,
-    BNG = 0x43,
-    TML = 0x44,
-    TLG = 0x45,
-    ASM = 0x46,
-    ORI = 0x47,
-    KND = 0x48,
-    MLM = 0x49,
-    GJR = 0x4A,
-    PNJ = 0x4B,
-    ARB = 0x71,
-    PES = 0x72,
-    URD = 0x73,
-    SND = 0x74,
-    KSM = 0x75,
-    PST = 0x76
-}ISCIILang;
-
-typedef enum {
-    DEV_MASK =0x80,
-    PNJ_MASK =0x40,
-    GJR_MASK =0x20,
-    ORI_MASK =0x10,
-    BNG_MASK =0x08,
-    KND_MASK =0x04,
-    MLM_MASK =0x02,
-    TML_MASK =0x01,
-    ZERO =0x00
-}MaskEnum;
-
-#define ISCII_CNV_PREFIX "ISCII,version="
-
-typedef struct {
-    UChar contextCharToUnicode;         /* previous Unicode codepoint for contextual analysis */
-    UChar contextCharFromUnicode;       /* previous Unicode codepoint for contextual analysis */
-    uint16_t defDeltaToUnicode;         /* delta for switching to default state when DEF is encountered  */
-    uint16_t currentDeltaFromUnicode;   /* current delta in Indic block */
-    uint16_t currentDeltaToUnicode;     /* current delta in Indic block */
-    MaskEnum currentMaskFromUnicode;    /* mask for current state in toUnicode */
-    MaskEnum currentMaskToUnicode;      /* mask for current state in toUnicode */
-    MaskEnum defMaskToUnicode;          /* mask for default state in toUnicode */
-    UBool isFirstBuffer;                /* boolean for fromUnicode to see if we need to announce the first script */
-    UBool resetToDefaultToUnicode;      /* boolean for reseting to default delta and mask when a newline is encountered*/
-    char name[sizeof(ISCII_CNV_PREFIX) + 1];
-    UChar32 prevToUnicodeStatus;        /* Hold the previous toUnicodeStatus. This is necessary because we may need to know the last two code points. */
-} UConverterDataISCII;
-
-typedef struct LookupDataStruct {
-    UniLang uniLang;
-    MaskEnum maskEnum;
-    ISCIILang isciiLang;
-} LookupDataStruct;
-
-static const LookupDataStruct lookupInitialData[]={
-    { DEVANAGARI, DEV_MASK,  DEV },
-    { BENGALI,    BNG_MASK,  BNG },
-    { GURMUKHI,   PNJ_MASK,  PNJ },
-    { GUJARATI,   GJR_MASK,  GJR },
-    { ORIYA,      ORI_MASK,  ORI },
-    { TAMIL,      TML_MASK,  TML },
-    { TELUGU,     KND_MASK,  TLG },
-    { KANNADA,    KND_MASK,  KND },
-    { MALAYALAM,  MLM_MASK,  MLM }
-};
-
-/*
- * For special handling of certain Gurmukhi characters.
- * Bit 0 (value 1): PNJ consonant
- * Bit 1 (value 2): PNJ Bindi Tippi
- */
-static const uint8_t pnjMap[80] = {
-    /* 0A00..0A0F */
-    0, 0, 0, 0, 0, 2, 0, 2,  0, 0, 0, 0, 0, 0, 0, 0,
-    /* 0A10..0A1F */
-    0, 0, 0, 0, 0, 3, 3, 3,  3, 3, 3, 3, 3, 3, 3, 3,
-    /* 0A20..0A2F */
-    3, 3, 3, 3, 3, 3, 3, 3,  3, 0, 3, 3, 3, 3, 3, 3,
-    /* 0A30..0A3F */
-    3, 0, 0, 0, 0, 3, 3, 0,  3, 3, 0, 0, 0, 0, 0, 2,
-    /* 0A40..0A4F */
-    0, 2, 2, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static UBool
-isPNJConsonant(UChar32 c) {
-    if (c < 0xa00 || 0xa50 <= c) {
-        return FALSE;
-    } else {
-        return (UBool)(pnjMap[c - 0xa00] & 1);
-    }
-}
-
-static UBool
-isPNJBindiTippi(UChar32 c) {
-    if (c < 0xa00 || 0xa50 <= c) {
-        return FALSE;
-    } else {
-        return (UBool)(pnjMap[c - 0xa00] >> 1);
-    }
-}
-
-static void _ISCIIOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode) {
-    if(pArgs->onlyTestIsLoadable) {
-        return;
-    }
-
-    cnv->extraInfo = uprv_malloc(sizeof(UConverterDataISCII));
-
-    if (cnv->extraInfo != NULL) {
-        int32_t len=0;
-        UConverterDataISCII *converterData=
-                (UConverterDataISCII *) cnv->extraInfo;
-        converterData->contextCharToUnicode=NO_CHAR_MARKER;
-        cnv->toUnicodeStatus = missingCharMarker;
-        converterData->contextCharFromUnicode=0x0000;
-        converterData->resetToDefaultToUnicode=FALSE;
-        /* check if the version requested is supported */
-        if ((pArgs->options & UCNV_OPTIONS_VERSION_MASK) < 9) {
-            /* initialize state variables */
-            converterData->currentDeltaFromUnicode
-                    = converterData->currentDeltaToUnicode
-                            = converterData->defDeltaToUnicode = (uint16_t)(lookupInitialData[pArgs->options & UCNV_OPTIONS_VERSION_MASK].uniLang * DELTA);
-
-            converterData->currentMaskFromUnicode
-                    = converterData->currentMaskToUnicode
-                            = converterData->defMaskToUnicode = lookupInitialData[pArgs->options & UCNV_OPTIONS_VERSION_MASK].maskEnum;
-            
-            converterData->isFirstBuffer=TRUE;
-            (void)uprv_strcpy(converterData->name, ISCII_CNV_PREFIX);
-            len = (int32_t)uprv_strlen(converterData->name);
-            converterData->name[len]= (char)((pArgs->options & UCNV_OPTIONS_VERSION_MASK) + '0');
-            converterData->name[len+1]=0;
-            
-            converterData->prevToUnicodeStatus = 0x0000;
-        } else {
-            uprv_free(cnv->extraInfo);
-            cnv->extraInfo = NULL;
-            *errorCode = U_ILLEGAL_ARGUMENT_ERROR;
-        }
-
-    } else {
-        *errorCode =U_MEMORY_ALLOCATION_ERROR;
-    }
-}
-
-static void _ISCIIClose(UConverter *cnv) {
-    if (cnv->extraInfo!=NULL) {
-        if (!cnv->isExtraLocal) {
-            uprv_free(cnv->extraInfo);
-        }
-        cnv->extraInfo=NULL;
-    }
-}
-
-static const char* _ISCIIgetName(const UConverter* cnv) {
-    if (cnv->extraInfo) {
-        UConverterDataISCII* myData= (UConverterDataISCII*)cnv->extraInfo;
-        return myData->name;
-    }
-    return NULL;
-}
-
-static void _ISCIIReset(UConverter *cnv, UConverterResetChoice choice) {
-    UConverterDataISCII* data =(UConverterDataISCII *) (cnv->extraInfo);
-    if (choice<=UCNV_RESET_TO_UNICODE) {
-        cnv->toUnicodeStatus = missingCharMarker;
-        cnv->mode=0;
-        data->currentDeltaToUnicode=data->defDeltaToUnicode;
-        data->currentMaskToUnicode = data->defMaskToUnicode;
-        data->contextCharToUnicode=NO_CHAR_MARKER;
-        data->prevToUnicodeStatus = 0x0000;
-    }
-    if (choice!=UCNV_RESET_TO_UNICODE) {
-        cnv->fromUChar32=0x0000;
-        data->contextCharFromUnicode=0x00;
-        data->currentMaskFromUnicode=data->defMaskToUnicode;
-        data->currentDeltaFromUnicode=data->defDeltaToUnicode;
-        data->isFirstBuffer=TRUE;
-        data->resetToDefaultToUnicode=FALSE;
-    }
-}
-
-/**
- * The values in validity table are indexed by the lower bits of Unicode
- * range 0x0900 - 0x09ff. The values have a structure like:
- *       ---------------------------------------------------------------
- *      | DEV   | PNJ   | GJR   | ORI   | BNG   | TLG   | MLM   | TML   |
- *      |       |       |       |       | ASM   | KND   |       |       |
- *       ---------------------------------------------------------------
- * If a code point is valid in a particular script
- * then that bit is turned on
- *
- * Unicode does not distinguish between Bengali and Assamese so we use 1 bit for
- * to represent these languages
- *
- * Telugu and Kannada have same codepoints except for Vocallic_RR which we special case
- * and combine and use 1 bit to represent these languages.
- *
- * TODO: It is probably easier to understand and maintain to change this
- * to use uint16_t and give each of the 9 Unicode/script blocks its own bit.
- */
-
-static const uint8_t validityTable[128] = {
-/* This state table is tool generated please do not edit unless you know exactly what you are doing */
-/* Note: This table was edited to mirror the Windows XP implementation */
-/*ISCII:Valid:Unicode */
-/*0xa0 : 0x00: 0x900  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xa1 : 0xb8: 0x901  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + ZERO     + ZERO     + ZERO     ,
-/*0xa2 : 0xfe: 0x902  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xa3 : 0xbf: 0x903  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0x00 : 0x00: 0x904  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xa4 : 0xff: 0x905  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xa5 : 0xff: 0x906  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xa6 : 0xff: 0x907  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xa7 : 0xff: 0x908  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xa8 : 0xff: 0x909  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xa9 : 0xff: 0x90a  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xaa : 0xfe: 0x90b  */ DEV_MASK + ZERO     + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0x00 : 0x00: 0x90c  */ DEV_MASK + ZERO     + ZERO     + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xae : 0x80: 0x90d  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xab : 0x87: 0x90e  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xac : 0xff: 0x90f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xad : 0xff: 0x910  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xb2 : 0x80: 0x911  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xaf : 0x87: 0x912  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xb0 : 0xff: 0x913  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xb1 : 0xff: 0x914  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xb3 : 0xff: 0x915  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xb4 : 0xfe: 0x916  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xb5 : 0xfe: 0x917  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xb6 : 0xfe: 0x918  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xb7 : 0xff: 0x919  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xb8 : 0xff: 0x91a  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xb9 : 0xfe: 0x91b  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xba : 0xff: 0x91c  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xbb : 0xfe: 0x91d  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xbc : 0xff: 0x91e  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xbd : 0xff: 0x91f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xbe : 0xfe: 0x920  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xbf : 0xfe: 0x921  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xc0 : 0xfe: 0x922  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xc1 : 0xff: 0x923  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xc2 : 0xff: 0x924  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xc3 : 0xfe: 0x925  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xc4 : 0xfe: 0x926  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xc5 : 0xfe: 0x927  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xc6 : 0xff: 0x928  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xc7 : 0x81: 0x929  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + TML_MASK ,
-/*0xc8 : 0xff: 0x92a  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xc9 : 0xfe: 0x92b  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xca : 0xfe: 0x92c  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xcb : 0xfe: 0x92d  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xcc : 0xfe: 0x92e  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xcd : 0xff: 0x92f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xcf : 0xff: 0x930  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xd0 : 0x87: 0x931  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + MLM_MASK + TML_MASK ,
-/*0xd1 : 0xff: 0x932  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xd2 : 0xb7: 0x933  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xd3 : 0x83: 0x934  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + MLM_MASK + TML_MASK ,
-/*0xd4 : 0xff: 0x935  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xd5 : 0xfe: 0x936  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0xd6 : 0xbf: 0x937  */ DEV_MASK + ZERO     + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xd7 : 0xff: 0x938  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xd8 : 0xff: 0x939  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0x00 : 0x00: 0x93A  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x93B  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xe9 : 0xda: 0x93c  */ DEV_MASK + PNJ_MASK + ZERO     + ORI_MASK + BNG_MASK + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x93d  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xda : 0xff: 0x93e  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xdb : 0xff: 0x93f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xdc : 0xff: 0x940  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xdd : 0xff: 0x941  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xde : 0xff: 0x942  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xdf : 0xbe: 0x943  */ DEV_MASK + ZERO     + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0x00 : 0x00: 0x944  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + BNG_MASK + KND_MASK + ZERO     + ZERO     ,
-/*0xe3 : 0x80: 0x945  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xe0 : 0x87: 0x946  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xe1 : 0xff: 0x947  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xe2 : 0xff: 0x948  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xe7 : 0x80: 0x949  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xe4 : 0x87: 0x94a  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xe5 : 0xff: 0x94b  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xe6 : 0xff: 0x94c  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xe8 : 0xff: 0x94d  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xec : 0x00: 0x94e  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xed : 0x00: 0x94f  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x950  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x951  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x952  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x953  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x954  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x955  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x956  */ ZERO     + ZERO     + ZERO     + ORI_MASK + ZERO     + KND_MASK + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x957  */ ZERO     + ZERO     + ZERO     + ORI_MASK + BNG_MASK + ZERO     + MLM_MASK + ZERO     ,
-/*0x00 : 0x00: 0x958  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x959  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x95a  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x95b  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x95c  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + BNG_MASK + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x95d  */ DEV_MASK + ZERO     + ZERO     + ORI_MASK + BNG_MASK + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x95e  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xce : 0x98: 0x95f  */ DEV_MASK + ZERO     + ZERO     + ORI_MASK + BNG_MASK + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x960  */ DEV_MASK + ZERO     + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0x00 : 0x00: 0x961  */ DEV_MASK + ZERO     + ZERO     + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
-/*0x00 : 0x00: 0x962  */ DEV_MASK + ZERO     + ZERO     + ZERO     + BNG_MASK + ZERO     + ZERO     + ZERO     ,
-/*0x00 : 0x00: 0x963  */ DEV_MASK + ZERO     + ZERO     + ZERO     + BNG_MASK + ZERO     + ZERO     + ZERO     ,
-/*0xea : 0xf8: 0x964  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xeaea : 0x00: 0x965*/ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*0xf1 : 0xff: 0x966  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xf2 : 0xff: 0x967  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xf3 : 0xff: 0x968  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xf4 : 0xff: 0x969  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xf5 : 0xff: 0x96a  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xf6 : 0xff: 0x96b  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xf7 : 0xff: 0x96c  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xf8 : 0xff: 0x96d  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xf9 : 0xff: 0x96e  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0xfa : 0xff: 0x96f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
-/*0x00 : 0x80: 0x970  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
-/*
- * The length of the array is 128 to provide values for 0x900..0x97f.
- * The last 15 entries for 0x971..0x97f of the validity table are all zero
- * because no Indic script uses such Unicode code points.
- */
-/*0x00 : 0x00: 0x9yz  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO
-};
-
-static const uint16_t fromUnicodeTable[128]={
-    0x00a0 ,/* 0x0900 */
-    0x00a1 ,/* 0x0901 */
-    0x00a2 ,/* 0x0902 */
-    0x00a3 ,/* 0x0903 */
-    0xa4e0 ,/* 0x0904 */
-    0x00a4 ,/* 0x0905 */
-    0x00a5 ,/* 0x0906 */
-    0x00a6 ,/* 0x0907 */
-    0x00a7 ,/* 0x0908 */
-    0x00a8 ,/* 0x0909 */
-    0x00a9 ,/* 0x090a */
-    0x00aa ,/* 0x090b */
-    0xA6E9 ,/* 0x090c */
-    0x00ae ,/* 0x090d */
-    0x00ab ,/* 0x090e */
-    0x00ac ,/* 0x090f */
-    0x00ad ,/* 0x0910 */
-    0x00b2 ,/* 0x0911 */
-    0x00af ,/* 0x0912 */
-    0x00b0 ,/* 0x0913 */
-    0x00b1 ,/* 0x0914 */
-    0x00b3 ,/* 0x0915 */
-    0x00b4 ,/* 0x0916 */
-    0x00b5 ,/* 0x0917 */
-    0x00b6 ,/* 0x0918 */
-    0x00b7 ,/* 0x0919 */
-    0x00b8 ,/* 0x091a */
-    0x00b9 ,/* 0x091b */
-    0x00ba ,/* 0x091c */
-    0x00bb ,/* 0x091d */
-    0x00bc ,/* 0x091e */
-    0x00bd ,/* 0x091f */
-    0x00be ,/* 0x0920 */
-    0x00bf ,/* 0x0921 */
-    0x00c0 ,/* 0x0922 */
-    0x00c1 ,/* 0x0923 */
-    0x00c2 ,/* 0x0924 */
-    0x00c3 ,/* 0x0925 */
-    0x00c4 ,/* 0x0926 */
-    0x00c5 ,/* 0x0927 */
-    0x00c6 ,/* 0x0928 */
-    0x00c7 ,/* 0x0929 */
-    0x00c8 ,/* 0x092a */
-    0x00c9 ,/* 0x092b */
-    0x00ca ,/* 0x092c */
-    0x00cb ,/* 0x092d */
-    0x00cc ,/* 0x092e */
-    0x00cd ,/* 0x092f */
-    0x00cf ,/* 0x0930 */
-    0x00d0 ,/* 0x0931 */
-    0x00d1 ,/* 0x0932 */
-    0x00d2 ,/* 0x0933 */
-    0x00d3 ,/* 0x0934 */
-    0x00d4 ,/* 0x0935 */
-    0x00d5 ,/* 0x0936 */
-    0x00d6 ,/* 0x0937 */
-    0x00d7 ,/* 0x0938 */
-    0x00d8 ,/* 0x0939 */
-    0xFFFF ,/* 0x093A */
-    0xFFFF ,/* 0x093B */
-    0x00e9 ,/* 0x093c */
-    0xEAE9 ,/* 0x093d */
-    0x00da ,/* 0x093e */
-    0x00db ,/* 0x093f */
-    0x00dc ,/* 0x0940 */
-    0x00dd ,/* 0x0941 */
-    0x00de ,/* 0x0942 */
-    0x00df ,/* 0x0943 */
-    0xDFE9 ,/* 0x0944 */
-    0x00e3 ,/* 0x0945 */
-    0x00e0 ,/* 0x0946 */
-    0x00e1 ,/* 0x0947 */
-    0x00e2 ,/* 0x0948 */
-    0x00e7 ,/* 0x0949 */
-    0x00e4 ,/* 0x094a */
-    0x00e5 ,/* 0x094b */
-    0x00e6 ,/* 0x094c */
-    0x00e8 ,/* 0x094d */
-    0x00ec ,/* 0x094e */
-    0x00ed ,/* 0x094f */
-    0xA1E9 ,/* 0x0950 */ /* OM Symbol */
-    0xFFFF ,/* 0x0951 */
-    0xF0B8 ,/* 0x0952 */
-    0xFFFF ,/* 0x0953 */
-    0xFFFF ,/* 0x0954 */
-    0xFFFF ,/* 0x0955 */
-    0xFFFF ,/* 0x0956 */
-    0xFFFF ,/* 0x0957 */
-    0xb3e9 ,/* 0x0958 */
-    0xb4e9 ,/* 0x0959 */
-    0xb5e9 ,/* 0x095a */
-    0xbae9 ,/* 0x095b */
-    0xbfe9 ,/* 0x095c */
-    0xC0E9 ,/* 0x095d */
-    0xc9e9 ,/* 0x095e */
-    0x00ce ,/* 0x095f */
-    0xAAe9 ,/* 0x0960 */
-    0xA7E9 ,/* 0x0961 */
-    0xDBE9 ,/* 0x0962 */
-    0xDCE9 ,/* 0x0963 */
-    0x00ea ,/* 0x0964 */
-    0xeaea ,/* 0x0965 */
-    0x00f1 ,/* 0x0966 */
-    0x00f2 ,/* 0x0967 */
-    0x00f3 ,/* 0x0968 */
-    0x00f4 ,/* 0x0969 */
-    0x00f5 ,/* 0x096a */
-    0x00f6 ,/* 0x096b */
-    0x00f7 ,/* 0x096c */
-    0x00f8 ,/* 0x096d */
-    0x00f9 ,/* 0x096e */
-    0x00fa ,/* 0x096f */
-    0xF0BF ,/* 0x0970 */
-    0xFFFF ,/* 0x0971 */
-    0xFFFF ,/* 0x0972 */
-    0xFFFF ,/* 0x0973 */
-    0xFFFF ,/* 0x0974 */
-    0xFFFF ,/* 0x0975 */
-    0xFFFF ,/* 0x0976 */
-    0xFFFF ,/* 0x0977 */
-    0xFFFF ,/* 0x0978 */
-    0xFFFF ,/* 0x0979 */
-    0xFFFF ,/* 0x097a */
-    0xFFFF ,/* 0x097b */
-    0xFFFF ,/* 0x097c */
-    0xFFFF ,/* 0x097d */
-    0xFFFF ,/* 0x097e */
-    0xFFFF ,/* 0x097f */
-};
-static const uint16_t toUnicodeTable[256]={
-    0x0000,/* 0x00 */
-    0x0001,/* 0x01 */
-    0x0002,/* 0x02 */
-    0x0003,/* 0x03 */
-    0x0004,/* 0x04 */
-    0x0005,/* 0x05 */
-    0x0006,/* 0x06 */
-    0x0007,/* 0x07 */
-    0x0008,/* 0x08 */
-    0x0009,/* 0x09 */
-    0x000a,/* 0x0a */
-    0x000b,/* 0x0b */
-    0x000c,/* 0x0c */
-    0x000d,/* 0x0d */
-    0x000e,/* 0x0e */
-    0x000f,/* 0x0f */
-    0x0010,/* 0x10 */
-    0x0011,/* 0x11 */
-    0x0012,/* 0x12 */
-    0x0013,/* 0x13 */
-    0x0014,/* 0x14 */
-    0x0015,/* 0x15 */
-    0x0016,/* 0x16 */
-    0x0017,/* 0x17 */
-    0x0018,/* 0x18 */
-    0x0019,/* 0x19 */
-    0x001a,/* 0x1a */
-    0x001b,/* 0x1b */
-    0x001c,/* 0x1c */
-    0x001d,/* 0x1d */
-    0x001e,/* 0x1e */
-    0x001f,/* 0x1f */
-    0x0020,/* 0x20 */
-    0x0021,/* 0x21 */
-    0x0022,/* 0x22 */
-    0x0023,/* 0x23 */
-    0x0024,/* 0x24 */
-    0x0025,/* 0x25 */
-    0x0026,/* 0x26 */
-    0x0027,/* 0x27 */
-    0x0028,/* 0x28 */
-    0x0029,/* 0x29 */
-    0x002a,/* 0x2a */
-    0x002b,/* 0x2b */
-    0x002c,/* 0x2c */
-    0x002d,/* 0x2d */
-    0x002e,/* 0x2e */
-    0x002f,/* 0x2f */
-    0x0030,/* 0x30 */
-    0x0031,/* 0x31 */
-    0x0032,/* 0x32 */
-    0x0033,/* 0x33 */
-    0x0034,/* 0x34 */
-    0x0035,/* 0x35 */
-    0x0036,/* 0x36 */
-    0x0037,/* 0x37 */
-    0x0038,/* 0x38 */
-    0x0039,/* 0x39 */
-    0x003A,/* 0x3A */
-    0x003B,/* 0x3B */
-    0x003c,/* 0x3c */
-    0x003d,/* 0x3d */
-    0x003e,/* 0x3e */
-    0x003f,/* 0x3f */
-    0x0040,/* 0x40 */
-    0x0041,/* 0x41 */
-    0x0042,/* 0x42 */
-    0x0043,/* 0x43 */
-    0x0044,/* 0x44 */
-    0x0045,/* 0x45 */
-    0x0046,/* 0x46 */
-    0x0047,/* 0x47 */
-    0x0048,/* 0x48 */
-    0x0049,/* 0x49 */
-    0x004a,/* 0x4a */
-    0x004b,/* 0x4b */
-    0x004c,/* 0x4c */
-    0x004d,/* 0x4d */
-    0x004e,/* 0x4e */
-    0x004f,/* 0x4f */
-    0x0050,/* 0x50 */
-    0x0051,/* 0x51 */
-    0x0052,/* 0x52 */
-    0x0053,/* 0x53 */
-    0x0054,/* 0x54 */
-    0x0055,/* 0x55 */
-    0x0056,/* 0x56 */
-    0x0057,/* 0x57 */
-    0x0058,/* 0x58 */
-    0x0059,/* 0x59 */
-    0x005a,/* 0x5a */
-    0x005b,/* 0x5b */
-    0x005c,/* 0x5c */
-    0x005d,/* 0x5d */
-    0x005e,/* 0x5e */
-    0x005f,/* 0x5f */
-    0x0060,/* 0x60 */
-    0x0061,/* 0x61 */
-    0x0062,/* 0x62 */
-    0x0063,/* 0x63 */
-    0x0064,/* 0x64 */
-    0x0065,/* 0x65 */
-    0x0066,/* 0x66 */
-    0x0067,/* 0x67 */
-    0x0068,/* 0x68 */
-    0x0069,/* 0x69 */
-    0x006a,/* 0x6a */
-    0x006b,/* 0x6b */
-    0x006c,/* 0x6c */
-    0x006d,/* 0x6d */
-    0x006e,/* 0x6e */
-    0x006f,/* 0x6f */
-    0x0070,/* 0x70 */
-    0x0071,/* 0x71 */
-    0x0072,/* 0x72 */
-    0x0073,/* 0x73 */
-    0x0074,/* 0x74 */
-    0x0075,/* 0x75 */
-    0x0076,/* 0x76 */
-    0x0077,/* 0x77 */
-    0x0078,/* 0x78 */
-    0x0079,/* 0x79 */
-    0x007a,/* 0x7a */
-    0x007b,/* 0x7b */
-    0x007c,/* 0x7c */
-    0x007d,/* 0x7d */
-    0x007e,/* 0x7e */
-    0x007f,/* 0x7f */
-    0x0080,/* 0x80 */
-    0x0081,/* 0x81 */
-    0x0082,/* 0x82 */
-    0x0083,/* 0x83 */
-    0x0084,/* 0x84 */
-    0x0085,/* 0x85 */
-    0x0086,/* 0x86 */
-    0x0087,/* 0x87 */
-    0x0088,/* 0x88 */
-    0x0089,/* 0x89 */
-    0x008a,/* 0x8a */
-    0x008b,/* 0x8b */
-    0x008c,/* 0x8c */
-    0x008d,/* 0x8d */
-    0x008e,/* 0x8e */
-    0x008f,/* 0x8f */
-    0x0090,/* 0x90 */
-    0x0091,/* 0x91 */
-    0x0092,/* 0x92 */
-    0x0093,/* 0x93 */
-    0x0094,/* 0x94 */
-    0x0095,/* 0x95 */
-    0x0096,/* 0x96 */
-    0x0097,/* 0x97 */
-    0x0098,/* 0x98 */
-    0x0099,/* 0x99 */
-    0x009a,/* 0x9a */
-    0x009b,/* 0x9b */
-    0x009c,/* 0x9c */
-    0x009d,/* 0x9d */
-    0x009e,/* 0x9e */
-    0x009f,/* 0x9f */
-    0x00A0,/* 0xa0 */
-    0x0901,/* 0xa1 */
-    0x0902,/* 0xa2 */
-    0x0903,/* 0xa3 */
-    0x0905,/* 0xa4 */
-    0x0906,/* 0xa5 */
-    0x0907,/* 0xa6 */
-    0x0908,/* 0xa7 */
-    0x0909,/* 0xa8 */
-    0x090a,/* 0xa9 */
-    0x090b,/* 0xaa */
-    0x090e,/* 0xab */
-    0x090f,/* 0xac */
-    0x0910,/* 0xad */
-    0x090d,/* 0xae */
-    0x0912,/* 0xaf */
-    0x0913,/* 0xb0 */
-    0x0914,/* 0xb1 */
-    0x0911,/* 0xb2 */
-    0x0915,/* 0xb3 */
-    0x0916,/* 0xb4 */
-    0x0917,/* 0xb5 */
-    0x0918,/* 0xb6 */
-    0x0919,/* 0xb7 */
-    0x091a,/* 0xb8 */
-    0x091b,/* 0xb9 */
-    0x091c,/* 0xba */
-    0x091d,/* 0xbb */
-    0x091e,/* 0xbc */
-    0x091f,/* 0xbd */
-    0x0920,/* 0xbe */
-    0x0921,/* 0xbf */
-    0x0922,/* 0xc0 */
-    0x0923,/* 0xc1 */
-    0x0924,/* 0xc2 */
-    0x0925,/* 0xc3 */
-    0x0926,/* 0xc4 */
-    0x0927,/* 0xc5 */
-    0x0928,/* 0xc6 */
-    0x0929,/* 0xc7 */
-    0x092a,/* 0xc8 */
-    0x092b,/* 0xc9 */
-    0x092c,/* 0xca */
-    0x092d,/* 0xcb */
-    0x092e,/* 0xcc */
-    0x092f,/* 0xcd */
-    0x095f,/* 0xce */
-    0x0930,/* 0xcf */
-    0x0931,/* 0xd0 */
-    0x0932,/* 0xd1 */
-    0x0933,/* 0xd2 */
-    0x0934,/* 0xd3 */
-    0x0935,/* 0xd4 */
-    0x0936,/* 0xd5 */
-    0x0937,/* 0xd6 */
-    0x0938,/* 0xd7 */
-    0x0939,/* 0xd8 */
-    0x200D,/* 0xd9 */
-    0x093e,/* 0xda */
-    0x093f,/* 0xdb */
-    0x0940,/* 0xdc */
-    0x0941,/* 0xdd */
-    0x0942,/* 0xde */
-    0x0943,/* 0xdf */
-    0x0946,/* 0xe0 */
-    0x0947,/* 0xe1 */
-    0x0948,/* 0xe2 */
-    0x0945,/* 0xe3 */
-    0x094a,/* 0xe4 */
-    0x094b,/* 0xe5 */
-    0x094c,/* 0xe6 */
-    0x0949,/* 0xe7 */
-    0x094d,/* 0xe8 */
-    0x093c,/* 0xe9 */
-    0x0964,/* 0xea */
-    0xFFFF,/* 0xeb */
-    0xFFFF,/* 0xec */
-    0xFFFF,/* 0xed */
-    0xFFFF,/* 0xee */
-    0xFFFF,/* 0xef */
-    0xFFFF,/* 0xf0 */
-    0x0966,/* 0xf1 */
-    0x0967,/* 0xf2 */
-    0x0968,/* 0xf3 */
-    0x0969,/* 0xf4 */
-    0x096a,/* 0xf5 */
-    0x096b,/* 0xf6 */
-    0x096c,/* 0xf7 */
-    0x096d,/* 0xf8 */
-    0x096e,/* 0xf9 */
-    0x096f,/* 0xfa */
-    0xFFFF,/* 0xfb */
-    0xFFFF,/* 0xfc */
-    0xFFFF,/* 0xfd */
-    0xFFFF,/* 0xfe */
-    0xFFFF /* 0xff */
-};
-
-static const uint16_t vowelSignESpecialCases[][2]={
-       { 2 /*length of array*/    , 0      },
-       { 0xA4 , 0x0904 },
-};
-
-static const uint16_t nuktaSpecialCases[][2]={
-    { 16 /*length of array*/   , 0      },
-    { 0xA6 , 0x090c },
-    { 0xEA , 0x093D },
-    { 0xDF , 0x0944 },
-    { 0xA1 , 0x0950 },
-    { 0xb3 , 0x0958 },
-    { 0xb4 , 0x0959 },
-    { 0xb5 , 0x095a },
-    { 0xba , 0x095b },
-    { 0xbf , 0x095c },
-    { 0xC0 , 0x095d },
-    { 0xc9 , 0x095e },
-    { 0xAA , 0x0960 },
-    { 0xA7 , 0x0961 },
-    { 0xDB , 0x0962 },
-    { 0xDC , 0x0963 },
-};
-
-
-#define WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err){      \
-    int32_t offset = (int32_t)(source - args->source-1);                                        \
-      /* write the targetUniChar  to target */                                                  \
-    if(target < targetLimit){                                                                   \
-        if(targetByteUnit <= 0xFF){                                                             \
-            *(target)++ = (uint8_t)(targetByteUnit);                                            \
-            if(offsets){                                                                        \
-                *(offsets++) = offset;                                                          \
-            }                                                                                   \
-        }else{                                                                                  \
-            if (targetByteUnit > 0xFFFF) {                                                      \
-                *(target)++ = (uint8_t)(targetByteUnit>>16);                                    \
-                if (offsets) {                                                                  \
-                    --offset;                                                                   \
-                    *(offsets++) = offset;                                                      \
-                }                                                                               \
-            }                                                                                   \
-            if (!(target < targetLimit)) {                                                      \
-                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =    \
-                                (uint8_t)(targetByteUnit >> 8);                                 \
-                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =    \
-                                (uint8_t)targetByteUnit;                                        \
-                *err = U_BUFFER_OVERFLOW_ERROR;                                                 \
-            } else {                                                                            \
-                *(target)++ = (uint8_t)(targetByteUnit>>8);                                     \
-                if(offsets){                                                                    \
-                    *(offsets++) = offset;                                                      \
-                }                                                                               \
-                if(target < targetLimit){                                                       \
-                    *(target)++ = (uint8_t)  targetByteUnit;                                    \
-                    if(offsets){                                                                \
-                        *(offsets++) = offset                            ;                      \
-                    }                                                                           \
-                }else{                                                                          \
-                    args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =\
-                                (uint8_t) (targetByteUnit);                                     \
-                    *err = U_BUFFER_OVERFLOW_ERROR;                                             \
-                }                                                                               \
-            }                                                                                   \
-        }                                                                                       \
-    }else{                                                                                      \
-        if (targetByteUnit & 0xFF0000) {                                                        \
-            args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =        \
-                        (uint8_t) (targetByteUnit >>16);                                        \
-        }                                                                                       \
-        if(targetByteUnit & 0xFF00){                                                            \
-            args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =        \
-                        (uint8_t) (targetByteUnit >>8);                                         \
-        }                                                                                       \
-        args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =            \
-                        (uint8_t) (targetByteUnit);                                             \
-        *err = U_BUFFER_OVERFLOW_ERROR;                                                         \
-    }                                                                                           \
-}
-
-/* Rules:
- *    Explicit Halant :
- *                      <HALANT> + <ZWNJ>
- *    Soft Halant :
- *                      <HALANT> + <ZWJ>
- */
-
-static void UConverter_fromUnicode_ISCII_OFFSETS_LOGIC(
-        UConverterFromUnicodeArgs * args, UErrorCode * err) {
-    const UChar *source = args->source;
-    const UChar *sourceLimit = args->sourceLimit;
-    unsigned char *target = (unsigned char *) args->target;
-    unsigned char *targetLimit = (unsigned char *) args->targetLimit;
-    int32_t* offsets = args->offsets;
-    uint32_t targetByteUnit = 0x0000;
-    UChar32 sourceChar = 0x0000;
-    UChar32 tempContextFromUnicode = 0x0000;    /* For special handling of the Gurmukhi script. */
-    UConverterDataISCII *converterData;
-    uint16_t newDelta=0;
-    uint16_t range = 0;
-    UBool deltaChanged = FALSE;
-
-    if ((args->converter == NULL) || (args->targetLimit < args->target) || (args->sourceLimit < args->source)) {
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-    /* initialize data */
-    converterData=(UConverterDataISCII*)args->converter->extraInfo;
-    newDelta=converterData->currentDeltaFromUnicode;
-    range = (uint16_t)(newDelta/DELTA);
-
-    if ((sourceChar = args->converter->fromUChar32)!=0) {
-        goto getTrail;
-    }
-
-    /*writing the char to the output stream */
-    while (source < sourceLimit) {
-        /* Write the language code following LF only if LF is not the last character. */
-        if (args->converter->fromUnicodeStatus == LF) {
-            targetByteUnit = ATR<<8;
-            targetByteUnit += (uint8_t) lookupInitialData[range].isciiLang;
-            args->converter->fromUnicodeStatus = 0x0000;
-            /* now append ATR and language code */
-            WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err);
-            if (U_FAILURE(*err)) {
-                break;
-            }
-        }
-        
-        sourceChar = *source++;
-        tempContextFromUnicode = converterData->contextCharFromUnicode;
-        
-        targetByteUnit = missingCharMarker;
-        
-        /*check if input is in ASCII and C0 control codes range*/
-        if (sourceChar <= ASCII_END) {
-            args->converter->fromUnicodeStatus = sourceChar;
-            WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,sourceChar,err);
-            if (U_FAILURE(*err)) {
-                break;
-            }
-            continue;
-        }
-        switch (sourceChar) {
-        case ZWNJ:
-            /* contextChar has HALANT */
-            if (converterData->contextCharFromUnicode) {
-                converterData->contextCharFromUnicode = 0x00;
-                targetByteUnit = ISCII_HALANT;
-            } else {
-                /* consume ZWNJ and continue */
-                converterData->contextCharFromUnicode = 0x00;
-                continue;
-            }
-            break;
-        case ZWJ:
-            /* contextChar has HALANT */
-            if (converterData->contextCharFromUnicode) {
-                targetByteUnit = ISCII_NUKTA;
-            } else {
-                targetByteUnit =ISCII_INV;
-            }
-            converterData->contextCharFromUnicode = 0x00;
-            break;
-        default:
-            /* is the sourceChar in the INDIC_RANGE? */
-            if ((uint16_t)(INDIC_BLOCK_END-sourceChar) <= INDIC_RANGE) {
-                /* Danda and Double Danda are valid in Northern scripts.. since Unicode
-                 * does not include these codepoints in all Northern scrips we need to
-                 * filter them out
-                 */
-                if (sourceChar!= DANDA && sourceChar != DOUBLE_DANDA) {
-                    /* find out to which block the souceChar belongs*/
-                    range =(uint16_t)((sourceChar-INDIC_BLOCK_BEGIN)/DELTA);
-                    newDelta =(uint16_t)(range*DELTA);
-
-                    /* Now are we in the same block as the previous? */
-                    if (newDelta!= converterData->currentDeltaFromUnicode || converterData->isFirstBuffer) {
-                        converterData->currentDeltaFromUnicode = newDelta;
-                        converterData->currentMaskFromUnicode = lookupInitialData[range].maskEnum;
-                        deltaChanged =TRUE;
-                        converterData->isFirstBuffer=FALSE;
-                    }
-                    
-                    if (converterData->currentDeltaFromUnicode == PNJ_DELTA) { 
-                        if (sourceChar == PNJ_TIPPI) {
-                            /* Make sure Tippi is converterd to Bindi. */
-                            sourceChar = PNJ_BINDI;
-                        } else if (sourceChar == PNJ_ADHAK) {
-                            /* This is for consonant cluster handling. */
-                            converterData->contextCharFromUnicode = PNJ_ADHAK;
-                        }
-                        
-                    }
-                    /* Normalize all Indic codepoints to Devanagari and map them to ISCII */
-                    /* now subtract the new delta from sourceChar*/
-                    sourceChar -= converterData->currentDeltaFromUnicode;
-                }
-
-                /* get the target byte unit */
-                targetByteUnit=fromUnicodeTable[(uint8_t)sourceChar];
-
-                /* is the code point valid in current script? */
-                if ((validityTable[(uint8_t)sourceChar] & converterData->currentMaskFromUnicode)==0) {
-                    /* Vocallic RR is assigned in ISCII Telugu and Unicode */
-                    if (converterData->currentDeltaFromUnicode!=(TELUGU_DELTA) || sourceChar!=VOCALLIC_RR) {
-                        targetByteUnit=missingCharMarker;
-                    }
-                }
-
-                if (deltaChanged) {
-                    /* we are in a script block which is different than
-                     * previous sourceChar's script block write ATR and language codes
-                     */
-                    uint32_t temp=0;
-                    temp =(uint16_t)(ATR<<8);
-                    temp += (uint16_t)((uint8_t) lookupInitialData[range].isciiLang);
-                    /* reset */
-                    deltaChanged=FALSE;
-                    /* now append ATR and language code */
-                    WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,temp,err);
-                    if (U_FAILURE(*err)) {
-                        break;
-                    }
-                }
-                
-                if (converterData->currentDeltaFromUnicode == PNJ_DELTA && (sourceChar + PNJ_DELTA) == PNJ_ADHAK) {
-                    continue;
-                }
-            }
-            /* reset context char */
-            converterData->contextCharFromUnicode = 0x00;
-            break;
-        }
-        if (converterData->currentDeltaFromUnicode == PNJ_DELTA && tempContextFromUnicode == PNJ_ADHAK && isPNJConsonant((sourceChar + PNJ_DELTA))) {
-            /* If the previous codepoint is Adhak and the current codepoint is a consonant, the targetByteUnit should be C + Halant + C. */
-            /* reset context char */
-            converterData->contextCharFromUnicode = 0x0000;
-            targetByteUnit = targetByteUnit << 16 | ISCII_HALANT << 8 | targetByteUnit;
-            /* write targetByteUnit to target */
-            WRITE_TO_TARGET_FROM_U(args, offsets, source, target, targetLimit, targetByteUnit,err);
-            if (U_FAILURE(*err)) {
-                break;
-            }
-        } else if (targetByteUnit != missingCharMarker) {
-            if (targetByteUnit==ISCII_HALANT) {
-                converterData->contextCharFromUnicode = (UChar)targetByteUnit;
-            }
-            /* write targetByteUnit to target*/
-            WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err);
-            if (U_FAILURE(*err)) {
-                break;
-            }
-        } else {
-            /* oops.. the code point is unassigned */
-            /*check if the char is a First surrogate*/
-            if (U16_IS_SURROGATE(sourceChar)) {
-                if (U16_IS_SURROGATE_LEAD(sourceChar)) {
-getTrail:
-                    /*look ahead to find the trail surrogate*/
-                    if (source < sourceLimit) {
-                        /* test the following code unit */
-                        UChar trail= (*source);
-                        if (U16_IS_TRAIL(trail)) {
-                            source++;
-                            sourceChar=U16_GET_SUPPLEMENTARY(sourceChar, trail);
-                            *err =U_INVALID_CHAR_FOUND;
-                            /* convert this surrogate code point */
-                            /* exit this condition tree */
-                        } else {
-                            /* this is an unmatched lead code unit (1st surrogate) */
-                            /* callback(illegal) */
-                            *err=U_ILLEGAL_CHAR_FOUND;
-                        }
-                    } else {
-                        /* no more input */
-                        *err = U_ZERO_ERROR;
-                    }
-                } else {
-                    /* this is an unmatched trail code unit (2nd surrogate) */
-                    /* callback(illegal) */
-                    *err=U_ILLEGAL_CHAR_FOUND;
-                }
-            } else {
-                /* callback(unassigned) for a BMP code point */
-                *err = U_INVALID_CHAR_FOUND;
-            }
-
-            args->converter->fromUChar32=sourceChar;
-            break;
-        }
-    }/* end while(mySourceIndex<mySourceLength) */
-
-    /*save the state and return */
-    args->source = source;
-    args->target = (char*)target;
-}
-
-static const uint16_t lookupTable[][2]={
-    { ZERO,       ZERO     },     /*DEFALT*/
-    { ZERO,       ZERO     },     /*ROMAN*/
-    { DEVANAGARI, DEV_MASK },
-    { BENGALI,    BNG_MASK },
-    { TAMIL,      TML_MASK },
-    { TELUGU,     KND_MASK },
-    { BENGALI,    BNG_MASK },
-    { ORIYA,      ORI_MASK },
-    { KANNADA,    KND_MASK },
-    { MALAYALAM,  MLM_MASK },
-    { GUJARATI,   GJR_MASK },
-    { GURMUKHI,   PNJ_MASK }
-};
-
-#define WRITE_TO_TARGET_TO_U(args,source,target,offsets,offset,targetUniChar,delta, err){\
-    /* add offset to current Indic Block */                                              \
-    if(targetUniChar>ASCII_END &&                                                        \
-           targetUniChar != ZWJ &&                                                       \
-           targetUniChar != ZWNJ &&                                                      \
-           targetUniChar != DANDA &&                                                     \
-           targetUniChar != DOUBLE_DANDA){                                               \
-                                                                                         \
-           targetUniChar+=(uint16_t)(delta);                                             \
-    }                                                                                    \
-    /* now write the targetUniChar */                                                    \
-    if(target<args->targetLimit){                                                        \
-        *(target)++ = (UChar)targetUniChar;                                              \
-        if(offsets){                                                                     \
-            *(offsets)++ = (int32_t)(offset);                                            \
-        }                                                                                \
-    }else{                                                                               \
-        args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++] =   \
-            (UChar)targetUniChar;                                                        \
-        *err = U_BUFFER_OVERFLOW_ERROR;                                                  \
-    }                                                                                    \
-}
-
-#define GET_MAPPING(sourceChar,targetUniChar,data){                                      \
-    targetUniChar = toUnicodeTable[(sourceChar)] ;                                       \
-    /* is the code point valid in current script? */                                     \
-    if(sourceChar> ASCII_END &&                                                          \
-            (validityTable[(targetUniChar & 0x7F)] & data->currentMaskToUnicode)==0){    \
-        /* Vocallic RR is assigne in ISCII Telugu and Unicode */                         \
-        if(data->currentDeltaToUnicode!=(TELUGU_DELTA) ||                                \
-                    targetUniChar!=VOCALLIC_RR){                                         \
-            targetUniChar=missingCharMarker;                                             \
-        }                                                                                \
-    }                                                                                    \
-}
-
-/***********
- *  Rules for ISCII to Unicode converter
- *  ISCII is stateful encoding. To convert ISCII bytes to Unicode,
- *  which has both precomposed and decomposed forms characters
- *  pre-context and post-context need to be considered.
- *
- *  Post context
- *  i)  ATR : Attribute code is used to declare the font and script switching.
- *      Currently we only switch scripts and font codes consumed without generating an error
- *  ii) EXT : Extention code is used to declare switching to Sanskrit and for obscure,
- *      obsolete characters
- *  Pre context
- *  i)  Halant: if preceeded by a halant then it is a explicit halant
- *  ii) Nukta :
- *       a) if preceeded by a halant then it is a soft halant
- *       b) if preceeded by specific consonants and the ligatures have pre-composed
- *          characters in Unicode then convert to pre-composed characters
- *  iii) Danda: If Danda is preceeded by a Danda then convert to Double Danda
- *
- */
-
-static void UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCode* err) {
-    const char *source = ( char *) args->source;
-    UChar *target = args->target;
-    const char *sourceLimit = args->sourceLimit;
-    const UChar* targetLimit = args->targetLimit;
-    uint32_t targetUniChar = 0x0000;
-    uint8_t sourceChar = 0x0000;
-    UConverterDataISCII* data;
-    UChar32* toUnicodeStatus=NULL;
-    UChar32 tempTargetUniChar = 0x0000;
-    UChar* contextCharToUnicode= NULL;
-    UBool found;
-    int i; 
-    int offset = 0;
-
-    if ((args->converter == NULL) || (target < args->target) || (source < args->source)) {
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    data = (UConverterDataISCII*)(args->converter->extraInfo);
-    contextCharToUnicode = &data->contextCharToUnicode; /* contains previous ISCII codepoint visited */
-    toUnicodeStatus = (UChar32*)&args->converter->toUnicodeStatus;/* contains the mapping to Unicode of the above codepoint*/
-
-    while (U_SUCCESS(*err) && source<sourceLimit) {
-
-        targetUniChar = missingCharMarker;
-
-        if (target < targetLimit) {
-            sourceChar = (unsigned char)*(source)++;
-
-            /* look at the post-context preform special processing */
-            if (*contextCharToUnicode==ATR) {
-
-                /* If we have ATR in *contextCharToUnicode then we need to change our
-                 * state to the Indic Script specified by sourceChar
-                 */
-
-                /* check if the sourceChar is supported script range*/
-                if ((uint8_t)(PNJ-sourceChar)<=PNJ-DEV) {
-                    data->currentDeltaToUnicode = (uint16_t)(lookupTable[sourceChar & 0x0F][0] * DELTA);
-                    data->currentMaskToUnicode = (MaskEnum)lookupTable[sourceChar & 0x0F][1];
-                } else if (sourceChar==DEF) {
-                    /* switch back to default */
-                    data->currentDeltaToUnicode = data->defDeltaToUnicode;
-                    data->currentMaskToUnicode = data->defMaskToUnicode;
-                } else {
-                    if ((sourceChar >= 0x21 && sourceChar <= 0x3F)) {
-                        /* these are display codes consume and continue */
-                    } else {
-                        *err =U_ILLEGAL_CHAR_FOUND;
-                        /* reset */
-                        *contextCharToUnicode=NO_CHAR_MARKER;
-                        goto CALLBACK;
-                    }
-                }
-
-                /* reset */
-                *contextCharToUnicode=NO_CHAR_MARKER;
-
-                continue;
-
-            } else if (*contextCharToUnicode==EXT) {
-                /* check if sourceChar is in 0xA1-0xEE range */
-                if ((uint8_t) (EXT_RANGE_END - sourceChar) <= (EXT_RANGE_END - EXT_RANGE_BEGIN)) {
-                    /* We currently support only Anudatta and Devanagari abbreviation sign */
-                    if (sourceChar==0xBF || sourceChar == 0xB8) {
-                        targetUniChar = (sourceChar==0xBF) ? DEV_ABBR_SIGN : DEV_ANUDATTA;
-                        
-                        /* find out if the mapping is valid in this state */
-                        if (validityTable[(uint8_t)targetUniChar] & data->currentMaskToUnicode) {
-                            *contextCharToUnicode= NO_CHAR_MARKER;
-
-                            /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
-                            if (data->prevToUnicodeStatus) {
-                                WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
-                                data->prevToUnicodeStatus = 0x0000;
-                            }
-                            /* write to target */
-                            WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),targetUniChar,data->currentDeltaToUnicode,err);
-
-                            continue;
-                        }
-                    }
-                    /* byte unit is unassigned */
-                    targetUniChar = missingCharMarker;
-                    *err= U_INVALID_CHAR_FOUND;
-                } else {
-                    /* only 0xA1 - 0xEE are legal after EXT char */
-                    *contextCharToUnicode= NO_CHAR_MARKER;
-                    *err = U_ILLEGAL_CHAR_FOUND;
-                }
-                goto CALLBACK;
-            } else if (*contextCharToUnicode==ISCII_INV) {
-                if (sourceChar==ISCII_HALANT) {
-                    targetUniChar = 0x0020; /* replace with space accoding to Indic FAQ */
-                } else {
-                    targetUniChar = ZWJ;
-                }
-
-                /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
-                if (data->prevToUnicodeStatus) {
-                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
-                    data->prevToUnicodeStatus = 0x0000;
-                }
-                /* write to target */
-                WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),targetUniChar,data->currentDeltaToUnicode,err);
-                /* reset */
-                *contextCharToUnicode=NO_CHAR_MARKER;
-            }
-
-            /* look at the pre-context and perform special processing */
-            switch (sourceChar) {
-            case ISCII_INV:
-            case EXT:
-            case ATR:
-                *contextCharToUnicode = (UChar)sourceChar;
-
-                if (*toUnicodeStatus != missingCharMarker) {
-                    /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
-                    if (data->prevToUnicodeStatus) {
-                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
-                        data->prevToUnicodeStatus = 0x0000;
-                    }
-                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),*toUnicodeStatus,data->currentDeltaToUnicode,err);
-                    *toUnicodeStatus = missingCharMarker;
-                }
-                continue;
-            case ISCII_DANDA:
-                /* handle double danda*/
-                if (*contextCharToUnicode== ISCII_DANDA) {
-                    targetUniChar = DOUBLE_DANDA;
-                    /* clear the context */
-                    *contextCharToUnicode = NO_CHAR_MARKER;
-                    *toUnicodeStatus = missingCharMarker;
-                } else {
-                    GET_MAPPING(sourceChar,targetUniChar,data);
-                    *contextCharToUnicode = sourceChar;
-                }
-                break;
-            case ISCII_HALANT:
-                /* handle explicit halant */
-                if (*contextCharToUnicode == ISCII_HALANT) {
-                    targetUniChar = ZWNJ;
-                    /* clear the context */
-                    *contextCharToUnicode = NO_CHAR_MARKER;
-                } else {
-                    GET_MAPPING(sourceChar,targetUniChar,data);
-                    *contextCharToUnicode = sourceChar;
-                }
-                break;
-            case 0x0A:
-            case 0x0D:
-                data->resetToDefaultToUnicode = TRUE;
-                GET_MAPPING(sourceChar,targetUniChar,data)
-                ;
-                *contextCharToUnicode = sourceChar;
-                break;
-
-            case ISCII_VOWEL_SIGN_E:
-                i=1;
-                found=FALSE;
-                for (; i<vowelSignESpecialCases[0][0]; i++) {
-                    U_ASSERT(i<UPRV_LENGTHOF(vowelSignESpecialCases));
-                    if (vowelSignESpecialCases[i][0]==(uint8_t)*contextCharToUnicode) {
-                        targetUniChar=vowelSignESpecialCases[i][1];
-                        found=TRUE;
-                        break;
-                    }
-                }
-                if (found) {
-                    /* find out if the mapping is valid in this state */
-                    if (validityTable[(uint8_t)targetUniChar] & data->currentMaskToUnicode) {
-                        /*targetUniChar += data->currentDeltaToUnicode ;*/
-                        *contextCharToUnicode= NO_CHAR_MARKER;
-                        *toUnicodeStatus = missingCharMarker;
-                        break;
-                    }
-                }
-                GET_MAPPING(sourceChar,targetUniChar,data);
-                *contextCharToUnicode = sourceChar;
-                break;
-
-            case ISCII_NUKTA:
-                /* handle soft halant */
-                if (*contextCharToUnicode == ISCII_HALANT) {
-                    targetUniChar = ZWJ;
-                    /* clear the context */
-                    *contextCharToUnicode = NO_CHAR_MARKER;
-                    break;
-                } else if (data->currentDeltaToUnicode == PNJ_DELTA && data->contextCharToUnicode == 0xc0) {
-                    /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
-                    if (data->prevToUnicodeStatus) {
-                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
-                        data->prevToUnicodeStatus = 0x0000;
-                    }
-                    /* We got here because ISCII_NUKTA was preceded by 0xc0 and we are converting Gurmukhi.
-                     * In that case we must convert (0xc0 0xe9) to (\u0a5c\u0a4d\u0a39).
-                     */
-                    targetUniChar = PNJ_RRA;
-                    WRITE_TO_TARGET_TO_U(args, source, target, args->offsets, (source-args->source)-2, targetUniChar, 0, err);
-                    if (U_SUCCESS(*err)) {
-                        targetUniChar = PNJ_SIGN_VIRAMA;
-                        WRITE_TO_TARGET_TO_U(args, source, target, args->offsets, (source-args->source)-2, targetUniChar, 0, err);
-                        if (U_SUCCESS(*err)) {
-                            targetUniChar = PNJ_HA;
-                            WRITE_TO_TARGET_TO_U(args, source, target, args->offsets, (source-args->source)-2, targetUniChar, 0, err);
-                        } else {
-                            args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++]= PNJ_HA;
-                        }
-                    } else {
-                        args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++]= PNJ_SIGN_VIRAMA;
-                        args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++]= PNJ_HA;
-                    }
-                    *toUnicodeStatus = missingCharMarker;
-                    data->contextCharToUnicode = NO_CHAR_MARKER;
-                    continue;
-                } else {
-                    /* try to handle <CHAR> + ISCII_NUKTA special mappings */
-                    i=1;
-                    found =FALSE;
-                    for (; i<nuktaSpecialCases[0][0]; i++) {
-                        if (nuktaSpecialCases[i][0]==(uint8_t)
-                                *contextCharToUnicode) {
-                            targetUniChar=nuktaSpecialCases[i][1];
-                            found =TRUE;
-                            break;
-                        }
-                    }
-                    if (found) {
-                        /* find out if the mapping is valid in this state */
-                        if (validityTable[(uint8_t)targetUniChar] & data->currentMaskToUnicode) {
-                            /*targetUniChar += data->currentDeltaToUnicode ;*/
-                            *contextCharToUnicode= NO_CHAR_MARKER;
-                            *toUnicodeStatus = missingCharMarker;
-                            if (data->currentDeltaToUnicode == PNJ_DELTA) {
-                                /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
-                                if (data->prevToUnicodeStatus) {
-                                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
-                                    data->prevToUnicodeStatus = 0x0000;
-                                }
-                                WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),targetUniChar,data->currentDeltaToUnicode,err);
-                                continue;
-                            }
-                            break;
-                        }
-                        /* else fall through to default */
-                    }
-                    /* else fall through to default */
-                    U_FALLTHROUGH;
-                }
-            default:GET_MAPPING(sourceChar,targetUniChar,data)
-                ;
-                *contextCharToUnicode = sourceChar;
-                break;
-            }
-
-            if (*toUnicodeStatus != missingCharMarker) {
-                /* Check to make sure that consonant clusters are handled correct for Gurmukhi script. */
-                if (data->currentDeltaToUnicode == PNJ_DELTA && data->prevToUnicodeStatus != 0 && isPNJConsonant(data->prevToUnicodeStatus) &&
-                        (*toUnicodeStatus + PNJ_DELTA) == PNJ_SIGN_VIRAMA && (targetUniChar + PNJ_DELTA) == data->prevToUnicodeStatus) {
-                    /* Consonant clusters C + HALANT + C should be encoded as ADHAK + C */
-                    offset = (int)(source-args->source - 3);
-                    tempTargetUniChar = PNJ_ADHAK; /* This is necessary to avoid some compiler warnings. */
-                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,offset,tempTargetUniChar,0,err);
-                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,offset,data->prevToUnicodeStatus,0,err);
-                    data->prevToUnicodeStatus = 0x0000; /* reset the previous unicode code point */
-                    *toUnicodeStatus = missingCharMarker;
-                    continue;
-                } else {
-                    /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
-                    if (data->prevToUnicodeStatus) {
-                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
-                        data->prevToUnicodeStatus = 0x0000;
-                    }
-                    /* Check to make sure that Bindi and Tippi are handled correctly for Gurmukhi script. 
-                     * If 0xA2 is preceded by a codepoint in the PNJ_BINDI_TIPPI_SET then the target codepoint should be Tippi instead of Bindi.
-                     */
-                    if (data->currentDeltaToUnicode == PNJ_DELTA && (targetUniChar + PNJ_DELTA) == PNJ_BINDI && isPNJBindiTippi((*toUnicodeStatus + PNJ_DELTA))) {
-                        targetUniChar = PNJ_TIPPI - PNJ_DELTA;
-                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),*toUnicodeStatus,PNJ_DELTA,err);
-                    } else if (data->currentDeltaToUnicode == PNJ_DELTA && (targetUniChar + PNJ_DELTA) == PNJ_SIGN_VIRAMA && isPNJConsonant((*toUnicodeStatus + PNJ_DELTA))) {
-                        /* Store the current toUnicodeStatus code point for later handling of consonant cluster in Gurmukhi. */
-                        data->prevToUnicodeStatus = *toUnicodeStatus + PNJ_DELTA;
-                    } else {
-                        /* write the previously mapped codepoint */
-                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),*toUnicodeStatus,data->currentDeltaToUnicode,err);
-                    }
-                }
-                *toUnicodeStatus = missingCharMarker;
-            }
-
-            if (targetUniChar != missingCharMarker) {
-                /* now save the targetUniChar for delayed write */
-                *toUnicodeStatus = (UChar) targetUniChar;
-                if (data->resetToDefaultToUnicode==TRUE) {
-                    data->currentDeltaToUnicode = data->defDeltaToUnicode;
-                    data->currentMaskToUnicode = data->defMaskToUnicode;
-                    data->resetToDefaultToUnicode=FALSE;
-                }
-            } else {
-
-                /* we reach here only if targetUniChar == missingCharMarker
-                 * so assign codes to reason and err
-                 */
-                *err = U_INVALID_CHAR_FOUND;
-CALLBACK:
-                args->converter->toUBytes[0] = (uint8_t) sourceChar;
-                args->converter->toULength = 1;
-                break;
-            }
-
-        } else {
-            *err =U_BUFFER_OVERFLOW_ERROR;
-            break;
-        }
-    }
-
-    if (U_SUCCESS(*err) && args->flush && source == sourceLimit) {
-        /* end of the input stream */
-        UConverter *cnv = args->converter;
-
-        if (*contextCharToUnicode==ATR || *contextCharToUnicode==EXT || *contextCharToUnicode==ISCII_INV) {
-            /* set toUBytes[] */
-            cnv->toUBytes[0] = (uint8_t)*contextCharToUnicode;
-            cnv->toULength = 1;
-
-            /* avoid looping on truncated sequences */
-            *contextCharToUnicode = NO_CHAR_MARKER;
-        } else {
-            cnv->toULength = 0;
-        }
-
-        if (*toUnicodeStatus != missingCharMarker) {
-            /* output a remaining target character */
-            WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source - args->source -1),*toUnicodeStatus,data->currentDeltaToUnicode,err);
-            *toUnicodeStatus = missingCharMarker;
-        }
-    }
-
-    args->target = target;
-    args->source = source;
-}
-
-/* structure for SafeClone calculations */
-struct cloneISCIIStruct {
-    UConverter cnv;
-    UConverterDataISCII mydata;
-};
-
-static UConverter *
-_ISCII_SafeClone(const UConverter *cnv,
-              void *stackBuffer,
-              int32_t *pBufferSize,
-              UErrorCode *status)
-{
-    struct cloneISCIIStruct * localClone;
-    int32_t bufferSizeNeeded = sizeof(struct cloneISCIIStruct);
-
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-
-    if (*pBufferSize == 0) { /* 'preflighting' request - set needed size into *pBufferSize */
-        *pBufferSize = bufferSizeNeeded;
-        return 0;
-    }
-
-    localClone = (struct cloneISCIIStruct *)stackBuffer;
-    /* ucnv.c/ucnv_safeClone() copied the main UConverter already */
-
-    uprv_memcpy(&localClone->mydata, cnv->extraInfo, sizeof(UConverterDataISCII));
-    localClone->cnv.extraInfo = &localClone->mydata;
-    localClone->cnv.isExtraLocal = TRUE;
-
-    return &localClone->cnv;
-}
-
-static void
-_ISCIIGetUnicodeSet(const UConverter *cnv,
-                    const USetAdder *sa,
-                    UConverterUnicodeSet which,
-                    UErrorCode *pErrorCode)
-{
-    int32_t idx, script;
-    uint8_t mask;
-
-    /* Since all ISCII versions allow switching to other ISCII
-    scripts, we add all roundtrippable characters to this set. */
-    sa->addRange(sa->set, 0, ASCII_END);
-    for (script = DEVANAGARI; script <= MALAYALAM; script++) {
-        mask = (uint8_t)(lookupInitialData[script].maskEnum);
-        for (idx = 0; idx < DELTA; idx++) {
-            /* added check for TELUGU character */
-            if ((validityTable[idx] & mask) || (script==TELUGU && idx==0x31)) {
-                sa->add(sa->set, idx + (script * DELTA) + INDIC_BLOCK_BEGIN);
-            }
-        }
-    }
-    sa->add(sa->set, DANDA);
-    sa->add(sa->set, DOUBLE_DANDA);
-    sa->add(sa->set, ZWNJ);
-    sa->add(sa->set, ZWJ);
-}
-
-static const UConverterImpl _ISCIIImpl={
-
-    UCNV_ISCII,
-
-    NULL,
-    NULL,
-
-    _ISCIIOpen,
-    _ISCIIClose,
-    _ISCIIReset,
-
-    UConverter_toUnicode_ISCII_OFFSETS_LOGIC,
-    UConverter_toUnicode_ISCII_OFFSETS_LOGIC,
-    UConverter_fromUnicode_ISCII_OFFSETS_LOGIC,
-    UConverter_fromUnicode_ISCII_OFFSETS_LOGIC,
-    NULL,
-
-    NULL,
-    _ISCIIgetName,
-    NULL,
-    _ISCII_SafeClone,
-    _ISCIIGetUnicodeSet
-};
-
-static const UConverterStaticData _ISCIIStaticData={
-    sizeof(UConverterStaticData),
-        "ISCII",
-         0,
-         UCNV_IBM,
-         UCNV_ISCII,
-         1,
-         4,
-        { 0x1a, 0, 0, 0 },
-        0x1,
-        FALSE,
-        FALSE,
-        0x0,
-        0x0,
-        { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, /* reserved */
-
-};
-
-const UConverterSharedData _ISCIIData=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_ISCIIStaticData, &_ISCIIImpl);
-
-#endif /* #if !UCONFIG_NO_LEGACY_CONVERSION */
diff --git a/source/common/ucnvlat1.c b/source/common/ucnvlat1.c
deleted file mode 100644 (file)
index f17777f..0000000
+++ /dev/null
@@ -1,740 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/* 
-**********************************************************************
-*   Copyright (C) 2000-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   file name:  ucnvlat1.cpp
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2000feb07
-*   created by: Markus W. Scherer
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "unicode/ucnv.h"
-#include "unicode/uset.h"
-#include "unicode/utf8.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-
-/* control optimizations according to the platform */
-#define LATIN1_UNROLL_FROM_UNICODE 1
-
-/* ISO 8859-1 --------------------------------------------------------------- */
-
-/* This is a table-less and callback-less version of ucnv_MBCSSingleToBMPWithOffsets(). */
-static void
-_Latin1ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                            UErrorCode *pErrorCode) {
-    const uint8_t *source;
-    UChar *target;
-    int32_t targetCapacity, length;
-    int32_t *offsets;
-
-    int32_t sourceIndex;
-
-    /* set up the local pointers */
-    source=(const uint8_t *)pArgs->source;
-    target=pArgs->target;
-    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
-    offsets=pArgs->offsets;
-
-    sourceIndex=0;
-
-    /*
-     * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
-     * for the minimum of the sourceLength and targetCapacity
-     */
-    length=(int32_t)((const uint8_t *)pArgs->sourceLimit-source);
-    if(length<=targetCapacity) {
-        targetCapacity=length;
-    } else {
-        /* target will be full */
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        length=targetCapacity;
-    }
-
-    if(targetCapacity>=8) {
-        /* This loop is unrolled for speed and improved pipelining. */
-        int32_t count, loops;
-
-        loops=count=targetCapacity>>3;
-        length=targetCapacity&=0x7;
-        do {
-            target[0]=source[0];
-            target[1]=source[1];
-            target[2]=source[2];
-            target[3]=source[3];
-            target[4]=source[4];
-            target[5]=source[5];
-            target[6]=source[6];
-            target[7]=source[7];
-            target+=8;
-            source+=8;
-        } while(--count>0);
-
-        if(offsets!=NULL) {
-            do {
-                offsets[0]=sourceIndex++;
-                offsets[1]=sourceIndex++;
-                offsets[2]=sourceIndex++;
-                offsets[3]=sourceIndex++;
-                offsets[4]=sourceIndex++;
-                offsets[5]=sourceIndex++;
-                offsets[6]=sourceIndex++;
-                offsets[7]=sourceIndex++;
-                offsets+=8;
-            } while(--loops>0);
-        }
-    }
-
-    /* conversion loop */
-    while(targetCapacity>0) {
-        *target++=*source++;
-        --targetCapacity;
-    }
-
-    /* write back the updated pointers */
-    pArgs->source=(const char *)source;
-    pArgs->target=target;
-
-    /* set offsets */
-    if(offsets!=NULL) {
-        while(length>0) {
-            *offsets++=sourceIndex++;
-            --length;
-        }
-        pArgs->offsets=offsets;
-    }
-}
-
-/* This is a table-less and callback-less version of ucnv_MBCSSingleGetNextUChar(). */
-static UChar32
-_Latin1GetNextUChar(UConverterToUnicodeArgs *pArgs,
-                    UErrorCode *pErrorCode) {
-    const uint8_t *source=(const uint8_t *)pArgs->source;
-    if(source<(const uint8_t *)pArgs->sourceLimit) {
-        pArgs->source=(const char *)(source+1);
-        return *source;
-    }
-
-    /* no output because of empty input */
-    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-    return 0xffff;
-}
-
-/* This is a table-less version of ucnv_MBCSSingleFromBMPWithOffsets(). */
-static void
-_Latin1FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
-                              UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    const UChar *source, *sourceLimit;
-    uint8_t *target, *oldTarget;
-    int32_t targetCapacity, length;
-    int32_t *offsets;
-
-    UChar32 cp;
-    UChar c, max;
-
-    int32_t sourceIndex;
-
-    /* set up the local pointers */
-    cnv=pArgs->converter;
-    source=pArgs->source;
-    sourceLimit=pArgs->sourceLimit;
-    target=oldTarget=(uint8_t *)pArgs->target;
-    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
-    offsets=pArgs->offsets;
-
-    if(cnv->sharedData==&_Latin1Data) {
-        max=0xff; /* Latin-1 */
-    } else {
-        max=0x7f; /* US-ASCII */
-    }
-
-    /* get the converter state from UConverter */
-    cp=cnv->fromUChar32;
-
-    /* sourceIndex=-1 if the current character began in the previous buffer */
-    sourceIndex= cp==0 ? 0 : -1;
-
-    /*
-     * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
-     * for the minimum of the sourceLength and targetCapacity
-     */
-    length=(int32_t)(sourceLimit-source);
-    if(length<targetCapacity) {
-        targetCapacity=length;
-    }
-
-    /* conversion loop */
-    if(cp!=0 && targetCapacity>0) {
-        goto getTrail;
-    }
-
-#if LATIN1_UNROLL_FROM_UNICODE
-    /* unroll the loop with the most common case */
-    if(targetCapacity>=16) {
-        int32_t count, loops;
-        UChar u, oredChars;
-
-        loops=count=targetCapacity>>4;
-        do {
-            oredChars=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-            oredChars|=u=*source++;
-            *target++=(uint8_t)u;
-
-            /* were all 16 entries really valid? */
-            if(oredChars>max) {
-                /* no, return to the first of these 16 */
-                source-=16;
-                target-=16;
-                break;
-            }
-        } while(--count>0);
-        count=loops-count;
-        targetCapacity-=16*count;
-
-        if(offsets!=NULL) {
-            oldTarget+=16*count;
-            while(count>0) {
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                *offsets++=sourceIndex++;
-                --count;
-            }
-        }
-    }
-#endif
-
-    /* conversion loop */
-    c=0;
-    while(targetCapacity>0 && (c=*source++)<=max) {
-        /* convert the Unicode code point */
-        *target++=(uint8_t)c;
-        --targetCapacity;
-    }
-
-    if(c>max) {
-        cp=c;
-        if(!U_IS_SURROGATE(cp)) {
-            /* callback(unassigned) */
-        } else if(U_IS_SURROGATE_LEAD(cp)) {
-getTrail:
-            if(source<sourceLimit) {
-                /* test the following code unit */
-                UChar trail=*source;
-                if(U16_IS_TRAIL(trail)) {
-                    ++source;
-                    cp=U16_GET_SUPPLEMENTARY(cp, trail);
-                    /* this codepage does not map supplementary code points */
-                    /* callback(unassigned) */
-                } else {
-                    /* this is an unmatched lead code unit (1st surrogate) */
-                    /* callback(illegal) */
-                }
-            } else {
-                /* no more input */
-                cnv->fromUChar32=cp;
-                goto noMoreInput;
-            }
-        } else {
-            /* this is an unmatched trail code unit (2nd surrogate) */
-            /* callback(illegal) */
-        }
-
-        *pErrorCode= U_IS_SURROGATE(cp) ? U_ILLEGAL_CHAR_FOUND : U_INVALID_CHAR_FOUND;
-        cnv->fromUChar32=cp;
-    }
-noMoreInput:
-
-    /* set offsets since the start */
-    if(offsets!=NULL) {
-        size_t count=target-oldTarget;
-        while(count>0) {
-            *offsets++=sourceIndex++;
-            --count;
-        }
-    }
-
-    if(U_SUCCESS(*pErrorCode) && source<sourceLimit && target>=(uint8_t *)pArgs->targetLimit) {
-        /* target is full */
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    /* write back the updated pointers */
-    pArgs->source=source;
-    pArgs->target=(char *)target;
-    pArgs->offsets=offsets;
-}
-
-/* Convert UTF-8 to Latin-1. Adapted from ucnv_SBCSFromUTF8(). */
-static void
-ucnv_Latin1FromUTF8(UConverterFromUnicodeArgs *pFromUArgs,
-                    UConverterToUnicodeArgs *pToUArgs,
-                    UErrorCode *pErrorCode) {
-    UConverter *utf8;
-    const uint8_t *source, *sourceLimit;
-    uint8_t *target;
-    int32_t targetCapacity;
-
-    UChar32 c;
-    uint8_t b, t1;
-
-    /* set up the local pointers */
-    utf8=pToUArgs->converter;
-    source=(uint8_t *)pToUArgs->source;
-    sourceLimit=(uint8_t *)pToUArgs->sourceLimit;
-    target=(uint8_t *)pFromUArgs->target;
-    targetCapacity=(int32_t)(pFromUArgs->targetLimit-pFromUArgs->target);
-
-    /* get the converter state from the UTF-8 UConverter */
-    c=(UChar32)utf8->toUnicodeStatus;
-    if(c!=0 && source<sourceLimit) {
-        if(targetCapacity==0) {
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            return;
-        } else if(c>=0xc2 && c<=0xc3 && (t1=(uint8_t)(*source-0x80)) <= 0x3f) {
-            ++source;
-            *target++=(uint8_t)(((c&3)<<6)|t1);
-            --targetCapacity;
-
-            utf8->toUnicodeStatus=0;
-            utf8->toULength=0;
-        } else {
-            /* complicated, illegal or unmappable input: fall back to the pivoting implementation */
-            *pErrorCode=U_USING_DEFAULT_WARNING;
-            return;
-        }
-    }
-
-    /*
-     * Make sure that the last byte sequence before sourceLimit is complete
-     * or runs into a lead byte.
-     * In the conversion loop compare source with sourceLimit only once
-     * per multi-byte character.
-     * For Latin-1, adjust sourceLimit only for 1 trail byte because
-     * the conversion loop handles at most 2-byte sequences.
-     */
-    if(source<sourceLimit && U8_IS_LEAD(*(sourceLimit-1))) {
-        --sourceLimit;
-    }
-
-    /* conversion loop */
-    while(source<sourceLimit) {
-        if(targetCapacity>0) {
-            b=*source++;
-            if((int8_t)b>=0) {
-                /* convert ASCII */
-                *target++=(uint8_t)b;
-                --targetCapacity;
-            } else if( /* handle U+0080..U+00FF inline */
-                       b>=0xc2 && b<=0xc3 &&
-                       (t1=(uint8_t)(*source-0x80)) <= 0x3f
-            ) {
-                ++source;
-                *target++=(uint8_t)(((b&3)<<6)|t1);
-                --targetCapacity;
-            } else {
-                /* complicated, illegal or unmappable input: fall back to the pivoting implementation */
-                pToUArgs->source=(char *)(source-1);
-                pFromUArgs->target=(char *)target;
-                *pErrorCode=U_USING_DEFAULT_WARNING;
-                return;
-            }
-        } else {
-            /* target is full */
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            break;
-        }
-    }
-
-    /*
-     * The sourceLimit may have been adjusted before the conversion loop
-     * to stop before a truncated sequence.
-     * If so, then collect the truncated sequence now.
-     * For Latin-1, there is at most exactly one lead byte because of the
-     * smaller sourceLimit adjustment logic.
-     */
-    if(U_SUCCESS(*pErrorCode) && source<(sourceLimit=(uint8_t *)pToUArgs->sourceLimit)) {
-        utf8->toUnicodeStatus=utf8->toUBytes[0]=b=*source++;
-        utf8->toULength=1;
-        utf8->mode=U8_COUNT_TRAIL_BYTES(b)+1;
-    }
-
-    /* write back the updated pointers */
-    pToUArgs->source=(char *)source;
-    pFromUArgs->target=(char *)target;
-}
-
-static void
-_Latin1GetUnicodeSet(const UConverter *cnv,
-                     const USetAdder *sa,
-                     UConverterUnicodeSet which,
-                     UErrorCode *pErrorCode) {
-    sa->addRange(sa->set, 0, 0xff);
-}
-
-static const UConverterImpl _Latin1Impl={
-    UCNV_LATIN_1,
-
-    NULL,
-    NULL,
-
-    NULL,
-    NULL,
-    NULL,
-
-    _Latin1ToUnicodeWithOffsets,
-    _Latin1ToUnicodeWithOffsets,
-    _Latin1FromUnicodeWithOffsets,
-    _Latin1FromUnicodeWithOffsets,
-    _Latin1GetNextUChar,
-
-    NULL,
-    NULL,
-    NULL,
-    NULL,
-    _Latin1GetUnicodeSet,
-
-    NULL,
-    ucnv_Latin1FromUTF8
-};
-
-static const UConverterStaticData _Latin1StaticData={
-    sizeof(UConverterStaticData),
-    "ISO-8859-1",
-    819, UCNV_IBM, UCNV_LATIN_1, 1, 1,
-    { 0x1a, 0, 0, 0 }, 1, FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-const UConverterSharedData _Latin1Data=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_Latin1StaticData, &_Latin1Impl);
-
-/* US-ASCII ----------------------------------------------------------------- */
-
-/* This is a table-less version of ucnv_MBCSSingleToBMPWithOffsets(). */
-static void
-_ASCIIToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                           UErrorCode *pErrorCode) {
-    const uint8_t *source, *sourceLimit;
-    UChar *target, *oldTarget;
-    int32_t targetCapacity, length;
-    int32_t *offsets;
-
-    int32_t sourceIndex;
-
-    uint8_t c;
-
-    /* set up the local pointers */
-    source=(const uint8_t *)pArgs->source;
-    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
-    target=oldTarget=pArgs->target;
-    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
-    offsets=pArgs->offsets;
-
-    /* sourceIndex=-1 if the current character began in the previous buffer */
-    sourceIndex=0;
-
-    /*
-     * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
-     * for the minimum of the sourceLength and targetCapacity
-     */
-    length=(int32_t)(sourceLimit-source);
-    if(length<targetCapacity) {
-        targetCapacity=length;
-    }
-
-    if(targetCapacity>=8) {
-        /* This loop is unrolled for speed and improved pipelining. */
-        int32_t count, loops;
-        UChar oredChars;
-
-        loops=count=targetCapacity>>3;
-        do {
-            oredChars=target[0]=source[0];
-            oredChars|=target[1]=source[1];
-            oredChars|=target[2]=source[2];
-            oredChars|=target[3]=source[3];
-            oredChars|=target[4]=source[4];
-            oredChars|=target[5]=source[5];
-            oredChars|=target[6]=source[6];
-            oredChars|=target[7]=source[7];
-
-            /* were all 16 entries really valid? */
-            if(oredChars>0x7f) {
-                /* no, return to the first of these 16 */
-                break;
-            }
-            source+=8;
-            target+=8;
-        } while(--count>0);
-        count=loops-count;
-        targetCapacity-=count*8;
-
-        if(offsets!=NULL) {
-            oldTarget+=count*8;
-            while(count>0) {
-                offsets[0]=sourceIndex++;
-                offsets[1]=sourceIndex++;
-                offsets[2]=sourceIndex++;
-                offsets[3]=sourceIndex++;
-                offsets[4]=sourceIndex++;
-                offsets[5]=sourceIndex++;
-                offsets[6]=sourceIndex++;
-                offsets[7]=sourceIndex++;
-                offsets+=8;
-                --count;
-            }
-        }
-    }
-
-    /* conversion loop */
-    c=0;
-    while(targetCapacity>0 && (c=*source++)<=0x7f) {
-        *target++=c;
-        --targetCapacity;
-    }
-
-    if(c>0x7f) {
-        /* callback(illegal); copy the current bytes to toUBytes[] */
-        UConverter *cnv=pArgs->converter;
-        cnv->toUBytes[0]=c;
-        cnv->toULength=1;
-        *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-    } else if(source<sourceLimit && target>=pArgs->targetLimit) {
-        /* target is full */
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    /* set offsets since the start */
-    if(offsets!=NULL) {
-        size_t count=target-oldTarget;
-        while(count>0) {
-            *offsets++=sourceIndex++;
-            --count;
-        }
-    }
-
-    /* write back the updated pointers */
-    pArgs->source=(const char *)source;
-    pArgs->target=target;
-    pArgs->offsets=offsets;
-}
-
-/* This is a table-less version of ucnv_MBCSSingleGetNextUChar(). */
-static UChar32
-_ASCIIGetNextUChar(UConverterToUnicodeArgs *pArgs,
-                   UErrorCode *pErrorCode) {
-    const uint8_t *source;
-    uint8_t b;
-
-    source=(const uint8_t *)pArgs->source;
-    if(source<(const uint8_t *)pArgs->sourceLimit) {
-        b=*source++;
-        pArgs->source=(const char *)source;
-        if(b<=0x7f) {
-            return b;
-        } else {
-            UConverter *cnv=pArgs->converter;
-            cnv->toUBytes[0]=b;
-            cnv->toULength=1;
-            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-            return 0xffff;
-        }
-    }
-
-    /* no output because of empty input */
-    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-    return 0xffff;
-}
-
-/* "Convert" UTF-8 to US-ASCII: Validate and copy. */
-static void
-ucnv_ASCIIFromUTF8(UConverterFromUnicodeArgs *pFromUArgs,
-                   UConverterToUnicodeArgs *pToUArgs,
-                   UErrorCode *pErrorCode) {
-    const uint8_t *source, *sourceLimit;
-    uint8_t *target;
-    int32_t targetCapacity, length;
-
-    uint8_t c;
-
-    if(pToUArgs->converter->toUnicodeStatus!=0) {
-        /* no handling of partial UTF-8 characters here, fall back to pivoting */
-        *pErrorCode=U_USING_DEFAULT_WARNING;
-        return;
-    }
-
-    /* set up the local pointers */
-    source=(const uint8_t *)pToUArgs->source;
-    sourceLimit=(const uint8_t *)pToUArgs->sourceLimit;
-    target=(uint8_t *)pFromUArgs->target;
-    targetCapacity=(int32_t)(pFromUArgs->targetLimit-pFromUArgs->target);
-
-    /*
-     * since the conversion here is 1:1 uint8_t:uint8_t, we need only one counter
-     * for the minimum of the sourceLength and targetCapacity
-     */
-    length=(int32_t)(sourceLimit-source);
-    if(length<targetCapacity) {
-        targetCapacity=length;
-    }
-
-    /* unroll the loop with the most common case */
-    if(targetCapacity>=16) {
-        int32_t count, loops;
-        uint8_t oredChars;
-
-        loops=count=targetCapacity>>4;
-        do {
-            oredChars=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-            oredChars|=*target++=*source++;
-
-            /* were all 16 entries really valid? */
-            if(oredChars>0x7f) {
-                /* no, return to the first of these 16 */
-                source-=16;
-                target-=16;
-                break;
-            }
-        } while(--count>0);
-        count=loops-count;
-        targetCapacity-=16*count;
-    }
-
-    /* conversion loop */
-    c=0;
-    while(targetCapacity>0 && (c=*source)<=0x7f) {
-        ++source;
-        *target++=c;
-        --targetCapacity;
-    }
-
-    if(c>0x7f) {
-        /* non-ASCII character, handle in standard converter */
-        *pErrorCode=U_USING_DEFAULT_WARNING;
-    } else if(source<sourceLimit && target>=(const uint8_t *)pFromUArgs->targetLimit) {
-        /* target is full */
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-
-    /* write back the updated pointers */
-    pToUArgs->source=(const char *)source;
-    pFromUArgs->target=(char *)target;
-}
-
-static void
-_ASCIIGetUnicodeSet(const UConverter *cnv,
-                    const USetAdder *sa,
-                    UConverterUnicodeSet which,
-                    UErrorCode *pErrorCode) {
-    sa->addRange(sa->set, 0, 0x7f);
-}
-
-static const UConverterImpl _ASCIIImpl={
-    UCNV_US_ASCII,
-
-    NULL,
-    NULL,
-
-    NULL,
-    NULL,
-    NULL,
-
-    _ASCIIToUnicodeWithOffsets,
-    _ASCIIToUnicodeWithOffsets,
-    _Latin1FromUnicodeWithOffsets,
-    _Latin1FromUnicodeWithOffsets,
-    _ASCIIGetNextUChar,
-
-    NULL,
-    NULL,
-    NULL,
-    NULL,
-    _ASCIIGetUnicodeSet,
-
-    NULL,
-    ucnv_ASCIIFromUTF8
-};
-
-static const UConverterStaticData _ASCIIStaticData={
-    sizeof(UConverterStaticData),
-    "US-ASCII",
-    367, UCNV_IBM, UCNV_US_ASCII, 1, 1,
-    { 0x1a, 0, 0, 0 }, 1, FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-const UConverterSharedData _ASCIIData=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_ASCIIStaticData, &_ASCIIImpl);
-
-#endif
index ffbb9af..7f37eee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnvmbcs.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5bbbae7..209cdc5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnvmbcs.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ucnvscsu.c b/source/common/ucnvscsu.c
deleted file mode 100644 (file)
index 9849cde..0000000
+++ /dev/null
@@ -1,2043 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 2000-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*   file name:  ucnvscsu.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2000nov18
-*   created by: Markus W. Scherer
-*
-*   This is an implementation of the Standard Compression Scheme for Unicode
-*   as defined in http://www.unicode.org/unicode/reports/tr6/ .
-*   Reserved commands and window settings are treated as illegal sequences and
-*   will result in callback calls.
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
-
-#include "unicode/ucnv.h"
-#include "unicode/ucnv_cb.h"
-#include "unicode/utf16.h"
-#include "ucnv_bld.h"
-#include "ucnv_cnv.h"
-#include "cmemory.h"
-
-/* SCSU definitions --------------------------------------------------------- */
-
-/* SCSU command byte values */
-enum {
-    SQ0=0x01, /* Quote from window pair 0 */
-    SQ7=0x08, /* Quote from window pair 7 */
-    SDX=0x0B, /* Define a window as extended */
-    Srs=0x0C, /* reserved */
-    SQU=0x0E, /* Quote a single Unicode character */
-    SCU=0x0F, /* Change to Unicode mode */
-    SC0=0x10, /* Select window 0 */
-    SC7=0x17, /* Select window 7 */
-    SD0=0x18, /* Define and select window 0 */
-    SD7=0x1F, /* Define and select window 7 */
-
-    UC0=0xE0, /* Select window 0 */
-    UC7=0xE7, /* Select window 7 */
-    UD0=0xE8, /* Define and select window 0 */
-    UD7=0xEF, /* Define and select window 7 */
-    UQU=0xF0, /* Quote a single Unicode character */
-    UDX=0xF1, /* Define a Window as extended */
-    Urs=0xF2  /* reserved */
-};
-
-enum {
-    /*
-     * Unicode code points from 3400 to E000 are not adressible by
-     * dynamic window, since in these areas no short run alphabets are
-     * found. Therefore add gapOffset to all values from gapThreshold.
-     */
-    gapThreshold=0x68,
-    gapOffset=0xAC00,
-
-    /* values between reservedStart and fixedThreshold are reserved */
-    reservedStart=0xA8,
-
-    /* use table of predefined fixed offsets for values from fixedThreshold */
-    fixedThreshold=0xF9
-};
-
-/* constant offsets for the 8 static windows */
-static const uint32_t staticOffsets[8]={
-    0x0000, /* ASCII for quoted tags */
-    0x0080, /* Latin - 1 Supplement (for access to punctuation) */
-    0x0100, /* Latin Extended-A */
-    0x0300, /* Combining Diacritical Marks */
-    0x2000, /* General Punctuation */
-    0x2080, /* Currency Symbols */
-    0x2100, /* Letterlike Symbols and Number Forms */
-    0x3000  /* CJK Symbols and punctuation */
-};
-
-/* initial offsets for the 8 dynamic (sliding) windows */
-static const uint32_t initialDynamicOffsets[8]={
-    0x0080, /* Latin-1 */
-    0x00C0, /* Latin Extended A */
-    0x0400, /* Cyrillic */
-    0x0600, /* Arabic */
-    0x0900, /* Devanagari */
-    0x3040, /* Hiragana */
-    0x30A0, /* Katakana */
-    0xFF00  /* Fullwidth ASCII */
-};
-
-/* Table of fixed predefined Offsets */
-static const uint32_t fixedOffsets[]={
-    /* 0xF9 */ 0x00C0, /* Latin-1 Letters + half of Latin Extended A */
-    /* 0xFA */ 0x0250, /* IPA extensions */
-    /* 0xFB */ 0x0370, /* Greek */
-    /* 0xFC */ 0x0530, /* Armenian */
-    /* 0xFD */ 0x3040, /* Hiragana */
-    /* 0xFE */ 0x30A0, /* Katakana */
-    /* 0xFF */ 0xFF60  /* Halfwidth Katakana */
-};
-
-/* state values */
-enum {
-    readCommand,
-    quotePairOne,
-    quotePairTwo,
-    quoteOne,
-    definePairOne,
-    definePairTwo,
-    defineOne
-};
-
-typedef struct SCSUData {
-    /* dynamic window offsets, intitialize to default values from initialDynamicOffsets */
-    uint32_t toUDynamicOffsets[8];
-    uint32_t fromUDynamicOffsets[8];
-
-    /* state machine state - toUnicode */
-    UBool toUIsSingleByteMode;
-    uint8_t toUState;
-    int8_t toUQuoteWindow, toUDynamicWindow;
-    uint8_t toUByteOne;
-    uint8_t toUPadding[3];
-
-    /* state machine state - fromUnicode */
-    UBool fromUIsSingleByteMode;
-    int8_t fromUDynamicWindow;
-
-    /*
-     * windowUse[] keeps track of the use of the dynamic windows:
-     * At nextWindowUseIndex there is the least recently used window,
-     * and the following windows (in a wrapping manner) are more and more
-     * recently used.
-     * At nextWindowUseIndex-1 there is the most recently used window.
-     */
-    uint8_t locale;
-    int8_t nextWindowUseIndex;
-    int8_t windowUse[8];
-} SCSUData;
-
-static const int8_t initialWindowUse[8]={ 7, 0, 3, 2, 4, 5, 6, 1 };
-static const int8_t initialWindowUse_ja[8]={ 3, 2, 4, 1, 0, 7, 5, 6 };
-
-enum {
-    lGeneric, l_ja
-};
-
-/* SCSU setup functions ----------------------------------------------------- */
-
-static void
-_SCSUReset(UConverter *cnv, UConverterResetChoice choice) {
-    SCSUData *scsu=(SCSUData *)cnv->extraInfo;
-
-    if(choice<=UCNV_RESET_TO_UNICODE) {
-        /* reset toUnicode */
-        uprv_memcpy(scsu->toUDynamicOffsets, initialDynamicOffsets, 32);
-
-        scsu->toUIsSingleByteMode=TRUE;
-        scsu->toUState=readCommand;
-        scsu->toUQuoteWindow=scsu->toUDynamicWindow=0;
-        scsu->toUByteOne=0;
-
-        cnv->toULength=0;
-    }
-    if(choice!=UCNV_RESET_TO_UNICODE) {
-        /* reset fromUnicode */
-        uprv_memcpy(scsu->fromUDynamicOffsets, initialDynamicOffsets, 32);
-
-        scsu->fromUIsSingleByteMode=TRUE;
-        scsu->fromUDynamicWindow=0;
-
-        scsu->nextWindowUseIndex=0;
-        switch(scsu->locale) {
-        case l_ja:
-            uprv_memcpy(scsu->windowUse, initialWindowUse_ja, 8);
-            break;
-        default:
-            uprv_memcpy(scsu->windowUse, initialWindowUse, 8);
-            break;
-        }
-
-        cnv->fromUChar32=0;
-    }
-}
-
-static void
-_SCSUOpen(UConverter *cnv,
-          UConverterLoadArgs *pArgs,
-          UErrorCode *pErrorCode) {
-    const char *locale=pArgs->locale;
-    if(pArgs->onlyTestIsLoadable) {
-        return;
-    }
-    cnv->extraInfo=uprv_malloc(sizeof(SCSUData));
-    if(cnv->extraInfo!=NULL) {
-        if(locale!=NULL && locale[0]=='j' && locale[1]=='a' && (locale[2]==0 || locale[2]=='_')) {
-            ((SCSUData *)cnv->extraInfo)->locale=l_ja;
-        } else {
-            ((SCSUData *)cnv->extraInfo)->locale=lGeneric;
-        }
-        _SCSUReset(cnv, UCNV_RESET_BOTH);
-    } else {
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-    }
-
-    /* Set the substitution character U+fffd as a Unicode string. */
-    cnv->subUChars[0]=0xfffd;
-    cnv->subCharLen=-1;
-}
-
-static void
-_SCSUClose(UConverter *cnv) {
-    if(cnv->extraInfo!=NULL) {
-        if(!cnv->isExtraLocal) {
-            uprv_free(cnv->extraInfo);
-        }
-        cnv->extraInfo=NULL;
-    }
-}
-
-/* SCSU-to-Unicode conversion functions ------------------------------------- */
-
-static void
-_SCSUToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
-                          UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    SCSUData *scsu;
-    const uint8_t *source, *sourceLimit;
-    UChar *target;
-    const UChar *targetLimit;
-    int32_t *offsets;
-    UBool isSingleByteMode;
-    uint8_t state, byteOne;
-    int8_t quoteWindow, dynamicWindow;
-
-    int32_t sourceIndex, nextSourceIndex;
-
-    uint8_t b;
-
-    /* set up the local pointers */
-    cnv=pArgs->converter;
-    scsu=(SCSUData *)cnv->extraInfo;
-
-    source=(const uint8_t *)pArgs->source;
-    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
-    target=pArgs->target;
-    targetLimit=pArgs->targetLimit;
-    offsets=pArgs->offsets;
-
-    /* get the state machine state */
-    isSingleByteMode=scsu->toUIsSingleByteMode;
-    state=scsu->toUState;
-    quoteWindow=scsu->toUQuoteWindow;
-    dynamicWindow=scsu->toUDynamicWindow;
-    byteOne=scsu->toUByteOne;
-
-    /* sourceIndex=-1 if the current character began in the previous buffer */
-    sourceIndex=state==readCommand ? 0 : -1;
-    nextSourceIndex=0;
-
-    /*
-     * conversion "loop"
-     *
-     * For performance, this is not a normal C loop.
-     * Instead, there are two code blocks for the two SCSU modes.
-     * The function branches to either one, and a change of the mode is done with a goto to
-     * the other branch.
-     *
-     * Each branch has two conventional loops:
-     * - a fast-path loop for the most common codes in the mode
-     * - a loop for all other codes in the mode
-     * When the fast-path runs into a code that it cannot handle, its loop ends and it
-     * runs into the following loop to handle the other codes.
-     * The end of the input or output buffer is also handled by the slower loop.
-     * The slow loop jumps (goto) to the fast-path loop again as soon as possible.
-     *
-     * The callback handling is done by returning with an error code.
-     * The conversion framework actually calls the callback function.
-     */
-    if(isSingleByteMode) {
-        /* fast path for single-byte mode */
-        if(state==readCommand) {
-fastSingle:
-            while(source<sourceLimit && target<targetLimit && (b=*source)>=0x20) {
-                ++source;
-                ++nextSourceIndex;
-                if(b<=0x7f) {
-                    /* write US-ASCII graphic character or DEL */
-                    *target++=(UChar)b;
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                    }
-                } else {
-                    /* write from dynamic window */
-                    uint32_t c=scsu->toUDynamicOffsets[dynamicWindow]+(b&0x7f);
-                    if(c<=0xffff) {
-                        *target++=(UChar)c;
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex;
-                        }
-                    } else {
-                        /* output surrogate pair */
-                        *target++=(UChar)(0xd7c0+(c>>10));
-                        if(target<targetLimit) {
-                            *target++=(UChar)(0xdc00|(c&0x3ff));
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex;
-                                *offsets++=sourceIndex;
-                            }
-                        } else {
-                            /* target overflow */
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex;
-                            }
-                            cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
-                            cnv->UCharErrorBufferLength=1;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                            goto endloop;
-                        }
-                    }
-                }
-                sourceIndex=nextSourceIndex;
-            }
-        }
-
-        /* normal state machine for single-byte mode, minus handling for what fastSingle covers */
-singleByteMode:
-        while(source<sourceLimit) {
-            if(target>=targetLimit) {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-            b=*source++;
-            ++nextSourceIndex;
-            switch(state) {
-            case readCommand:
-                /* redundant conditions are commented out */
-                /* here: b<0x20 because otherwise we would be in fastSingle */
-                if((1UL<<b)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
-                    /* CR/LF/TAB/NUL */
-                    *target++=(UChar)b;
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                    }
-                    sourceIndex=nextSourceIndex;
-                    goto fastSingle;
-                } else if(SC0<=b) {
-                    if(b<=SC7) {
-                        dynamicWindow=(int8_t)(b-SC0);
-                        sourceIndex=nextSourceIndex;
-                        goto fastSingle;
-                    } else /* if(SD0<=b && b<=SD7) */ {
-                        dynamicWindow=(int8_t)(b-SD0);
-                        state=defineOne;
-                    }
-                } else if(/* SQ0<=b && */ b<=SQ7) {
-                    quoteWindow=(int8_t)(b-SQ0);
-                    state=quoteOne;
-                } else if(b==SDX) {
-                    state=definePairOne;
-                } else if(b==SQU) {
-                    state=quotePairOne;
-                } else if(b==SCU) {
-                    sourceIndex=nextSourceIndex;
-                    isSingleByteMode=FALSE;
-                    goto fastUnicode;
-                } else /* Srs */ {
-                    /* callback(illegal) */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    goto endloop;
-                }
-
-                /* store the first byte of a multibyte sequence in toUBytes[] */
-                cnv->toUBytes[0]=b;
-                cnv->toULength=1;
-                break;
-            case quotePairOne:
-                byteOne=b;
-                cnv->toUBytes[1]=b;
-                cnv->toULength=2;
-                state=quotePairTwo;
-                break;
-            case quotePairTwo:
-                *target++=(UChar)((byteOne<<8)|b);
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex;
-                }
-                sourceIndex=nextSourceIndex;
-                state=readCommand;
-                goto fastSingle;
-            case quoteOne:
-                if(b<0x80) {
-                    /* all static offsets are in the BMP */
-                    *target++=(UChar)(staticOffsets[quoteWindow]+b);
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                    }
-                } else {
-                    /* write from dynamic window */
-                    uint32_t c=scsu->toUDynamicOffsets[quoteWindow]+(b&0x7f);
-                    if(c<=0xffff) {
-                        *target++=(UChar)c;
-                        if(offsets!=NULL) {
-                            *offsets++=sourceIndex;
-                        }
-                    } else {
-                        /* output surrogate pair */
-                        *target++=(UChar)(0xd7c0+(c>>10));
-                        if(target<targetLimit) {
-                            *target++=(UChar)(0xdc00|(c&0x3ff));
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex;
-                                *offsets++=sourceIndex;
-                            }
-                        } else {
-                            /* target overflow */
-                            if(offsets!=NULL) {
-                                *offsets++=sourceIndex;
-                            }
-                            cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
-                            cnv->UCharErrorBufferLength=1;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                            goto endloop;
-                        }
-                    }
-                }
-                sourceIndex=nextSourceIndex;
-                state=readCommand;
-                goto fastSingle;
-            case definePairOne:
-                dynamicWindow=(int8_t)((b>>5)&7);
-                byteOne=(uint8_t)(b&0x1f);
-                cnv->toUBytes[1]=b;
-                cnv->toULength=2;
-                state=definePairTwo;
-                break;
-            case definePairTwo:
-                scsu->toUDynamicOffsets[dynamicWindow]=0x10000+(byteOne<<15UL | b<<7UL);
-                sourceIndex=nextSourceIndex;
-                state=readCommand;
-                goto fastSingle;
-            case defineOne:
-                if(b==0) {
-                    /* callback(illegal): Reserved window offset value 0 */
-                    cnv->toUBytes[1]=b;
-                    cnv->toULength=2;
-                    goto endloop;
-                } else if(b<gapThreshold) {
-                    scsu->toUDynamicOffsets[dynamicWindow]=b<<7UL;
-                } else if((uint8_t)(b-gapThreshold)<(reservedStart-gapThreshold)) {
-                    scsu->toUDynamicOffsets[dynamicWindow]=(b<<7UL)+gapOffset;
-                } else if(b>=fixedThreshold) {
-                    scsu->toUDynamicOffsets[dynamicWindow]=fixedOffsets[b-fixedThreshold];
-                } else {
-                    /* callback(illegal): Reserved window offset value 0xa8..0xf8 */
-                    cnv->toUBytes[1]=b;
-                    cnv->toULength=2;
-                    goto endloop;
-                }
-                sourceIndex=nextSourceIndex;
-                state=readCommand;
-                goto fastSingle;
-            }
-        }
-    } else {
-        /* fast path for Unicode mode */
-        if(state==readCommand) {
-fastUnicode:
-            while(source+1<sourceLimit && target<targetLimit && (uint8_t)((b=*source)-UC0)>(Urs-UC0)) {
-                *target++=(UChar)((b<<8)|source[1]);
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex;
-                }
-                sourceIndex=nextSourceIndex;
-                nextSourceIndex+=2;
-                source+=2;
-            }
-        }
-
-        /* normal state machine for Unicode mode */
-/* unicodeByteMode: */
-        while(source<sourceLimit) {
-            if(target>=targetLimit) {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-            b=*source++;
-            ++nextSourceIndex;
-            switch(state) {
-            case readCommand:
-                if((uint8_t)(b-UC0)>(Urs-UC0)) {
-                    byteOne=b;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    state=quotePairTwo;
-                } else if(/* UC0<=b && */ b<=UC7) {
-                    dynamicWindow=(int8_t)(b-UC0);
-                    sourceIndex=nextSourceIndex;
-                    isSingleByteMode=TRUE;
-                    goto fastSingle;
-                } else if(/* UD0<=b && */ b<=UD7) {
-                    dynamicWindow=(int8_t)(b-UD0);
-                    isSingleByteMode=TRUE;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    state=defineOne;
-                    goto singleByteMode;
-                } else if(b==UDX) {
-                    isSingleByteMode=TRUE;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    state=definePairOne;
-                    goto singleByteMode;
-                } else if(b==UQU) {
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    state=quotePairOne;
-                } else /* Urs */ {
-                    /* callback(illegal) */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    goto endloop;
-                }
-                break;
-            case quotePairOne:
-                byteOne=b;
-                cnv->toUBytes[1]=b;
-                cnv->toULength=2;
-                state=quotePairTwo;
-                break;
-            case quotePairTwo:
-                *target++=(UChar)((byteOne<<8)|b);
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex;
-                }
-                sourceIndex=nextSourceIndex;
-                state=readCommand;
-                goto fastUnicode;
-            }
-        }
-    }
-endloop:
-
-    /* set the converter state back into UConverter */
-    if(U_FAILURE(*pErrorCode) && *pErrorCode!=U_BUFFER_OVERFLOW_ERROR) {
-        /* reset to deal with the next character */
-        state=readCommand;
-    } else if(state==readCommand) {
-        /* not in a multi-byte sequence, reset toULength */
-        cnv->toULength=0;
-    }
-    scsu->toUIsSingleByteMode=isSingleByteMode;
-    scsu->toUState=state;
-    scsu->toUQuoteWindow=quoteWindow;
-    scsu->toUDynamicWindow=dynamicWindow;
-    scsu->toUByteOne=byteOne;
-
-    /* write back the updated pointers */
-    pArgs->source=(const char *)source;
-    pArgs->target=target;
-    pArgs->offsets=offsets;
-    return;
-}
-
-/*
- * Identical to _SCSUToUnicodeWithOffsets but without offset handling.
- * If a change is made in the original function, then either
- * change this function the same way or
- * re-copy the original function and remove the variables
- * offsets, sourceIndex, and nextSourceIndex.
- */
-static void
-_SCSUToUnicode(UConverterToUnicodeArgs *pArgs,
-               UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    SCSUData *scsu;
-    const uint8_t *source, *sourceLimit;
-    UChar *target;
-    const UChar *targetLimit;
-    UBool isSingleByteMode;
-    uint8_t state, byteOne;
-    int8_t quoteWindow, dynamicWindow;
-
-    uint8_t b;
-
-    /* set up the local pointers */
-    cnv=pArgs->converter;
-    scsu=(SCSUData *)cnv->extraInfo;
-
-    source=(const uint8_t *)pArgs->source;
-    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
-    target=pArgs->target;
-    targetLimit=pArgs->targetLimit;
-
-    /* get the state machine state */
-    isSingleByteMode=scsu->toUIsSingleByteMode;
-    state=scsu->toUState;
-    quoteWindow=scsu->toUQuoteWindow;
-    dynamicWindow=scsu->toUDynamicWindow;
-    byteOne=scsu->toUByteOne;
-
-    /*
-     * conversion "loop"
-     *
-     * For performance, this is not a normal C loop.
-     * Instead, there are two code blocks for the two SCSU modes.
-     * The function branches to either one, and a change of the mode is done with a goto to
-     * the other branch.
-     *
-     * Each branch has two conventional loops:
-     * - a fast-path loop for the most common codes in the mode
-     * - a loop for all other codes in the mode
-     * When the fast-path runs into a code that it cannot handle, its loop ends and it
-     * runs into the following loop to handle the other codes.
-     * The end of the input or output buffer is also handled by the slower loop.
-     * The slow loop jumps (goto) to the fast-path loop again as soon as possible.
-     *
-     * The callback handling is done by returning with an error code.
-     * The conversion framework actually calls the callback function.
-     */
-    if(isSingleByteMode) {
-        /* fast path for single-byte mode */
-        if(state==readCommand) {
-fastSingle:
-            while(source<sourceLimit && target<targetLimit && (b=*source)>=0x20) {
-                ++source;
-                if(b<=0x7f) {
-                    /* write US-ASCII graphic character or DEL */
-                    *target++=(UChar)b;
-                } else {
-                    /* write from dynamic window */
-                    uint32_t c=scsu->toUDynamicOffsets[dynamicWindow]+(b&0x7f);
-                    if(c<=0xffff) {
-                        *target++=(UChar)c;
-                    } else {
-                        /* output surrogate pair */
-                        *target++=(UChar)(0xd7c0+(c>>10));
-                        if(target<targetLimit) {
-                            *target++=(UChar)(0xdc00|(c&0x3ff));
-                        } else {
-                            /* target overflow */
-                            cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
-                            cnv->UCharErrorBufferLength=1;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                            goto endloop;
-                        }
-                    }
-                }
-            }
-        }
-
-        /* normal state machine for single-byte mode, minus handling for what fastSingle covers */
-singleByteMode:
-        while(source<sourceLimit) {
-            if(target>=targetLimit) {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-            b=*source++;
-            switch(state) {
-            case readCommand:
-                /* redundant conditions are commented out */
-                /* here: b<0x20 because otherwise we would be in fastSingle */
-                if((1UL<<b)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
-                    /* CR/LF/TAB/NUL */
-                    *target++=(UChar)b;
-                    goto fastSingle;
-                } else if(SC0<=b) {
-                    if(b<=SC7) {
-                        dynamicWindow=(int8_t)(b-SC0);
-                        goto fastSingle;
-                    } else /* if(SD0<=b && b<=SD7) */ {
-                        dynamicWindow=(int8_t)(b-SD0);
-                        state=defineOne;
-                    }
-                } else if(/* SQ0<=b && */ b<=SQ7) {
-                    quoteWindow=(int8_t)(b-SQ0);
-                    state=quoteOne;
-                } else if(b==SDX) {
-                    state=definePairOne;
-                } else if(b==SQU) {
-                    state=quotePairOne;
-                } else if(b==SCU) {
-                    isSingleByteMode=FALSE;
-                    goto fastUnicode;
-                } else /* Srs */ {
-                    /* callback(illegal) */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    goto endloop;
-                }
-
-                /* store the first byte of a multibyte sequence in toUBytes[] */
-                cnv->toUBytes[0]=b;
-                cnv->toULength=1;
-                break;
-            case quotePairOne:
-                byteOne=b;
-                cnv->toUBytes[1]=b;
-                cnv->toULength=2;
-                state=quotePairTwo;
-                break;
-            case quotePairTwo:
-                *target++=(UChar)((byteOne<<8)|b);
-                state=readCommand;
-                goto fastSingle;
-            case quoteOne:
-                if(b<0x80) {
-                    /* all static offsets are in the BMP */
-                    *target++=(UChar)(staticOffsets[quoteWindow]+b);
-                } else {
-                    /* write from dynamic window */
-                    uint32_t c=scsu->toUDynamicOffsets[quoteWindow]+(b&0x7f);
-                    if(c<=0xffff) {
-                        *target++=(UChar)c;
-                    } else {
-                        /* output surrogate pair */
-                        *target++=(UChar)(0xd7c0+(c>>10));
-                        if(target<targetLimit) {
-                            *target++=(UChar)(0xdc00|(c&0x3ff));
-                        } else {
-                            /* target overflow */
-                            cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
-                            cnv->UCharErrorBufferLength=1;
-                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                            goto endloop;
-                        }
-                    }
-                }
-                state=readCommand;
-                goto fastSingle;
-            case definePairOne:
-                dynamicWindow=(int8_t)((b>>5)&7);
-                byteOne=(uint8_t)(b&0x1f);
-                cnv->toUBytes[1]=b;
-                cnv->toULength=2;
-                state=definePairTwo;
-                break;
-            case definePairTwo:
-                scsu->toUDynamicOffsets[dynamicWindow]=0x10000+(byteOne<<15UL | b<<7UL);
-                state=readCommand;
-                goto fastSingle;
-            case defineOne:
-                if(b==0) {
-                    /* callback(illegal): Reserved window offset value 0 */
-                    cnv->toUBytes[1]=b;
-                    cnv->toULength=2;
-                    goto endloop;
-                } else if(b<gapThreshold) {
-                    scsu->toUDynamicOffsets[dynamicWindow]=b<<7UL;
-                } else if((uint8_t)(b-gapThreshold)<(reservedStart-gapThreshold)) {
-                    scsu->toUDynamicOffsets[dynamicWindow]=(b<<7UL)+gapOffset;
-                } else if(b>=fixedThreshold) {
-                    scsu->toUDynamicOffsets[dynamicWindow]=fixedOffsets[b-fixedThreshold];
-                } else {
-                    /* callback(illegal): Reserved window offset value 0xa8..0xf8 */
-                    cnv->toUBytes[1]=b;
-                    cnv->toULength=2;
-                    goto endloop;
-                }
-                state=readCommand;
-                goto fastSingle;
-            }
-        }
-    } else {
-        /* fast path for Unicode mode */
-        if(state==readCommand) {
-fastUnicode:
-            while(source+1<sourceLimit && target<targetLimit && (uint8_t)((b=*source)-UC0)>(Urs-UC0)) {
-                *target++=(UChar)((b<<8)|source[1]);
-                source+=2;
-            }
-        }
-
-        /* normal state machine for Unicode mode */
-/* unicodeByteMode: */
-        while(source<sourceLimit) {
-            if(target>=targetLimit) {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-            b=*source++;
-            switch(state) {
-            case readCommand:
-                if((uint8_t)(b-UC0)>(Urs-UC0)) {
-                    byteOne=b;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    state=quotePairTwo;
-                } else if(/* UC0<=b && */ b<=UC7) {
-                    dynamicWindow=(int8_t)(b-UC0);
-                    isSingleByteMode=TRUE;
-                    goto fastSingle;
-                } else if(/* UD0<=b && */ b<=UD7) {
-                    dynamicWindow=(int8_t)(b-UD0);
-                    isSingleByteMode=TRUE;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    state=defineOne;
-                    goto singleByteMode;
-                } else if(b==UDX) {
-                    isSingleByteMode=TRUE;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    state=definePairOne;
-                    goto singleByteMode;
-                } else if(b==UQU) {
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    state=quotePairOne;
-                } else /* Urs */ {
-                    /* callback(illegal) */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    cnv->toUBytes[0]=b;
-                    cnv->toULength=1;
-                    goto endloop;
-                }
-                break;
-            case quotePairOne:
-                byteOne=b;
-                cnv->toUBytes[1]=b;
-                cnv->toULength=2;
-                state=quotePairTwo;
-                break;
-            case quotePairTwo:
-                *target++=(UChar)((byteOne<<8)|b);
-                state=readCommand;
-                goto fastUnicode;
-            }
-        }
-    }
-endloop:
-
-    /* set the converter state back into UConverter */
-    if(U_FAILURE(*pErrorCode) && *pErrorCode!=U_BUFFER_OVERFLOW_ERROR) {
-        /* reset to deal with the next character */
-        state=readCommand;
-    } else if(state==readCommand) {
-        /* not in a multi-byte sequence, reset toULength */
-        cnv->toULength=0;
-    }
-    scsu->toUIsSingleByteMode=isSingleByteMode;
-    scsu->toUState=state;
-    scsu->toUQuoteWindow=quoteWindow;
-    scsu->toUDynamicWindow=dynamicWindow;
-    scsu->toUByteOne=byteOne;
-
-    /* write back the updated pointers */
-    pArgs->source=(const char *)source;
-    pArgs->target=target;
-    return;
-}
-
-/* SCSU-from-Unicode conversion functions ----------------------------------- */
-
-/*
- * This SCSU Encoder is fairly simple but uses all SCSU commands to achieve
- * reasonable results. The lookahead is minimal.
- * Many cases are simple:
- * A character fits directly into the current mode, a dynamic or static window,
- * or is not compressible. These cases are tested first.
- * Real compression heuristics are applied to the rest, in code branches for
- * single/Unicode mode and BMP/supplementary code points.
- * The heuristics used here are extremely simple.
- */
-
-/* get the number of the window that this character is in, or -1 */
-static int8_t
-getWindow(const uint32_t offsets[8], uint32_t c) {
-    int i;
-    for(i=0; i<8; ++i) {
-        if((uint32_t)(c-offsets[i])<=0x7f) {
-            return (int8_t)(i);
-        }
-    }
-    return -1;
-}
-
-/* is the character in the dynamic window starting at the offset, or in the direct-encoded range? */
-static UBool
-isInOffsetWindowOrDirect(uint32_t offset, uint32_t c) {
-    return (UBool)(c<=offset+0x7f &&
-          (c>=offset || (c<=0x7f &&
-                        (c>=0x20 || (1UL<<c)&0x2601))));
-                                /* binary 0010 0110 0000 0001,
-                                   check for b==0xd || b==0xa || b==9 || b==0 */
-}
-
-/*
- * getNextDynamicWindow returns the next dynamic window to be redefined
- */
-static int8_t
-getNextDynamicWindow(SCSUData *scsu) {
-    int8_t window=scsu->windowUse[scsu->nextWindowUseIndex];
-    if(++scsu->nextWindowUseIndex==8) {
-        scsu->nextWindowUseIndex=0;
-    }
-    return window;
-}
-
-/*
- * useDynamicWindow() adjusts
- * windowUse[] and nextWindowUseIndex for the algorithm to choose
- * the next dynamic window to be defined;
- * a subclass may override it and provide its own algorithm.
- */
-static void
-useDynamicWindow(SCSUData *scsu, int8_t window) {
-    /*
-     * move the existing window, which just became the most recently used one,
-     * up in windowUse[] to nextWindowUseIndex-1
-     */
-
-    /* first, find the index of the window - backwards to favor the more recently used windows */
-    int i, j;
-
-    i=scsu->nextWindowUseIndex;
-    do {
-        if(--i<0) {
-            i=7;
-        }
-    } while(scsu->windowUse[i]!=window);
-
-    /* now copy each windowUse[i+1] to [i] */
-    j=i+1;
-    if(j==8) {
-        j=0;
-    }
-    while(j!=scsu->nextWindowUseIndex) {
-        scsu->windowUse[i]=scsu->windowUse[j];
-        i=j;
-        if(++j==8) { j=0; }
-    }
-
-    /* finally, set the window into the most recently used index */
-    scsu->windowUse[i]=window;
-}
-
-/*
- * calculate the offset and the code for a dynamic window that contains the character
- * takes fixed offsets into account
- * the offset of the window is stored in the offset variable,
- * the code is returned
- *
- * return offset code: -1 none  <=0xff code for SDn/UDn  else code for SDX/UDX, subtract 0x200 to get the true code
- */
-static int
-getDynamicOffset(uint32_t c, uint32_t *pOffset) {
-    int i;
-
-    for(i=0; i<7; ++i) {
-        if((uint32_t)(c-fixedOffsets[i])<=0x7f) {
-            *pOffset=fixedOffsets[i];
-            return 0xf9+i;
-        }
-    }
-
-    if(c<0x80) {
-        /* No dynamic window for US-ASCII. */
-        return -1;
-    } else if(c<0x3400 ||
-              (uint32_t)(c-0x10000)<(0x14000-0x10000) ||
-              (uint32_t)(c-0x1d000)<=(0x1ffff-0x1d000)
-    ) {
-        /* This character is in a code range for a "small", i.e., reasonably windowable, script. */
-        *pOffset=c&0x7fffff80;
-        return (int)(c>>7);
-    } else if(0xe000<=c && c!=0xfeff && c<0xfff0) {
-        /* For these characters we need to take the gapOffset into account. */
-        *pOffset=c&0x7fffff80;
-        return (int)((c-gapOffset)>>7);
-    } else {
-        return -1;
-    }
-}
-
-/*
- * Idea for compression:
- *  - save SCSUData and other state before really starting work
- *  - at endloop, see if compression could be better with just unicode mode
- *  - don't do this if a callback has been called
- *  - if unicode mode would be smaller, then override the results with it - may need SCU at the beginning
- *  - different buffer handling!
- *
- * Drawback or need for corrective handling:
- * it is desirable to encode U+feff as SQU fe ff for the SCSU signature, and
- * it is desirable to start a document in US-ASCII/Latin-1 for as long as possible
- * not only for compression but also for HTML/XML documents with following charset/encoding announcers.
- *
- * How to achieve both?
- *  - Only replace the result after an SDX or SCU?
- */
-
-static void
-_SCSUFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
-                            UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    SCSUData *scsu;
-    const UChar *source, *sourceLimit;
-    uint8_t *target;
-    int32_t targetCapacity;
-    int32_t *offsets;
-
-    UBool isSingleByteMode;
-    uint8_t dynamicWindow;
-    uint32_t currentOffset;
-
-    uint32_t c, delta;
-
-    int32_t sourceIndex, nextSourceIndex;
-
-    int32_t length;
-
-    /* variables for compression heuristics */
-    uint32_t offset;
-    UChar lead, trail;
-    int code;
-    int8_t window;
-
-    /* set up the local pointers */
-    cnv=pArgs->converter;
-    scsu=(SCSUData *)cnv->extraInfo;
-
-    /* set up the local pointers */
-    source=pArgs->source;
-    sourceLimit=pArgs->sourceLimit;
-    target=(uint8_t *)pArgs->target;
-    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
-    offsets=pArgs->offsets;
-
-    /* get the state machine state */
-    isSingleByteMode=scsu->fromUIsSingleByteMode;
-    dynamicWindow=scsu->fromUDynamicWindow;
-    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-
-    c=cnv->fromUChar32;
-
-    /* sourceIndex=-1 if the current character began in the previous buffer */
-    sourceIndex= c==0 ? 0 : -1;
-    nextSourceIndex=0;
-
-    /* similar conversion "loop" as in toUnicode */
-loop:
-    if(isSingleByteMode) {
-        if(c!=0 && targetCapacity>0) {
-            goto getTrailSingle;
-        }
-
-        /* state machine for single-byte mode */
-/* singleByteMode: */
-        while(source<sourceLimit) {
-            if(targetCapacity<=0) {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-            c=*source++;
-            ++nextSourceIndex;
-
-            if((c-0x20)<=0x5f) {
-                /* pass US-ASCII graphic character through */
-                *target++=(uint8_t)c;
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex;
-                }
-                --targetCapacity;
-            } else if(c<0x20) {
-                if((1UL<<c)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
-                    /* CR/LF/TAB/NUL */
-                    *target++=(uint8_t)c;
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                    }
-                    --targetCapacity;
-                } else {
-                    /* quote C0 control character */
-                    c|=SQ0<<8;
-                    length=2;
-                    goto outputBytes;
-                }
-            } else if((delta=c-currentOffset)<=0x7f) {
-                /* use the current dynamic window */
-                *target++=(uint8_t)(delta|0x80);
-                if(offsets!=NULL) {
-                    *offsets++=sourceIndex;
-                }
-                --targetCapacity;
-            } else if(U16_IS_SURROGATE(c)) {
-                if(U16_IS_SURROGATE_LEAD(c)) {
-getTrailSingle:
-                    lead=(UChar)c;
-                    if(source<sourceLimit) {
-                        /* test the following code unit */
-                        trail=*source;
-                        if(U16_IS_TRAIL(trail)) {
-                            ++source;
-                            ++nextSourceIndex;
-                            c=U16_GET_SUPPLEMENTARY(c, trail);
-                            /* convert this surrogate code point */
-                            /* exit this condition tree */
-                        } else {
-                            /* this is an unmatched lead code unit (1st surrogate) */
-                            /* callback(illegal) */
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            goto endloop;
-                        }
-                    } else {
-                        /* no more input */
-                        break;
-                    }
-                } else {
-                    /* this is an unmatched trail code unit (2nd surrogate) */
-                    /* callback(illegal) */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    goto endloop;
-                }
-
-                /* compress supplementary character U+10000..U+10ffff */
-                if((delta=c-currentOffset)<=0x7f) {
-                    /* use the current dynamic window */
-                    *target++=(uint8_t)(delta|0x80);
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                    }
-                    --targetCapacity;
-                } else if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
-                    /* there is a dynamic window that contains this character, change to it */
-                    dynamicWindow=window;
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)(SC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
-                    length=2;
-                    goto outputBytes;
-                } else if((code=getDynamicOffset(c, &offset))>=0) {
-                    /* might check if there are more characters in this window to come */
-                    /* define an extended window with this character */
-                    code-=0x200;
-                    dynamicWindow=getNextDynamicWindow(scsu);
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)SDX<<24)|((uint32_t)dynamicWindow<<21)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
-                    length=4;
-                    goto outputBytes;
-                } else {
-                    /* change to Unicode mode and output this (lead, trail) pair */
-                    isSingleByteMode=FALSE;
-                    *target++=(uint8_t)SCU;
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                    }
-                    --targetCapacity;
-                    c=((uint32_t)lead<<16)|trail;
-                    length=4;
-                    goto outputBytes;
-                }
-            } else if(c<0xa0) {
-                /* quote C1 control character */
-                c=(c&0x7f)|(SQ0+1)<<8; /* SQ0+1==SQ1 */
-                length=2;
-                goto outputBytes;
-            } else if(c==0xfeff || c>=0xfff0) {
-                /* quote signature character=byte order mark and specials */
-                c|=SQU<<16;
-                length=3;
-                goto outputBytes;
-            } else {
-                /* compress all other BMP characters */
-                if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
-                    /* there is a window defined that contains this character - switch to it or quote from it? */
-                    if(source>=sourceLimit || isInOffsetWindowOrDirect(scsu->fromUDynamicOffsets[window], *source)) {
-                        /* change to dynamic window */
-                        dynamicWindow=window;
-                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-                        useDynamicWindow(scsu, dynamicWindow);
-                        c=((uint32_t)(SC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
-                        length=2;
-                        goto outputBytes;
-                    } else {
-                        /* quote from dynamic window */
-                        c=((uint32_t)(SQ0+window)<<8)|(c-scsu->fromUDynamicOffsets[window])|0x80;
-                        length=2;
-                        goto outputBytes;
-                    }
-                } else if((window=getWindow(staticOffsets, c))>=0) {
-                    /* quote from static window */
-                    c=((uint32_t)(SQ0+window)<<8)|(c-staticOffsets[window]);
-                    length=2;
-                    goto outputBytes;
-                } else if((code=getDynamicOffset(c, &offset))>=0) {
-                    /* define a dynamic window with this character */
-                    dynamicWindow=getNextDynamicWindow(scsu);
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)(SD0+dynamicWindow)<<16)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
-                    length=3;
-                    goto outputBytes;
-                } else if((uint32_t)(c-0x3400)<(0xd800-0x3400) &&
-                          (source>=sourceLimit || (uint32_t)(*source-0x3400)<(0xd800-0x3400))
-                ) {
-                    /*
-                     * this character is not compressible (a BMP ideograph or similar);
-                     * switch to Unicode mode if this is the last character in the block
-                     * or there is at least one more ideograph following immediately
-                     */
-                    isSingleByteMode=FALSE;
-                    c|=SCU<<16;
-                    length=3;
-                    goto outputBytes;
-                } else {
-                    /* quote Unicode */
-                    c|=SQU<<16;
-                    length=3;
-                    goto outputBytes;
-                }
-            }
-
-            /* normal end of conversion: prepare for a new character */
-            c=0;
-            sourceIndex=nextSourceIndex;
-        }
-    } else {
-        if(c!=0 && targetCapacity>0) {
-            goto getTrailUnicode;
-        }
-
-        /* state machine for Unicode mode */
-/* unicodeByteMode: */
-        while(source<sourceLimit) {
-            if(targetCapacity<=0) {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-            c=*source++;
-            ++nextSourceIndex;
-
-            if((uint32_t)(c-0x3400)<(0xd800-0x3400)) {
-                /* not compressible, write character directly */
-                if(targetCapacity>=2) {
-                    *target++=(uint8_t)(c>>8);
-                    *target++=(uint8_t)c;
-                    if(offsets!=NULL) {
-                        *offsets++=sourceIndex;
-                        *offsets++=sourceIndex;
-                    }
-                    targetCapacity-=2;
-                } else {
-                    length=2;
-                    goto outputBytes;
-                }
-            } else if((uint32_t)(c-0x3400)>=(0xf300-0x3400) /* c<0x3400 || c>=0xf300 */) {
-                /* compress BMP character if the following one is not an uncompressible ideograph */
-                if(!(source<sourceLimit && (uint32_t)(*source-0x3400)<(0xd800-0x3400))) {
-                    if(((uint32_t)(c-0x30)<10 || (uint32_t)(c-0x61)<26 || (uint32_t)(c-0x41)<26)) {
-                        /* ASCII digit or letter */
-                        isSingleByteMode=TRUE;
-                        c|=((uint32_t)(UC0+dynamicWindow)<<8)|c;
-                        length=2;
-                        goto outputBytes;
-                    } else if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
-                        /* there is a dynamic window that contains this character, change to it */
-                        isSingleByteMode=TRUE;
-                        dynamicWindow=window;
-                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-                        useDynamicWindow(scsu, dynamicWindow);
-                        c=((uint32_t)(UC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
-                        length=2;
-                        goto outputBytes;
-                    } else if((code=getDynamicOffset(c, &offset))>=0) {
-                        /* define a dynamic window with this character */
-                        isSingleByteMode=TRUE;
-                        dynamicWindow=getNextDynamicWindow(scsu);
-                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
-                        useDynamicWindow(scsu, dynamicWindow);
-                        c=((uint32_t)(UD0+dynamicWindow)<<16)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
-                        length=3;
-                        goto outputBytes;
-                    }
-                }
-
-                /* don't know how to compress this character, just write it directly */
-                length=2;
-                goto outputBytes;
-            } else if(c<0xe000) {
-                /* c is a surrogate */
-                if(U16_IS_SURROGATE_LEAD(c)) {
-getTrailUnicode:
-                    lead=(UChar)c;
-                    if(source<sourceLimit) {
-                        /* test the following code unit */
-                        trail=*source;
-                        if(U16_IS_TRAIL(trail)) {
-                            ++source;
-                            ++nextSourceIndex;
-                            c=U16_GET_SUPPLEMENTARY(c, trail);
-                            /* convert this surrogate code point */
-                            /* exit this condition tree */
-                        } else {
-                            /* this is an unmatched lead code unit (1st surrogate) */
-                            /* callback(illegal) */
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            goto endloop;
-                        }
-                    } else {
-                        /* no more input */
-                        break;
-                    }
-                } else {
-                    /* this is an unmatched trail code unit (2nd surrogate) */
-                    /* callback(illegal) */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    goto endloop;
-                }
-
-                /* compress supplementary character */
-                if( (window=getWindow(scsu->fromUDynamicOffsets, c))>=0 &&
-                    !(source<sourceLimit && (uint32_t)(*source-0x3400)<(0xd800-0x3400))
-                ) {
-                    /*
-                     * there is a dynamic window that contains this character and
-                     * the following character is not uncompressible,
-                     * change to the window
-                     */
-                    isSingleByteMode=TRUE;
-                    dynamicWindow=window;
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)(UC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
-                    length=2;
-                    goto outputBytes;
-                } else if(source<sourceLimit && lead==*source && /* too lazy to check trail in same window as source[1] */
-                          (code=getDynamicOffset(c, &offset))>=0
-                ) {
-                    /* two supplementary characters in (probably) the same window - define an extended one */
-                    isSingleByteMode=TRUE;
-                    code-=0x200;
-                    dynamicWindow=getNextDynamicWindow(scsu);
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)UDX<<24)|((uint32_t)dynamicWindow<<21)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
-                    length=4;
-                    goto outputBytes;
-                } else {
-                    /* don't know how to compress this character, just write it directly */
-                    c=((uint32_t)lead<<16)|trail;
-                    length=4;
-                    goto outputBytes;
-                }
-            } else /* 0xe000<=c<0xf300 */ {
-                /* quote to avoid SCSU tags */
-                c|=UQU<<16;
-                length=3;
-                goto outputBytes;
-            }
-
-            /* normal end of conversion: prepare for a new character */
-            c=0;
-            sourceIndex=nextSourceIndex;
-        }
-    }
-endloop:
-
-    /* set the converter state back into UConverter */
-    scsu->fromUIsSingleByteMode=isSingleByteMode;
-    scsu->fromUDynamicWindow=dynamicWindow;
-
-    cnv->fromUChar32=c;
-
-    /* write back the updated pointers */
-    pArgs->source=source;
-    pArgs->target=(char *)target;
-    pArgs->offsets=offsets;
-    return;
-
-outputBytes:
-    /* write the output character bytes from c and length [code copied from ucnvmbcs.c] */
-    /* from the first if in the loop we know that targetCapacity>0 */
-    if(length<=targetCapacity) {
-        if(offsets==NULL) {
-            switch(length) {
-                /* each branch falls through to the next one */
-            case 4:
-                *target++=(uint8_t)(c>>24);
-                U_FALLTHROUGH;
-            case 3:
-                *target++=(uint8_t)(c>>16);
-                U_FALLTHROUGH;
-            case 2:
-                *target++=(uint8_t)(c>>8);
-                U_FALLTHROUGH;
-            case 1:
-                *target++=(uint8_t)c;
-                U_FALLTHROUGH;
-            default:
-                /* will never occur */
-                break;
-            }
-        } else {
-            switch(length) {
-                /* each branch falls through to the next one */
-            case 4:
-                *target++=(uint8_t)(c>>24);
-                *offsets++=sourceIndex;
-                U_FALLTHROUGH;
-            case 3:
-                *target++=(uint8_t)(c>>16);
-                *offsets++=sourceIndex;
-                U_FALLTHROUGH;
-            case 2:
-                *target++=(uint8_t)(c>>8);
-                *offsets++=sourceIndex;
-                U_FALLTHROUGH;
-            case 1:
-                *target++=(uint8_t)c;
-                *offsets++=sourceIndex;
-                U_FALLTHROUGH;
-            default:
-                /* will never occur */
-                break;
-            }
-        }
-        targetCapacity-=length;
-
-        /* normal end of conversion: prepare for a new character */
-        c=0;
-        sourceIndex=nextSourceIndex;
-        goto loop;
-    } else {
-        uint8_t *p;
-
-        /*
-         * We actually do this backwards here:
-         * In order to save an intermediate variable, we output
-         * first to the overflow buffer what does not fit into the
-         * regular target.
-         */
-        /* we know that 0<=targetCapacity<length<=4 */
-        /* targetCapacity==0 when SCU+supplementary where SCU used up targetCapacity==1 */
-        length-=targetCapacity;
-        p=(uint8_t *)cnv->charErrorBuffer;
-        switch(length) {
-            /* each branch falls through to the next one */
-        case 4:
-            *p++=(uint8_t)(c>>24);
-            U_FALLTHROUGH;
-        case 3:
-            *p++=(uint8_t)(c>>16);
-            U_FALLTHROUGH;
-        case 2:
-            *p++=(uint8_t)(c>>8);
-            U_FALLTHROUGH;
-        case 1:
-            *p=(uint8_t)c;
-            U_FALLTHROUGH;
-        default:
-            /* will never occur */
-            break;
-        }
-        cnv->charErrorBufferLength=(int8_t)length;
-
-        /* now output what fits into the regular target */
-        c>>=8*length; /* length was reduced by targetCapacity */
-        switch(targetCapacity) {
-            /* each branch falls through to the next one */
-        case 3:
-            *target++=(uint8_t)(c>>16);
-            if(offsets!=NULL) {
-                *offsets++=sourceIndex;
-            }
-            U_FALLTHROUGH;
-        case 2:
-            *target++=(uint8_t)(c>>8);
-            if(offsets!=NULL) {
-                *offsets++=sourceIndex;
-            }
-            U_FALLTHROUGH;
-        case 1:
-            *target++=(uint8_t)c;
-            if(offsets!=NULL) {
-                *offsets++=sourceIndex;
-            }
-            U_FALLTHROUGH;
-        default:
-            break;
-        }
-
-        /* target overflow */
-        targetCapacity=0;
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        c=0;
-        goto endloop;
-    }
-}
-
-/*
- * Identical to _SCSUFromUnicodeWithOffsets but without offset handling.
- * If a change is made in the original function, then either
- * change this function the same way or
- * re-copy the original function and remove the variables
- * offsets, sourceIndex, and nextSourceIndex.
- */
-static void
-_SCSUFromUnicode(UConverterFromUnicodeArgs *pArgs,
-                 UErrorCode *pErrorCode) {
-    UConverter *cnv;
-    SCSUData *scsu;
-    const UChar *source, *sourceLimit;
-    uint8_t *target;
-    int32_t targetCapacity;
-
-    UBool isSingleByteMode;
-    uint8_t dynamicWindow;
-    uint32_t currentOffset;
-
-    uint32_t c, delta;
-
-    int32_t length;
-
-    /* variables for compression heuristics */
-    uint32_t offset;
-    UChar lead, trail;
-    int code;
-    int8_t window;
-
-    /* set up the local pointers */
-    cnv=pArgs->converter;
-    scsu=(SCSUData *)cnv->extraInfo;
-
-    /* set up the local pointers */
-    source=pArgs->source;
-    sourceLimit=pArgs->sourceLimit;
-    target=(uint8_t *)pArgs->target;
-    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
-
-    /* get the state machine state */
-    isSingleByteMode=scsu->fromUIsSingleByteMode;
-    dynamicWindow=scsu->fromUDynamicWindow;
-    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-
-    c=cnv->fromUChar32;
-
-    /* similar conversion "loop" as in toUnicode */
-loop:
-    if(isSingleByteMode) {
-        if(c!=0 && targetCapacity>0) {
-            goto getTrailSingle;
-        }
-
-        /* state machine for single-byte mode */
-/* singleByteMode: */
-        while(source<sourceLimit) {
-            if(targetCapacity<=0) {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-            c=*source++;
-
-            if((c-0x20)<=0x5f) {
-                /* pass US-ASCII graphic character through */
-                *target++=(uint8_t)c;
-                --targetCapacity;
-            } else if(c<0x20) {
-                if((1UL<<c)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
-                    /* CR/LF/TAB/NUL */
-                    *target++=(uint8_t)c;
-                    --targetCapacity;
-                } else {
-                    /* quote C0 control character */
-                    c|=SQ0<<8;
-                    length=2;
-                    goto outputBytes;
-                }
-            } else if((delta=c-currentOffset)<=0x7f) {
-                /* use the current dynamic window */
-                *target++=(uint8_t)(delta|0x80);
-                --targetCapacity;
-            } else if(U16_IS_SURROGATE(c)) {
-                if(U16_IS_SURROGATE_LEAD(c)) {
-getTrailSingle:
-                    lead=(UChar)c;
-                    if(source<sourceLimit) {
-                        /* test the following code unit */
-                        trail=*source;
-                        if(U16_IS_TRAIL(trail)) {
-                            ++source;
-                            c=U16_GET_SUPPLEMENTARY(c, trail);
-                            /* convert this surrogate code point */
-                            /* exit this condition tree */
-                        } else {
-                            /* this is an unmatched lead code unit (1st surrogate) */
-                            /* callback(illegal) */
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            goto endloop;
-                        }
-                    } else {
-                        /* no more input */
-                        break;
-                    }
-                } else {
-                    /* this is an unmatched trail code unit (2nd surrogate) */
-                    /* callback(illegal) */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    goto endloop;
-                }
-
-                /* compress supplementary character U+10000..U+10ffff */
-                if((delta=c-currentOffset)<=0x7f) {
-                    /* use the current dynamic window */
-                    *target++=(uint8_t)(delta|0x80);
-                    --targetCapacity;
-                } else if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
-                    /* there is a dynamic window that contains this character, change to it */
-                    dynamicWindow=window;
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)(SC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
-                    length=2;
-                    goto outputBytes;
-                } else if((code=getDynamicOffset(c, &offset))>=0) {
-                    /* might check if there are more characters in this window to come */
-                    /* define an extended window with this character */
-                    code-=0x200;
-                    dynamicWindow=getNextDynamicWindow(scsu);
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)SDX<<24)|((uint32_t)dynamicWindow<<21)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
-                    length=4;
-                    goto outputBytes;
-                } else {
-                    /* change to Unicode mode and output this (lead, trail) pair */
-                    isSingleByteMode=FALSE;
-                    *target++=(uint8_t)SCU;
-                    --targetCapacity;
-                    c=((uint32_t)lead<<16)|trail;
-                    length=4;
-                    goto outputBytes;
-                }
-            } else if(c<0xa0) {
-                /* quote C1 control character */
-                c=(c&0x7f)|(SQ0+1)<<8; /* SQ0+1==SQ1 */
-                length=2;
-                goto outputBytes;
-            } else if(c==0xfeff || c>=0xfff0) {
-                /* quote signature character=byte order mark and specials */
-                c|=SQU<<16;
-                length=3;
-                goto outputBytes;
-            } else {
-                /* compress all other BMP characters */
-                if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
-                    /* there is a window defined that contains this character - switch to it or quote from it? */
-                    if(source>=sourceLimit || isInOffsetWindowOrDirect(scsu->fromUDynamicOffsets[window], *source)) {
-                        /* change to dynamic window */
-                        dynamicWindow=window;
-                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-                        useDynamicWindow(scsu, dynamicWindow);
-                        c=((uint32_t)(SC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
-                        length=2;
-                        goto outputBytes;
-                    } else {
-                        /* quote from dynamic window */
-                        c=((uint32_t)(SQ0+window)<<8)|(c-scsu->fromUDynamicOffsets[window])|0x80;
-                        length=2;
-                        goto outputBytes;
-                    }
-                } else if((window=getWindow(staticOffsets, c))>=0) {
-                    /* quote from static window */
-                    c=((uint32_t)(SQ0+window)<<8)|(c-staticOffsets[window]);
-                    length=2;
-                    goto outputBytes;
-                } else if((code=getDynamicOffset(c, &offset))>=0) {
-                    /* define a dynamic window with this character */
-                    dynamicWindow=getNextDynamicWindow(scsu);
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)(SD0+dynamicWindow)<<16)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
-                    length=3;
-                    goto outputBytes;
-                } else if((uint32_t)(c-0x3400)<(0xd800-0x3400) &&
-                          (source>=sourceLimit || (uint32_t)(*source-0x3400)<(0xd800-0x3400))
-                ) {
-                    /*
-                     * this character is not compressible (a BMP ideograph or similar);
-                     * switch to Unicode mode if this is the last character in the block
-                     * or there is at least one more ideograph following immediately
-                     */
-                    isSingleByteMode=FALSE;
-                    c|=SCU<<16;
-                    length=3;
-                    goto outputBytes;
-                } else {
-                    /* quote Unicode */
-                    c|=SQU<<16;
-                    length=3;
-                    goto outputBytes;
-                }
-            }
-
-            /* normal end of conversion: prepare for a new character */
-            c=0;
-        }
-    } else {
-        if(c!=0 && targetCapacity>0) {
-            goto getTrailUnicode;
-        }
-
-        /* state machine for Unicode mode */
-/* unicodeByteMode: */
-        while(source<sourceLimit) {
-            if(targetCapacity<=0) {
-                /* target is full */
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-                break;
-            }
-            c=*source++;
-
-            if((uint32_t)(c-0x3400)<(0xd800-0x3400)) {
-                /* not compressible, write character directly */
-                if(targetCapacity>=2) {
-                    *target++=(uint8_t)(c>>8);
-                    *target++=(uint8_t)c;
-                    targetCapacity-=2;
-                } else {
-                    length=2;
-                    goto outputBytes;
-                }
-            } else if((uint32_t)(c-0x3400)>=(0xf300-0x3400) /* c<0x3400 || c>=0xf300 */) {
-                /* compress BMP character if the following one is not an uncompressible ideograph */
-                if(!(source<sourceLimit && (uint32_t)(*source-0x3400)<(0xd800-0x3400))) {
-                    if(((uint32_t)(c-0x30)<10 || (uint32_t)(c-0x61)<26 || (uint32_t)(c-0x41)<26)) {
-                        /* ASCII digit or letter */
-                        isSingleByteMode=TRUE;
-                        c|=((uint32_t)(UC0+dynamicWindow)<<8)|c;
-                        length=2;
-                        goto outputBytes;
-                    } else if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
-                        /* there is a dynamic window that contains this character, change to it */
-                        isSingleByteMode=TRUE;
-                        dynamicWindow=window;
-                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-                        useDynamicWindow(scsu, dynamicWindow);
-                        c=((uint32_t)(UC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
-                        length=2;
-                        goto outputBytes;
-                    } else if((code=getDynamicOffset(c, &offset))>=0) {
-                        /* define a dynamic window with this character */
-                        isSingleByteMode=TRUE;
-                        dynamicWindow=getNextDynamicWindow(scsu);
-                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
-                        useDynamicWindow(scsu, dynamicWindow);
-                        c=((uint32_t)(UD0+dynamicWindow)<<16)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
-                        length=3;
-                        goto outputBytes;
-                    }
-                }
-
-                /* don't know how to compress this character, just write it directly */
-                length=2;
-                goto outputBytes;
-            } else if(c<0xe000) {
-                /* c is a surrogate */
-                if(U16_IS_SURROGATE_LEAD(c)) {
-getTrailUnicode:
-                    lead=(UChar)c;
-                    if(source<sourceLimit) {
-                        /* test the following code unit */
-                        trail=*source;
-                        if(U16_IS_TRAIL(trail)) {
-                            ++source;
-                            c=U16_GET_SUPPLEMENTARY(c, trail);
-                            /* convert this surrogate code point */
-                            /* exit this condition tree */
-                        } else {
-                            /* this is an unmatched lead code unit (1st surrogate) */
-                            /* callback(illegal) */
-                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                            goto endloop;
-                        }
-                    } else {
-                        /* no more input */
-                        break;
-                    }
-                } else {
-                    /* this is an unmatched trail code unit (2nd surrogate) */
-                    /* callback(illegal) */
-                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
-                    goto endloop;
-                }
-
-                /* compress supplementary character */
-                if( (window=getWindow(scsu->fromUDynamicOffsets, c))>=0 &&
-                    !(source<sourceLimit && (uint32_t)(*source-0x3400)<(0xd800-0x3400))
-                ) {
-                    /*
-                     * there is a dynamic window that contains this character and
-                     * the following character is not uncompressible,
-                     * change to the window
-                     */
-                    isSingleByteMode=TRUE;
-                    dynamicWindow=window;
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)(UC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
-                    length=2;
-                    goto outputBytes;
-                } else if(source<sourceLimit && lead==*source && /* too lazy to check trail in same window as source[1] */
-                          (code=getDynamicOffset(c, &offset))>=0
-                ) {
-                    /* two supplementary characters in (probably) the same window - define an extended one */
-                    isSingleByteMode=TRUE;
-                    code-=0x200;
-                    dynamicWindow=getNextDynamicWindow(scsu);
-                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
-                    useDynamicWindow(scsu, dynamicWindow);
-                    c=((uint32_t)UDX<<24)|((uint32_t)dynamicWindow<<21)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
-                    length=4;
-                    goto outputBytes;
-                } else {
-                    /* don't know how to compress this character, just write it directly */
-                    c=((uint32_t)lead<<16)|trail;
-                    length=4;
-                    goto outputBytes;
-                }
-            } else /* 0xe000<=c<0xf300 */ {
-                /* quote to avoid SCSU tags */
-                c|=UQU<<16;
-                length=3;
-                goto outputBytes;
-            }
-
-            /* normal end of conversion: prepare for a new character */
-            c=0;
-        }
-    }
-endloop:
-
-    /* set the converter state back into UConverter */
-    scsu->fromUIsSingleByteMode=isSingleByteMode;
-    scsu->fromUDynamicWindow=dynamicWindow;
-
-    cnv->fromUChar32=c;
-
-    /* write back the updated pointers */
-    pArgs->source=source;
-    pArgs->target=(char *)target;
-    return;
-
-outputBytes:
-    /* write the output character bytes from c and length [code copied from ucnvmbcs.c] */
-    /* from the first if in the loop we know that targetCapacity>0 */
-    if(length<=targetCapacity) {
-        switch(length) {
-            /* each branch falls through to the next one */
-        case 4:
-            *target++=(uint8_t)(c>>24);
-            U_FALLTHROUGH;
-        case 3:
-            *target++=(uint8_t)(c>>16);
-            U_FALLTHROUGH;
-        case 2:
-            *target++=(uint8_t)(c>>8);
-            U_FALLTHROUGH;
-        case 1:
-            *target++=(uint8_t)c;
-            U_FALLTHROUGH;
-        default:
-            /* will never occur */
-            break;
-        }
-        targetCapacity-=length;
-
-        /* normal end of conversion: prepare for a new character */
-        c=0;
-        goto loop;
-    } else {
-        uint8_t *p;
-
-        /*
-         * We actually do this backwards here:
-         * In order to save an intermediate variable, we output
-         * first to the overflow buffer what does not fit into the
-         * regular target.
-         */
-        /* we know that 0<=targetCapacity<length<=4 */
-        /* targetCapacity==0 when SCU+supplementary where SCU used up targetCapacity==1 */
-        length-=targetCapacity;
-        p=(uint8_t *)cnv->charErrorBuffer;
-        switch(length) {
-            /* each branch falls through to the next one */
-        case 4:
-            *p++=(uint8_t)(c>>24);
-            U_FALLTHROUGH;
-        case 3:
-            *p++=(uint8_t)(c>>16);
-            U_FALLTHROUGH;
-        case 2:
-            *p++=(uint8_t)(c>>8);
-            U_FALLTHROUGH;
-        case 1:
-            *p=(uint8_t)c;
-            U_FALLTHROUGH;
-        default:
-            /* will never occur */
-            break;
-        }
-        cnv->charErrorBufferLength=(int8_t)length;
-
-        /* now output what fits into the regular target */
-        c>>=8*length; /* length was reduced by targetCapacity */
-        switch(targetCapacity) {
-            /* each branch falls through to the next one */
-        case 3:
-            *target++=(uint8_t)(c>>16);
-            U_FALLTHROUGH;
-        case 2:
-            *target++=(uint8_t)(c>>8);
-            U_FALLTHROUGH;
-        case 1:
-            *target++=(uint8_t)c;
-            U_FALLTHROUGH;
-        default:
-            break;
-        }
-
-        /* target overflow */
-        targetCapacity=0;
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        c=0;
-        goto endloop;
-    }
-}
-
-/* miscellaneous ------------------------------------------------------------ */
-
-static const char *
-_SCSUGetName(const UConverter *cnv) {
-    SCSUData *scsu=(SCSUData *)cnv->extraInfo;
-
-    switch(scsu->locale) {
-    case l_ja:
-        return "SCSU,locale=ja";
-    default:
-        return "SCSU";
-    }
-}
-
-/* structure for SafeClone calculations */
-struct cloneSCSUStruct
-{
-    UConverter cnv;
-    SCSUData mydata;
-};
-
-static UConverter * 
-_SCSUSafeClone(const UConverter *cnv, 
-               void *stackBuffer, 
-               int32_t *pBufferSize, 
-               UErrorCode *status)
-{
-    struct cloneSCSUStruct * localClone;
-    int32_t bufferSizeNeeded = sizeof(struct cloneSCSUStruct);
-
-    if (U_FAILURE(*status)){
-        return 0;
-    }
-
-    if (*pBufferSize == 0){ /* 'preflighting' request - set needed size into *pBufferSize */
-        *pBufferSize = bufferSizeNeeded;
-        return 0;
-    }
-
-    localClone = (struct cloneSCSUStruct *)stackBuffer;
-    /* ucnv.c/ucnv_safeClone() copied the main UConverter already */
-
-    uprv_memcpy(&localClone->mydata, cnv->extraInfo, sizeof(SCSUData));
-    localClone->cnv.extraInfo = &localClone->mydata;
-    localClone->cnv.isExtraLocal = TRUE;
-
-    return &localClone->cnv;
-}
-
-
-static const UConverterImpl _SCSUImpl={
-    UCNV_SCSU,
-
-    NULL,
-    NULL,
-
-    _SCSUOpen,
-    _SCSUClose,
-    _SCSUReset,
-
-    _SCSUToUnicode,
-    _SCSUToUnicodeWithOffsets,
-    _SCSUFromUnicode,
-    _SCSUFromUnicodeWithOffsets,
-    NULL,
-
-    NULL,
-    _SCSUGetName,
-    NULL,
-    _SCSUSafeClone,
-    ucnv_getCompleteUnicodeSet
-};
-
-static const UConverterStaticData _SCSUStaticData={
-    sizeof(UConverterStaticData),
-    "SCSU",
-    1212, /* CCSID for SCSU */
-    UCNV_IBM, UCNV_SCSU,
-    1, 3, /* one UChar generates at least 1 byte and at most 3 bytes */
-    /*
-     * The subchar here is ignored because _SCSUOpen() sets U+fffd as a Unicode
-     * substitution string.
-     */
-    { 0x0e, 0xff, 0xfd, 0 }, 3,
-    FALSE, FALSE,
-    0,
-    0,
-    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
-};
-
-const UConverterSharedData _SCSUData=
-        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_SCSUStaticData, &_SCSUImpl);
-
-#endif
index 573e8b0..ba062b3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index cdd328e..83f54ab 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucol_data.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 151800d..1822705 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucol_swp.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 422436d..fd8be9a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucol_swp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index db38173..885ca3a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -1030,7 +1030,8 @@ collectCurrencyNames(const char* locale,
                 const UnicodeString *symbol;
                 while ((symbol = iter.next()) != NULL) {
                     (*currencySymbols)[*total_currency_symbol_count].IsoCode = iso;
-                    (*currencySymbols)[*total_currency_symbol_count].currencyName = (UChar*) symbol->getBuffer();
+                    (*currencySymbols)[*total_currency_symbol_count].currencyName =
+                        const_cast<UChar*>(symbol->getBuffer());
                     (*currencySymbols)[*total_currency_symbol_count].flag = 0;
                     (*currencySymbols)[(*total_currency_symbol_count)++].currencyNameLen = symbol->length();
                 }
index b35d6f4..6e468fd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ec72a0c..29074a6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  udata.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -110,8 +110,12 @@ static u_atomic_int32_t gHaveTriedToLoadCommonData = ATOMIC_INT32_T_INITIALIZER(
 static UHashtable  *gCommonDataCache = NULL;  /* Global hash table of opened ICU data files.  */
 static icu::UInitOnce gCommonDataCacheInitOnce = U_INITONCE_INITIALIZER;
 
+#if U_PLATFORM_HAS_WINUWP_API == 0 
 static UDataFileAccess  gDataFileAccess = UDATA_DEFAULT_ACCESS;  // Access not synchronized.
                                                                  // Modifying is documented as thread-unsafe.
+#else
+static UDataFileAccess  gDataFileAccess = UDATA_NO_FILES;        // Windows UWP looks in one spot explicitly
+#endif
 
 static UBool U_CALLCONV
 udata_cleanup(void)
@@ -619,12 +623,14 @@ U_NAMESPACE_END
 
 /*----------------------------------------------------------------------*
  *                                                                      *
- *  Add a static reference to the common data  library                  *
+ *  Add a static reference to the common data library                   *
  *   Unless overridden by an explicit udata_setCommonData, this will be *
  *      our common data.                                                *
  *                                                                      *
  *----------------------------------------------------------------------*/
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
 extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
+#endif
 
 /*
  * This would be a good place for weak-linkage declarations of
@@ -672,6 +678,7 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
             if(gCommonICUDataArray[commonDataIndex] != NULL) {
                 return gCommonICUDataArray[commonDataIndex];
             }
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
             int32_t i;
             for(i = 0; i < commonDataIndex; ++i) {
                 if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
@@ -679,6 +686,7 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
                     return NULL;
                 }
             }
+#endif
         }
 
         /* Add the linked-in data to the list. */
@@ -694,11 +702,13 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
             setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode);
         }
         */
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
         setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, FALSE, pErrorCode);
         {
             Mutex lock;
             return gCommonICUDataArray[commonDataIndex];
         }
+#endif
     }
 
 
@@ -1245,9 +1255,14 @@ doOpenChoice(const char *path, const char *type, const char *name,
     fprintf(stderr, " tocEntryPath = %s\n", tocEntryName.data());
 #endif
 
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
     if(path == NULL) {
         path = COMMON_DATA_NAME; /* "icudt26e" */
     }
+#else
+    // Windows UWP expects only a single data file.
+    path = COMMON_DATA_NAME; /* "icudt26e" */
+#endif
 
     /************************ Begin loop looking for ind. files ***************/
 #ifdef UDATA_DEBUG
diff --git a/source/common/udatamem.c b/source/common/udatamem.c
deleted file mode 100644 (file)
index daa9193..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1999-2011, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************/
-
-
-/*----------------------------------------------------------------------------------
- *
- *  UDataMemory     A class-like struct that serves as a handle to a piece of memory
- *                  that contains some ICU data (resource, converters, whatever.)
- *
- *                  When an application opens ICU data (with udata_open, for example,
- *                  a UDataMemory * is returned.
- *
- *----------------------------------------------------------------------------------*/
-
-#include "unicode/utypes.h"
-#include "cmemory.h"
-#include "unicode/udata.h"
-
-#include "udatamem.h"
-
-U_CFUNC void UDataMemory_init(UDataMemory *This) {
-    uprv_memset(This, 0, sizeof(UDataMemory));
-    This->length=-1;
-}
-
-
-U_CFUNC void UDatamemory_assign(UDataMemory *dest, UDataMemory *source) {
-    /* UDataMemory Assignment.  Destination UDataMemory must be initialized first.  */
-    UBool mallocedFlag = dest->heapAllocated;
-    uprv_memcpy(dest, source, sizeof(UDataMemory));
-    dest->heapAllocated = mallocedFlag;
-}
-
-U_CFUNC UDataMemory *UDataMemory_createNewInstance(UErrorCode *pErr) {
-    UDataMemory *This;
-
-    if (U_FAILURE(*pErr)) {
-        return NULL;
-    }
-    This = uprv_malloc(sizeof(UDataMemory));
-    if (This == NULL) {
-        *pErr = U_MEMORY_ALLOCATION_ERROR; }
-    else {
-        UDataMemory_init(This);
-        This->heapAllocated = TRUE;
-    }
-    return This;
-}
-
-
-U_CFUNC const DataHeader *
-UDataMemory_normalizeDataPointer(const void *p) {
-    /* allow the data to be optionally prepended with an alignment-forcing double value */
-    const DataHeader *pdh = (const DataHeader *)p;
-    if(pdh==NULL || (pdh->dataHeader.magic1==0xda && pdh->dataHeader.magic2==0x27)) {
-        return pdh;
-    } else {
-#if U_PLATFORM == U_PF_OS400
-        /*
-        TODO: Fix this once the compiler implements this feature. Keep in sync with genccode.c
-
-        This is here because this platform can't currently put
-        const data into the read-only pages of an object or
-        shared library (service program). Only strings are allowed in read-only
-        pages, so we use char * strings to store the data.
-
-        In order to prevent the beginning of the data from ever matching the
-        magic numbers we must skip the initial double.
-        [grhoten 4/24/2003]
-        */
-        return (const DataHeader *)*((const void **)p+1);
-#else
-        return (const DataHeader *)((const double *)p+1);
-#endif
-    }
-}
-
-
-U_CFUNC void UDataMemory_setData (UDataMemory *This, const void *dataAddr) {
-    This->pHeader = UDataMemory_normalizeDataPointer(dataAddr);
-}
-
-
-U_CAPI void U_EXPORT2
-udata_close(UDataMemory *pData) {
-    if(pData!=NULL) {
-        uprv_unmapFile(pData);
-        if(pData->heapAllocated ) {
-            uprv_free(pData);
-        } else {
-            UDataMemory_init(pData);
-        }
-    }
-}
-
-U_CAPI const void * U_EXPORT2
-udata_getMemory(UDataMemory *pData) {
-    if(pData!=NULL && pData->pHeader!=NULL) {
-        return (char *)(pData->pHeader)+udata_getHeaderSize(pData->pHeader);
-    } else {
-        return NULL;
-    }
-}
-
-/**
- * Get the length of the data item if possible.
- * The length may be up to 15 bytes larger than the actual data.
- *
- * TODO Consider making this function public.
- * It would have to return the actual length in more cases.
- * For example, the length of the last item in a .dat package could be
- * computed from the size of the whole .dat package minus the offset of the
- * last item.
- * The size of a file that was directly memory-mapped could be determined
- * using some system API.
- *
- * In order to get perfect values for all data items, we may have to add a
- * length field to UDataInfo, but that complicates data generation
- * and may be overkill.
- *
- * @param pData The data item.
- * @return the length of the data item, or -1 if not known
- * @internal Currently used only in cintltst/udatatst.c
- */
-U_CAPI int32_t U_EXPORT2
-udata_getLength(const UDataMemory *pData) {
-    if(pData!=NULL && pData->pHeader!=NULL && pData->length>=0) {
-        /*
-         * subtract the header size,
-         * return only the size of the actual data starting at udata_getMemory()
-         */
-        return pData->length-udata_getHeaderSize(pData->pHeader);
-    } else {
-        return -1;
-    }
-}
-
-/**
- * Get the memory including the data header.
- * Used in cintltst/udatatst.c
- * @internal
- */
-U_CAPI const void * U_EXPORT2
-udata_getRawMemory(const UDataMemory *pData) {
-    if(pData!=NULL && pData->pHeader!=NULL) {
-        return pData->pHeader;
-    } else {
-        return NULL;
-    }
-}
-
-U_CFUNC UBool UDataMemory_isLoaded(const UDataMemory *This) {
-    return This->pHeader != NULL;
-}
index 385a777..a05dd69 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/udataswp.c b/source/common/udataswp.c
deleted file mode 100644 (file)
index f47ac1f..0000000
+++ /dev/null
@@ -1,473 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2003-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  udataswp.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2003jun05
-*   created by: Markus W. Scherer
-*
-*   Definitions for ICU data transformations for different platforms,
-*   changing between big- and little-endian data and/or between
-*   charset families (ASCII<->EBCDIC).
-*/
-
-#include <stdarg.h>
-#include "unicode/utypes.h"
-#include "unicode/udata.h" /* UDataInfo */
-#include "ucmndata.h" /* DataHeader */
-#include "cmemory.h"
-#include "udataswp.h"
-
-/* swapping primitives ------------------------------------------------------ */
-
-static int32_t U_CALLCONV
-uprv_swapArray16(const UDataSwapper *ds,
-                 const void *inData, int32_t length, void *outData,
-                 UErrorCode *pErrorCode) {
-    const uint16_t *p;
-    uint16_t *q;
-    int32_t count;
-    uint16_t x;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length&1)!=0 || outData==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* setup and swapping */
-    p=(const uint16_t *)inData;
-    q=(uint16_t *)outData;
-    count=length/2;
-    while(count>0) {
-        x=*p++;
-        *q++=(uint16_t)((x<<8)|(x>>8));
-        --count;
-    }
-
-    return length;
-}
-
-static int32_t U_CALLCONV
-uprv_copyArray16(const UDataSwapper *ds,
-                 const void *inData, int32_t length, void *outData,
-                 UErrorCode *pErrorCode) {
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length&1)!=0 || outData==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    if(length>0 && inData!=outData) {
-        uprv_memcpy(outData, inData, length);
-    }
-    return length;
-}
-
-static int32_t U_CALLCONV
-uprv_swapArray32(const UDataSwapper *ds,
-                 const void *inData, int32_t length, void *outData,
-                 UErrorCode *pErrorCode) {
-    const uint32_t *p;
-    uint32_t *q;
-    int32_t count;
-    uint32_t x;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length&3)!=0 || outData==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* setup and swapping */
-    p=(const uint32_t *)inData;
-    q=(uint32_t *)outData;
-    count=length/4;
-    while(count>0) {
-        x=*p++;
-        *q++=(uint32_t)((x<<24)|((x<<8)&0xff0000)|((x>>8)&0xff00)|(x>>24));
-        --count;
-    }
-
-    return length;
-}
-
-static int32_t U_CALLCONV
-uprv_copyArray32(const UDataSwapper *ds,
-                 const void *inData, int32_t length, void *outData,
-                 UErrorCode *pErrorCode) {
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length&3)!=0 || outData==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    if(length>0 && inData!=outData) {
-        uprv_memcpy(outData, inData, length);
-    }
-    return length;
-}
-
-static int32_t U_CALLCONV
-uprv_swapArray64(const UDataSwapper *ds,
-                 const void *inData, int32_t length, void *outData,
-                 UErrorCode *pErrorCode) {
-    const uint64_t *p;
-    uint64_t *q;
-    int32_t count;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length&7)!=0 || outData==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* setup and swapping */
-    p=(const uint64_t *)inData;
-    q=(uint64_t *)outData;
-    count=length/8;
-    while(count>0) {
-        uint64_t x=*p++;
-        x=(x<<56)|((x&0xff00)<<40)|((x&0xff0000)<<24)|((x&0xff000000)<<8)|
-            ((x>>8)&0xff000000)|((x>>24)&0xff0000)|((x>>40)&0xff00)|(x>>56);
-        *q++=x;
-        --count;
-    }
-
-    return length;
-}
-
-static int32_t U_CALLCONV
-uprv_copyArray64(const UDataSwapper *ds,
-                 const void *inData, int32_t length, void *outData,
-                 UErrorCode *pErrorCode) {
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length&7)!=0 || outData==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    if(length>0 && inData!=outData) {
-        uprv_memcpy(outData, inData, length);
-    }
-    return length;
-}
-
-static uint16_t U_CALLCONV
-uprv_readSwapUInt16(uint16_t x) {
-    return (uint16_t)((x<<8)|(x>>8));
-}
-
-static uint16_t U_CALLCONV
-uprv_readDirectUInt16(uint16_t x) {
-    return x;
-}
-
-static uint32_t U_CALLCONV
-uprv_readSwapUInt32(uint32_t x) {
-    return (uint32_t)((x<<24)|((x<<8)&0xff0000)|((x>>8)&0xff00)|(x>>24));
-}
-
-static uint32_t U_CALLCONV
-uprv_readDirectUInt32(uint32_t x) {
-    return x;
-}
-
-static void U_CALLCONV
-uprv_writeSwapUInt16(uint16_t *p, uint16_t x) {
-    *p=(uint16_t)((x<<8)|(x>>8));
-}
-
-static void U_CALLCONV
-uprv_writeDirectUInt16(uint16_t *p, uint16_t x) {
-    *p=x;
-}
-
-static void U_CALLCONV
-uprv_writeSwapUInt32(uint32_t *p, uint32_t x) {
-    *p=(uint32_t)((x<<24)|((x<<8)&0xff0000)|((x>>8)&0xff00)|(x>>24));
-}
-
-static void U_CALLCONV
-uprv_writeDirectUInt32(uint32_t *p, uint32_t x) {
-    *p=x;
-}
-
-U_CAPI int16_t U_EXPORT2
-udata_readInt16(const UDataSwapper *ds, int16_t x) {
-    return (int16_t)ds->readUInt16((uint16_t)x);
-}
-
-U_CAPI int32_t U_EXPORT2
-udata_readInt32(const UDataSwapper *ds, int32_t x) {
-    return (int32_t)ds->readUInt32((uint32_t)x);
-}
-
-/**
- * Swap a block of invariant, NUL-terminated strings, but not padding
- * bytes after the last string.
- * @internal
- */
-U_CAPI int32_t U_EXPORT2
-udata_swapInvStringBlock(const UDataSwapper *ds,
-                         const void *inData, int32_t length, void *outData,
-                         UErrorCode *pErrorCode) {
-    const char *inChars;
-    int32_t stringsLength;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* reduce the strings length to not include bytes after the last NUL */
-    inChars=(const char *)inData;
-    stringsLength=length;
-    while(stringsLength>0 && inChars[stringsLength-1]!=0) {
-        --stringsLength;
-    }
-
-    /* swap up to the last NUL */
-    ds->swapInvChars(ds, inData, stringsLength, outData, pErrorCode);
-
-    /* copy the bytes after the last NUL */
-    if(inData!=outData && length>stringsLength) {
-        uprv_memcpy((char *)outData+stringsLength, inChars+stringsLength, length-stringsLength);
-    }
-
-    /* return the length including padding bytes */
-    if(U_SUCCESS(*pErrorCode)) {
-        return length;
-    } else {
-        return 0;
-    }
-}
-
-U_CAPI void U_EXPORT2
-udata_printError(const UDataSwapper *ds,
-                 const char *fmt,
-                 ...) {
-    va_list args;
-
-    if(ds->printError!=NULL) {
-        va_start(args, fmt);
-        ds->printError(ds->printErrorContext, fmt, args);
-        va_end(args);
-    }
-}
-
-/* swap a data header ------------------------------------------------------- */
-
-U_CAPI int32_t U_EXPORT2
-udata_swapDataHeader(const UDataSwapper *ds,
-                     const void *inData, int32_t length, void *outData,
-                     UErrorCode *pErrorCode) {
-    const DataHeader *pHeader;
-    uint16_t headerSize, infoSize;
-
-    /* argument checking */
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<-1 || (length>0 && outData==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* check minimum length and magic bytes */
-    pHeader=(const DataHeader *)inData;
-    if( (length>=0 && length<(int32_t)sizeof(DataHeader)) ||
-        pHeader->dataHeader.magic1!=0xda ||
-        pHeader->dataHeader.magic2!=0x27 ||
-        pHeader->info.sizeofUChar!=2
-    ) {
-        udata_printError(ds, "udata_swapDataHeader(): initial bytes do not look like ICU data\n");
-        *pErrorCode=U_UNSUPPORTED_ERROR;
-        return 0;
-    }
-
-    headerSize=ds->readUInt16(pHeader->dataHeader.headerSize);
-    infoSize=ds->readUInt16(pHeader->info.size);
-
-    if( headerSize<sizeof(DataHeader) ||
-        infoSize<sizeof(UDataInfo) ||
-        headerSize<(sizeof(pHeader->dataHeader)+infoSize) ||
-        (length>=0 && length<headerSize)
-    ) {
-        udata_printError(ds, "udata_swapDataHeader(): header size mismatch - headerSize %d infoSize %d length %d\n",
-                         headerSize, infoSize, length);
-        *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-        return 0;
-    }
-
-    if(length>0) {
-        DataHeader *outHeader;
-        const char *s;
-        int32_t maxLength;
-
-        /* Most of the fields are just bytes and need no swapping. */
-        if(inData!=outData) {
-            uprv_memcpy(outData, inData, headerSize);
-        }
-        outHeader=(DataHeader *)outData;
-
-        outHeader->info.isBigEndian = ds->outIsBigEndian;
-        outHeader->info.charsetFamily = ds->outCharset;
-
-        /* swap headerSize */
-        ds->swapArray16(ds, &pHeader->dataHeader.headerSize, 2, &outHeader->dataHeader.headerSize, pErrorCode);
-
-        /* swap UDataInfo size and reservedWord */
-        ds->swapArray16(ds, &pHeader->info.size, 4, &outHeader->info.size, pErrorCode);
-
-        /* swap copyright statement after the UDataInfo */
-        infoSize+=sizeof(pHeader->dataHeader);
-        s=(const char *)inData+infoSize;
-        maxLength=headerSize-infoSize;
-        /* get the length of the string */
-        for(length=0; length<maxLength && s[length]!=0; ++length) {}
-        /* swap the string contents */
-        ds->swapInvChars(ds, s, length, (char *)outData+infoSize, pErrorCode);
-    }
-
-    return headerSize;
-}
-
-/* API functions ------------------------------------------------------------ */
-
-U_CAPI UDataSwapper * U_EXPORT2
-udata_openSwapper(UBool inIsBigEndian, uint8_t inCharset,
-                  UBool outIsBigEndian, uint8_t outCharset,
-                  UErrorCode *pErrorCode) {
-    UDataSwapper *swapper;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return NULL;
-    }
-    if(inCharset>U_EBCDIC_FAMILY || outCharset>U_EBCDIC_FAMILY) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-
-    /* allocate the swapper */
-    swapper=uprv_malloc(sizeof(UDataSwapper));
-    if(swapper==NULL) {
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-    uprv_memset(swapper, 0, sizeof(UDataSwapper));
-
-    /* set values and functions pointers according to in/out parameters */
-    swapper->inIsBigEndian=inIsBigEndian;
-    swapper->inCharset=inCharset;
-    swapper->outIsBigEndian=outIsBigEndian;
-    swapper->outCharset=outCharset;
-
-    swapper->readUInt16= inIsBigEndian==U_IS_BIG_ENDIAN ? uprv_readDirectUInt16 : uprv_readSwapUInt16;
-    swapper->readUInt32= inIsBigEndian==U_IS_BIG_ENDIAN ? uprv_readDirectUInt32 : uprv_readSwapUInt32;
-
-    swapper->writeUInt16= outIsBigEndian==U_IS_BIG_ENDIAN ? uprv_writeDirectUInt16 : uprv_writeSwapUInt16;
-    swapper->writeUInt32= outIsBigEndian==U_IS_BIG_ENDIAN ? uprv_writeDirectUInt32 : uprv_writeSwapUInt32;
-
-    swapper->compareInvChars= outCharset==U_ASCII_FAMILY ? uprv_compareInvAscii : uprv_compareInvEbcdic;
-
-    if(inIsBigEndian==outIsBigEndian) {
-        swapper->swapArray16=uprv_copyArray16;
-        swapper->swapArray32=uprv_copyArray32;
-        swapper->swapArray64=uprv_copyArray64;
-    } else {
-        swapper->swapArray16=uprv_swapArray16;
-        swapper->swapArray32=uprv_swapArray32;
-        swapper->swapArray64=uprv_swapArray64;
-    }
-
-    if(inCharset==U_ASCII_FAMILY) {
-        swapper->swapInvChars= outCharset==U_ASCII_FAMILY ? uprv_copyAscii : uprv_ebcdicFromAscii;
-    } else /* U_EBCDIC_FAMILY */ {
-        swapper->swapInvChars= outCharset==U_EBCDIC_FAMILY ? uprv_copyEbcdic : uprv_asciiFromEbcdic;
-    }
-
-    return swapper;
-}
-
-U_CAPI UDataSwapper * U_EXPORT2
-udata_openSwapperForInputData(const void *data, int32_t length,
-                              UBool outIsBigEndian, uint8_t outCharset,
-                              UErrorCode *pErrorCode) {
-    const DataHeader *pHeader;
-    uint16_t headerSize, infoSize;
-    UBool inIsBigEndian;
-    int8_t inCharset;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return NULL;
-    }
-    if( data==NULL ||
-        (length>=0 && length<(int32_t)sizeof(DataHeader)) ||
-        outCharset>U_EBCDIC_FAMILY
-    ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-
-    pHeader=(const DataHeader *)data;
-    if( (length>=0 && length<sizeof(DataHeader)) ||
-        pHeader->dataHeader.magic1!=0xda ||
-        pHeader->dataHeader.magic2!=0x27 ||
-        pHeader->info.sizeofUChar!=2
-    ) {
-        *pErrorCode=U_UNSUPPORTED_ERROR;
-        return 0;
-    }
-
-    inIsBigEndian=(UBool)pHeader->info.isBigEndian;
-    inCharset=pHeader->info.charsetFamily;
-
-    if(inIsBigEndian==U_IS_BIG_ENDIAN) {
-        headerSize=pHeader->dataHeader.headerSize;
-        infoSize=pHeader->info.size;
-    } else {
-        headerSize=uprv_readSwapUInt16(pHeader->dataHeader.headerSize);
-        infoSize=uprv_readSwapUInt16(pHeader->info.size);
-    }
-
-    if( headerSize<sizeof(DataHeader) ||
-        infoSize<sizeof(UDataInfo) ||
-        headerSize<(sizeof(pHeader->dataHeader)+infoSize) ||
-        (length>=0 && length<headerSize)
-    ) {
-        *pErrorCode=U_UNSUPPORTED_ERROR;
-        return 0;
-    }
-
-    return udata_openSwapper(inIsBigEndian, inCharset, outIsBigEndian, outCharset, pErrorCode);
-}
-
-U_CAPI void U_EXPORT2
-udata_closeSwapper(UDataSwapper *ds) {
-    uprv_free(ds);
-}
index 07e06c2..5303870 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  udataswp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5bd7ad3..05f36a0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uelement.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/uenum.c b/source/common/uenum.c
deleted file mode 100644 (file)
index 71c06b5..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2002-2012, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  uenum.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:2
-*
-*   created on: 2002jul08
-*   created by: Vladimir Weinstein
-*/
-
-#include "unicode/putil.h"
-#include "uenumimp.h"
-#include "cmemory.h"
-
-/* Layout of the baseContext buffer. */
-typedef struct {
-    int32_t len;  /* number of bytes available starting at 'data' */
-    char    data; /* actual data starts here */
-} _UEnumBuffer;
-
-/* Extra bytes to allocate in the baseContext buffer. */
-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) {
-
-    if (en->baseContext != NULL) {
-        if (((_UEnumBuffer*) en->baseContext)->len < capacity) {
-            capacity += PAD;
-            en->baseContext = uprv_realloc(en->baseContext,
-                                           sizeof(int32_t) + capacity);
-            if (en->baseContext == NULL) {
-                return NULL;
-            }
-            ((_UEnumBuffer*) en->baseContext)->len = capacity;
-        }
-    } else {
-        capacity += PAD;
-        en->baseContext = uprv_malloc(sizeof(int32_t) + capacity);
-        if (en->baseContext == NULL) {
-            return NULL;
-        }
-        ((_UEnumBuffer*) en->baseContext)->len = capacity;
-    }
-    
-    return (void*) & ((_UEnumBuffer*) en->baseContext)->data;
-}
-
-U_CAPI void U_EXPORT2
-uenum_close(UEnumeration* en)
-{
-    if (en) {
-        if (en->close != NULL) {
-            if (en->baseContext) {
-                uprv_free(en->baseContext);
-            }
-            en->close(en);
-        } else { /* this seems dangerous, but we better kill the object */
-            uprv_free(en);
-        }
-    }
-}
-
-U_CAPI int32_t U_EXPORT2
-uenum_count(UEnumeration* en, UErrorCode* status)
-{
-    if (!en || U_FAILURE(*status)) {
-        return -1;
-    }
-    if (en->count != NULL) {
-        return en->count(en, status);
-    } else {
-        *status = U_UNSUPPORTED_ERROR;
-        return -1;
-    }
-}
-
-/* Don't call this directly. Only uenum_unext should be calling this. */
-U_CAPI const UChar* U_EXPORT2
-uenum_unextDefault(UEnumeration* en,
-            int32_t* resultLength,
-            UErrorCode* status)
-{
-    UChar *ustr = NULL;
-    int32_t len = 0;
-    if (en->next != NULL) {
-        const char *cstr = en->next(en, &len, status);
-        if (cstr != NULL) {
-            ustr = (UChar*) _getBuffer(en, (len+1) * sizeof(UChar));
-            if (ustr == NULL) {
-                *status = U_MEMORY_ALLOCATION_ERROR;
-            } else {
-                u_charsToUChars(cstr, ustr, len+1);
-            }
-        }
-    } else {
-        *status = U_UNSUPPORTED_ERROR;
-    }
-    if (resultLength) {
-        *resultLength = len;
-    }
-    return ustr;
-}
-
-/* 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)
-{
-    if (en->uNext != NULL) {
-        char *tempCharVal;
-        const UChar *tempUCharVal = en->uNext(en, resultLength, status);
-        if (tempUCharVal == NULL) {
-            return NULL;
-        }
-        tempCharVal = (char*)
-            _getBuffer(en, (*resultLength+1) * sizeof(char));
-        if (!tempCharVal) {
-            *status = U_MEMORY_ALLOCATION_ERROR;
-            return NULL;
-        }
-        u_UCharsToChars(tempUCharVal, tempCharVal, *resultLength + 1);
-        return tempCharVal;
-    } else {
-        *status = U_UNSUPPORTED_ERROR;
-        return NULL;
-    }
-}
-
-U_CAPI const UChar* U_EXPORT2
-uenum_unext(UEnumeration* en,
-            int32_t* resultLength,
-            UErrorCode* status)
-{
-    if (!en || U_FAILURE(*status)) {
-        return NULL;
-    }
-    if (en->uNext != NULL) {
-        return en->uNext(en, resultLength, status);
-    } else {
-        *status = U_UNSUPPORTED_ERROR;
-        return NULL;
-    }
-}
-
-U_CAPI const char* U_EXPORT2
-uenum_next(UEnumeration* en,
-          int32_t* resultLength,
-          UErrorCode* status)
-{
-    if (!en || U_FAILURE(*status)) {
-        return NULL;
-    }
-    if (en->next != NULL) {
-        if (resultLength != NULL) {
-            return en->next(en, resultLength, status);
-        }
-        else {
-            int32_t dummyLength=0;
-            return en->next(en, &dummyLength, status);
-        }
-    } else {
-        *status = U_UNSUPPORTED_ERROR;
-        return NULL;
-    }
-}
-
-U_CAPI void U_EXPORT2
-uenum_reset(UEnumeration* en, UErrorCode* status)
-{
-    if (!en || U_FAILURE(*status)) {
-        return;
-    }
-    if (en->reset != NULL) {
-        en->reset(en, status);
-    } else {
-        *status = U_UNSUPPORTED_ERROR;
-    }
-}
index 5d01f01..9c9df75 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uenumimp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:2
 *
diff --git a/source/common/uhash.c b/source/common/uhash.c
deleted file mode 100644 (file)
index 282f89f..0000000
+++ /dev/null
@@ -1,975 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*   Copyright (C) 1997-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-******************************************************************************
-*   Date        Name        Description
-*   03/22/00    aliu        Adapted from original C++ ICU Hashtable.
-*   07/06/01    aliu        Modified to support int32_t keys on
-*                           platforms with sizeof(void*) < 32.
-******************************************************************************
-*/
-
-#include "uhash.h"
-#include "unicode/ustring.h"
-#include "cstring.h"
-#include "cmemory.h"
-#include "uassert.h"
-#include "ustr_imp.h"
-
-/* This hashtable is implemented as a double hash.  All elements are
- * stored in a single array with no secondary storage for collision
- * resolution (no linked list, etc.).  When there is a hash collision
- * (when two unequal keys have the same hashcode) we resolve this by
- * using a secondary hash.  The secondary hash is an increment
- * computed as a hash function (a different one) of the primary
- * hashcode.  This increment is added to the initial hash value to
- * obtain further slots assigned to the same hash code.  For this to
- * work, the length of the array and the increment must be relatively
- * prime.  The easiest way to achieve this is to have the length of
- * the array be prime, and the increment be any value from
- * 1..length-1.
- *
- * Hashcodes are 32-bit integers.  We make sure all hashcodes are
- * non-negative by masking off the top bit.  This has two effects: (1)
- * modulo arithmetic is simplified.  If we allowed negative hashcodes,
- * then when we computed hashcode % length, we could get a negative
- * result, which we would then have to adjust back into range.  It's
- * simpler to just make hashcodes non-negative. (2) It makes it easy
- * to check for empty vs. occupied slots in the table.  We just mark
- * empty or deleted slots with a negative hashcode.
- *
- * The central function is _uhash_find().  This function looks for a
- * slot matching the given key and hashcode.  If one is found, it
- * returns a pointer to that slot.  If the table is full, and no match
- * is found, it returns NULL -- in theory.  This would make the code
- * more complicated, since all callers of _uhash_find() would then
- * have to check for a NULL result.  To keep this from happening, we
- * don't allow the table to fill.  When there is only one
- * empty/deleted slot left, uhash_put() will refuse to increase the
- * count, and fail.  This simplifies the code.  In practice, one will
- * seldom encounter this using default UHashtables.  However, if a
- * hashtable is set to a U_FIXED resize policy, or if memory is
- * exhausted, then the table may fill.
- *
- * High and low water ratios control rehashing.  They establish levels
- * of fullness (from 0 to 1) outside of which the data array is
- * reallocated and repopulated.  Setting the low water ratio to zero
- * means the table will never shrink.  Setting the high water ratio to
- * one means the table will never grow.  The ratios should be
- * coordinated with the ratio between successive elements of the
- * PRIMES table, so that when the primeIndex is incremented or
- * decremented during rehashing, it brings the ratio of count / length
- * back into the desired range (between low and high water ratios).
- */
-
-/********************************************************************
- * PRIVATE Constants, Macros
- ********************************************************************/
-
-/* This is a list of non-consecutive primes chosen such that
- * PRIMES[i+1] ~ 2*PRIMES[i].  (Currently, the ratio ranges from 1.81
- * to 2.18; the inverse ratio ranges from 0.459 to 0.552.)  If this
- * ratio is changed, the low and high water ratios should also be
- * adjusted to suit.
- *
- * These prime numbers were also chosen so that they are the largest
- * prime number while being less than a power of two.
- */
-static const int32_t PRIMES[] = {
-    13, 31, 61, 127, 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
-    65521, 131071, 262139, 524287, 1048573, 2097143, 4194301, 8388593,
-    16777213, 33554393, 67108859, 134217689, 268435399, 536870909,
-    1073741789, 2147483647 /*, 4294967291 */
-};
-
-#define PRIMES_LENGTH UPRV_LENGTHOF(PRIMES)
-#define DEFAULT_PRIME_INDEX 3
-
-/* These ratios are tuned to the PRIMES array such that a resize
- * places the table back into the zone of non-resizing.  That is,
- * after a call to _uhash_rehash(), a subsequent call to
- * _uhash_rehash() should do nothing (should not churn).  This is only
- * a potential problem with U_GROW_AND_SHRINK.
- */
-static const float RESIZE_POLICY_RATIO_TABLE[6] = {
-    /* low, high water ratio */
-    0.0F, 0.5F, /* U_GROW: Grow on demand, do not shrink */
-    0.1F, 0.5F, /* U_GROW_AND_SHRINK: Grow and shrink on demand */
-    0.0F, 1.0F  /* U_FIXED: Never change size */
-};
-
-/*
-  Invariants for hashcode values:
-
-  * DELETED < 0
-  * EMPTY < 0
-  * Real hashes >= 0
-
-  Hashcodes may not start out this way, but internally they are
-  adjusted so that they are always positive.  We assume 32-bit
-  hashcodes; adjust these constants for other hashcode sizes.
-*/
-#define HASH_DELETED    ((int32_t) 0x80000000)
-#define HASH_EMPTY      ((int32_t) HASH_DELETED + 1)
-
-#define IS_EMPTY_OR_DELETED(x) ((x) < 0)
-
-/* This macro expects a UHashTok.pointer as its keypointer and
-   valuepointer parameters */
-#define HASH_DELETE_KEY_VALUE(hash, keypointer, valuepointer) \
-            if (hash->keyDeleter != NULL && keypointer != NULL) { \
-                (*hash->keyDeleter)(keypointer); \
-            } \
-            if (hash->valueDeleter != NULL && valuepointer != NULL) { \
-                (*hash->valueDeleter)(valuepointer); \
-            }
-
-/*
- * Constants for hinting whether a key or value is an integer
- * or a pointer.  If a hint bit is zero, then the associated
- * token is assumed to be an integer.
- */
-#define HINT_KEY_POINTER   (1)
-#define HINT_VALUE_POINTER (2)
-
-/********************************************************************
- * PRIVATE Implementation
- ********************************************************************/
-
-static UHashTok
-_uhash_setElement(UHashtable *hash, UHashElement* e,
-                  int32_t hashcode,
-                  UHashTok key, UHashTok value, int8_t hint) {
-
-    UHashTok oldValue = e->value;
-    if (hash->keyDeleter != NULL && e->key.pointer != NULL &&
-        e->key.pointer != key.pointer) { /* Avoid double deletion */
-        (*hash->keyDeleter)(e->key.pointer);
-    }
-    if (hash->valueDeleter != NULL) {
-        if (oldValue.pointer != NULL &&
-            oldValue.pointer != value.pointer) { /* Avoid double deletion */
-            (*hash->valueDeleter)(oldValue.pointer);
-        }
-        oldValue.pointer = NULL;
-    }
-    /* Compilers should copy the UHashTok union correctly, but even if
-     * they do, memory heap tools (e.g. BoundsChecker) can get
-     * confused when a pointer is cloaked in a union and then copied.
-     * TO ALLEVIATE THIS, we use hints (based on what API the user is
-     * calling) to copy pointers when we know the user thinks
-     * something is a pointer. */
-    if (hint & HINT_KEY_POINTER) {
-        e->key.pointer = key.pointer;
-    } else {
-        e->key = key;
-    }
-    if (hint & HINT_VALUE_POINTER) {
-        e->value.pointer = value.pointer;
-    } else {
-        e->value = value;
-    }
-    e->hashcode = hashcode;
-    return oldValue;
-}
-
-/**
- * Assumes that the given element is not empty or deleted.
- */
-static UHashTok
-_uhash_internalRemoveElement(UHashtable *hash, UHashElement* e) {
-    UHashTok empty;
-    U_ASSERT(!IS_EMPTY_OR_DELETED(e->hashcode));
-    --hash->count;
-    empty.pointer = NULL; empty.integer = 0;
-    return _uhash_setElement(hash, e, HASH_DELETED, empty, empty, 0);
-}
-
-static void
-_uhash_internalSetResizePolicy(UHashtable *hash, enum UHashResizePolicy policy) {
-    U_ASSERT(hash != NULL);
-    U_ASSERT(((int32_t)policy) >= 0);
-    U_ASSERT(((int32_t)policy) < 3);
-    hash->lowWaterRatio  = RESIZE_POLICY_RATIO_TABLE[policy * 2];
-    hash->highWaterRatio = RESIZE_POLICY_RATIO_TABLE[policy * 2 + 1];
-}
-
-/**
- * Allocate internal data array of a size determined by the given
- * prime index.  If the index is out of range it is pinned into range.
- * If the allocation fails the status is set to
- * U_MEMORY_ALLOCATION_ERROR and all array storage is freed.  In
- * either case the previous array pointer is overwritten.
- *
- * Caller must ensure primeIndex is in range 0..PRIME_LENGTH-1.
- */
-static void
-_uhash_allocate(UHashtable *hash,
-                int32_t primeIndex,
-                UErrorCode *status) {
-
-    UHashElement *p, *limit;
-    UHashTok emptytok;
-
-    if (U_FAILURE(*status)) return;
-
-    U_ASSERT(primeIndex >= 0 && primeIndex < PRIMES_LENGTH);
-
-    hash->primeIndex = primeIndex;
-    hash->length = PRIMES[primeIndex];
-
-    p = hash->elements = (UHashElement*)
-        uprv_malloc(sizeof(UHashElement) * hash->length);
-
-    if (hash->elements == NULL) {
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return;
-    }
-
-    emptytok.pointer = NULL; /* Only one of these two is needed */
-    emptytok.integer = 0;    /* but we don't know which one. */
-    
-    limit = p + hash->length;
-    while (p < limit) {
-        p->key = emptytok;
-        p->value = emptytok;
-        p->hashcode = HASH_EMPTY;
-        ++p;
-    }
-
-    hash->count = 0;
-    hash->lowWaterMark = (int32_t)(hash->length * hash->lowWaterRatio);
-    hash->highWaterMark = (int32_t)(hash->length * hash->highWaterRatio);
-}
-
-static UHashtable*
-_uhash_init(UHashtable *result,
-              UHashFunction *keyHash, 
-              UKeyComparator *keyComp,
-              UValueComparator *valueComp,
-              int32_t primeIndex,
-              UErrorCode *status)
-{
-    if (U_FAILURE(*status)) return NULL;
-    U_ASSERT(keyHash != NULL);
-    U_ASSERT(keyComp != NULL);
-
-    result->keyHasher       = keyHash;
-    result->keyComparator   = keyComp;
-    result->valueComparator = valueComp;
-    result->keyDeleter      = NULL;
-    result->valueDeleter    = NULL;
-    result->allocated       = FALSE;
-    _uhash_internalSetResizePolicy(result, U_GROW);
-
-    _uhash_allocate(result, primeIndex, status);
-
-    if (U_FAILURE(*status)) {
-        return NULL;
-    }
-
-    return result;
-}
-
-static UHashtable*
-_uhash_create(UHashFunction *keyHash, 
-              UKeyComparator *keyComp,
-              UValueComparator *valueComp,
-              int32_t primeIndex,
-              UErrorCode *status) {
-    UHashtable *result;
-
-    if (U_FAILURE(*status)) return NULL;
-
-    result = (UHashtable*) uprv_malloc(sizeof(UHashtable));
-    if (result == NULL) {
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-
-    _uhash_init(result, keyHash, keyComp, valueComp, primeIndex, status);
-    result->allocated       = TRUE;
-
-    if (U_FAILURE(*status)) {
-        uprv_free(result);
-        return NULL;
-    }
-
-    return result;
-}
-
-/**
- * Look for a key in the table, or if no such key exists, the first
- * empty slot matching the given hashcode.  Keys are compared using
- * the keyComparator function.
- *
- * First find the start position, which is the hashcode modulo
- * the length.  Test it to see if it is:
- *
- * a. identical:  First check the hash values for a quick check,
- *    then compare keys for equality using keyComparator.
- * b. deleted
- * c. empty
- *
- * Stop if it is identical or empty, otherwise continue by adding a
- * "jump" value (moduloing by the length again to keep it within
- * range) and retesting.  For efficiency, there need enough empty
- * values so that the searchs stop within a reasonable amount of time.
- * This can be changed by changing the high/low water marks.
- *
- * In theory, this function can return NULL, if it is full (no empty
- * or deleted slots) and if no matching key is found.  In practice, we
- * prevent this elsewhere (in uhash_put) by making sure the last slot
- * in the table is never filled.
- *
- * The size of the table should be prime for this algorithm to work;
- * otherwise we are not guaranteed that the jump value (the secondary
- * hash) is relatively prime to the table length.
- */
-static UHashElement*
-_uhash_find(const UHashtable *hash, UHashTok key,
-            int32_t hashcode) {
-
-    int32_t firstDeleted = -1;  /* assume invalid index */
-    int32_t theIndex, startIndex;
-    int32_t jump = 0; /* lazy evaluate */
-    int32_t tableHash;
-    UHashElement *elements = hash->elements;
-
-    hashcode &= 0x7FFFFFFF; /* must be positive */
-    startIndex = theIndex = (hashcode ^ 0x4000000) % hash->length;
-
-    do {
-        tableHash = elements[theIndex].hashcode;
-        if (tableHash == hashcode) {          /* quick check */
-            if ((*hash->keyComparator)(key, elements[theIndex].key)) {
-                return &(elements[theIndex]);
-            }
-        } else if (!IS_EMPTY_OR_DELETED(tableHash)) {
-            /* We have hit a slot which contains a key-value pair,
-             * but for which the hash code does not match.  Keep
-             * looking.
-             */
-        } else if (tableHash == HASH_EMPTY) { /* empty, end o' the line */
-            break;
-        } else if (firstDeleted < 0) { /* remember first deleted */
-            firstDeleted = theIndex;
-        }
-        if (jump == 0) { /* lazy compute jump */
-            /* The jump value must be relatively prime to the table
-             * length.  As long as the length is prime, then any value
-             * 1..length-1 will be relatively prime to it.
-             */
-            jump = (hashcode % (hash->length - 1)) + 1;
-        }
-        theIndex = (theIndex + jump) % hash->length;
-    } while (theIndex != startIndex);
-
-    if (firstDeleted >= 0) {
-        theIndex = firstDeleted; /* reset if had deleted slot */
-    } else if (tableHash != HASH_EMPTY) {
-        /* We get to this point if the hashtable is full (no empty or
-         * deleted slots), and we've failed to find a match.  THIS
-         * WILL NEVER HAPPEN as long as uhash_put() makes sure that
-         * count is always < length.
-         */
-        U_ASSERT(FALSE);
-        return NULL; /* Never happens if uhash_put() behaves */
-    }
-    return &(elements[theIndex]);
-}
-
-/**
- * Attempt to grow or shrink the data arrays in order to make the
- * count fit between the high and low water marks.  hash_put() and
- * hash_remove() call this method when the count exceeds the high or
- * low water marks.  This method may do nothing, if memory allocation
- * fails, or if the count is already in range, or if the length is
- * already at the low or high limit.  In any case, upon return the
- * arrays will be valid.
- */
-static void
-_uhash_rehash(UHashtable *hash, UErrorCode *status) {
-
-    UHashElement *old = hash->elements;
-    int32_t oldLength = hash->length;
-    int32_t newPrimeIndex = hash->primeIndex;
-    int32_t i;
-
-    if (hash->count > hash->highWaterMark) {
-        if (++newPrimeIndex >= PRIMES_LENGTH) {
-            return;
-        }
-    } else if (hash->count < hash->lowWaterMark) {
-        if (--newPrimeIndex < 0) {
-            return;
-        }
-    } else {
-        return;
-    }
-
-    _uhash_allocate(hash, newPrimeIndex, status);
-
-    if (U_FAILURE(*status)) {
-        hash->elements = old;
-        hash->length = oldLength;       
-        return;
-    }
-
-    for (i = oldLength - 1; i >= 0; --i) {
-        if (!IS_EMPTY_OR_DELETED(old[i].hashcode)) {
-            UHashElement *e = _uhash_find(hash, old[i].key, old[i].hashcode);
-            U_ASSERT(e != NULL);
-            U_ASSERT(e->hashcode == HASH_EMPTY);
-            e->key = old[i].key;
-            e->value = old[i].value;
-            e->hashcode = old[i].hashcode;
-            ++hash->count;
-        }
-    }
-
-    uprv_free(old);
-}
-
-static UHashTok
-_uhash_remove(UHashtable *hash,
-              UHashTok key) {
-    /* First find the position of the key in the table.  If the object
-     * has not been removed already, remove it.  If the user wanted
-     * keys deleted, then delete it also.  We have to put a special
-     * hashcode in that position that means that something has been
-     * deleted, since when we do a find, we have to continue PAST any
-     * deleted values.
-     */
-    UHashTok result;
-    UHashElement* e = _uhash_find(hash, key, hash->keyHasher(key));
-    U_ASSERT(e != NULL);
-    result.pointer = NULL;
-    result.integer = 0;
-    if (!IS_EMPTY_OR_DELETED(e->hashcode)) {
-        result = _uhash_internalRemoveElement(hash, e);
-        if (hash->count < hash->lowWaterMark) {
-            UErrorCode status = U_ZERO_ERROR;
-            _uhash_rehash(hash, &status);
-        }
-    }
-    return result;
-}
-
-static UHashTok
-_uhash_put(UHashtable *hash,
-           UHashTok key,
-           UHashTok value,
-           int8_t hint,
-           UErrorCode *status) {
-
-    /* Put finds the position in the table for the new value.  If the
-     * key is already in the table, it is deleted, if there is a
-     * non-NULL keyDeleter.  Then the key, the hash and the value are
-     * all put at the position in their respective arrays.
-     */
-    int32_t hashcode;
-    UHashElement* e;
-    UHashTok emptytok;
-
-    if (U_FAILURE(*status)) {
-        goto err;
-    }
-    U_ASSERT(hash != NULL);
-    /* Cannot always check pointer here or iSeries sees NULL every time. */
-    if ((hint & HINT_VALUE_POINTER) && value.pointer == NULL) {
-        /* Disallow storage of NULL values, since NULL is returned by
-         * get() to indicate an absent key.  Storing NULL == removing.
-         */
-        return _uhash_remove(hash, key);
-    }
-    if (hash->count > hash->highWaterMark) {
-        _uhash_rehash(hash, status);
-        if (U_FAILURE(*status)) {
-            goto err;
-        }
-    }
-
-    hashcode = (*hash->keyHasher)(key);
-    e = _uhash_find(hash, key, hashcode);
-    U_ASSERT(e != NULL);
-
-    if (IS_EMPTY_OR_DELETED(e->hashcode)) {
-        /* Important: We must never actually fill the table up.  If we
-         * do so, then _uhash_find() will return NULL, and we'll have
-         * to check for NULL after every call to _uhash_find().  To
-         * avoid this we make sure there is always at least one empty
-         * or deleted slot in the table.  This only is a problem if we
-         * are out of memory and rehash isn't working.
-         */
-        ++hash->count;
-        if (hash->count == hash->length) {
-            /* Don't allow count to reach length */
-            --hash->count;
-            *status = U_MEMORY_ALLOCATION_ERROR;
-            goto err;
-        }
-    }
-
-    /* We must in all cases handle storage properly.  If there was an
-     * old key, then it must be deleted (if the deleter != NULL).
-     * Make hashcodes stored in table positive.
-     */
-    return _uhash_setElement(hash, e, hashcode & 0x7FFFFFFF, key, value, hint);
-
- err:
-    /* If the deleters are non-NULL, this method adopts its key and/or
-     * value arguments, and we must be sure to delete the key and/or
-     * value in all cases, even upon failure.
-     */
-    HASH_DELETE_KEY_VALUE(hash, key.pointer, value.pointer);
-    emptytok.pointer = NULL; emptytok.integer = 0;
-    return emptytok;
-}
-
-
-/********************************************************************
- * PUBLIC API
- ********************************************************************/
-
-U_CAPI UHashtable* U_EXPORT2
-uhash_open(UHashFunction *keyHash, 
-           UKeyComparator *keyComp,
-           UValueComparator *valueComp,
-           UErrorCode *status) {
-
-    return _uhash_create(keyHash, keyComp, valueComp, DEFAULT_PRIME_INDEX, status);
-}
-
-U_CAPI UHashtable* U_EXPORT2
-uhash_openSize(UHashFunction *keyHash, 
-               UKeyComparator *keyComp,
-               UValueComparator *valueComp,
-               int32_t size,
-               UErrorCode *status) {
-
-    /* Find the smallest index i for which PRIMES[i] >= size. */
-    int32_t i = 0;
-    while (i<(PRIMES_LENGTH-1) && PRIMES[i]<size) {
-        ++i;
-    }
-
-    return _uhash_create(keyHash, keyComp, valueComp, i, status);
-}
-
-U_CAPI UHashtable* U_EXPORT2
-uhash_init(UHashtable *fillinResult,
-           UHashFunction *keyHash, 
-           UKeyComparator *keyComp,
-           UValueComparator *valueComp,
-           UErrorCode *status) {
-
-    return _uhash_init(fillinResult, keyHash, keyComp, valueComp, DEFAULT_PRIME_INDEX, status);
-}
-
-U_CAPI void U_EXPORT2
-uhash_close(UHashtable *hash) {
-    if (hash == NULL) {
-        return;
-    }
-    if (hash->elements != NULL) {
-        if (hash->keyDeleter != NULL || hash->valueDeleter != NULL) {
-            int32_t pos=UHASH_FIRST;
-            UHashElement *e;
-            while ((e = (UHashElement*) uhash_nextElement(hash, &pos)) != NULL) {
-                HASH_DELETE_KEY_VALUE(hash, e->key.pointer, e->value.pointer);
-            }
-        }
-        uprv_free(hash->elements);
-        hash->elements = NULL;
-    }
-    if (hash->allocated) {
-        uprv_free(hash);
-    }
-}
-
-U_CAPI UHashFunction *U_EXPORT2
-uhash_setKeyHasher(UHashtable *hash, UHashFunction *fn) {
-    UHashFunction *result = hash->keyHasher;
-    hash->keyHasher = fn;
-    return result;
-}
-
-U_CAPI UKeyComparator *U_EXPORT2
-uhash_setKeyComparator(UHashtable *hash, UKeyComparator *fn) {
-    UKeyComparator *result = hash->keyComparator;
-    hash->keyComparator = fn;
-    return result;
-}
-U_CAPI UValueComparator *U_EXPORT2 
-uhash_setValueComparator(UHashtable *hash, UValueComparator *fn){
-    UValueComparator *result = hash->valueComparator;
-    hash->valueComparator = fn;
-    return result;
-}
-
-U_CAPI UObjectDeleter *U_EXPORT2
-uhash_setKeyDeleter(UHashtable *hash, UObjectDeleter *fn) {
-    UObjectDeleter *result = hash->keyDeleter;
-    hash->keyDeleter = fn;
-    return result;
-}
-
-U_CAPI UObjectDeleter *U_EXPORT2
-uhash_setValueDeleter(UHashtable *hash, UObjectDeleter *fn) {
-    UObjectDeleter *result = hash->valueDeleter;
-    hash->valueDeleter = fn;
-    return result;
-}
-
-U_CAPI void U_EXPORT2
-uhash_setResizePolicy(UHashtable *hash, enum UHashResizePolicy policy) {
-    UErrorCode status = U_ZERO_ERROR;
-    _uhash_internalSetResizePolicy(hash, policy);
-    hash->lowWaterMark  = (int32_t)(hash->length * hash->lowWaterRatio);
-    hash->highWaterMark = (int32_t)(hash->length * hash->highWaterRatio);    
-    _uhash_rehash(hash, &status);
-}
-
-U_CAPI int32_t U_EXPORT2
-uhash_count(const UHashtable *hash) {
-    return hash->count;
-}
-
-U_CAPI void* U_EXPORT2
-uhash_get(const UHashtable *hash,
-          const void* key) {
-    UHashTok keyholder;
-    keyholder.pointer = (void*) key;
-    return _uhash_find(hash, keyholder, hash->keyHasher(keyholder))->value.pointer;
-}
-
-U_CAPI void* U_EXPORT2
-uhash_iget(const UHashtable *hash,
-           int32_t key) {
-    UHashTok keyholder;
-    keyholder.integer = key;
-    return _uhash_find(hash, keyholder, hash->keyHasher(keyholder))->value.pointer;
-}
-
-U_CAPI int32_t U_EXPORT2
-uhash_geti(const UHashtable *hash,
-           const void* key) {
-    UHashTok keyholder;
-    keyholder.pointer = (void*) key;
-    return _uhash_find(hash, keyholder, hash->keyHasher(keyholder))->value.integer;
-}
-
-U_CAPI int32_t U_EXPORT2
-uhash_igeti(const UHashtable *hash,
-           int32_t key) {
-    UHashTok keyholder;
-    keyholder.integer = key;
-    return _uhash_find(hash, keyholder, hash->keyHasher(keyholder))->value.integer;
-}
-
-U_CAPI void* U_EXPORT2
-uhash_put(UHashtable *hash,
-          void* key,
-          void* value,
-          UErrorCode *status) {
-    UHashTok keyholder, valueholder;
-    keyholder.pointer = key;
-    valueholder.pointer = value;
-    return _uhash_put(hash, keyholder, valueholder,
-                      HINT_KEY_POINTER | HINT_VALUE_POINTER,
-                      status).pointer;
-}
-
-U_CAPI void* U_EXPORT2
-uhash_iput(UHashtable *hash,
-           int32_t key,
-           void* value,
-           UErrorCode *status) {
-    UHashTok keyholder, valueholder;
-    keyholder.integer = key;
-    valueholder.pointer = value;
-    return _uhash_put(hash, keyholder, valueholder,
-                      HINT_VALUE_POINTER,
-                      status).pointer;
-}
-
-U_CAPI int32_t U_EXPORT2
-uhash_puti(UHashtable *hash,
-           void* key,
-           int32_t value,
-           UErrorCode *status) {
-    UHashTok keyholder, valueholder;
-    keyholder.pointer = key;
-    valueholder.integer = value;
-    return _uhash_put(hash, keyholder, valueholder,
-                      HINT_KEY_POINTER,
-                      status).integer;
-}
-
-
-U_CAPI int32_t U_EXPORT2
-uhash_iputi(UHashtable *hash,
-           int32_t key,
-           int32_t value,
-           UErrorCode *status) {
-    UHashTok keyholder, valueholder;
-    keyholder.integer = key;
-    valueholder.integer = value;
-    return _uhash_put(hash, keyholder, valueholder,
-                      0, /* neither is a ptr */
-                      status).integer;
-}
-
-U_CAPI void* U_EXPORT2
-uhash_remove(UHashtable *hash,
-             const void* key) {
-    UHashTok keyholder;
-    keyholder.pointer = (void*) key;
-    return _uhash_remove(hash, keyholder).pointer;
-}
-
-U_CAPI void* U_EXPORT2
-uhash_iremove(UHashtable *hash,
-              int32_t key) {
-    UHashTok keyholder;
-    keyholder.integer = key;
-    return _uhash_remove(hash, keyholder).pointer;
-}
-
-U_CAPI int32_t U_EXPORT2
-uhash_removei(UHashtable *hash,
-              const void* key) {
-    UHashTok keyholder;
-    keyholder.pointer = (void*) key;
-    return _uhash_remove(hash, keyholder).integer;
-}
-
-U_CAPI int32_t U_EXPORT2
-uhash_iremovei(UHashtable *hash,
-               int32_t key) {
-    UHashTok keyholder;
-    keyholder.integer = key;
-    return _uhash_remove(hash, keyholder).integer;
-}
-
-U_CAPI void U_EXPORT2
-uhash_removeAll(UHashtable *hash) {
-    int32_t pos = UHASH_FIRST;
-    const UHashElement *e;
-    U_ASSERT(hash != NULL);
-    if (hash->count != 0) {
-        while ((e = uhash_nextElement(hash, &pos)) != NULL) {
-            uhash_removeElement(hash, e);
-        }
-    }
-    U_ASSERT(hash->count == 0);
-}
-
-U_CAPI const UHashElement* U_EXPORT2
-uhash_find(const UHashtable *hash, const void* key) {
-    UHashTok keyholder;
-    const UHashElement *e;
-    keyholder.pointer = (void*) key;
-    e = _uhash_find(hash, keyholder, hash->keyHasher(keyholder));
-    return IS_EMPTY_OR_DELETED(e->hashcode) ? NULL : e;
-}
-
-U_CAPI const UHashElement* U_EXPORT2
-uhash_nextElement(const UHashtable *hash, int32_t *pos) {
-    /* Walk through the array until we find an element that is not
-     * EMPTY and not DELETED.
-     */
-    int32_t i;
-    U_ASSERT(hash != NULL);
-    for (i = *pos + 1; i < hash->length; ++i) {
-        if (!IS_EMPTY_OR_DELETED(hash->elements[i].hashcode)) {
-            *pos = i;
-            return &(hash->elements[i]);
-        }
-    }
-
-    /* No more elements */
-    return NULL;
-}
-
-U_CAPI void* U_EXPORT2
-uhash_removeElement(UHashtable *hash, const UHashElement* e) {
-    U_ASSERT(hash != NULL);
-    U_ASSERT(e != NULL);
-    if (!IS_EMPTY_OR_DELETED(e->hashcode)) {
-        UHashElement *nce = (UHashElement *)e;
-        return _uhash_internalRemoveElement(hash, nce).pointer;
-    }
-    return NULL;
-}
-
-/********************************************************************
- * UHashTok convenience
- ********************************************************************/
-
-/**
- * Return a UHashTok for an integer.
- */
-/*U_CAPI UHashTok U_EXPORT2
-uhash_toki(int32_t i) {
-    UHashTok tok;
-    tok.integer = i;
-    return tok;
-}*/
-
-/**
- * Return a UHashTok for a pointer.
- */
-/*U_CAPI UHashTok U_EXPORT2
-uhash_tokp(void* p) {
-    UHashTok tok;
-    tok.pointer = p;
-    return tok;
-}*/
-
-/********************************************************************
- * PUBLIC Key Hash Functions
- ********************************************************************/
-
-U_CAPI int32_t U_EXPORT2
-uhash_hashUChars(const UHashTok key) {
-    const UChar *s = (const UChar *)key.pointer;
-    return s == NULL ? 0 : ustr_hashUCharsN(s, u_strlen(s));
-}
-
-U_CAPI int32_t U_EXPORT2
-uhash_hashChars(const UHashTok key) {
-    const char *s = (const char *)key.pointer;
-    return s == NULL ? 0 : ustr_hashCharsN(s, uprv_strlen(s));
-}
-
-U_CAPI int32_t U_EXPORT2
-uhash_hashIChars(const UHashTok key) {
-    const char *s = (const char *)key.pointer;
-    return s == NULL ? 0 : ustr_hashICharsN(s, uprv_strlen(s));
-}
-
-U_CAPI UBool U_EXPORT2 
-uhash_equals(const UHashtable* hash1, const UHashtable* hash2){
-    int32_t count1, count2, pos, i;
-
-    if(hash1==hash2){
-        return TRUE;
-    }
-
-    /*
-     * Make sure that we are comparing 2 valid hashes of the same type
-     * with valid comparison functions.
-     * Without valid comparison functions, a binary comparison
-     * of the hash values will yield random results on machines
-     * with 64-bit pointers and 32-bit integer hashes.
-     * A valueComparator is normally optional.
-     */
-    if (hash1==NULL || hash2==NULL ||
-        hash1->keyComparator != hash2->keyComparator ||
-        hash1->valueComparator != hash2->valueComparator ||
-        hash1->valueComparator == NULL)
-    {
-        /*
-        Normally we would return an error here about incompatible hash tables,
-        but we return FALSE instead.
-        */
-        return FALSE;
-    }
-
-    count1 = uhash_count(hash1);
-    count2 = uhash_count(hash2);
-    if(count1!=count2){
-        return FALSE;
-    }
-    
-    pos=UHASH_FIRST;
-    for(i=0; i<count1; i++){
-        const UHashElement* elem1 = uhash_nextElement(hash1, &pos);
-        const UHashTok key1 = elem1->key;
-        const UHashTok val1 = elem1->value;
-        /* here the keys are not compared, instead the key form hash1 is used to fetch
-         * value from hash2. If the hashes are equal then then both hashes should 
-         * contain equal values for the same key!
-         */
-        const UHashElement* elem2 = _uhash_find(hash2, key1, hash2->keyHasher(key1));
-        const UHashTok val2 = elem2->value;
-        if(hash1->valueComparator(val1, val2)==FALSE){
-            return FALSE;
-        }
-    }
-    return TRUE;
-}
-
-/********************************************************************
- * PUBLIC Comparator Functions
- ********************************************************************/
-
-U_CAPI UBool U_EXPORT2
-uhash_compareUChars(const UHashTok key1, const UHashTok key2) {
-    const UChar *p1 = (const UChar*) key1.pointer;
-    const UChar *p2 = (const UChar*) key2.pointer;
-    if (p1 == p2) {
-        return TRUE;
-    }
-    if (p1 == NULL || p2 == NULL) {
-        return FALSE;
-    }
-    while (*p1 != 0 && *p1 == *p2) {
-        ++p1;
-        ++p2;
-    }
-    return (UBool)(*p1 == *p2);
-}
-
-U_CAPI UBool U_EXPORT2
-uhash_compareChars(const UHashTok key1, const UHashTok key2) {
-    const char *p1 = (const char*) key1.pointer;
-    const char *p2 = (const char*) key2.pointer;
-    if (p1 == p2) {
-        return TRUE;
-    }
-    if (p1 == NULL || p2 == NULL) {
-        return FALSE;
-    }
-    while (*p1 != 0 && *p1 == *p2) {
-        ++p1;
-        ++p2;
-    }
-    return (UBool)(*p1 == *p2);
-}
-
-U_CAPI UBool U_EXPORT2
-uhash_compareIChars(const UHashTok key1, const UHashTok key2) {
-    const char *p1 = (const char*) key1.pointer;
-    const char *p2 = (const char*) key2.pointer;
-    if (p1 == p2) {
-        return TRUE;
-    }
-    if (p1 == NULL || p2 == NULL) {
-        return FALSE;
-    }
-    while (*p1 != 0 && uprv_tolower(*p1) == uprv_tolower(*p2)) {
-        ++p1;
-        ++p2;
-    }
-    return (UBool)(*p1 == *p2);
-}
-
-/********************************************************************
- * PUBLIC int32_t Support Functions
- ********************************************************************/
-
-U_CAPI int32_t U_EXPORT2
-uhash_hashLong(const UHashTok key) {
-    return key.integer;
-}
-
-U_CAPI UBool U_EXPORT2
-uhash_compareLong(const UHashTok key1, const UHashTok key2) {
-    return (UBool)(key1.integer == key2.integer);
-}
index e53ce73..6369f8e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index ac76c1b..ef482c2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index e01c9ae..7cc97a9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  uidna.cpp
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 34e82a3..624431b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  uinit.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/uinvchar.c b/source/common/uinvchar.c
deleted file mode 100644 (file)
index 79dd051..0000000
+++ /dev/null
@@ -1,613 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 1999-2010, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  uinvchar.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:2
-*
-*   created on: 2004sep14
-*   created by: Markus W. Scherer
-*
-*   Functions for handling invariant characters, moved here from putil.c
-*   for better modularization.
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/ustring.h"
-#include "udataswp.h"
-#include "cstring.h"
-#include "cmemory.h"
-#include "uassert.h"
-#include "uinvchar.h"
-
-/* invariant-character handling --------------------------------------------- */
-
-/*
- * These maps for ASCII to/from EBCDIC map invariant characters (see utypes.h)
- * appropriately for most EBCDIC codepages.
- *
- * They currently also map most other ASCII graphic characters,
- * appropriately for codepages 37 and 1047.
- * Exceptions: The characters for []^ have different codes in 37 & 1047.
- * Both versions are mapped to ASCII.
- *
- *    ASCII 37 1047
- * [     5B BA   AD
- * ]     5D BB   BD
- * ^     5E B0   5F
- *
- * There are no mappings for variant characters from Unicode to EBCDIC.
- *
- * Currently, C0 control codes are also included in these maps.
- * Exceptions: S/390 Open Edition swaps LF and NEL codes compared with other
- * EBCDIC platforms; both codes (15 and 25) are mapped to ASCII LF (0A),
- * but there is no mapping for ASCII LF back to EBCDIC.
- *
- *    ASCII EBCDIC S/390-OE
- * LF    0A     25       15
- * NEL   85     15       25
- *
- * The maps below explicitly exclude the variant
- * control and graphical characters that are in ASCII-based
- * codepages at 0x80 and above.
- * "No mapping" is expressed by mapping to a 00 byte.
- *
- * These tables do not establish a converter or a codepage.
- */
-
-static const uint8_t asciiFromEbcdic[256]={
-    0x00, 0x01, 0x02, 0x03, 0x00, 0x09, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-    0x10, 0x11, 0x12, 0x13, 0x00, 0x0a, 0x08, 0x00, 0x18, 0x19, 0x00, 0x00, 0x1c, 0x1d, 0x1e, 0x1f,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x17, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x07,
-    0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x14, 0x15, 0x00, 0x1a,
-
-    0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
-    0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
-    0x2d, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
-
-    0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,
-    0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5d, 0x00, 0x5d, 0x00, 0x00,
-
-    0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x5c, 0x00, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-static const uint8_t ebcdicFromAscii[256]={
-    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, 0x16, 0x05, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, 0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
-    0x40, 0x00, 0x7f, 0x00, 0x00, 0x6c, 0x50, 0x7d, 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
-    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
-
-    0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
-    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x6d,
-    0x00, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
-    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x07,
-
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-/* Same as asciiFromEbcdic[] except maps all letters to lowercase. */
-static const uint8_t lowercaseAsciiFromEbcdic[256]={
-    0x00, 0x01, 0x02, 0x03, 0x00, 0x09, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-    0x10, 0x11, 0x12, 0x13, 0x00, 0x0a, 0x08, 0x00, 0x18, 0x19, 0x00, 0x00, 0x1c, 0x1d, 0x1e, 0x1f,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x17, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x07,
-    0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x14, 0x15, 0x00, 0x1a,
-
-    0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
-    0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
-    0x2d, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
-
-    0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,
-    0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5d, 0x00, 0x5d, 0x00, 0x00,
-
-    0x7b, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x7d, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x7c, 0x00, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-/*
- * Bit sets indicating which characters of the ASCII repertoire
- * (by ASCII/Unicode code) are "invariant".
- * See utypes.h for more details.
- *
- * As invariant are considered the characters of the ASCII repertoire except
- * for the following:
- * 21  '!' <exclamation mark>
- * 23  '#' <number sign>
- * 24  '$' <dollar sign>
- *
- * 40  '@' <commercial at>
- *
- * 5b  '[' <left bracket>
- * 5c  '\' <backslash>
- * 5d  ']' <right bracket>
- * 5e  '^' <circumflex>
- *
- * 60  '`' <grave accent>
- *
- * 7b  '{' <left brace>
- * 7c  '|' <vertical line>
- * 7d  '}' <right brace>
- * 7e  '~' <tilde>
- */
-static const uint32_t invariantChars[4]={
-    0xfffffbff, /* 00..1f but not 0a */
-    0xffffffe5, /* 20..3f but not 21 23 24 */
-    0x87fffffe, /* 40..5f but not 40 5b..5e */
-    0x87fffffe  /* 60..7f but not 60 7b..7e */
-};
-
-/*
- * test unsigned types (or values known to be non-negative) for invariant characters,
- * tests ASCII-family character values
- */
-#define UCHAR_IS_INVARIANT(c) (((c)<=0x7f) && (invariantChars[(c)>>5]&((uint32_t)1<<((c)&0x1f)))!=0)
-
-/* test signed types for invariant characters, adds test for positive values */
-#define SCHAR_IS_INVARIANT(c) ((0<=(c)) && UCHAR_IS_INVARIANT(c))
-
-#if U_CHARSET_FAMILY==U_ASCII_FAMILY
-#define CHAR_TO_UCHAR(c) c
-#define UCHAR_TO_CHAR(c) c
-#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY
-#define CHAR_TO_UCHAR(u) asciiFromEbcdic[u]
-#define UCHAR_TO_CHAR(u) ebcdicFromAscii[u]
-#else
-#   error U_CHARSET_FAMILY is not valid
-#endif
-
-
-U_CAPI void U_EXPORT2
-u_charsToUChars(const char *cs, UChar *us, int32_t length) {
-    UChar u;
-    uint8_t c;
-
-    /*
-     * Allow the entire ASCII repertoire to be mapped _to_ Unicode.
-     * For EBCDIC systems, this works for characters with codes from
-     * codepages 37 and 1047 or compatible.
-     */
-    while(length>0) {
-        c=(uint8_t)(*cs++);
-        u=(UChar)CHAR_TO_UCHAR(c);
-        U_ASSERT((u!=0 || c==0)); /* only invariant chars converted? */
-        *us++=u;
-        --length;
-    }
-}
-
-U_CAPI void U_EXPORT2
-u_UCharsToChars(const UChar *us, char *cs, int32_t length) {
-    UChar u;
-
-    while(length>0) {
-        u=*us++;
-        if(!UCHAR_IS_INVARIANT(u)) {
-            U_ASSERT(FALSE); /* Variant characters were used. These are not portable in ICU. */
-            u=0;
-        }
-        *cs++=(char)UCHAR_TO_CHAR(u);
-        --length;
-    }
-}
-
-U_CAPI UBool U_EXPORT2
-uprv_isInvariantString(const char *s, int32_t length) {
-    uint8_t c;
-
-    for(;;) {
-        if(length<0) {
-            /* NUL-terminated */
-            c=(uint8_t)*s++;
-            if(c==0) {
-                break;
-            }
-        } else {
-            /* count length */
-            if(length==0) {
-                break;
-            }
-            --length;
-            c=(uint8_t)*s++;
-            if(c==0) {
-                continue; /* NUL is invariant */
-            }
-        }
-        /* c!=0 now, one branch below checks c==0 for variant characters */
-
-        /*
-         * no assertions here because these functions are legitimately called
-         * for strings with variant characters
-         */
-#if U_CHARSET_FAMILY==U_ASCII_FAMILY
-        if(!UCHAR_IS_INVARIANT(c)) {
-            return FALSE; /* found a variant char */
-        }
-#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY
-        c=CHAR_TO_UCHAR(c);
-        if(c==0 || !UCHAR_IS_INVARIANT(c)) {
-            return FALSE; /* found a variant char */
-        }
-#else
-#   error U_CHARSET_FAMILY is not valid
-#endif
-    }
-    return TRUE;
-}
-
-U_CAPI UBool U_EXPORT2
-uprv_isInvariantUString(const UChar *s, int32_t length) {
-    UChar c;
-
-    for(;;) {
-        if(length<0) {
-            /* NUL-terminated */
-            c=*s++;
-            if(c==0) {
-                break;
-            }
-        } else {
-            /* count length */
-            if(length==0) {
-                break;
-            }
-            --length;
-            c=*s++;
-        }
-
-        /*
-         * no assertions here because these functions are legitimately called
-         * for strings with variant characters
-         */
-        if(!UCHAR_IS_INVARIANT(c)) {
-            return FALSE; /* found a variant char */
-        }
-    }
-    return TRUE;
-}
-
-/* UDataSwapFn implementations used in udataswp.c ------- */
-
-/* convert ASCII to EBCDIC and verify that all characters are invariant */
-U_CAPI int32_t U_EXPORT2
-uprv_ebcdicFromAscii(const UDataSwapper *ds,
-                     const void *inData, int32_t length, void *outData,
-                     UErrorCode *pErrorCode) {
-    const uint8_t *s;
-    uint8_t *t;
-    uint8_t c;
-
-    int32_t count;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* setup and swapping */
-    s=(const uint8_t *)inData;
-    t=(uint8_t *)outData;
-    count=length;
-    while(count>0) {
-        c=*s++;
-        if(!UCHAR_IS_INVARIANT(c)) {
-            udata_printError(ds, "uprv_ebcdicFromAscii() string[%d] contains a variant character in position %d\n",
-                             length, length-count);
-            *pErrorCode=U_INVALID_CHAR_FOUND;
-            return 0;
-        }
-        *t++=ebcdicFromAscii[c];
-        --count;
-    }
-
-    return length;
-}
-
-/* this function only checks and copies ASCII strings without conversion */
-U_CFUNC int32_t
-uprv_copyAscii(const UDataSwapper *ds,
-               const void *inData, int32_t length, void *outData,
-               UErrorCode *pErrorCode) {
-    const uint8_t *s;
-    uint8_t c;
-
-    int32_t count;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* setup and checking */
-    s=(const uint8_t *)inData;
-    count=length;
-    while(count>0) {
-        c=*s++;
-        if(!UCHAR_IS_INVARIANT(c)) {
-            udata_printError(ds, "uprv_copyFromAscii() string[%d] contains a variant character in position %d\n",
-                             length, length-count);
-            *pErrorCode=U_INVALID_CHAR_FOUND;
-            return 0;
-        }
-        --count;
-    }
-
-    if(length>0 && inData!=outData) {
-        uprv_memcpy(outData, inData, length);
-    }
-
-    return length;
-}
-
-/* convert EBCDIC to ASCII and verify that all characters are invariant */
-U_CFUNC int32_t
-uprv_asciiFromEbcdic(const UDataSwapper *ds,
-                     const void *inData, int32_t length, void *outData,
-                     UErrorCode *pErrorCode) {
-    const uint8_t *s;
-    uint8_t *t;
-    uint8_t c;
-
-    int32_t count;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 ||  (length>0 && outData==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* setup and swapping */
-    s=(const uint8_t *)inData;
-    t=(uint8_t *)outData;
-    count=length;
-    while(count>0) {
-        c=*s++;
-        if(c!=0 && ((c=asciiFromEbcdic[c])==0 || !UCHAR_IS_INVARIANT(c))) {
-            udata_printError(ds, "uprv_asciiFromEbcdic() string[%d] contains a variant character in position %d\n",
-                             length, length-count);
-            *pErrorCode=U_INVALID_CHAR_FOUND;
-            return 0;
-        }
-        *t++=c;
-        --count;
-    }
-
-    return length;
-}
-
-/* this function only checks and copies EBCDIC strings without conversion */
-U_CFUNC int32_t
-uprv_copyEbcdic(const UDataSwapper *ds,
-                const void *inData, int32_t length, void *outData,
-                UErrorCode *pErrorCode) {
-    const uint8_t *s;
-    uint8_t c;
-
-    int32_t count;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* setup and checking */
-    s=(const uint8_t *)inData;
-    count=length;
-    while(count>0) {
-        c=*s++;
-        if(c!=0 && ((c=asciiFromEbcdic[c])==0 || !UCHAR_IS_INVARIANT(c))) {
-            udata_printError(ds, "uprv_copyEbcdic() string[%] contains a variant character in position %d\n",
-                             length, length-count);
-            *pErrorCode=U_INVALID_CHAR_FOUND;
-            return 0;
-        }
-        --count;
-    }
-
-    if(length>0 && inData!=outData) {
-        uprv_memcpy(outData, inData, length);
-    }
-
-    return length;
-}
-
-/* compare invariant strings; variant characters compare less than others and unlike each other */
-U_CFUNC int32_t
-uprv_compareInvAscii(const UDataSwapper *ds,
-                     const char *outString, int32_t outLength,
-                     const UChar *localString, int32_t localLength) {
-    int32_t minLength;
-    UChar32 c1, c2;
-    uint8_t c;
-
-    if(outString==NULL || outLength<-1 || localString==NULL || localLength<-1) {
-        return 0;
-    }
-
-    if(outLength<0) {
-        outLength=(int32_t)uprv_strlen(outString);
-    }
-    if(localLength<0) {
-        localLength=u_strlen(localString);
-    }
-
-    minLength= outLength<localLength ? outLength : localLength;
-
-    while(minLength>0) {
-        c=(uint8_t)*outString++;
-        if(UCHAR_IS_INVARIANT(c)) {
-            c1=c;
-        } else {
-            c1=-1;
-        }
-
-        c2=*localString++;
-        if(!UCHAR_IS_INVARIANT(c2)) {
-            c2=-2;
-        }
-
-        if((c1-=c2)!=0) {
-            return c1;
-        }
-
-        --minLength;
-    }
-
-    /* strings start with same prefix, compare lengths */
-    return outLength-localLength;
-}
-
-U_CFUNC int32_t
-uprv_compareInvEbcdic(const UDataSwapper *ds,
-                      const char *outString, int32_t outLength,
-                      const UChar *localString, int32_t localLength) {
-    int32_t minLength;
-    UChar32 c1, c2;
-    uint8_t c;
-
-    if(outString==NULL || outLength<-1 || localString==NULL || localLength<-1) {
-        return 0;
-    }
-
-    if(outLength<0) {
-        outLength=(int32_t)uprv_strlen(outString);
-    }
-    if(localLength<0) {
-        localLength=u_strlen(localString);
-    }
-
-    minLength= outLength<localLength ? outLength : localLength;
-
-    while(minLength>0) {
-        c=(uint8_t)*outString++;
-        if(c==0) {
-            c1=0;
-        } else if((c1=asciiFromEbcdic[c])!=0 && UCHAR_IS_INVARIANT(c1)) {
-            /* c1 is set */
-        } else {
-            c1=-1;
-        }
-
-        c2=*localString++;
-        if(!UCHAR_IS_INVARIANT(c2)) {
-            c2=-2;
-        }
-
-        if((c1-=c2)!=0) {
-            return c1;
-        }
-
-        --minLength;
-    }
-
-    /* strings start with same prefix, compare lengths */
-    return outLength-localLength;
-}
-
-U_CAPI int32_t U_EXPORT2
-uprv_compareInvEbcdicAsAscii(const char *s1, const char *s2) {
-    int32_t c1, c2;
-
-    for(;; ++s1, ++s2) {
-        c1=(uint8_t)*s1;
-        c2=(uint8_t)*s2;
-        if(c1!=c2) {
-            if(c1!=0 && ((c1=asciiFromEbcdic[c1])==0 || !UCHAR_IS_INVARIANT(c1))) {
-                c1=-(int32_t)(uint8_t)*s1;
-            }
-            if(c2!=0 && ((c2=asciiFromEbcdic[c2])==0 || !UCHAR_IS_INVARIANT(c2))) {
-                c2=-(int32_t)(uint8_t)*s2;
-            }
-            return c1-c2;
-        } else if(c1==0) {
-            return 0;
-        }
-    }
-}
-
-U_CAPI char U_EXPORT2
-uprv_ebcdicToLowercaseAscii(char c) {
-    return (char)lowercaseAsciiFromEbcdic[(uint8_t)c];
-}
-
-U_INTERNAL uint8_t* U_EXPORT2
-uprv_aestrncpy(uint8_t *dst, const uint8_t *src, int32_t n)
-{
-  uint8_t *orig_dst = dst;
-
-  if(n==-1) { 
-    n = uprv_strlen((const char*)src)+1; /* copy NUL */
-  }
-  /* copy non-null */
-  while(*src && n>0) {
-    *(dst++) = asciiFromEbcdic[*(src++)];
-    n--;
-  }
-  /* pad */
-  while(n>0) {
-    *(dst++) = 0;
-    n--;
-  }
-  return orig_dst;
-}
-
-U_INTERNAL uint8_t* U_EXPORT2
-uprv_eastrncpy(uint8_t *dst, const uint8_t *src, int32_t n)
-{
-  uint8_t *orig_dst = dst;
-
-  if(n==-1) { 
-    n = uprv_strlen((const char*)src)+1; /* copy NUL */
-  }
-  /* copy non-null */
-  while(*src && n>0) {
-    char ch = ebcdicFromAscii[*(src++)];
-    if(ch == 0) {
-      ch = ebcdicFromAscii[0x3f]; /* questionmark (subchar) */
-    }
-    *(dst++) = ch;
-    n--;
-  }
-  /* pad */
-  while(n>0) {
-    *(dst++) = 0;
-    n--;
-  }
-  return orig_dst;
-}
-
index 19a3b26..c4f9f88 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uinvchar.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:2
 *
@@ -64,7 +64,7 @@ uprv_isInvariantUString(const UChar *s, int32_t length);
  */
 U_INTERNAL inline UBool U_EXPORT2
 uprv_isInvariantUnicodeString(const icu::UnicodeString &s) {
-    return uprv_isInvariantUString(s.getBuffer(), s.length());
+    return uprv_isInvariantUString(icu::toUCharPtr(s.getBuffer()), s.length());
 }
 
 #endif  /* __cplusplus */
index 26ca877..b9252d8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uiter.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ulist.c b/source/common/ulist.c
deleted file mode 100644 (file)
index 7f7fdd9..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*   Copyright (C) 2009-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-******************************************************************************
-*/
-
-#include "ulist.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "uenumimp.h"
-
-typedef struct UListNode UListNode;
-struct UListNode {
-    void *data;
-    
-    UListNode *next;
-    UListNode *previous;
-    
-    /* When data is created with uprv_malloc, needs to be freed during deleteList function. */
-    UBool forceDelete;
-};
-
-struct UList {
-    UListNode *curr;
-    UListNode *head;
-    UListNode *tail;
-    
-    int32_t size;
-    int32_t currentIndex;
-};
-
-static void ulist_addFirstItem(UList *list, UListNode *newItem);
-
-U_CAPI UList *U_EXPORT2 ulist_createEmptyList(UErrorCode *status) {
-    UList *newList = NULL;
-    
-    if (U_FAILURE(*status)) {
-        return NULL;
-    }
-    
-    newList = (UList *)uprv_malloc(sizeof(UList));
-    if (newList == NULL) {
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-    
-    newList->curr = NULL;
-    newList->head = NULL;
-    newList->tail = NULL;
-    newList->size = 0;
-    newList->currentIndex = -1;
-    
-    return newList;
-}
-
-/*
- * Function called by addItemEndList or addItemBeginList when the first item is added to the list.
- * This function properly sets the pointers for the first item added.
- */
-static void ulist_addFirstItem(UList *list, UListNode *newItem) {
-    newItem->next = NULL;
-    newItem->previous = NULL;
-    list->head = newItem;
-    list->tail = newItem;
-}
-
-static void ulist_removeItem(UList *list, UListNode *p) {
-    if (p->previous == NULL) {
-        // p is the list head.
-        list->head = p->next;
-    } else {
-        p->previous->next = p->next;
-    }
-    if (p->next == NULL) {
-        // p is the list tail.
-        list->tail = p->previous;
-    } else {
-        p->next->previous = p->previous;
-    }
-    list->curr = NULL;
-    list->currentIndex = 0;
-    --list->size;
-    if (p->forceDelete) {
-        uprv_free(p->data);
-    }
-    uprv_free(p);
-}
-
-U_CAPI void U_EXPORT2 ulist_addItemEndList(UList *list, const void *data, UBool forceDelete, UErrorCode *status) {
-    UListNode *newItem = NULL;
-    
-    if (U_FAILURE(*status) || list == NULL || data == NULL) {
-        if (forceDelete) {
-            uprv_free((void *)data);
-        }
-        return;
-    }
-    
-    newItem = (UListNode *)uprv_malloc(sizeof(UListNode));
-    if (newItem == NULL) {
-        if (forceDelete) {
-            uprv_free((void *)data);
-        }
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return;
-    }
-    newItem->data = (void *)(data);
-    newItem->forceDelete = forceDelete;
-    
-    if (list->size == 0) {
-        ulist_addFirstItem(list, newItem);
-    } else {
-        newItem->next = NULL;
-        newItem->previous = list->tail;
-        list->tail->next = newItem;
-        list->tail = newItem;
-    }
-    
-    list->size++;
-}
-
-U_CAPI void U_EXPORT2 ulist_addItemBeginList(UList *list, const void *data, UBool forceDelete, UErrorCode *status) {
-    UListNode *newItem = NULL;
-    
-    if (U_FAILURE(*status) || list == NULL || data == NULL) {
-        if (forceDelete) {
-            uprv_free((void *)data);
-        }
-        return;
-    }
-    
-    newItem = (UListNode *)uprv_malloc(sizeof(UListNode));
-    if (newItem == NULL) {
-        if (forceDelete) {
-            uprv_free((void *)data);
-        }
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return;
-    }
-    newItem->data = (void *)(data);
-    newItem->forceDelete = forceDelete;
-    
-    if (list->size == 0) {
-        ulist_addFirstItem(list, newItem);
-    } else {
-        newItem->previous = NULL;
-        newItem->next = list->head;
-        list->head->previous = newItem;
-        list->head = newItem;
-        list->currentIndex++;
-    }
-    
-    list->size++;
-}
-
-U_CAPI UBool U_EXPORT2 ulist_containsString(const UList *list, const char *data, int32_t length) {
-    if (list != NULL) {
-        const UListNode *pointer;
-        for (pointer = list->head; pointer != NULL; pointer = pointer->next) {
-            if (length == uprv_strlen(pointer->data)) {
-                if (uprv_memcmp(data, pointer->data, length) == 0) {
-                    return TRUE;
-                }
-            }
-        }
-    }
-    return FALSE;
-}
-
-U_CAPI UBool U_EXPORT2 ulist_removeString(UList *list, const char *data) {
-    if (list != NULL) {
-        UListNode *pointer;
-        for (pointer = list->head; pointer != NULL; pointer = pointer->next) {
-            if (uprv_strcmp(data, pointer->data) == 0) {
-                ulist_removeItem(list, pointer);
-                // Remove only the first occurrence, like Java LinkedList.remove(Object).
-                return TRUE;
-            }
-        }
-    }
-    return FALSE;
-}
-
-U_CAPI void *U_EXPORT2 ulist_getNext(UList *list) {
-    UListNode *curr = NULL;
-    
-    if (list == NULL || list->curr == NULL) {
-        return NULL;
-    }
-    
-    curr = list->curr;
-    list->curr = curr->next;
-    list->currentIndex++;
-    
-    return curr->data;
-}
-
-U_CAPI int32_t U_EXPORT2 ulist_getListSize(const UList *list) {
-    if (list != NULL) {
-        return list->size;
-    }
-    
-    return -1;
-}
-
-U_CAPI void U_EXPORT2 ulist_resetList(UList *list) {
-    if (list != NULL) {
-        list->curr = list->head;
-        list->currentIndex = 0;
-    }
-}
-
-U_CAPI void U_EXPORT2 ulist_deleteList(UList *list) {
-    UListNode *listHead = NULL;
-
-    if (list != NULL) {
-        listHead = list->head;
-        while (listHead != NULL) {
-            UListNode *listPointer = listHead->next;
-
-            if (listHead->forceDelete) {
-                uprv_free(listHead->data);
-            }
-
-            uprv_free(listHead);
-            listHead = listPointer;
-        }
-        uprv_free(list);
-        list = NULL;
-    }
-}
-
-U_CAPI void U_EXPORT2 ulist_close_keyword_values_iterator(UEnumeration *en) {
-    if (en != NULL) {
-        ulist_deleteList((UList *)(en->context));
-        uprv_free(en);
-    }
-}
-
-U_CAPI int32_t U_EXPORT2 ulist_count_keyword_values(UEnumeration *en, UErrorCode *status) {
-    if (U_FAILURE(*status)) {
-        return -1;
-    }
-    
-    return ulist_getListSize((UList *)(en->context));
-}
-
-U_CAPI const char * U_EXPORT2 ulist_next_keyword_value(UEnumeration *en, int32_t *resultLength, UErrorCode *status) {
-    const char *s;
-    if (U_FAILURE(*status)) {
-        return NULL;
-    }
-
-    s = (const char *)ulist_getNext((UList *)(en->context));
-    if (s != NULL && resultLength != NULL) {
-        *resultLength = uprv_strlen(s);
-    }
-    return s;
-}
-
-U_CAPI void U_EXPORT2 ulist_reset_keyword_values_iterator(UEnumeration *en, UErrorCode *status) {
-    if (U_FAILURE(*status)) {
-        return ;
-    }
-    
-    ulist_resetList((UList *)(en->context));
-}
-
-U_CAPI UList * U_EXPORT2 ulist_getListFromEnum(UEnumeration *en) {
-    return (UList *)(en->context);
-}
-
index 6f292bf..de58a4a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 98aa50e..c140c78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 2a02b27..4d854bb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 #include "uarrsort.h"
 #include "uenumimp.h"
 #include "uassert.h"
+#include "charstr.h"
 
 #include <stdio.h> /* for sprintf */
 
-using namespace icu;
+U_NAMESPACE_USE
 
 /* ### Declarations **************************************************/
 
@@ -101,7 +102,7 @@ static const char * const 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", "arw", "ary", "arz", "as",
+    "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",
@@ -216,7 +217,7 @@ static const char * const 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", "arw", "ary", "arz", "asm",
+    "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",
@@ -560,6 +561,10 @@ static int32_t getShortestSubtagLength(const char *localeID) {
 }
 
 /* ### Keywords **************************************************/
+#define UPRV_ISDIGIT(c) (((c) >= '0') && ((c) <= '9'))
+#define UPRV_ISALPHANUM(c) (uprv_isASCIILetter(c) || UPRV_ISDIGIT(c) )
+/* Punctuation/symbols allowed in legacy key values */
+#define UPRV_OK_VALUE_PUNCTUATION(c) ((c) == '_' || (c) == '-' || (c) == '+' || (c) == '/')
 
 #define ULOC_KEYWORD_BUFFER_LEN 25
 #define ULOC_MAX_NO_KEYWORDS 25
@@ -596,20 +601,26 @@ locale_getKeywordsStart(const char *localeID) {
  */
 static int32_t locale_canonKeywordName(char *buf, const char *keywordName, UErrorCode *status)
 {
-  int32_t i;
-  int32_t keywordNameLen = (int32_t)uprv_strlen(keywordName);
+  int32_t keywordNameLen = 0;
 
-  if(keywordNameLen >= ULOC_KEYWORD_BUFFER_LEN) {
-    /* keyword name too long for internal buffer */
-    *status = U_INTERNAL_PROGRAM_ERROR;
-          return 0;
+  for (; *keywordName != 0; keywordName++) {
+    if (!UPRV_ISALPHANUM(*keywordName)) {
+      *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
+      return 0;
+    }
+    if (keywordNameLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
+      buf[keywordNameLen++] = uprv_tolower(*keywordName);
+    } else {
+      /* keyword name too long for internal buffer */
+      *status = U_INTERNAL_PROGRAM_ERROR;
+      return 0;
+    }
   }
-
-  /* normalize the keyword name */
-  for(i = 0; i < keywordNameLen; i++) {
-    buf[i] = uprv_tolower(keywordName[i]);
+  if (keywordNameLen == 0) {
+    *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name */
+    return 0;
   }
-  buf[i] = 0;
+  buf[keywordNameLen] = 0; /* terminate */
 
   return keywordNameLen;
 }
@@ -837,87 +848,108 @@ uloc_getKeywordValue(const char* localeID,
     const char* nextSeparator = NULL;
     char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
     char localeKeywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
-    int32_t i = 0;
     int32_t result = 0;
 
     if(status && U_SUCCESS(*status) && localeID) {
       char tempBuffer[ULOC_FULLNAME_CAPACITY];
       const char* tmpLocaleID;
 
+      if (keywordName == NULL || keywordName[0] == 0) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+      }
+
+      locale_canonKeywordName(keywordNameBuffer, keywordName, status);
+      if(U_FAILURE(*status)) {
+        return 0;
+      }
+
       if (_hasBCP47Extension(localeID)) {
           _ConvertBCP47(tmpLocaleID, localeID, tempBuffer, sizeof(tempBuffer), status);
       } else {
           tmpLocaleID=localeID;
       }
 
-      startSearchHere = uprv_strchr(tmpLocaleID, '@'); /* TODO: REVISIT: shouldn't this be locale_getKeywordsStart ? */
+      startSearchHere = locale_getKeywordsStart(tmpLocaleID);
       if(startSearchHere == NULL) {
           /* no keywords, return at once */
           return 0;
       }
 
-      locale_canonKeywordName(keywordNameBuffer, keywordName, status);
-      if(U_FAILURE(*status)) {
-        return 0;
-      }
-
       /* find the first keyword */
       while(startSearchHere) {
-          startSearchHere++;
-          /* skip leading spaces (allowed?) */
+          const char* keyValueTail;
+          int32_t keyValueLen;
+
+          startSearchHere++; /* skip @ or ; */
+          nextSeparator = uprv_strchr(startSearchHere, '=');
+          if(!nextSeparator) {
+              *status = U_ILLEGAL_ARGUMENT_ERROR; /* key must have =value */
+              return 0;
+          }
+          /* strip leading & trailing spaces (TC decided to tolerate these) */
           while(*startSearchHere == ' ') {
               startSearchHere++;
           }
-          nextSeparator = uprv_strchr(startSearchHere, '=');
-          /* need to normalize both keyword and keyword name */
-          if(!nextSeparator) {
-              break;
+          keyValueTail = nextSeparator;
+          while (keyValueTail > startSearchHere && *(keyValueTail-1) == ' ') {
+              keyValueTail--;
+          }
+          /* now keyValueTail points to first char after the keyName */
+          /* copy & normalize keyName from locale */
+          if (startSearchHere == keyValueTail) {
+              *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name in passed-in locale */
+              return 0;
           }
-          if(nextSeparator - startSearchHere >= ULOC_KEYWORD_BUFFER_LEN) {
+          keyValueLen = 0;
+          while (startSearchHere < keyValueTail) {
+            if (!UPRV_ISALPHANUM(*startSearchHere)) {
+              *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
+              return 0;
+            }
+            if (keyValueLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
+              localeKeywordNameBuffer[keyValueLen++] = uprv_tolower(*startSearchHere++);
+            } else {
               /* keyword name too long for internal buffer */
               *status = U_INTERNAL_PROGRAM_ERROR;
               return 0;
+            }
           }
-          for(i = 0; i < nextSeparator - startSearchHere; i++) {
-              localeKeywordNameBuffer[i] = uprv_tolower(startSearchHere[i]);
-          }
-          /* trim trailing spaces */
-          while(startSearchHere[i-1] == ' ') {
-              i--;
-              U_ASSERT(i>=0);
-          }
-          localeKeywordNameBuffer[i] = 0;
+          localeKeywordNameBuffer[keyValueLen] = 0; /* terminate */
 
           startSearchHere = uprv_strchr(nextSeparator, ';');
 
           if(uprv_strcmp(keywordNameBuffer, localeKeywordNameBuffer) == 0) {
-              nextSeparator++;
+               /* current entry matches the keyword. */
+             nextSeparator++; /* skip '=' */
+              /* First strip leading & trailing spaces (TC decided to tolerate these) */
               while(*nextSeparator == ' ') {
-                  nextSeparator++;
+                nextSeparator++;
+              }
+              keyValueTail = (startSearchHere)? startSearchHere: nextSeparator + uprv_strlen(nextSeparator);
+              while(keyValueTail > nextSeparator && *(keyValueTail-1) == ' ') {
+                keyValueTail--;
+              }
+              /* Now copy the value, but check well-formedness */
+              if (nextSeparator == keyValueTail) {
+                *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty key value name in passed-in locale */
+                return 0;
               }
-              /* we actually found the keyword. Copy the value */
-              if(startSearchHere && startSearchHere - nextSeparator < bufferCapacity) {
-                  while(*(startSearchHere-1) == ' ') {
-                      startSearchHere--;
-                  }
-                  uprv_strncpy(buffer, nextSeparator, startSearchHere - nextSeparator);
-                  result = u_terminateChars(buffer, bufferCapacity, (int32_t)(startSearchHere - nextSeparator), status);
-              } else if(!startSearchHere && (int32_t)uprv_strlen(nextSeparator) < bufferCapacity) { /* last item in string */
-                  i = (int32_t)uprv_strlen(nextSeparator);
-                  while(nextSeparator[i - 1] == ' ') {
-                      i--;
-                  }
-                  uprv_strncpy(buffer, nextSeparator, i);
-                  result = u_terminateChars(buffer, bufferCapacity, i, status);
-              } else {
-                  /* give a bigger buffer, please */
-                  *status = U_BUFFER_OVERFLOW_ERROR;
-                  if(startSearchHere) {
-                      result = (int32_t)(startSearchHere - nextSeparator);
-                  } else {
-                      result = (int32_t)uprv_strlen(nextSeparator);
-                  }
+              keyValueLen = 0;
+              while (nextSeparator < keyValueTail) {
+                if (!UPRV_ISALPHANUM(*nextSeparator) && !UPRV_OK_VALUE_PUNCTUATION(*nextSeparator)) {
+                  *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed key value */
+                  return 0;
+                }
+                if (keyValueLen < bufferCapacity) {
+                  /* Should we lowercase value to return here? Tests expect as-is. */
+                  buffer[keyValueLen++] = *nextSeparator++;
+                } else { /* keep advancing so we return correct length in case of overflow */
+                  keyValueLen++;
+                  nextSeparator++;
+                }
               }
+              result = u_terminateChars(buffer, bufferCapacity, keyValueLen, status);
               return result;
           }
       }
@@ -936,46 +968,59 @@ uloc_setKeywordValue(const char* keywordName,
     int32_t keywordValueLen;
     int32_t bufLen;
     int32_t needLen = 0;
-    int32_t foundValueLen;
-    int32_t keywordAtEnd = 0; /* is the keyword at the end of the string? */
     char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
+    char keywordValueBuffer[ULOC_KEYWORDS_CAPACITY+1];
     char localeKeywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
-    int32_t i = 0;
     int32_t rc;
     char* nextSeparator = NULL;
     char* nextEqualsign = NULL;
     char* startSearchHere = NULL;
     char* keywordStart = NULL;
-    char *insertHere = NULL;
+    CharString updatedKeysAndValues;
+    int32_t updatedKeysAndValuesLen;
+    UBool handledInputKeyAndValue = FALSE;
+    char keyValuePrefix = '@';
+
     if(U_FAILURE(*status)) {
         return -1;
     }
-    if(bufferCapacity>1) {
-        bufLen = (int32_t)uprv_strlen(buffer);
-    } else {
+    if (keywordName == NULL || keywordName[0] == 0 || bufferCapacity <= 1) {
         *status = U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
+    bufLen = (int32_t)uprv_strlen(buffer);
     if(bufferCapacity<bufLen) {
         /* The capacity is less than the length?! Is this NULL terminated? */
         *status = U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
-    if(keywordValue && !*keywordValue) {
-        keywordValue = NULL;
-    }
-    if(keywordValue) {
-        keywordValueLen = (int32_t)uprv_strlen(keywordValue);
-    } else {
-        keywordValueLen = 0;
-    }
     keywordNameLen = locale_canonKeywordName(keywordNameBuffer, keywordName, status);
     if(U_FAILURE(*status)) {
         return 0;
     }
+
+    keywordValueLen = 0;
+    if(keywordValue) {
+        while (*keywordValue != 0) {
+            if (!UPRV_ISALPHANUM(*keywordValue) && !UPRV_OK_VALUE_PUNCTUATION(*keywordValue)) {
+                *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed key value */
+                return 0;
+            }
+            if (keywordValueLen < ULOC_KEYWORDS_CAPACITY) {
+                /* Should we force lowercase in value to set? */
+                keywordValueBuffer[keywordValueLen++] = *keywordValue++;
+            } else {
+                /* keywordValue too long for internal buffer */
+                *status = U_INTERNAL_PROGRAM_ERROR;
+                return 0;
+            }
+        }
+    }
+    keywordValueBuffer[keywordValueLen] = 0; /* terminate */
+
     startSearchHere = (char*)locale_getKeywordsStart(buffer);
     if(startSearchHere == NULL || (startSearchHere[1]==0)) {
-        if(!keywordValue) { /* no keywords = nothing to remove */
+        if(keywordValueLen == 0) { /* no keywords = nothing to remove */
             return bufLen;
         }
 
@@ -990,133 +1035,137 @@ uloc_setKeywordValue(const char* keywordName,
             *status = U_BUFFER_OVERFLOW_ERROR;
             return needLen; /* no change */
         }
-        *startSearchHere = '@';
-        startSearchHere++;
+        *startSearchHere++ = '@';
         uprv_strcpy(startSearchHere, keywordNameBuffer);
         startSearchHere += keywordNameLen;
-        *startSearchHere = '=';
-        startSearchHere++;
-        uprv_strcpy(startSearchHere, keywordValue);
-        startSearchHere+=keywordValueLen;
+        *startSearchHere++ = '=';
+        uprv_strcpy(startSearchHere, keywordValueBuffer);
         return needLen;
     } /* end shortcut - no @ */
 
     keywordStart = startSearchHere;
     /* search for keyword */
     while(keywordStart) {
-        keywordStart++;
-        /* skip leading spaces (allowed?) */
+        const char* keyValueTail;
+        int32_t keyValueLen;
+
+        keywordStart++; /* skip @ or ; */
+        nextEqualsign = uprv_strchr(keywordStart, '=');
+        if (!nextEqualsign) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR; /* key must have =value */
+            return 0;
+        }
+        /* strip leading & trailing spaces (TC decided to tolerate these) */
         while(*keywordStart == ' ') {
             keywordStart++;
         }
-        nextEqualsign = uprv_strchr(keywordStart, '=');
-        /* need to normalize both keyword and keyword name */
-        if(!nextEqualsign) {
-            break;
+        keyValueTail = nextEqualsign;
+        while (keyValueTail > keywordStart && *(keyValueTail-1) == ' ') {
+            keyValueTail--;
         }
-        if(nextEqualsign - keywordStart >= ULOC_KEYWORD_BUFFER_LEN) {
-            /* keyword name too long for internal buffer */
-            *status = U_INTERNAL_PROGRAM_ERROR;
+        /* now keyValueTail points to first char after the keyName */
+        /* copy & normalize keyName from locale */
+        if (keywordStart == keyValueTail) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name in passed-in locale */
             return 0;
         }
-        for(i = 0; i < nextEqualsign - keywordStart; i++) {
-            localeKeywordNameBuffer[i] = uprv_tolower(keywordStart[i]);
-        }
-        /* trim trailing spaces */
-        while(keywordStart[i-1] == ' ') {
-            i--;
+        keyValueLen = 0;
+        while (keywordStart < keyValueTail) {
+            if (!UPRV_ISALPHANUM(*keywordStart)) {
+                *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
+                return 0;
+            }
+            if (keyValueLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
+                localeKeywordNameBuffer[keyValueLen++] = uprv_tolower(*keywordStart++);
+            } else {
+                /* keyword name too long for internal buffer */
+                *status = U_INTERNAL_PROGRAM_ERROR;
+                return 0;
+            }
         }
-        U_ASSERT(i>=0 && i<ULOC_KEYWORD_BUFFER_LEN);
-        localeKeywordNameBuffer[i] = 0;
+        localeKeywordNameBuffer[keyValueLen] = 0; /* terminate */
 
         nextSeparator = uprv_strchr(nextEqualsign, ';');
+
+        /* start processing the value part */
+        nextEqualsign++; /* skip '=' */
+        /* First strip leading & trailing spaces (TC decided to tolerate these) */
+        while(*nextEqualsign == ' ') {
+            nextEqualsign++;
+        }
+        keyValueTail = (nextSeparator)? nextSeparator: nextEqualsign + uprv_strlen(nextEqualsign);
+        while(keyValueTail > nextEqualsign && *(keyValueTail-1) == ' ') {
+            keyValueTail--;
+        }
+        if (nextEqualsign == keyValueTail) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty key value in passed-in locale */
+            return 0;
+        }
+
         rc = uprv_strcmp(keywordNameBuffer, localeKeywordNameBuffer);
         if(rc == 0) {
-            nextEqualsign++;
-            while(*nextEqualsign == ' ') {
-                nextEqualsign++;
-            }
-            /* we actually found the keyword. Change the value */
-            if (nextSeparator) {
-                keywordAtEnd = 0;
-                foundValueLen = (int32_t)(nextSeparator - nextEqualsign);
-            } else {
-                keywordAtEnd = 1;
-                foundValueLen = (int32_t)uprv_strlen(nextEqualsign);
-            }
-            if(keywordValue) { /* adding a value - not removing */
-              if(foundValueLen == keywordValueLen) {
-                uprv_strncpy(nextEqualsign, keywordValue, keywordValueLen);
-                return bufLen; /* no change in size */
-              } else if(foundValueLen > keywordValueLen) {
-                int32_t delta = foundValueLen - keywordValueLen;
-                if(nextSeparator) { /* RH side */
-                  uprv_memmove(nextSeparator - delta, nextSeparator, bufLen-(nextSeparator-buffer));
-                }
-                uprv_strncpy(nextEqualsign, keywordValue, keywordValueLen);
-                bufLen -= delta;
-                buffer[bufLen]=0;
-                return bufLen;
-              } else { /* FVL < KVL */
-                int32_t delta = keywordValueLen - foundValueLen;
-                if((bufLen+delta) >= bufferCapacity) {
-                  *status = U_BUFFER_OVERFLOW_ERROR;
-                  return bufLen+delta;
-                }
-                if(nextSeparator) { /* RH side */
-                  uprv_memmove(nextSeparator+delta,nextSeparator, bufLen-(nextSeparator-buffer));
-                }
-                uprv_strncpy(nextEqualsign, keywordValue, keywordValueLen);
-                bufLen += delta;
-                buffer[bufLen]=0;
-                return bufLen;
-              }
-            } else { /* removing a keyword */
-              if(keywordAtEnd) {
-                /* zero out the ';' or '@' just before startSearchhere */
-                keywordStart[-1] = 0;
-                return (int32_t)((keywordStart-buffer)-1); /* (string length without keyword) minus separator */
-              } else {
-                uprv_memmove(keywordStart, nextSeparator+1, bufLen-((nextSeparator+1)-buffer));
-                keywordStart[bufLen-((nextSeparator+1)-buffer)]=0;
-                return (int32_t)(bufLen-((nextSeparator+1)-keywordStart));
-              }
+            /* Current entry matches the input keyword. Update the entry */
+            if(keywordValueLen > 0) { /* updating a value */
+                updatedKeysAndValues.append(keyValuePrefix, *status);
+                keyValuePrefix = ';'; /* for any subsequent key-value pair */
+                updatedKeysAndValues.append(keywordNameBuffer, keywordNameLen, *status);
+                updatedKeysAndValues.append('=', *status);
+                updatedKeysAndValues.append(keywordValueBuffer, keywordValueLen, *status);
+            } /* else removing this entry, don't emit anything */
+            handledInputKeyAndValue = TRUE;
+        } else {
+           /* input keyword sorts earlier than current entry, add before current entry */
+            if (rc < 0 && keywordValueLen > 0 && !handledInputKeyAndValue) {
+                /* insert new entry at this location */
+                updatedKeysAndValues.append(keyValuePrefix, *status);
+                keyValuePrefix = ';'; /* for any subsequent key-value pair */
+                updatedKeysAndValues.append(keywordNameBuffer, keywordNameLen, *status);
+                updatedKeysAndValues.append('=', *status);
+                updatedKeysAndValues.append(keywordValueBuffer, keywordValueLen, *status);
+                handledInputKeyAndValue = TRUE;
             }
-        } else if(rc<0){ /* end match keyword */
-          /* could insert at this location. */
-          insertHere = keywordStart;
+            /* copy the current entry */
+            updatedKeysAndValues.append(keyValuePrefix, *status);
+            keyValuePrefix = ';'; /* for any subsequent key-value pair */
+            updatedKeysAndValues.append(localeKeywordNameBuffer, keyValueLen, *status);
+            updatedKeysAndValues.append('=', *status);
+            updatedKeysAndValues.append(nextEqualsign, keyValueTail-nextEqualsign, *status);
+        }
+        if (!nextSeparator && keywordValueLen > 0 && !handledInputKeyAndValue) {
+            /* append new entry at the end, it sorts later than existing entries */
+            updatedKeysAndValues.append(keyValuePrefix, *status);
+            /* skip keyValuePrefix update, no subsequent key-value pair */
+            updatedKeysAndValues.append(keywordNameBuffer, keywordNameLen, *status);
+            updatedKeysAndValues.append('=', *status);
+            updatedKeysAndValues.append(keywordValueBuffer, keywordValueLen, *status);
+            handledInputKeyAndValue = TRUE;
         }
         keywordStart = nextSeparator;
     } /* end loop searching */
 
-    if(!keywordValue) {
-      return bufLen; /* removal of non-extant keyword - no change */
-    }
-
-    /* we know there is at least one keyword. */
-    needLen = bufLen+1+keywordNameLen+1+keywordValueLen;
+    /* Any error from updatedKeysAndValues.append above would be internal and not due to
+     * problems with the passed-in locale. So if we did encounter problems with the
+     * passed-in locale above, those errors took precedence and overrode any error
+     * status from updatedKeysAndValues.append, and also caused a return of 0. If there
+     * are errors here they are from updatedKeysAndValues.append; they do cause an
+     * error return but the passed-in locale is unmodified and the original bufLen is
+     * returned.
+     */
+    if (!handledInputKeyAndValue || U_FAILURE(*status)) {
+        /* if input key/value specified removal of a keyword not present in locale, or
+         * there was an error in CharString.append, leave original locale alone. */
+        return bufLen;
+    }
+
+    updatedKeysAndValuesLen = updatedKeysAndValues.length();
+    /* needLen = length of the part before '@' + length of updated key-value part including '@' */
+    needLen = (int32_t)(startSearchHere - buffer) + updatedKeysAndValuesLen;
     if(needLen >= bufferCapacity) {
         *status = U_BUFFER_OVERFLOW_ERROR;
         return needLen; /* no change */
     }
-
-    if(insertHere) {
-      uprv_memmove(insertHere+(1+keywordNameLen+1+keywordValueLen), insertHere, bufLen-(insertHere-buffer));
-      keywordStart = insertHere;
-    } else {
-      keywordStart = buffer+bufLen;
-      *keywordStart = ';';
-      keywordStart++;
-    }
-    uprv_strncpy(keywordStart, keywordNameBuffer, keywordNameLen);
-    keywordStart += keywordNameLen;
-    *keywordStart = '=';
-    keywordStart++;
-    uprv_strncpy(keywordStart, keywordValue, keywordValueLen); /* terminates. */
-    keywordStart+=keywordValueLen;
-    if(insertHere) {
-      *keywordStart = ';';
-      keywordStart++;
+    if (updatedKeysAndValuesLen > 0) {
+        uprv_strncpy(startSearchHere, updatedKeysAndValues.data(), updatedKeysAndValuesLen);
     }
     buffer[needLen]=0;
     return needLen;
@@ -2119,6 +2168,20 @@ uloc_getLCID(const char* localeID)
 {
     UErrorCode status = U_ZERO_ERROR;
     char       langID[ULOC_FULLNAME_CAPACITY];
+    uint32_t   lcid = 0;
+
+    /* Check for incomplete id. */
+    if (!localeID || uprv_strlen(localeID) < 2) {
+        return 0;
+    }
+
+    // Attempt platform lookup if available
+    lcid = uprv_convertToLCIDPlatform(localeID);
+    if (lcid > 0)
+    {
+        // Windows found an LCID, return that
+        return lcid;
+    }
 
     uloc_getLanguage(localeID, langID, sizeof(langID), &status);
     if (U_FAILURE(status)) {
@@ -2529,9 +2592,6 @@ uloc_toUnicodeLocaleType(const char* keyword, const char* value)
     return bcpType;
 }
 
-#define UPRV_ISDIGIT(c) (((c) >= '0') && ((c) <= '9'))
-#define UPRV_ISALPHANUM(c) (uprv_isASCIILetter(c) || UPRV_ISDIGIT(c) )
-
 static UBool
 isWellFormedLegacyKey(const char* legacyKey)
 {
@@ -2574,11 +2634,10 @@ uloc_toLegacyKey(const char* keyword)
         // Checks if the specified locale key is well-formed with the legacy locale syntax.
         //
         // Note:
-        //  Neither ICU nor LDML/CLDR provides the definition of keyword syntax.
-        //  However, a key should not contain '=' obviously. For now, all existing
-        //  keys are using ASCII alphabetic letters only. We won't add any new key
-        //  that is not compatible with the BCP 47 syntax. Therefore, we assume
-        //  a valid key consist from [0-9a-zA-Z], no symbols.
+        //  LDML/CLDR provides some definition of keyword syntax in
+        //  * http://www.unicode.org/reports/tr35/#Unicode_locale_identifier and
+        //  * http://www.unicode.org/reports/tr35/#Old_Locale_Extension_Syntax
+        //  Keys can only consist of [0-9a-zA-Z].
         if (isWellFormedLegacyKey(keyword)) {
             return keyword;
         }
@@ -2594,12 +2653,11 @@ uloc_toLegacyType(const char* keyword, const char* value)
         // Checks if the specified locale type is well-formed with the legacy locale syntax.
         //
         // Note:
-        //  Neither ICU nor LDML/CLDR provides the definition of keyword syntax.
-        //  However, a type should not contain '=' obviously. For now, all existing
-        //  types are using ASCII alphabetic letters with a few symbol letters. We won't
-        //  add any new type that is not compatible with the BCP 47 syntax except timezone
-        //  IDs. For now, we assume a valid type start with [0-9a-zA-Z], but may contain
-        //  '-' '_' '/' in the middle.
+        //  LDML/CLDR provides some definition of keyword syntax in
+        //  * http://www.unicode.org/reports/tr35/#Unicode_locale_identifier and
+        //  * http://www.unicode.org/reports/tr35/#Old_Locale_Extension_Syntax
+        //  Values (types) can only consist of [0-9a-zA-Z], plus for legacy values
+        //  we allow [/_-+] in the middle (e.g. "Etc/GMT+1", "Asia/Tel_Aviv")
         if (isWellFormedLegacyType(value)) {
             return value;
         }
index fcb066c..4eea504 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/uloc_tag.c b/source/common/uloc_tag.c
deleted file mode 100644 (file)
index 224470a..0000000
+++ /dev/null
@@ -1,2531 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-**********************************************************************
-*   Copyright (C) 2009-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/ures.h"
-#include "unicode/putil.h"
-#include "unicode/uloc.h"
-#include "ustr_imp.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "putilimp.h"
-#include "uinvchar.h"
-#include "ulocimp.h"
-#include "uassert.h"
-
-
-/* struct holding a single variant */
-typedef struct VariantListEntry {
-    const char              *variant;
-    struct VariantListEntry *next;
-} VariantListEntry;
-
-/* struct holding a single attribute value */
-typedef struct AttributeListEntry {
-    const char              *attribute;
-    struct AttributeListEntry *next;
-} AttributeListEntry;
-
-/* struct holding a single extension */
-typedef struct ExtensionListEntry {
-    const char                  *key;
-    const char                  *value;
-    struct ExtensionListEntry   *next;
-} ExtensionListEntry;
-
-#define MAXEXTLANG 3
-typedef struct ULanguageTag {
-    char                *buf;   /* holding parsed subtags */
-    const char          *language;
-    const char          *extlang[MAXEXTLANG];
-    const char          *script;
-    const char          *region;
-    VariantListEntry    *variants;
-    ExtensionListEntry  *extensions;
-    const char          *privateuse;
-    const char          *grandfathered;
-} ULanguageTag;
-
-#define MINLEN 2
-#define SEP '-'
-#define PRIVATEUSE 'x'
-#define LDMLEXT 'u'
-
-#define LOCALE_SEP '_'
-#define LOCALE_EXT_SEP '@'
-#define LOCALE_KEYWORD_SEP ';'
-#define LOCALE_KEY_TYPE_SEP '='
-
-#define ISALPHA(c) uprv_isASCIILetter(c)
-#define ISNUMERIC(c) ((c)>='0' && (c)<='9')
-
-static const char EMPTY[] = "";
-static const char LANG_UND[] = "und";
-static const char PRIVATEUSE_KEY[] = "x";
-static const char _POSIX[] = "_POSIX";
-static const char POSIX_KEY[] = "va";
-static const char POSIX_VALUE[] = "posix";
-static const char LOCALE_ATTRIBUTE_KEY[] = "attribute";
-static const char PRIVUSE_VARIANT_PREFIX[] = "lvariant";
-static const char LOCALE_TYPE_YES[] = "yes";
-
-#define LANG_UND_LEN 3
-
-static const char* const GRANDFATHERED[] = {
-/*  grandfathered   preferred */
-    "art-lojban",   "jbo",
-    "cel-gaulish",  "xtg-x-cel-gaulish",
-    "en-GB-oed",    "en-GB-x-oed",
-    "i-ami",        "ami",
-    "i-bnn",        "bnn",
-    "i-default",    "en-x-i-default",
-    "i-enochian",   "und-x-i-enochian",
-    "i-hak",        "hak",
-    "i-klingon",    "tlh",
-    "i-lux",        "lb",
-    "i-mingo",      "see-x-i-mingo",
-    "i-navajo",     "nv",
-    "i-pwn",        "pwn",
-    "i-tao",        "tao",
-    "i-tay",        "tay",
-    "i-tsu",        "tsu",
-    "no-bok",       "nb",
-    "no-nyn",       "nn",
-    "sgn-be-fr",    "sfb",
-    "sgn-be-nl",    "vgt",
-    "sgn-ch-de",    "sgg",
-    "zh-guoyu",     "cmn",
-    "zh-hakka",     "hak",
-    "zh-min",       "nan-x-zh-min",
-    "zh-min-nan",   "nan",
-    "zh-xiang",     "hsn",
-    NULL,           NULL
-};
-
-static const char DEPRECATEDLANGS[][4] = {
-/*  deprecated  new */
-    "iw",       "he",
-    "ji",       "yi",
-    "in",       "id"
-};
-
-/*
-* -------------------------------------------------
-*
-* These ultag_ functions may be exposed as APIs later
-*
-* -------------------------------------------------
-*/
-
-static ULanguageTag*
-ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* status);
-
-static void
-ultag_close(ULanguageTag* langtag);
-
-static const char*
-ultag_getLanguage(const ULanguageTag* langtag);
-
-#if 0
-static const char*
-ultag_getJDKLanguage(const ULanguageTag* langtag);
-#endif
-
-static const char*
-ultag_getExtlang(const ULanguageTag* langtag, int32_t idx);
-
-static int32_t
-ultag_getExtlangSize(const ULanguageTag* langtag);
-
-static const char*
-ultag_getScript(const ULanguageTag* langtag);
-
-static const char*
-ultag_getRegion(const ULanguageTag* langtag);
-
-static const char*
-ultag_getVariant(const ULanguageTag* langtag, int32_t idx);
-
-static int32_t
-ultag_getVariantsSize(const ULanguageTag* langtag);
-
-static const char*
-ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx);
-
-static const char*
-ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx);
-
-static int32_t
-ultag_getExtensionsSize(const ULanguageTag* langtag);
-
-static const char*
-ultag_getPrivateUse(const ULanguageTag* langtag);
-
-#if 0
-static const char*
-ultag_getGrandfathered(const ULanguageTag* langtag);
-#endif
-
-/*
-* -------------------------------------------------
-*
-* Language subtag syntax validation functions
-*
-* -------------------------------------------------
-*/
-
-static UBool
-_isAlphaString(const char* s, int32_t len) {
-    int32_t i;
-    for (i = 0; i < len; i++) {
-        if (!ISALPHA(*(s + i))) {
-            return FALSE;
-        }
-    }
-    return TRUE;
-}
-
-static UBool
-_isNumericString(const char* s, int32_t len) {
-    int32_t i;
-    for (i = 0; i < len; i++) {
-        if (!ISNUMERIC(*(s + i))) {
-            return FALSE;
-        }
-    }
-    return TRUE;
-}
-
-static UBool
-_isAlphaNumericString(const char* s, int32_t len) {
-    int32_t i;
-    for (i = 0; i < len; i++) {
-        if (!ISALPHA(*(s + i)) && !ISNUMERIC(*(s + i))) {
-            return FALSE;
-        }
-    }
-    return TRUE;
-}
-
-static UBool
-_isLanguageSubtag(const char* s, int32_t len) {
-    /*
-     * language      = 2*3ALPHA            ; shortest ISO 639 code
-     *                 ["-" extlang]       ; sometimes followed by
-     *                                     ;   extended language subtags
-     *               / 4ALPHA              ; or reserved for future use
-     *               / 5*8ALPHA            ; or registered language subtag
-     */
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len >= 2 && len <= 8 && _isAlphaString(s, len)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-static UBool
-_isExtlangSubtag(const char* s, int32_t len) {
-    /*
-     * extlang       = 3ALPHA              ; selected ISO 639 codes
-     *                 *2("-" 3ALPHA)      ; permanently reserved
-     */
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len == 3 && _isAlphaString(s, len)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-static UBool
-_isScriptSubtag(const char* s, int32_t len) {
-    /*
-     * script        = 4ALPHA              ; ISO 15924 code
-     */
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len == 4 && _isAlphaString(s, len)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-static UBool
-_isRegionSubtag(const char* s, int32_t len) {
-    /*
-     * region        = 2ALPHA              ; ISO 3166-1 code
-     *               / 3DIGIT              ; UN M.49 code
-     */
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len == 2 && _isAlphaString(s, len)) {
-        return TRUE;
-    }
-    if (len == 3 && _isNumericString(s, len)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-static UBool
-_isVariantSubtag(const char* s, int32_t len) {
-    /*
-     * variant       = 5*8alphanum         ; registered variants
-     *               / (DIGIT 3alphanum)
-     */
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len >= 5 && len <= 8 && _isAlphaNumericString(s, len)) {
-        return TRUE;
-    }
-    if (len == 4 && ISNUMERIC(*s) && _isAlphaNumericString(s + 1, 3)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-static UBool
-_isPrivateuseVariantSubtag(const char* s, int32_t len) {
-    /*
-     * variant       = 1*8alphanum         ; registered variants
-     *               / (DIGIT 3alphanum)
-     */
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len >= 1 && len <= 8 && _isAlphaNumericString(s, len)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-static UBool
-_isExtensionSingleton(const char* s, int32_t len) {
-    /*
-     * extension     = singleton 1*("-" (2*8alphanum))
-     */
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len == 1 && ISALPHA(*s) && (uprv_tolower(*s) != PRIVATEUSE)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-static UBool
-_isExtensionSubtag(const char* s, int32_t len) {
-    /*
-     * extension     = singleton 1*("-" (2*8alphanum))
-     */
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len >= 2 && len <= 8 && _isAlphaNumericString(s, len)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-static UBool
-_isExtensionSubtags(const char* s, int32_t len) {
-    const char *p = s;
-    const char *pSubtag = NULL;
-
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-
-    while ((p - s) < len) {
-        if (*p == SEP) {
-            if (pSubtag == NULL) {
-                return FALSE;
-            }
-            if (!_isExtensionSubtag(pSubtag, (int32_t)(p - pSubtag))) {
-                return FALSE;
-            }
-            pSubtag = NULL;
-        } else if (pSubtag == NULL) {
-            pSubtag = p;
-        }
-        p++;
-    }
-    if (pSubtag == NULL) {
-        return FALSE;
-    }
-    return _isExtensionSubtag(pSubtag, (int32_t)(p - pSubtag));
-}
-
-static UBool
-_isPrivateuseValueSubtag(const char* s, int32_t len) {
-    /*
-     * privateuse    = "x" 1*("-" (1*8alphanum))
-     */
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len >= 1 && len <= 8 && _isAlphaNumericString(s, len)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-static UBool
-_isPrivateuseValueSubtags(const char* s, int32_t len) {
-    const char *p = s;
-    const char *pSubtag = NULL;
-
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-
-    while ((p - s) < len) {
-        if (*p == SEP) {
-            if (pSubtag == NULL) {
-                return FALSE;
-            }
-            if (!_isPrivateuseValueSubtag(pSubtag, (int32_t)(p - pSubtag))) {
-                return FALSE;
-            }
-            pSubtag = NULL;
-        } else if (pSubtag == NULL) {
-            pSubtag = p;
-        }
-        p++;
-    }
-    if (pSubtag == NULL) {
-        return FALSE;
-    }
-    return _isPrivateuseValueSubtag(pSubtag, (int32_t)(p - pSubtag));
-}
-
-U_CFUNC UBool
-ultag_isUnicodeLocaleKey(const char* s, int32_t len) {
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-    if (len == 2 && _isAlphaNumericString(s, len)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-U_CFUNC UBool
-ultag_isUnicodeLocaleType(const char*s, int32_t len) {
-    const char* p;
-    int32_t subtagLen = 0;
-
-    if (len < 0) {
-        len = (int32_t)uprv_strlen(s);
-    }
-
-    for (p = s; len > 0; p++, len--) {
-        if (*p == SEP) {
-            if (subtagLen < 3) {
-                return FALSE;
-            }
-            subtagLen = 0;
-        } else if (ISALPHA(*p) || ISNUMERIC(*p)) {
-            subtagLen++;
-            if (subtagLen > 8) {
-                return FALSE;
-            }
-        } else {
-            return FALSE;
-        }
-    }
-
-    return (subtagLen >= 3);
-}
-/*
-* -------------------------------------------------
-*
-* Helper functions
-*
-* -------------------------------------------------
-*/
-
-static UBool
-_addVariantToList(VariantListEntry **first, VariantListEntry *var) {
-    UBool bAdded = TRUE;
-
-    if (*first == NULL) {
-        var->next = NULL;
-        *first = var;
-    } else {
-        VariantListEntry *prev, *cur;
-        int32_t cmp;
-
-        /* variants order should be preserved */
-        prev = NULL;
-        cur = *first;
-        while (TRUE) {
-            if (cur == NULL) {
-                prev->next = var;
-                var->next = NULL;
-                break;
-            }
-
-            /* Checking for duplicate variant */
-            cmp = uprv_compareInvCharsAsAscii(var->variant, cur->variant);
-            if (cmp == 0) {
-                /* duplicated variant */
-                bAdded = FALSE;
-                break;
-            }
-            prev = cur;
-            cur = cur->next;
-        }
-    }
-
-    return bAdded;
-}
-
-static UBool
-_addAttributeToList(AttributeListEntry **first, AttributeListEntry *attr) {
-    UBool bAdded = TRUE;
-
-    if (*first == NULL) {
-        attr->next = NULL;
-        *first = attr;
-    } else {
-        AttributeListEntry *prev, *cur;
-        int32_t cmp;
-
-        /* reorder variants in alphabetical order */
-        prev = NULL;
-        cur = *first;
-        while (TRUE) {
-            if (cur == NULL) {
-                prev->next = attr;
-                attr->next = NULL;
-                break;
-            }
-            cmp = uprv_compareInvCharsAsAscii(attr->attribute, cur->attribute);
-            if (cmp < 0) {
-                if (prev == NULL) {
-                    *first = attr;
-                } else {
-                    prev->next = attr;
-                }
-                attr->next = cur;
-                break;
-            }
-            if (cmp == 0) {
-                /* duplicated variant */
-                bAdded = FALSE;
-                break;
-            }
-            prev = cur;
-            cur = cur->next;
-        }
-    }
-
-    return bAdded;
-}
-
-
-static UBool
-_addExtensionToList(ExtensionListEntry **first, ExtensionListEntry *ext, UBool localeToBCP) {
-    UBool bAdded = TRUE;
-
-    if (*first == NULL) {
-        ext->next = NULL;
-        *first = ext;
-    } else {
-        ExtensionListEntry *prev, *cur;
-        int32_t cmp;
-
-        /* reorder variants in alphabetical order */
-        prev = NULL;
-        cur = *first;
-        while (TRUE) {
-            if (cur == NULL) {
-                prev->next = ext;
-                ext->next = NULL;
-                break;
-            }
-            if (localeToBCP) {
-                /* special handling for locale to bcp conversion */
-                int32_t len, curlen;
-
-                len = (int32_t)uprv_strlen(ext->key);
-                curlen = (int32_t)uprv_strlen(cur->key);
-
-                if (len == 1 && curlen == 1) {
-                    if (*(ext->key) == *(cur->key)) {
-                        cmp = 0;
-                    } else if (*(ext->key) == PRIVATEUSE) {
-                        cmp = 1;
-                    } else if (*(cur->key) == PRIVATEUSE) {
-                        cmp = -1;
-                    } else {
-                        cmp = *(ext->key) - *(cur->key);
-                    }
-                } else if (len == 1) {
-                    cmp = *(ext->key) - LDMLEXT; 
-                } else if (curlen == 1) {
-                    cmp = LDMLEXT - *(cur->key);
-                } else {
-                    cmp = uprv_compareInvCharsAsAscii(ext->key, cur->key);
-                    /* Both are u extension keys - we need special handling for 'attribute' */
-                    if (cmp != 0) {
-                        if (uprv_strcmp(cur->key, LOCALE_ATTRIBUTE_KEY) == 0) {
-                            cmp = 1;
-                        } else if (uprv_strcmp(ext->key, LOCALE_ATTRIBUTE_KEY) == 0) {
-                            cmp = -1;
-                        }
-                    }
-                }
-            } else {
-                cmp = uprv_compareInvCharsAsAscii(ext->key, cur->key);
-            }
-            if (cmp < 0) {
-                if (prev == NULL) {
-                    *first = ext;
-                } else {
-                    prev->next = ext;
-                }
-                ext->next = cur;
-                break;
-            }
-            if (cmp == 0) {
-                /* duplicated extension key */
-                bAdded = FALSE;
-                break;
-            }
-            prev = cur;
-            cur = cur->next;
-        }
-    }
-
-    return bAdded;
-}
-
-static void
-_initializeULanguageTag(ULanguageTag* langtag) {
-    int32_t i;
-
-    langtag->buf = NULL;
-
-    langtag->language = EMPTY;
-    for (i = 0; i < MAXEXTLANG; i++) {
-        langtag->extlang[i] = NULL;
-    }
-
-    langtag->script = EMPTY;
-    langtag->region = EMPTY;
-
-    langtag->variants = NULL;
-    langtag->extensions = NULL;
-
-    langtag->grandfathered = EMPTY;
-    langtag->privateuse = EMPTY;
-}
-
-static int32_t
-_appendLanguageToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UErrorCode* status) {
-    char buf[ULOC_LANG_CAPACITY];
-    UErrorCode tmpStatus = U_ZERO_ERROR;
-    int32_t len, i;
-    int32_t reslen = 0;
-
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-
-    len = uloc_getLanguage(localeID, buf, sizeof(buf), &tmpStatus);
-    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
-        if (strict) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-            return 0;
-        }
-        len = 0;
-    }
-
-    /* Note: returned language code is in lower case letters */
-
-    if (len == 0) {
-        if (reslen < capacity) {
-            uprv_memcpy(appendAt + reslen, LANG_UND, uprv_min(LANG_UND_LEN, capacity - reslen));
-        }
-        reslen += LANG_UND_LEN;
-    } else if (!_isLanguageSubtag(buf, len)) {
-            /* invalid language code */
-        if (strict) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-            return 0;
-        }
-        if (reslen < capacity) {
-            uprv_memcpy(appendAt + reslen, LANG_UND, uprv_min(LANG_UND_LEN, capacity - reslen));
-        }
-        reslen += LANG_UND_LEN;
-    } else {
-        /* resolve deprecated */
-        for (i = 0; i < UPRV_LENGTHOF(DEPRECATEDLANGS); i += 2) {
-            if (uprv_compareInvCharsAsAscii(buf, DEPRECATEDLANGS[i]) == 0) {
-                uprv_strcpy(buf, DEPRECATEDLANGS[i + 1]);
-                len = (int32_t)uprv_strlen(buf);
-                break;
-            }
-        }
-        if (reslen < capacity) {
-            uprv_memcpy(appendAt + reslen, buf, uprv_min(len, capacity - reslen));
-        }
-        reslen += len;
-    }
-    u_terminateChars(appendAt, capacity, reslen, status);
-    return reslen;
-}
-
-static int32_t
-_appendScriptToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UErrorCode* status) {
-    char buf[ULOC_SCRIPT_CAPACITY];
-    UErrorCode tmpStatus = U_ZERO_ERROR;
-    int32_t len;
-    int32_t reslen = 0;
-
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-
-    len = uloc_getScript(localeID, buf, sizeof(buf), &tmpStatus);
-    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
-        if (strict) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-        }
-        return 0;
-    }
-
-    if (len > 0) {
-        if (!_isScriptSubtag(buf, len)) {
-            /* invalid script code */
-            if (strict) {
-                *status = U_ILLEGAL_ARGUMENT_ERROR;
-            }
-            return 0;
-        } else {
-            if (reslen < capacity) {
-                *(appendAt + reslen) = SEP;
-            }
-            reslen++;
-
-            if (reslen < capacity) {
-                uprv_memcpy(appendAt + reslen, buf, uprv_min(len, capacity - reslen));
-            }
-            reslen += len;
-        }
-    }
-    u_terminateChars(appendAt, capacity, reslen, status);
-    return reslen;
-}
-
-static int32_t
-_appendRegionToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UErrorCode* status) {
-    char buf[ULOC_COUNTRY_CAPACITY];
-    UErrorCode tmpStatus = U_ZERO_ERROR;
-    int32_t len;
-    int32_t reslen = 0;
-
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-
-    len = uloc_getCountry(localeID, buf, sizeof(buf), &tmpStatus);
-    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
-        if (strict) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-        }
-        return 0;
-    }
-
-    if (len > 0) {
-        if (!_isRegionSubtag(buf, len)) {
-            /* invalid region code */
-            if (strict) {
-                *status = U_ILLEGAL_ARGUMENT_ERROR;
-            }
-            return 0;
-        } else {
-            if (reslen < capacity) {
-                *(appendAt + reslen) = SEP;
-            }
-            reslen++;
-
-            if (reslen < capacity) {
-                uprv_memcpy(appendAt + reslen, buf, uprv_min(len, capacity - reslen));
-            }
-            reslen += len;
-        }
-    }
-    u_terminateChars(appendAt, capacity, reslen, status);
-    return reslen;
-}
-
-static int32_t
-_appendVariantsToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UBool *hadPosix, UErrorCode* status) {
-    char buf[ULOC_FULLNAME_CAPACITY];
-    UErrorCode tmpStatus = U_ZERO_ERROR;
-    int32_t len, i;
-    int32_t reslen = 0;
-
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-
-    len = uloc_getVariant(localeID, buf, sizeof(buf), &tmpStatus);
-    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
-        if (strict) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-        }
-        return 0;
-    }
-
-    if (len > 0) {
-        char *p, *pVar;
-        UBool bNext = TRUE;
-        VariantListEntry *var;
-        VariantListEntry *varFirst = NULL;
-
-        pVar = NULL;
-        p = buf;
-        while (bNext) {
-            if (*p == SEP || *p == LOCALE_SEP || *p == 0) {
-                if (*p == 0) {
-                    bNext = FALSE;
-                } else {
-                    *p = 0; /* terminate */
-                }
-                if (pVar == NULL) {
-                    if (strict) {
-                        *status = U_ILLEGAL_ARGUMENT_ERROR;
-                        break;
-                    }
-                    /* ignore empty variant */
-                } else {
-                    /* ICU uses upper case letters for variants, but
-                       the canonical format is lowercase in BCP47 */
-                    for (i = 0; *(pVar + i) != 0; i++) {
-                        *(pVar + i) = uprv_tolower(*(pVar + i));
-                    }
-
-                    /* validate */
-                    if (_isVariantSubtag(pVar, -1)) {
-                        if (uprv_strcmp(pVar,POSIX_VALUE) || len != uprv_strlen(POSIX_VALUE)) {
-                            /* emit the variant to the list */
-                            var = (VariantListEntry*)uprv_malloc(sizeof(VariantListEntry));
-                            if (var == NULL) {
-                                *status = U_MEMORY_ALLOCATION_ERROR;
-                                break;
-                            }
-                            var->variant = pVar;
-                            if (!_addVariantToList(&varFirst, var)) {
-                                /* duplicated variant */
-                                uprv_free(var);
-                                if (strict) {
-                                    *status = U_ILLEGAL_ARGUMENT_ERROR;
-                                    break;
-                                }
-                            }
-                        } else {
-                            /* Special handling for POSIX variant, need to remember that we had it and then */
-                            /* treat it like an extension later. */
-                            *hadPosix = TRUE;
-                        }
-                    } else if (strict) {
-                        *status = U_ILLEGAL_ARGUMENT_ERROR;
-                        break;
-                    } else if (_isPrivateuseValueSubtag(pVar, -1)) {
-                        /* Handle private use subtags separately */
-                        break;
-                    }
-                }
-                /* reset variant starting position */
-                pVar = NULL;
-            } else if (pVar == NULL) {
-                pVar = p;
-            }
-            p++;
-        }
-
-        if (U_SUCCESS(*status)) {
-            if (varFirst != NULL) {
-                int32_t varLen;
-
-                /* write out validated/normalized variants to the target */
-                var = varFirst;
-                while (var != NULL) {
-                    if (reslen < capacity) {
-                        *(appendAt + reslen) = SEP;
-                    }
-                    reslen++;
-                    varLen = (int32_t)uprv_strlen(var->variant);
-                    if (reslen < capacity) {
-                        uprv_memcpy(appendAt + reslen, var->variant, uprv_min(varLen, capacity - reslen));
-                    }
-                    reslen += varLen;
-                    var = var->next;
-                }
-            }
-        }
-
-        /* clean up */
-        var = varFirst;
-        while (var != NULL) {
-            VariantListEntry *tmpVar = var->next;
-            uprv_free(var);
-            var = tmpVar;
-        }
-
-        if (U_FAILURE(*status)) {
-            return 0;
-        }
-    }
-
-    u_terminateChars(appendAt, capacity, reslen, status);
-    return reslen;
-}
-
-static int32_t
-_appendKeywordsToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UBool hadPosix, UErrorCode* status) {
-    char buf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
-    char attrBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY] = { 0 };
-    int32_t attrBufLength = 0;
-    UEnumeration *keywordEnum = NULL;
-    int32_t reslen = 0;
-
-    keywordEnum = uloc_openKeywords(localeID, status);
-    if (U_FAILURE(*status) && !hadPosix) {
-        uenum_close(keywordEnum);
-        return 0;
-    }
-    if (keywordEnum != NULL || hadPosix) {
-        /* reorder extensions */
-        int32_t len;
-        const char *key;
-        ExtensionListEntry *firstExt = NULL;
-        ExtensionListEntry *ext;
-        AttributeListEntry *firstAttr = NULL;
-        AttributeListEntry *attr;
-        char *attrValue;
-        char extBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
-        char *pExtBuf = extBuf;
-        int32_t extBufCapacity = sizeof(extBuf);
-        const char *bcpKey, *bcpValue;
-        UErrorCode tmpStatus = U_ZERO_ERROR;
-        int32_t keylen;
-        UBool isBcpUExt;
-
-        while (TRUE) {
-            key = uenum_next(keywordEnum, NULL, status);
-            if (key == NULL) {
-                break;
-            }
-            len = uloc_getKeywordValue(localeID, key, buf, sizeof(buf), &tmpStatus);
-            /* buf must be null-terminated */
-            if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
-                if (strict) {
-                    *status = U_ILLEGAL_ARGUMENT_ERROR;
-                    break;
-                }
-                /* ignore this keyword */
-                tmpStatus = U_ZERO_ERROR;
-                continue;
-            }
-
-            keylen = (int32_t)uprv_strlen(key);
-            isBcpUExt = (keylen > 1);
-
-            /* special keyword used for representing Unicode locale attributes */
-            if (uprv_strcmp(key, LOCALE_ATTRIBUTE_KEY) == 0) {
-                if (len > 0) {
-                    int32_t i = 0;
-                    while (TRUE) {
-                        attrBufLength = 0;
-                        for (; i < len; i++) {
-                            if (buf[i] != '-') {
-                                attrBuf[attrBufLength++] = buf[i];
-                            } else {
-                                i++;
-                                break;
-                            }
-                        }
-                        if (attrBufLength > 0) {
-                            attrBuf[attrBufLength] = 0;
-
-                        } else if (i >= len){
-                            break;
-                        }
-
-                        /* create AttributeListEntry */
-                        attr = (AttributeListEntry*)uprv_malloc(sizeof(AttributeListEntry));
-                        if (attr == NULL) {
-                            *status = U_MEMORY_ALLOCATION_ERROR;
-                            break;
-                        }
-                        attrValue = (char*)uprv_malloc(attrBufLength + 1);
-                        if (attrValue == NULL) {
-                            *status = U_MEMORY_ALLOCATION_ERROR;
-                            break;
-                        }
-                        uprv_strcpy(attrValue, attrBuf);
-                        attr->attribute = attrValue;
-
-                        if (!_addAttributeToList(&firstAttr, attr)) {
-                            uprv_free(attr);
-                            uprv_free(attrValue);
-                            if (strict) {
-                                *status = U_ILLEGAL_ARGUMENT_ERROR;
-                                break;
-                            }
-                        }
-                    }
-                    /* for a place holder ExtensionListEntry */
-                    bcpKey = LOCALE_ATTRIBUTE_KEY;
-                    bcpValue = NULL;
-                }
-            } else if (isBcpUExt) {
-                bcpKey = uloc_toUnicodeLocaleKey(key);
-                if (bcpKey == NULL) {
-                    if (strict) {
-                        *status = U_ILLEGAL_ARGUMENT_ERROR;
-                        break;
-                    }
-                    continue;
-                }
-
-                /* we've checked buf is null-terminated above */
-                bcpValue = uloc_toUnicodeLocaleType(key, buf);
-                if (bcpValue == NULL) {
-                    if (strict) {
-                        *status = U_ILLEGAL_ARGUMENT_ERROR;
-                        break;
-                    }
-                    continue;
-                }
-                if (bcpValue == buf) {
-                    /* 
-                    When uloc_toUnicodeLocaleType(key, buf) returns the
-                    input value as is, the value is well-formed, but has
-                    no known mapping. This implementation normalizes the
-                    the value to lower case
-                    */
-                    int32_t bcpValueLen = uprv_strlen(bcpValue);
-                    if (bcpValueLen < extBufCapacity) {
-                        uprv_strcpy(pExtBuf, bcpValue);
-                        T_CString_toLowerCase(pExtBuf);
-
-                        bcpValue = pExtBuf;
-
-                        pExtBuf += (bcpValueLen + 1);
-                        extBufCapacity -= (bcpValueLen + 1);
-                    } else {
-                        if (strict) {
-                            *status = U_ILLEGAL_ARGUMENT_ERROR;
-                            break;
-                        }
-                        continue;
-                    }
-                }
-            } else {
-                if (*key == PRIVATEUSE) {
-                    if (!_isPrivateuseValueSubtags(buf, len)) {
-                        if (strict) {
-                            *status = U_ILLEGAL_ARGUMENT_ERROR;
-                            break;
-                        }
-                        continue;
-                    }
-                } else {
-                    if (!_isExtensionSingleton(key, keylen) || !_isExtensionSubtags(buf, len)) {
-                        if (strict) {
-                            *status = U_ILLEGAL_ARGUMENT_ERROR;
-                            break;
-                        }
-                        continue;
-                    }
-                }
-                bcpKey = key;
-                if ((len + 1) < extBufCapacity) {
-                    uprv_memcpy(pExtBuf, buf, len);
-                    bcpValue = pExtBuf;
-
-                    pExtBuf += len;
-
-                    *pExtBuf = 0;
-                    pExtBuf++;
-
-                    extBufCapacity -= (len + 1);
-                } else {
-                    *status = U_ILLEGAL_ARGUMENT_ERROR;
-                    break;
-                }
-            }
-
-            /* create ExtensionListEntry */
-            ext = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
-            if (ext == NULL) {
-                *status = U_MEMORY_ALLOCATION_ERROR;
-                break;
-            }
-            ext->key = bcpKey;
-            ext->value = bcpValue;
-
-            if (!_addExtensionToList(&firstExt, ext, TRUE)) {
-                uprv_free(ext);
-                if (strict) {
-                    *status = U_ILLEGAL_ARGUMENT_ERROR;
-                    break;
-                }
-            }
-        }
-
-        /* Special handling for POSIX variant - add the keywords for POSIX */
-        if (hadPosix) {
-            /* create ExtensionListEntry for POSIX */
-            ext = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
-            if (ext == NULL) {
-                *status = U_MEMORY_ALLOCATION_ERROR;
-                goto cleanup;
-            }
-            ext->key = POSIX_KEY;
-            ext->value = POSIX_VALUE;
-
-            if (!_addExtensionToList(&firstExt, ext, TRUE)) {
-                uprv_free(ext);
-            }
-        }
-
-        if (U_SUCCESS(*status) && (firstExt != NULL || firstAttr != NULL)) {
-            UBool startLDMLExtension = FALSE;
-            for (ext = firstExt; ext; ext = ext->next) {
-                if (!startLDMLExtension && uprv_strlen(ext->key) > 1) {
-                    /* first LDML u singlton extension */
-                   if (reslen < capacity) {
-                       *(appendAt + reslen) = SEP;
-                   }
-                   reslen++;
-                   if (reslen < capacity) {
-                       *(appendAt + reslen) = LDMLEXT;
-                   }
-                   reslen++;
-
-                   startLDMLExtension = TRUE;
-                }
-
-                /* write out the sorted BCP47 attributes, extensions and private use */
-                if (uprv_strcmp(ext->key, LOCALE_ATTRIBUTE_KEY) == 0) {
-                    /* write the value for the attributes */
-                    for (attr = firstAttr; attr; attr = attr->next) {
-                        if (reslen < capacity) {
-                            *(appendAt + reslen) = SEP;
-                        }
-                        reslen++;
-                        len = (int32_t)uprv_strlen(attr->attribute);
-                        if (reslen < capacity) {
-                            uprv_memcpy(appendAt + reslen, attr->attribute, uprv_min(len, capacity - reslen));
-                        }
-                        reslen += len;
-                    }
-                } else {
-                    if (reslen < capacity) {
-                        *(appendAt + reslen) = SEP;
-                    }
-                    reslen++;
-                    len = (int32_t)uprv_strlen(ext->key);
-                    if (reslen < capacity) {
-                        uprv_memcpy(appendAt + reslen, ext->key, uprv_min(len, capacity - reslen));
-                    }
-                    reslen += len;
-                    if (reslen < capacity) {
-                        *(appendAt + reslen) = SEP;
-                    }
-                    reslen++;
-                    len = (int32_t)uprv_strlen(ext->value);
-                    if (reslen < capacity) {
-                        uprv_memcpy(appendAt + reslen, ext->value, uprv_min(len, capacity - reslen));
-                    }
-                    reslen += len;
-                }
-            }
-        }
-cleanup:
-        /* clean up */
-        ext = firstExt;
-        while (ext != NULL) {
-            ExtensionListEntry *tmpExt = ext->next;
-            uprv_free(ext);
-            ext = tmpExt;
-        }
-
-        attr = firstAttr;
-        while (attr != NULL) {
-            AttributeListEntry *tmpAttr = attr->next;
-            char *pValue = (char *)attr->attribute;
-            uprv_free(pValue);
-            uprv_free(attr);
-            attr = tmpAttr;
-        }
-
-        uenum_close(keywordEnum);
-
-        if (U_FAILURE(*status)) {
-            return 0;
-        }
-    }
-
-    return u_terminateChars(appendAt, capacity, reslen, status);
-}
-
-/**
- * Append keywords parsed from LDML extension value
- * e.g. "u-ca-gregory-co-trad" -> {calendar = gregorian} {collation = traditional}
- * Note: char* buf is used for storing keywords
- */
-static void
-_appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendTo, char* buf, int32_t bufSize, UBool *posixVariant, UErrorCode *status) {
-    const char *pTag;   /* beginning of current subtag */
-    const char *pKwds;  /* beginning of key-type pairs */
-    UBool variantExists = *posixVariant;
-
-    ExtensionListEntry *kwdFirst = NULL;    /* first LDML keyword */
-    ExtensionListEntry *kwd, *nextKwd;
-
-    AttributeListEntry *attrFirst = NULL;   /* first attribute */
-    AttributeListEntry *attr, *nextAttr;
-
-    int32_t len;
-    int32_t bufIdx = 0;
-
-    char attrBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
-    int32_t attrBufIdx = 0;
-
-    /* Reset the posixVariant value */
-    *posixVariant = FALSE;
-
-    pTag = ldmlext;
-    pKwds = NULL;
-
-    /* Iterate through u extension attributes */
-    while (*pTag) {
-        /* locate next separator char */
-        for (len = 0; *(pTag + len) && *(pTag + len) != SEP; len++);
-
-        if (ultag_isUnicodeLocaleKey(pTag, len)) {
-            pKwds = pTag;
-            break;
-        }
-
-        /* add this attribute to the list */
-        attr = (AttributeListEntry*)uprv_malloc(sizeof(AttributeListEntry));
-        if (attr == NULL) {
-            *status = U_MEMORY_ALLOCATION_ERROR;
-            goto cleanup;
-        }
-
-        if (len < (int32_t)sizeof(attrBuf) - attrBufIdx) {
-            uprv_memcpy(&attrBuf[attrBufIdx], pTag, len);
-            attrBuf[attrBufIdx + len] = 0;
-            attr->attribute = &attrBuf[attrBufIdx];
-            attrBufIdx += (len + 1);
-        } else {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-            goto cleanup;
-        }
-
-        if (!_addAttributeToList(&attrFirst, attr)) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-            uprv_free(attr);
-            goto cleanup;
-        }
-
-        /* next tag */
-        pTag += len;
-        if (*pTag) {
-            /* next to the separator */
-            pTag++;
-        }
-    }
-
-    if (attrFirst) {
-        /* emit attributes as an LDML keyword, e.g. attribute=attr1-attr2 */
-
-        if (attrBufIdx > bufSize) {
-            /* attrBufIdx == <total length of attribute subtag> + 1 */
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-            goto cleanup;
-        }
-
-        kwd = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
-        if (kwd == NULL) {
-            *status = U_MEMORY_ALLOCATION_ERROR;
-            goto cleanup;
-        }
-
-        kwd->key = LOCALE_ATTRIBUTE_KEY;
-        kwd->value = buf;
-
-        /* attribute subtags sorted in alphabetical order as type */
-        attr = attrFirst;
-        while (attr != NULL) {
-            nextAttr = attr->next;
-
-            /* buffer size check is done above */
-            if (attr != attrFirst) {
-                *(buf + bufIdx) = SEP;
-                bufIdx++;
-            }
-
-            len = uprv_strlen(attr->attribute);
-            uprv_memcpy(buf + bufIdx, attr->attribute, len);
-            bufIdx += len;
-
-            attr = nextAttr;
-        }
-        *(buf + bufIdx) = 0;
-        bufIdx++;
-
-        if (!_addExtensionToList(&kwdFirst, kwd, FALSE)) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-            uprv_free(kwd);
-            goto cleanup;
-        }
-
-        /* once keyword entry is created, delete the attribute list */
-        attr = attrFirst;
-        while (attr != NULL) {
-            nextAttr = attr->next;
-            uprv_free(attr);
-            attr = nextAttr;
-        }
-        attrFirst = NULL;
-    }
-
-    if (pKwds) {
-        const char *pBcpKey = NULL;     /* u extenstion key subtag */
-        const char *pBcpType = NULL;    /* beginning of u extension type subtag(s) */
-        int32_t bcpKeyLen = 0;
-        int32_t bcpTypeLen = 0;
-        UBool isDone = FALSE;
-
-        pTag = pKwds;
-        /* BCP47 representation of LDML key/type pairs */
-        while (!isDone) {
-            const char *pNextBcpKey = NULL;
-            int32_t nextBcpKeyLen = 0;
-            UBool emitKeyword = FALSE;
-
-            if (*pTag) {
-                /* locate next separator char */
-                for (len = 0; *(pTag + len) && *(pTag + len) != SEP; len++);
-
-                if (ultag_isUnicodeLocaleKey(pTag, len)) {
-                    if (pBcpKey) {
-                        emitKeyword = TRUE;
-                        pNextBcpKey = pTag;
-                        nextBcpKeyLen = len;
-                    } else {
-                        pBcpKey = pTag;
-                        bcpKeyLen = len;
-                    }
-                } else {
-                    U_ASSERT(pBcpKey != NULL);
-                    /* within LDML type subtags */
-                    if (pBcpType) {
-                        bcpTypeLen += (len + 1);
-                    } else {
-                        pBcpType = pTag;
-                        bcpTypeLen = len;
-                    }
-                }
-
-                /* next tag */
-                pTag += len;
-                if (*pTag) {
-                    /* next to the separator */
-                    pTag++;
-                }
-            } else {
-                /* processing last one */
-                emitKeyword = TRUE;
-                isDone = TRUE;
-            }
-
-            if (emitKeyword) {
-                const char *pKey = NULL;    /* LDML key */
-                const char *pType = NULL;   /* LDML type */
-
-                char bcpKeyBuf[9];          /* BCP key length is always 2 for now */
-
-                U_ASSERT(pBcpKey != NULL);
-
-                if (bcpKeyLen >= sizeof(bcpKeyBuf)) {
-                    /* the BCP key is invalid */
-                    *status = U_ILLEGAL_ARGUMENT_ERROR;
-                    goto cleanup;
-                }
-
-                uprv_strncpy(bcpKeyBuf, pBcpKey, bcpKeyLen);
-                bcpKeyBuf[bcpKeyLen] = 0;
-
-                /* u extension key to LDML key */
-                pKey = uloc_toLegacyKey(bcpKeyBuf);
-                if (pKey == NULL) {
-                    *status = U_ILLEGAL_ARGUMENT_ERROR;
-                    goto cleanup;
-                }
-                if (pKey == bcpKeyBuf) {
-                    /*
-                    The key returned by toLegacyKey points to the input buffer.
-                    We normalize the result key to lower case.
-                    */
-                    T_CString_toLowerCase(bcpKeyBuf);
-                    if (bufSize - bufIdx - 1 >= bcpKeyLen) {
-                        uprv_memcpy(buf + bufIdx, bcpKeyBuf, bcpKeyLen);
-                        pKey = buf + bufIdx;
-                        bufIdx += bcpKeyLen;
-                        *(buf + bufIdx) = 0;
-                        bufIdx++;
-                    } else {
-                        *status = U_BUFFER_OVERFLOW_ERROR;
-                        goto cleanup;
-                    }
-                }
-
-                if (pBcpType) {
-                    char bcpTypeBuf[128];       /* practically long enough even considering multiple subtag type */
-                    if (bcpTypeLen >= sizeof(bcpTypeBuf)) {
-                        /* the BCP type is too long */
-                        *status = U_ILLEGAL_ARGUMENT_ERROR;
-                        goto cleanup;
-                    }
-
-                    uprv_strncpy(bcpTypeBuf, pBcpType, bcpTypeLen);
-                    bcpTypeBuf[bcpTypeLen] = 0;
-
-                    /* BCP type to locale type */
-                    pType = uloc_toLegacyType(pKey, bcpTypeBuf);
-                    if (pType == NULL) {
-                        *status = U_ILLEGAL_ARGUMENT_ERROR;
-                        goto cleanup;
-                    }
-                    if (pType == bcpTypeBuf) {
-                        /*
-                        The type returned by toLegacyType points to the input buffer.
-                        We normalize the result type to lower case.
-                        */
-                        /* normalize to lower case */
-                        T_CString_toLowerCase(bcpTypeBuf);
-                        if (bufSize - bufIdx - 1 >= bcpTypeLen) {
-                            uprv_memcpy(buf + bufIdx, bcpTypeBuf, bcpTypeLen);
-                            pType = buf + bufIdx;
-                            bufIdx += bcpTypeLen;
-                            *(buf + bufIdx) = 0;
-                            bufIdx++;
-                        } else {
-                            *status = U_BUFFER_OVERFLOW_ERROR;
-                            goto cleanup;
-                        }
-                    }
-                } else {
-                    /* typeless - default type value is "yes" */
-                    pType = LOCALE_TYPE_YES;
-                }
-
-                /* Special handling for u-va-posix, since we want to treat this as a variant, 
-                   not as a keyword */
-                if (!variantExists && !uprv_strcmp(pKey, POSIX_KEY) && !uprv_strcmp(pType, POSIX_VALUE) ) {
-                    *posixVariant = TRUE;
-                } else {
-                    /* create an ExtensionListEntry for this keyword */
-                    kwd = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
-                    if (kwd == NULL) {
-                        *status = U_MEMORY_ALLOCATION_ERROR;
-                        goto cleanup;
-                    }
-
-                    kwd->key = pKey;
-                    kwd->value = pType;
-
-                    if (!_addExtensionToList(&kwdFirst, kwd, FALSE)) {
-                        *status = U_ILLEGAL_ARGUMENT_ERROR;
-                        uprv_free(kwd);
-                        goto cleanup;
-                    }
-                }
-
-                pBcpKey = pNextBcpKey;
-                bcpKeyLen = pNextBcpKey != NULL ? nextBcpKeyLen : 0;
-                pBcpType = NULL;
-                bcpTypeLen = 0;
-            }
-        }
-    }
-
-    kwd = kwdFirst;
-    while (kwd != NULL) {
-        nextKwd = kwd->next;
-        _addExtensionToList(appendTo, kwd, FALSE);
-        kwd = nextKwd;
-    }
-
-    return;
-
-cleanup:
-    attr = attrFirst;
-    while (attr != NULL) {
-        nextAttr = attr->next;
-        uprv_free(attr);
-        attr = nextAttr;
-    }
-
-    kwd = kwdFirst;
-    while (kwd != NULL) {
-        nextKwd = kwd->next;
-        uprv_free(kwd);
-        kwd = nextKwd;
-    }
-}
-
-
-static int32_t
-_appendKeywords(ULanguageTag* langtag, char* appendAt, int32_t capacity, UErrorCode* status) {
-    int32_t reslen = 0;
-    int32_t i, n;
-    int32_t len;
-    ExtensionListEntry *kwdFirst = NULL;
-    ExtensionListEntry *kwd;
-    const char *key, *type;
-    char *kwdBuf = NULL;
-    int32_t kwdBufLength = capacity;
-    UBool posixVariant = FALSE;
-
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-
-    kwdBuf = (char*)uprv_malloc(kwdBufLength);
-    if (kwdBuf == NULL) {
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return 0;
-    }
-
-    /* Determine if variants already exists */
-    if (ultag_getVariantsSize(langtag)) {
-        posixVariant = TRUE;
-    }
-
-    n = ultag_getExtensionsSize(langtag);
-
-    /* resolve locale keywords and reordering keys */
-    for (i = 0; i < n; i++) {
-        key = ultag_getExtensionKey(langtag, i);
-        type = ultag_getExtensionValue(langtag, i);
-        if (*key == LDMLEXT) {
-            _appendLDMLExtensionAsKeywords(type, &kwdFirst, kwdBuf, kwdBufLength, &posixVariant, status);
-            if (U_FAILURE(*status)) {
-                break;
-            }
-        } else {
-            kwd = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
-            if (kwd == NULL) {
-                *status = U_MEMORY_ALLOCATION_ERROR;
-                break;
-            }
-            kwd->key = key;
-            kwd->value = type;
-            if (!_addExtensionToList(&kwdFirst, kwd, FALSE)) {
-                uprv_free(kwd);
-                *status = U_ILLEGAL_ARGUMENT_ERROR;
-                break;
-            }
-        }
-    }
-
-    if (U_SUCCESS(*status)) {
-        type = ultag_getPrivateUse(langtag);
-        if ((int32_t)uprv_strlen(type) > 0) {
-            /* add private use as a keyword */
-            kwd = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
-            if (kwd == NULL) {
-                *status = U_MEMORY_ALLOCATION_ERROR;
-            } else {
-                kwd->key = PRIVATEUSE_KEY;
-                kwd->value = type;
-                if (!_addExtensionToList(&kwdFirst, kwd, FALSE)) {
-                    uprv_free(kwd);
-                    *status = U_ILLEGAL_ARGUMENT_ERROR;
-                }
-            }
-        }
-    }
-
-    /* If a POSIX variant was in the extensions, write it out before writing the keywords. */
-
-    if (U_SUCCESS(*status) && posixVariant) {
-        len = (int32_t) uprv_strlen(_POSIX);
-        if (reslen < capacity) {
-            uprv_memcpy(appendAt + reslen, _POSIX, uprv_min(len, capacity - reslen));
-        }
-        reslen += len;
-    }
-
-    if (U_SUCCESS(*status) && kwdFirst != NULL) {
-        /* write out the sorted keywords */
-        UBool firstValue = TRUE;
-        kwd = kwdFirst;
-        do {
-            if (reslen < capacity) {
-                if (firstValue) {
-                    /* '@' */
-                    *(appendAt + reslen) = LOCALE_EXT_SEP;
-                    firstValue = FALSE;
-                } else {
-                    /* ';' */
-                    *(appendAt + reslen) = LOCALE_KEYWORD_SEP;
-                }
-            }
-            reslen++;
-
-            /* key */
-            len = (int32_t)uprv_strlen(kwd->key);
-            if (reslen < capacity) {
-                uprv_memcpy(appendAt + reslen, kwd->key, uprv_min(len, capacity - reslen));
-            }
-            reslen += len;
-
-            /* '=' */
-            if (reslen < capacity) {
-                *(appendAt + reslen) = LOCALE_KEY_TYPE_SEP;
-            }
-            reslen++;
-
-            /* type */
-            len = (int32_t)uprv_strlen(kwd->value);
-            if (reslen < capacity) {
-                uprv_memcpy(appendAt + reslen, kwd->value, uprv_min(len, capacity - reslen));
-            }
-            reslen += len;
-
-            kwd = kwd->next;
-        } while (kwd);
-    }
-
-    /* clean up */
-    kwd = kwdFirst;
-    while (kwd != NULL) {
-        ExtensionListEntry *tmpKwd = kwd->next;
-        uprv_free(kwd);
-        kwd = tmpKwd;
-    }
-
-    uprv_free(kwdBuf);
-
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-
-    return u_terminateChars(appendAt, capacity, reslen, status);
-}
-
-static int32_t
-_appendPrivateuseToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UBool hadPosix, UErrorCode* status) {
-    char buf[ULOC_FULLNAME_CAPACITY];
-    char tmpAppend[ULOC_FULLNAME_CAPACITY];
-    UErrorCode tmpStatus = U_ZERO_ERROR;
-    int32_t len, i;
-    int32_t reslen = 0;
-
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-
-    len = uloc_getVariant(localeID, buf, sizeof(buf), &tmpStatus);
-    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
-        if (strict) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-        }
-        return 0;
-    }
-
-    if (len > 0) {
-        char *p, *pPriv;
-        UBool bNext = TRUE;
-        UBool firstValue = TRUE;
-        UBool writeValue;
-
-        pPriv = NULL;
-        p = buf;
-        while (bNext) {
-            writeValue = FALSE;
-            if (*p == SEP || *p == LOCALE_SEP || *p == 0) {
-                if (*p == 0) {
-                    bNext = FALSE;
-                } else {
-                    *p = 0; /* terminate */
-                }
-                if (pPriv != NULL) {
-                    /* Private use in the canonical format is lowercase in BCP47 */
-                    for (i = 0; *(pPriv + i) != 0; i++) {
-                        *(pPriv + i) = uprv_tolower(*(pPriv + i));
-                    }
-
-                    /* validate */
-                    if (_isPrivateuseValueSubtag(pPriv, -1)) {
-                        if (firstValue) {
-                            if (!_isVariantSubtag(pPriv, -1)) {
-                                writeValue = TRUE;
-                            }
-                        } else {
-                            writeValue = TRUE;
-                        }
-                    } else if (strict) {
-                        *status = U_ILLEGAL_ARGUMENT_ERROR;
-                        break;
-                    } else {
-                        break;
-                    }
-
-                    if (writeValue) {
-                        if (reslen < capacity) {
-                            tmpAppend[reslen++] = SEP;
-                        }
-
-                        if (firstValue) {
-                            if (reslen < capacity) {
-                                tmpAppend[reslen++] = *PRIVATEUSE_KEY;
-                            }
-
-                            if (reslen < capacity) {
-                                tmpAppend[reslen++] = SEP;
-                            }
-
-                            len = (int32_t)uprv_strlen(PRIVUSE_VARIANT_PREFIX);
-                            if (reslen < capacity) {
-                                uprv_memcpy(tmpAppend + reslen, PRIVUSE_VARIANT_PREFIX, uprv_min(len, capacity - reslen));
-                            }
-                            reslen += len;
-
-                            if (reslen < capacity) {
-                                tmpAppend[reslen++] = SEP;
-                            }
-
-                            firstValue = FALSE;
-                        }
-
-                        len = (int32_t)uprv_strlen(pPriv);
-                        if (reslen < capacity) {
-                            uprv_memcpy(tmpAppend + reslen, pPriv, uprv_min(len, capacity - reslen));
-                        }
-                        reslen += len;
-                    }
-                }
-                /* reset private use starting position */
-                pPriv = NULL;
-            } else if (pPriv == NULL) {
-                pPriv = p;
-            }
-            p++;
-        }
-
-        if (U_FAILURE(*status)) {
-            return 0;
-        }
-    }
-
-    if (U_SUCCESS(*status)) {
-        len = reslen;
-        if (reslen < capacity) {
-            uprv_memcpy(appendAt, tmpAppend, uprv_min(len, capacity - reslen));
-        }
-    }
-
-    u_terminateChars(appendAt, capacity, reslen, status);
-
-    return reslen;
-}
-
-/*
-* -------------------------------------------------
-*
-* ultag_ functions
-*
-* -------------------------------------------------
-*/
-
-/* Bit flags used by the parser */
-#define LANG 0x0001
-#define EXTL 0x0002
-#define SCRT 0x0004
-#define REGN 0x0008
-#define VART 0x0010
-#define EXTS 0x0020
-#define EXTV 0x0040
-#define PRIV 0x0080
-
-/**
- * Ticket #12705 - Visual Studio 2015 Update 3 contains a new code optimizer which has problems optimizing
- * this function. (See https://blogs.msdn.microsoft.com/vcblog/2016/05/04/new-code-optimizer/ )
- * As a workaround, we will turn off optimization just for this function on VS2015 Update 3 and above.
- */
-#if (defined(_MSC_VER) && (_MSC_VER >= 1900) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 190024210))
-#pragma optimize( "", off )
-#endif
-
-static ULanguageTag*
-ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* status) {
-    ULanguageTag *t;
-    char *tagBuf;
-    int16_t next;
-    char *pSubtag, *pNext, *pLastGoodPosition;
-    int32_t subtagLen;
-    int32_t extlangIdx;
-    ExtensionListEntry *pExtension;
-    char *pExtValueSubtag, *pExtValueSubtagEnd;
-    int32_t i;
-    UBool privateuseVar = FALSE;
-    int32_t grandfatheredLen = 0;
-
-    if (parsedLen != NULL) {
-        *parsedLen = 0;
-    }
-
-    if (U_FAILURE(*status)) {
-        return NULL;
-    }
-
-    if (tagLen < 0) {
-        tagLen = (int32_t)uprv_strlen(tag);
-    }
-
-    /* copy the entire string */
-    tagBuf = (char*)uprv_malloc(tagLen + 1);
-    if (tagBuf == NULL) {
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-    uprv_memcpy(tagBuf, tag, tagLen);
-    *(tagBuf + tagLen) = 0;
-
-    /* create a ULanguageTag */
-    t = (ULanguageTag*)uprv_malloc(sizeof(ULanguageTag));
-    if (t == NULL) {
-        uprv_free(tagBuf);
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-    _initializeULanguageTag(t);
-    t->buf = tagBuf;
-
-    if (tagLen < MINLEN) {
-        /* the input tag is too short - return empty ULanguageTag */
-        return t;
-    }
-
-    /* check if the tag is grandfathered */
-    for (i = 0; GRANDFATHERED[i] != NULL; i += 2) {
-        if (uprv_stricmp(GRANDFATHERED[i], tagBuf) == 0) {
-            int32_t newTagLength;
-
-            grandfatheredLen = tagLen;  /* back up for output parsedLen */
-            newTagLength = uprv_strlen(GRANDFATHERED[i+1]);
-            if (tagLen < newTagLength) {
-                uprv_free(tagBuf);
-                tagBuf = (char*)uprv_malloc(newTagLength + 1);
-                if (tagBuf == NULL) {
-                    *status = U_MEMORY_ALLOCATION_ERROR;
-                    ultag_close(t);
-                    return NULL;
-                }
-                t->buf = tagBuf;
-                tagLen = newTagLength;
-            }
-            uprv_strcpy(t->buf, GRANDFATHERED[i + 1]);
-            break;
-        }
-    }
-
-    /*
-     * langtag      =   language
-     *                  ["-" script]
-     *                  ["-" region]
-     *                  *("-" variant)
-     *                  *("-" extension)
-     *                  ["-" privateuse]
-     */
-
-    next = LANG | PRIV;
-    pNext = pLastGoodPosition = tagBuf;
-    extlangIdx = 0;
-    pExtension = NULL;
-    pExtValueSubtag = NULL;
-    pExtValueSubtagEnd = NULL;
-
-    while (pNext) {
-        char *pSep;
-
-        pSubtag = pNext;
-
-        /* locate next separator char */
-        pSep = pSubtag;
-        while (*pSep) {
-            if (*pSep == SEP) {
-                break;
-            }
-            pSep++;
-        }
-        if (*pSep == 0) {
-            /* last subtag */
-            pNext = NULL;
-        } else {
-            pNext = pSep + 1;
-        }
-        subtagLen = (int32_t)(pSep - pSubtag);
-
-        if (next & LANG) {
-            if (_isLanguageSubtag(pSubtag, subtagLen)) {
-                *pSep = 0;  /* terminate */
-                t->language = T_CString_toLowerCase(pSubtag);
-
-                pLastGoodPosition = pSep;
-                next = EXTL | SCRT | REGN | VART | EXTS | PRIV;
-                continue;
-            }
-        }
-        if (next & EXTL) {
-            if (_isExtlangSubtag(pSubtag, subtagLen)) {
-                *pSep = 0;
-                t->extlang[extlangIdx++] = T_CString_toLowerCase(pSubtag);
-
-                pLastGoodPosition = pSep;
-                if (extlangIdx < 3) {
-                    next = EXTL | SCRT | REGN | VART | EXTS | PRIV;
-                } else {
-                    next = SCRT | REGN | VART | EXTS | PRIV;
-                }
-                continue;
-            }
-        }
-        if (next & SCRT) {
-            if (_isScriptSubtag(pSubtag, subtagLen)) {
-                char *p = pSubtag;
-
-                *pSep = 0;
-
-                /* to title case */
-                *p = uprv_toupper(*p);
-                p++;
-                for (; *p; p++) {
-                    *p = uprv_tolower(*p);
-                }
-
-                t->script = pSubtag;
-
-                pLastGoodPosition = pSep;
-                next = REGN | VART | EXTS | PRIV;
-                continue;
-            }
-        }
-        if (next & REGN) {
-            if (_isRegionSubtag(pSubtag, subtagLen)) {
-                *pSep = 0;
-                t->region = T_CString_toUpperCase(pSubtag);
-
-                pLastGoodPosition = pSep;
-                next = VART | EXTS | PRIV;
-                continue;
-            }
-        }
-        if (next & VART) {
-            if (_isVariantSubtag(pSubtag, subtagLen) ||
-               (privateuseVar && _isPrivateuseVariantSubtag(pSubtag, subtagLen))) {
-                VariantListEntry *var;
-                UBool isAdded;
-
-                var = (VariantListEntry*)uprv_malloc(sizeof(VariantListEntry));
-                if (var == NULL) {
-                    *status = U_MEMORY_ALLOCATION_ERROR;
-                    goto error;
-                }
-                *pSep = 0;
-                var->variant = T_CString_toUpperCase(pSubtag);
-                isAdded = _addVariantToList(&(t->variants), var);
-                if (!isAdded) {
-                    /* duplicated variant entry */
-                    uprv_free(var);
-                    break;
-                }
-                pLastGoodPosition = pSep;
-                next = VART | EXTS | PRIV;
-                continue;
-            }
-        }
-        if (next & EXTS) {
-            if (_isExtensionSingleton(pSubtag, subtagLen)) {
-                if (pExtension != NULL) {
-                    if (pExtValueSubtag == NULL || pExtValueSubtagEnd == NULL) {
-                        /* the previous extension is incomplete */
-                        uprv_free(pExtension);
-                        pExtension = NULL;
-                        break;
-                    }
-
-                    /* terminate the previous extension value */
-                    *pExtValueSubtagEnd = 0;
-                    pExtension->value = T_CString_toLowerCase(pExtValueSubtag);
-
-                    /* insert the extension to the list */
-                    if (_addExtensionToList(&(t->extensions), pExtension, FALSE)) {
-                        pLastGoodPosition = pExtValueSubtagEnd;
-                    } else {
-                        /* stop parsing here */
-                        uprv_free(pExtension);
-                        pExtension = NULL;
-                        break;
-                    }
-                }
-
-                /* create a new extension */
-                pExtension = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
-                if (pExtension == NULL) {
-                    *status = U_MEMORY_ALLOCATION_ERROR;
-                    goto error;
-                }
-                *pSep = 0;
-                pExtension->key = T_CString_toLowerCase(pSubtag);
-                pExtension->value = NULL;   /* will be set later */
-
-                /*
-                 * reset the start and the end location of extension value
-                 * subtags for this extension
-                 */
-                pExtValueSubtag = NULL;
-                pExtValueSubtagEnd = NULL;
-
-                next = EXTV;
-                continue;
-            }
-        }
-        if (next & EXTV) {
-            if (_isExtensionSubtag(pSubtag, subtagLen)) {
-                if (pExtValueSubtag == NULL) {
-                    /* if the start postion of this extension's value is not yet,
-                        this one is the first value subtag */
-                    pExtValueSubtag = pSubtag;
-                }
-
-                /* Mark the end of this subtag */
-                pExtValueSubtagEnd = pSep;
-                next = EXTS | EXTV | PRIV;
-
-                continue;
-            }
-        }
-        if (next & PRIV) {
-            if (uprv_tolower(*pSubtag) == PRIVATEUSE) {
-                char *pPrivuseVal;
-
-                if (pExtension != NULL) {
-                    /* Process the last extension */
-                    if (pExtValueSubtag == NULL || pExtValueSubtagEnd == NULL) {
-                        /* the previous extension is incomplete */
-                        uprv_free(pExtension);
-                        pExtension = NULL;
-                        break;
-                    } else {
-                        /* terminate the previous extension value */
-                        *pExtValueSubtagEnd = 0;
-                        pExtension->value = T_CString_toLowerCase(pExtValueSubtag);
-
-                        /* insert the extension to the list */
-                        if (_addExtensionToList(&(t->extensions), pExtension, FALSE)) {
-                            pLastGoodPosition = pExtValueSubtagEnd;
-                            pExtension = NULL;
-                        } else {
-                        /* stop parsing here */
-                            uprv_free(pExtension);
-                            pExtension = NULL;
-                            break;
-                        }
-                    }
-                }
-
-                /* The rest of part will be private use value subtags */
-                if (pNext == NULL) {
-                    /* empty private use subtag */
-                    break;
-                }
-                /* back up the private use value start position */
-                pPrivuseVal = pNext;
-
-                /* validate private use value subtags */
-                while (pNext) {
-                    pSubtag = pNext;
-                    pSep = pSubtag;
-                    while (*pSep) {
-                        if (*pSep == SEP) {
-                            break;
-                        }
-                        pSep++;
-                    }
-                    if (*pSep == 0) {
-                        /* last subtag */
-                        pNext = NULL;
-                    } else {
-                        pNext = pSep + 1;
-                    }
-                    subtagLen = (int32_t)(pSep - pSubtag);
-
-                    if (uprv_strncmp(pSubtag, PRIVUSE_VARIANT_PREFIX, uprv_strlen(PRIVUSE_VARIANT_PREFIX)) == 0) {
-                        *pSep = 0;
-                        next = VART;
-                        privateuseVar = TRUE;
-                        break;
-                    } else if (_isPrivateuseValueSubtag(pSubtag, subtagLen)) {
-                        pLastGoodPosition = pSep;
-                    } else {
-                        break;
-                    }
-                }
-
-                if (next == VART) {
-                    continue;
-                }
-
-                if (pLastGoodPosition - pPrivuseVal > 0) {
-                    *pLastGoodPosition = 0;
-                    t->privateuse = T_CString_toLowerCase(pPrivuseVal);
-                }
-                /* No more subtags, exiting the parse loop */
-                break;
-            }
-            break;
-        }
-
-        /* If we fell through here, it means this subtag is illegal - quit parsing */
-        break;
-    }
-
-    if (pExtension != NULL) {
-        /* Process the last extension */
-        if (pExtValueSubtag == NULL || pExtValueSubtagEnd == NULL) {
-            /* the previous extension is incomplete */
-            uprv_free(pExtension);
-        } else {
-            /* terminate the previous extension value */
-            *pExtValueSubtagEnd = 0;
-            pExtension->value = T_CString_toLowerCase(pExtValueSubtag);
-            /* insert the extension to the list */
-            if (_addExtensionToList(&(t->extensions), pExtension, FALSE)) {
-                pLastGoodPosition = pExtValueSubtagEnd;
-            } else {
-                uprv_free(pExtension);
-            }
-        }
-    }
-
-    if (parsedLen != NULL) {
-        *parsedLen = (grandfatheredLen > 0) ? grandfatheredLen : (int32_t)(pLastGoodPosition - t->buf);
-    }
-
-    return t;
-
-error:
-    ultag_close(t);
-    return NULL;
-}
-
-/**
-* Ticket #12705 - Turn optimization back on.
-*/
-#if (defined(_MSC_VER) && (_MSC_VER >= 1900) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 190024210))
-#pragma optimize( "", on )
-#endif
-
-static void
-ultag_close(ULanguageTag* langtag) {
-
-    if (langtag == NULL) {
-        return;
-    }
-
-    uprv_free(langtag->buf);
-
-    if (langtag->variants) {
-        VariantListEntry *curVar = langtag->variants;
-        while (curVar) {
-            VariantListEntry *nextVar = curVar->next;
-            uprv_free(curVar);
-            curVar = nextVar;
-        }
-    }
-
-    if (langtag->extensions) {
-        ExtensionListEntry *curExt = langtag->extensions;
-        while (curExt) {
-            ExtensionListEntry *nextExt = curExt->next;
-            uprv_free(curExt);
-            curExt = nextExt;
-        }
-    }
-
-    uprv_free(langtag);
-}
-
-static const char*
-ultag_getLanguage(const ULanguageTag* langtag) {
-    return langtag->language;
-}
-
-#if 0
-static const char*
-ultag_getJDKLanguage(const ULanguageTag* langtag) {
-    int32_t i;
-    for (i = 0; DEPRECATEDLANGS[i] != NULL; i += 2) {
-        if (uprv_compareInvCharsAsAscii(DEPRECATEDLANGS[i], langtag->language) == 0) {
-            return DEPRECATEDLANGS[i + 1];
-        }
-    }
-    return langtag->language;
-}
-#endif
-
-static const char*
-ultag_getExtlang(const ULanguageTag* langtag, int32_t idx) {
-    if (idx >= 0 && idx < MAXEXTLANG) {
-        return langtag->extlang[idx];
-    }
-    return NULL;
-}
-
-static int32_t
-ultag_getExtlangSize(const ULanguageTag* langtag) {
-    int32_t size = 0;
-    int32_t i;
-    for (i = 0; i < MAXEXTLANG; i++) {
-        if (langtag->extlang[i]) {
-            size++;
-        }
-    }
-    return size;
-}
-
-static const char*
-ultag_getScript(const ULanguageTag* langtag) {
-    return langtag->script;
-}
-
-static const char*
-ultag_getRegion(const ULanguageTag* langtag) {
-    return langtag->region;
-}
-
-static const char*
-ultag_getVariant(const ULanguageTag* langtag, int32_t idx) {
-    const char *var = NULL;
-    VariantListEntry *cur = langtag->variants;
-    int32_t i = 0;
-    while (cur) {
-        if (i == idx) {
-            var = cur->variant;
-            break;
-        }
-        cur = cur->next;
-        i++;
-    }
-    return var;
-}
-
-static int32_t
-ultag_getVariantsSize(const ULanguageTag* langtag) {
-    int32_t size = 0;
-    VariantListEntry *cur = langtag->variants;
-    while (TRUE) {
-        if (cur == NULL) {
-            break;
-        }
-        size++;
-        cur = cur->next;
-    }
-    return size;
-}
-
-static const char*
-ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) {
-    const char *key = NULL;
-    ExtensionListEntry *cur = langtag->extensions;
-    int32_t i = 0;
-    while (cur) {
-        if (i == idx) {
-            key = cur->key;
-            break;
-        }
-        cur = cur->next;
-        i++;
-    }
-    return key;
-}
-
-static const char*
-ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx) {
-    const char *val = NULL;
-    ExtensionListEntry *cur = langtag->extensions;
-    int32_t i = 0;
-    while (cur) {
-        if (i == idx) {
-            val = cur->value;
-            break;
-        }
-        cur = cur->next;
-        i++;
-    }
-    return val;
-}
-
-static int32_t
-ultag_getExtensionsSize(const ULanguageTag* langtag) {
-    int32_t size = 0;
-    ExtensionListEntry *cur = langtag->extensions;
-    while (TRUE) {
-        if (cur == NULL) {
-            break;
-        }
-        size++;
-        cur = cur->next;
-    }
-    return size;
-}
-
-static const char*
-ultag_getPrivateUse(const ULanguageTag* langtag) {
-    return langtag->privateuse;
-}
-
-#if 0
-static const char*
-ultag_getGrandfathered(const ULanguageTag* langtag) {
-    return langtag->grandfathered;
-}
-#endif
-
-
-/*
-* -------------------------------------------------
-*
-* Locale/BCP47 conversion APIs, exposed as uloc_*
-*
-* -------------------------------------------------
-*/
-U_CAPI int32_t U_EXPORT2
-uloc_toLanguageTag(const char* localeID,
-                   char* langtag,
-                   int32_t langtagCapacity,
-                   UBool strict,
-                   UErrorCode* status) {
-    /* char canonical[ULOC_FULLNAME_CAPACITY]; */ /* See #6822 */
-    char canonical[256];
-    int32_t reslen = 0;
-    UErrorCode tmpStatus = U_ZERO_ERROR;
-    UBool hadPosix = FALSE;
-    const char* pKeywordStart;
-
-    /* Note: uloc_canonicalize returns "en_US_POSIX" for input locale ID "".  See #6835 */
-    canonical[0] = 0;
-    if (uprv_strlen(localeID) > 0) {
-        uloc_canonicalize(localeID, canonical, sizeof(canonical), &tmpStatus);
-        if (tmpStatus != U_ZERO_ERROR) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR;
-            return 0;
-        }
-    }
-
-    /* For handling special case - private use only tag */
-    pKeywordStart = locale_getKeywordsStart(canonical);
-    if (pKeywordStart == canonical) {
-        UEnumeration *kwdEnum;
-        int kwdCnt = 0;
-        UBool done = FALSE;
-
-        kwdEnum = uloc_openKeywords((const char*)canonical, &tmpStatus);
-        if (kwdEnum != NULL) {
-            kwdCnt = uenum_count(kwdEnum, &tmpStatus);
-            if (kwdCnt == 1) {
-                const char *key;
-                int32_t len = 0;
-
-                key = uenum_next(kwdEnum, &len, &tmpStatus);
-                if (len == 1 && *key == PRIVATEUSE) {
-                    char buf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
-                    buf[0] = PRIVATEUSE;
-                    buf[1] = SEP;
-                    len = uloc_getKeywordValue(localeID, key, &buf[2], sizeof(buf) - 2, &tmpStatus);
-                    if (U_SUCCESS(tmpStatus)) {
-                        if (_isPrivateuseValueSubtags(&buf[2], len)) {
-                            /* return private use only tag */
-                            reslen = len + 2;
-                            uprv_memcpy(langtag, buf, uprv_min(reslen, langtagCapacity));
-                            u_terminateChars(langtag, langtagCapacity, reslen, status);
-                            done = TRUE;
-                        } else if (strict) {
-                            *status = U_ILLEGAL_ARGUMENT_ERROR;
-                            done = TRUE;
-                        }
-                        /* if not strict mode, then "und" will be returned */
-                    } else {
-                        *status = U_ILLEGAL_ARGUMENT_ERROR;
-                        done = TRUE;
-                    }
-                }
-            }
-            uenum_close(kwdEnum);
-            if (done) {
-                return reslen;
-            }
-        }
-    }
-
-    reslen += _appendLanguageToLanguageTag(canonical, langtag, langtagCapacity, strict, status);
-    reslen += _appendScriptToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, status);
-    reslen += _appendRegionToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, status);
-    reslen += _appendVariantsToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, &hadPosix, status);
-    reslen += _appendKeywordsToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, hadPosix, status);
-    reslen += _appendPrivateuseToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, hadPosix, status);
-
-    return reslen;
-}
-
-
-U_CAPI int32_t U_EXPORT2
-uloc_forLanguageTag(const char* langtag,
-                    char* localeID,
-                    int32_t localeIDCapacity,
-                    int32_t* parsedLength,
-                    UErrorCode* status) {
-    ULanguageTag *lt;
-    int32_t reslen = 0;
-    const char *subtag, *p;
-    int32_t len;
-    int32_t i, n;
-    UBool noRegion = TRUE;
-
-    lt = ultag_parse(langtag, -1, parsedLength, status);
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-
-    /* language */
-    subtag = ultag_getExtlangSize(lt) > 0 ? ultag_getExtlang(lt, 0) : ultag_getLanguage(lt);
-    if (uprv_compareInvCharsAsAscii(subtag, LANG_UND) != 0) {
-        len = (int32_t)uprv_strlen(subtag);
-        if (len > 0) {
-            if (reslen < localeIDCapacity) {
-                uprv_memcpy(localeID, subtag, uprv_min(len, localeIDCapacity - reslen));
-            }
-            reslen += len;
-        }
-    }
-
-    /* script */
-    subtag = ultag_getScript(lt);
-    len = (int32_t)uprv_strlen(subtag);
-    if (len > 0) {
-        if (reslen < localeIDCapacity) {
-            *(localeID + reslen) = LOCALE_SEP;
-        }
-        reslen++;
-
-        /* write out the script in title case */
-        p = subtag;
-        while (*p) {
-            if (reslen < localeIDCapacity) {
-                if (p == subtag) {
-                    *(localeID + reslen) = uprv_toupper(*p);
-                } else {
-                    *(localeID + reslen) = *p;
-                }
-            }
-            reslen++;
-            p++;
-        }
-    }
-
-    /* region */
-    subtag = ultag_getRegion(lt);
-    len = (int32_t)uprv_strlen(subtag);
-    if (len > 0) {
-        if (reslen < localeIDCapacity) {
-            *(localeID + reslen) = LOCALE_SEP;
-        }
-        reslen++;
-        /* write out the retion in upper case */
-        p = subtag;
-        while (*p) {
-            if (reslen < localeIDCapacity) {
-                *(localeID + reslen) = uprv_toupper(*p);
-            }
-            reslen++;
-            p++;
-        }
-        noRegion = FALSE;
-    }
-
-    /* variants */
-    n = ultag_getVariantsSize(lt);
-    if (n > 0) {
-        if (noRegion) {
-            if (reslen < localeIDCapacity) {
-                *(localeID + reslen) = LOCALE_SEP;
-            }
-            reslen++;
-        }
-
-        for (i = 0; i < n; i++) {
-            subtag = ultag_getVariant(lt, i);
-            if (reslen < localeIDCapacity) {
-                *(localeID + reslen) = LOCALE_SEP;
-            }
-            reslen++;
-            /* write out the variant in upper case */
-            p = subtag;
-            while (*p) {
-                if (reslen < localeIDCapacity) {
-                    *(localeID + reslen) = uprv_toupper(*p);
-                }
-                reslen++;
-                p++;
-            }
-        }
-    }
-
-    /* keywords */
-    n = ultag_getExtensionsSize(lt);
-    subtag = ultag_getPrivateUse(lt);
-    if (n > 0 || uprv_strlen(subtag) > 0) {
-        if (reslen == 0 && n > 0) {
-            /* need a language */
-            if (reslen < localeIDCapacity) {
-                uprv_memcpy(localeID + reslen, LANG_UND, uprv_min(LANG_UND_LEN, localeIDCapacity - reslen));
-            }
-            reslen += LANG_UND_LEN;
-        }
-        len = _appendKeywords(lt, localeID + reslen, localeIDCapacity - reslen, status);
-        reslen += len;
-    }
-
-    ultag_close(lt);
-    return u_terminateChars(localeID, localeIDCapacity, reslen, status);
-}
-
-
index f54e216..869f296 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/umapfile.c b/source/common/umapfile.c
deleted file mode 100644 (file)
index d5d2033..0000000
+++ /dev/null
@@ -1,466 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1999-2013, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************/
-
-
-/*----------------------------------------------------------------------------
- *
- *       Memory mapped file wrappers for use by the ICU Data Implementation
- *       All of the platform-specific implementation for mapping data files
- *         is here.  The rest of the ICU Data implementation uses only the
- *         wrapper functions.
- *
- *----------------------------------------------------------------------------*/
-/* Defines _XOPEN_SOURCE for access to POSIX functions.
- * Must be before any other #includes. */
-#include "uposixdefs.h"
-
-#include "unicode/putil.h"
-#include "udatamem.h"
-#include "umapfile.h"
-
-/* memory-mapping base definitions ------------------------------------------ */
-
-#if MAP_IMPLEMENTATION==MAP_WIN32
-#   define WIN32_LEAN_AND_MEAN
-#   define VC_EXTRALEAN
-#   define NOUSER
-#   define NOSERVICE
-#   define NOIME
-#   define NOMCX
-#   include <windows.h>
-#   include "cmemory.h"
-
-    typedef HANDLE MemoryMap;
-
-#   define IS_MAP(map) ((map)!=NULL)
-#elif MAP_IMPLEMENTATION==MAP_POSIX || MAP_IMPLEMENTATION==MAP_390DLL
-    typedef size_t MemoryMap;
-
-#   define IS_MAP(map) ((map)!=0)
-
-#   include <unistd.h>
-#   include <sys/mman.h>
-#   include <sys/stat.h>
-#   include <fcntl.h>
-
-#   ifndef MAP_FAILED
-#       define MAP_FAILED ((void*)-1)
-#   endif
-
-#   if MAP_IMPLEMENTATION==MAP_390DLL
-        /*   No memory mapping for 390 batch mode.  Fake it using dll loading.  */
-#       include <dll.h>
-#       include "cstring.h"
-#       include "cmemory.h"
-#       include "unicode/udata.h"
-#       define LIB_PREFIX "lib"
-#       define LIB_SUFFIX ".dll"
-        /* This is inconvienient until we figure out what to do with U_ICUDATA_NAME in utypes.h */
-#       define U_ICUDATA_ENTRY_NAME "icudt" U_ICU_VERSION_SHORT U_LIB_SUFFIX_C_NAME_STRING "_dat"
-#   endif
-#elif MAP_IMPLEMENTATION==MAP_STDIO
-#   include <stdio.h>
-#   include "cmemory.h"
-
-    typedef void *MemoryMap;
-
-#   define IS_MAP(map) ((map)!=NULL)
-#endif
-
-/*----------------------------------------------------------------------------*
- *                                                                            *
- *   Memory Mapped File support.  Platform dependent implementation of        *
- *                           functions used by the rest of the implementation.*
- *                                                                            *
- *----------------------------------------------------------------------------*/
-#if MAP_IMPLEMENTATION==MAP_NONE
-    U_CFUNC UBool
-    uprv_mapFile(UDataMemory *pData, const char *path) {
-        UDataMemory_init(pData); /* Clear the output struct. */
-        return FALSE;            /* no file access */
-    }
-
-    U_CFUNC void uprv_unmapFile(UDataMemory *pData) {
-        /* nothing to do */
-    }
-#elif MAP_IMPLEMENTATION==MAP_WIN32
-    U_CFUNC UBool
-    uprv_mapFile(
-         UDataMemory *pData,    /* Fill in with info on the result doing the mapping. */
-                                /*   Output only; any original contents are cleared.  */
-         const char *path       /* File path to be opened/mapped                      */
-         )
-    {
-        HANDLE map;
-        HANDLE file;
-        SECURITY_ATTRIBUTES mappingAttributes;
-        SECURITY_ATTRIBUTES *mappingAttributesPtr = NULL;
-        SECURITY_DESCRIPTOR securityDesc;
-
-        UDataMemory_init(pData); /* Clear the output struct.        */
-
-        /* open the input file */
-        file=CreateFileA(path, GENERIC_READ, FILE_SHARE_READ, NULL,
-            OPEN_EXISTING,
-            FILE_ATTRIBUTE_NORMAL|FILE_FLAG_RANDOM_ACCESS, NULL);
-        if(file==INVALID_HANDLE_VALUE) {
-            return FALSE;
-        }
-
-        /* Declare and initialize a security descriptor.
-           This is required for multiuser systems on Windows 2000 SP4 and beyond */
-        if (InitializeSecurityDescriptor(&securityDesc, SECURITY_DESCRIPTOR_REVISION)) {
-            /* give the security descriptor a Null Dacl done using the  "TRUE, (PACL)NULL" here        */
-            if (SetSecurityDescriptorDacl(&securityDesc, TRUE, (PACL)NULL, FALSE)) {
-                /* Make the security attributes point to the security descriptor */
-                uprv_memset(&mappingAttributes, 0, sizeof(mappingAttributes));
-                mappingAttributes.nLength = sizeof(mappingAttributes);
-                mappingAttributes.lpSecurityDescriptor = &securityDesc;
-                mappingAttributes.bInheritHandle = FALSE; /* object uninheritable */
-                mappingAttributesPtr = &mappingAttributes;
-            }
-        }
-        /* else creating security descriptors can fail when we are on Windows 98,
-           and mappingAttributesPtr == NULL for that case. */
-
-        /* create an unnamed Windows file-mapping object for the specified file */
-        map=CreateFileMapping(file, mappingAttributesPtr, PAGE_READONLY, 0, 0, NULL);
-        CloseHandle(file);
-        if(map==NULL) {
-            return FALSE;
-        }
-
-        /* map a view of the file into our address space */
-        pData->pHeader=(const DataHeader *)MapViewOfFile(map, FILE_MAP_READ, 0, 0, 0);
-        if(pData->pHeader==NULL) {
-            CloseHandle(map);
-            return FALSE;
-        }
-        pData->map=map;
-        return TRUE;
-    }
-
-    U_CFUNC void
-    uprv_unmapFile(UDataMemory *pData) {
-        if(pData!=NULL && pData->map!=NULL) {
-            UnmapViewOfFile(pData->pHeader);
-            CloseHandle(pData->map);
-            pData->pHeader=NULL;
-            pData->map=NULL;
-        }
-    }
-
-
-
-#elif MAP_IMPLEMENTATION==MAP_POSIX
-    U_CFUNC UBool
-    uprv_mapFile(UDataMemory *pData, const char *path) {
-        int fd;
-        int length;
-        struct stat mystat;
-        void *data;
-
-        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;
-        }
-
-        /* get a view of the mapping */
-#if U_PLATFORM != U_PF_HPUX
-        data=mmap(0, length, PROT_READ, MAP_SHARED,  fd, 0);
-#else
-        data=mmap(0, length, PROT_READ, MAP_PRIVATE, fd, 0);
-#endif
-        close(fd); /* no longer needed */
-        if(data==MAP_FAILED) {
-            return FALSE;
-        }
-
-        pData->map = (char *)data + length;
-        pData->pHeader=(const DataHeader *)data;
-        pData->mapAddr = data;
-#if U_PLATFORM == U_PF_IPHONE
-        posix_madvise(data, length, POSIX_MADV_RANDOM);
-#endif
-        return TRUE;
-    }
-
-    U_CFUNC void
-    uprv_unmapFile(UDataMemory *pData) {
-        if(pData!=NULL && pData->map!=NULL) {
-            size_t dataLen = (char *)pData->map - (char *)pData->mapAddr;
-            if(munmap(pData->mapAddr, dataLen)==-1) {
-            }
-            pData->pHeader=NULL;
-            pData->map=0;
-            pData->mapAddr=NULL;
-        }
-    }
-
-
-
-#elif MAP_IMPLEMENTATION==MAP_STDIO
-    /* copy of the filestrm.c/T_FileStream_size() implementation */
-    static int32_t
-    umap_fsize(FILE *f) {
-        int32_t savedPos = ftell(f);
-        int32_t size = 0;
-
-        /*Changes by Bertrand A. D. doesn't affect the current position
-        goes to the end of the file before ftell*/
-        fseek(f, 0, SEEK_END);
-        size = (int32_t)ftell(f);
-        fseek(f, savedPos, SEEK_SET);
-        return size;
-    }
-
-    U_CFUNC UBool
-    uprv_mapFile(UDataMemory *pData, const char *path) {
-        FILE *file;
-        int32_t fileLength;
-        void *p;
-
-        UDataMemory_init(pData); /* Clear the output struct.        */
-        /* open the input file */
-        file=fopen(path, "rb");
-        if(file==NULL) {
-            return FALSE;
-        }
-
-        /* get the file length */
-        fileLength=umap_fsize(file);
-        if(ferror(file) || fileLength<=20) {
-            fclose(file);
-            return FALSE;
-        }
-
-        /* allocate the memory to hold the file data */
-        p=uprv_malloc(fileLength);
-        if(p==NULL) {
-            fclose(file);
-            return FALSE;
-        }
-
-        /* read the file */
-        if(fileLength!=fread(p, 1, fileLength, file)) {
-            uprv_free(p);
-            fclose(file);
-            return FALSE;
-        }
-
-        fclose(file);
-        pData->map=p;
-        pData->pHeader=(const DataHeader *)p;
-        pData->mapAddr=p;
-        return TRUE;
-    }
-
-    U_CFUNC void
-    uprv_unmapFile(UDataMemory *pData) {
-        if(pData!=NULL && pData->map!=NULL) {
-            uprv_free(pData->map);
-            pData->map     = NULL;
-            pData->mapAddr = NULL;
-            pData->pHeader = NULL;
-        }
-    }
-
-
-#elif MAP_IMPLEMENTATION==MAP_390DLL
-    /*  390 specific Library Loading.
-     *  This is the only platform left that dynamically loads an ICU Data Library.
-     *  All other platforms use .data files when dynamic loading is required, but
-     *  this turn out to be awkward to support in 390 batch mode.
-     *
-     *  The idea here is to hide the fact that 390 is using dll loading from the
-     *   rest of ICU, and make it look like there is file loading happening.
-     *
-     */
-
-    static char *strcpy_returnEnd(char *dest, const char *src)
-    {
-        while((*dest=*src)!=0) {
-            ++dest;
-            ++src;
-        }
-        return dest;
-    }
-    
-    /*------------------------------------------------------------------------------
-     *                                                                              
-     *  computeDirPath   given a user-supplied path of an item to be opened,             
-     *                         compute and return 
-     *                            - the full directory path to be used 
-     *                              when opening the file.
-     *                            - Pointer to null at end of above returned path    
-     *
-     *                       Parameters:
-     *                          path:        input path.  Buffer is not altered.
-     *                          pathBuffer:  Output buffer.  Any contents are overwritten.
-     *
-     *                       Returns:
-     *                          Pointer to null termination in returned pathBuffer.
-     *
-     *                    TODO:  This works the way ICU historically has, but the
-     *                           whole data fallback search path is so complicated that
-     *                           proabably almost no one will ever really understand it,
-     *                           the potential for confusion is large.  (It's not just 
-     *                           this one function, but the whole scheme.)
-     *                            
-     *------------------------------------------------------------------------------*/
-    static char *uprv_computeDirPath(const char *path, char *pathBuffer)
-    {
-        char   *finalSlash;       /* Ptr to last dir separator in input path, or null if none. */
-        int32_t pathLen;          /* Length of the returned directory path                     */
-        
-        finalSlash = 0;
-        if (path != 0) {
-            finalSlash = uprv_strrchr(path, U_FILE_SEP_CHAR);
-        }
-        
-        *pathBuffer = 0;
-        if (finalSlash == 0) {
-        /* No user-supplied path.  
-            * Copy the ICU_DATA path to the path buffer and return that*/
-            const char *icuDataDir;
-            icuDataDir=u_getDataDirectory();
-            if(icuDataDir!=NULL && *icuDataDir!=0) {
-                return strcpy_returnEnd(pathBuffer, icuDataDir);
-            } else {
-                /* there is no icuDataDir either.  Just return the empty pathBuffer. */
-                return pathBuffer;
-            }
-        } 
-        
-        /* User supplied path did contain a directory portion.
-        * Copy it to the output path buffer */
-        pathLen = (int32_t)(finalSlash - path + 1);
-        uprv_memcpy(pathBuffer, path, pathLen);
-        *(pathBuffer+pathLen) = 0;
-        return pathBuffer+pathLen;
-    }
-    
-
-#   define DATA_TYPE "dat"
-
-    U_CFUNC UBool uprv_mapFile(UDataMemory *pData, const char *path) {
-        const char *inBasename;
-        char *basename;
-        char pathBuffer[1024];
-        const DataHeader *pHeader;
-        dllhandle *handle;
-        void *val=0;
-
-        inBasename=uprv_strrchr(path, U_FILE_SEP_CHAR);
-        if(inBasename==NULL) {
-            inBasename = path;
-        } else {
-            inBasename++;
-        }
-        basename=uprv_computeDirPath(path, pathBuffer);
-        if(uprv_strcmp(inBasename, U_ICUDATA_NAME".dat") != 0) {
-            /* must mmap file... for build */
-            int fd;
-            int length;
-            struct stat mystat;
-            void *data;
-            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;
-            }
-
-            /* get a view of the mapping */
-            data=mmap(0, length, PROT_READ, MAP_PRIVATE, fd, 0);
-            close(fd); /* no longer needed */
-            if(data==MAP_FAILED) {
-                return FALSE;
-            }
-            pData->map = (char *)data + length;
-            pData->pHeader=(const DataHeader *)data;
-            pData->mapAddr = data;
-            return TRUE;
-        }
-
-#       ifdef OS390BATCH
-            /* ### hack: we still need to get u_getDataDirectory() fixed
-            for OS/390 (batch mode - always return "//"? )
-            and this here straightened out with LIB_PREFIX and LIB_SUFFIX (both empty?!)
-            This is probably due to the strange file system on OS/390.  It's more like
-            a database with short entry names than a typical file system. */
-            /* U_ICUDATA_NAME should always have the correct name */
-            /* BUT FOR BATCH MODE IT IS AN EXCEPTION BECAUSE */
-            /* THE FIRST THREE LETTERS ARE PREASSIGNED TO THE */
-            /* PROJECT!!!!! */
-            uprv_strcpy(pathBuffer, "IXMI" U_ICU_VERSION_SHORT "DA");
-#       else
-            /* set up the library name */
-            uprv_strcpy(basename, LIB_PREFIX U_LIBICUDATA_NAME U_ICU_VERSION_SHORT LIB_SUFFIX);
-#       endif
-
-#       ifdef UDATA_DEBUG
-             fprintf(stderr, "dllload: %s ", pathBuffer);
-#       endif
-
-        handle=dllload(pathBuffer);
-
-#       ifdef UDATA_DEBUG
-               fprintf(stderr, " -> %08X\n", handle );
-#       endif
-
-        if(handle != NULL) {
-               /* we have a data DLL - what kind of lookup do we need here? */
-               /* try to find the Table of Contents */
-               UDataMemory_init(pData); /* Clear the output struct.        */
-               val=dllqueryvar((dllhandle*)handle, U_ICUDATA_ENTRY_NAME);
-               if(val == 0) {
-                    /* failed... so keep looking */
-                    return FALSE;
-               }
-#              ifdef UDATA_DEBUG
-                    fprintf(stderr, "dllqueryvar(%08X, %s) -> %08X\n", handle, U_ICUDATA_ENTRY_NAME, val);
-#              endif
-
-               pData->pHeader=(const DataHeader *)val;
-               return TRUE;
-         } else {
-               return FALSE; /* no handle */
-         }
-    }
-
-    U_CFUNC void uprv_unmapFile(UDataMemory *pData) {
-        if(pData!=NULL && pData->map!=NULL) {
-            uprv_free(pData->map);
-            pData->map     = NULL;
-            pData->mapAddr = NULL;
-            pData->pHeader = NULL;
-        }   
-    }
-
-#else
-#   error MAP_IMPLEMENTATION is set incorrectly
-#endif
index 70a6cc5..24e476b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/umath.c b/source/common/umath.c
deleted file mode 100644 (file)
index 78f1ca0..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1997-2006, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-* This file contains platform independent math.
-*/
-
-#include "putilimp.h"
-
-U_CAPI int32_t U_EXPORT2
-uprv_max(int32_t x, int32_t y)
-{
-    return (x > y ? x : y);
-}
-
-U_CAPI int32_t U_EXPORT2
-uprv_min(int32_t x, int32_t y)
-{
-    return (x > y ? y : x);
-}
-
index 0532838..77c1778 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index b52010f..8e1f6e9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -86,7 +86,9 @@ U_NAMESPACE_END
 //                Original plan was to use gcc atomics for MinGW, but they
 //                aren't supported, so we fold MinGW into this path.
 
+#ifndef WIN32_LEAN_AND_MEAN
 # define WIN32_LEAN_AND_MEAN
+#endif
 # define VC_EXTRALEAN
 # define NOUSER
 # define NOSERVICE
@@ -331,7 +333,9 @@ U_NAMESPACE_END
  *         win32 APIs for Critical Sections.
  */
 
+#ifndef WIN32_LEAN_AND_MEAN
 # define WIN32_LEAN_AND_MEAN
+#endif
 # define VC_EXTRALEAN
 # define NOUSER
 # define NOSERVICE
index 9da2045..6ad349c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  unames.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 2ae3345..8512c2f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  appendable.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -19,7 +19,7 @@
 
 /**
  * \file
- * \brief C++ API: Appendable class: Sink for Unicode code points and 16-bit code units (UChars).
+ * \brief C++ API: Appendable class: Sink for Unicode code points and 16-bit code units (char16_ts).
  */
 
 #include "unicode/utypes.h"
@@ -34,10 +34,10 @@ class UnicodeString;
  * Combines elements of Java Appendable and ICU4C ByteSink.
  *
  * This class can be used in APIs where it does not matter whether the actual destination is
- * a UnicodeString, a UChar[] array, a UnicodeSet, or any other object
+ * a UnicodeString, a char16_t[] array, a UnicodeSet, or any other object
  * that receives and processes characters and/or strings.
  *
- * Implementation classes must implement at least appendCodeUnit(UChar).
+ * Implementation classes must implement at least appendCodeUnit(char16_t).
  * The base class provides default implementations for the other methods.
  *
  * The methods do not take UErrorCode parameters.
@@ -62,11 +62,11 @@ public:
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
-    virtual UBool appendCodeUnit(UChar c) = 0;
+    virtual UBool appendCodeUnit(char16_t c) = 0;
 
     /**
      * Appends a code point.
-     * The default implementation calls appendCodeUnit(UChar) once or twice.
+     * The default implementation calls appendCodeUnit(char16_t) once or twice.
      * @param c code point 0..0x10ffff
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
@@ -75,20 +75,20 @@ public:
 
     /**
      * Appends a string.
-     * The default implementation calls appendCodeUnit(UChar) for each code unit.
+     * The default implementation calls appendCodeUnit(char16_t) for each code unit.
      * @param s string, must not be NULL if length!=0
      * @param length string length, or -1 if NUL-terminated
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
-    virtual UBool appendString(const UChar *s, int32_t length);
+    virtual UBool appendString(const char16_t *s, int32_t length);
 
     /**
      * Tells the object that the caller is going to append roughly
-     * appendCapacity UChars. A subclass might use this to pre-allocate
+     * appendCapacity char16_ts. A subclass might use this to pre-allocate
      * a larger buffer if necessary.
      * The default implementation does nothing. (It always returns TRUE.)
-     * @param appendCapacity estimated number of UChars that will be appended
+     * @param appendCapacity estimated number of char16_ts that will be appended
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
@@ -102,19 +102,19 @@ public:
      * The returned buffer is only valid until the next operation
      * on this Appendable.
      *
-     * After writing at most *resultCapacity UChars, call appendString() with the
-     * pointer returned from this function and the number of UChars written.
-     * Many appendString() implementations will avoid copying UChars if this function
+     * After writing at most *resultCapacity char16_ts, call appendString() with the
+     * pointer returned from this function and the number of char16_ts written.
+     * Many appendString() implementations will avoid copying char16_ts if this function
      * returned an internal buffer.
      *
      * Partial usage example:
      * \code
      *  int32_t capacity;
-     *  UChar* buffer = app.getAppendBuffer(..., &capacity);
-     *  ... Write n UChars into buffer, with n <= capacity.
+     *  char16_t* buffer = app.getAppendBuffer(..., &capacity);
+     *  ... Write n char16_ts into buffer, with n <= capacity.
      *  app.appendString(buffer, n);
      * \endcode
-     * In many implementations, that call to append will avoid copying UChars.
+     * In many implementations, that call to append will avoid copying char16_ts.
      *
      * If the Appendable allocates or reallocates an internal buffer, it should use
      * the desiredCapacityHint if appropriate.
@@ -138,9 +138,9 @@ public:
      * @return a buffer with *resultCapacity>=minCapacity
      * @stable ICU 4.8
      */
-    virtual UChar *getAppendBuffer(int32_t minCapacity,
+    virtual char16_t *getAppendBuffer(int32_t minCapacity,
                                    int32_t desiredCapacityHint,
-                                   UChar *scratch, int32_t scratchCapacity,
+                                   char16_t *scratch, int32_t scratchCapacity,
                                    int32_t *resultCapacity);
 };
 
@@ -171,7 +171,7 @@ public:
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
-    virtual UBool appendCodeUnit(UChar c);
+    virtual UBool appendCodeUnit(char16_t c);
 
     /**
      * Appends a code point to the string.
@@ -188,12 +188,12 @@ public:
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
-    virtual UBool appendString(const UChar *s, int32_t length);
+    virtual UBool appendString(const char16_t *s, int32_t length);
 
     /**
      * Tells the UnicodeString that the caller is going to append roughly
-     * appendCapacity UChars.
-     * @param appendCapacity estimated number of UChars that will be appended
+     * appendCapacity char16_ts.
+     * @param appendCapacity estimated number of char16_ts that will be appended
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
@@ -220,9 +220,9 @@ public:
      * @return a buffer with *resultCapacity>=minCapacity
      * @stable ICU 4.8
      */
-    virtual UChar *getAppendBuffer(int32_t minCapacity,
+    virtual char16_t *getAppendBuffer(int32_t minCapacity,
                                    int32_t desiredCapacityHint,
-                                   UChar *scratch, int32_t scratchCapacity,
+                                   char16_t *scratch, int32_t scratchCapacity,
                                    int32_t *resultCapacity);
 
 private:
index 88b39c6..b1e4cc6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 1556227..a31992e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // Copyright (C) 2009-2012, International Business Machines
 // Corporation and others. All Rights Reserved.
@@ -222,8 +222,6 @@ private:
   CheckedArrayByteSink &operator=(const CheckedArrayByteSink &); ///< assignment operator not implemented
 };
 
-#if U_HAVE_STD_STRING
-
 /** 
  * Implementation of ByteSink that writes to a "string".
  * The StringClass is usually instantiated with a std::string.
@@ -252,8 +250,6 @@ class StringByteSink : public ByteSink {
   StringByteSink &operator=(const StringByteSink &); ///< assignment operator not implemented
 };
 
-#endif
-
 U_NAMESPACE_END
 
 #endif  // __BYTESTREAM_H__
index 4a30ce1..c57b8cc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestrie.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index fe96887..a8412d3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestriebuilder.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -127,14 +127,14 @@ private:
     void buildBytes(UStringTrieBuildOption buildOption, UErrorCode &errorCode);
 
     virtual int32_t getElementStringLength(int32_t i) const;
-    virtual UChar getElementUnit(int32_t i, int32_t byteIndex) const;
+    virtual char16_t getElementUnit(int32_t i, int32_t byteIndex) const;
     virtual int32_t getElementValue(int32_t i) const;
 
     virtual int32_t getLimitOfLinearMatch(int32_t first, int32_t last, int32_t byteIndex) const;
 
     virtual int32_t countElementUnits(int32_t start, int32_t limit, int32_t byteIndex) const;
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t byteIndex, int32_t count) const;
-    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, UChar byte) const;
+    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, char16_t byte) const;
 
     virtual UBool matchNodesCanHaveValues() const { return FALSE; }
 
index 7c1bf6a..5a882fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -187,7 +187,7 @@ private:
     UnicodeString *getEquivalents(const UnicodeString &segment, int32_t &result_len, UErrorCode &status); //private String[] getEquivalents(String segment)
 
     //Set getEquivalents2(String segment);
-    Hashtable *getEquivalents2(Hashtable *fillinResult, const UChar *segment, int32_t segLen, UErrorCode &status);
+    Hashtable *getEquivalents2(Hashtable *fillinResult, const char16_t *segment, int32_t segLen, UErrorCode &status);
     //Hashtable *getEquivalents2(const UnicodeString &segment, int32_t segLen, UErrorCode &status);
 
     /**
@@ -196,7 +196,7 @@ private:
      * If so, take the remainder, and return the equivalents
      */
     //Set extract(int comp, String segment, int segmentPos, StringBuffer buffer);
-    Hashtable *extract(Hashtable *fillinResult, UChar32 comp, const UChar *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status);
+    Hashtable *extract(Hashtable *fillinResult, UChar32 comp, const char16_t *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status);
     //Hashtable *extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status);
 
     void cleanPieces();
index 07d1ca3..7a4e1a2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************
@@ -78,7 +78,7 @@ U_NAMESPACE_BEGIN
  * }
  *
  * void function1(ForwardCharacterIterator &it) {
- *     UChar c;
+ *     char16_t c;
  *     while((c=it.nextPostInc())!=ForwardCharacterIterator::DONE) {
  *         // use c
  *      }
@@ -149,7 +149,7 @@ public:
      * @return the current code unit.
      * @stable ICU 2.0
      */
-    virtual UChar         nextPostInc(void) = 0;
+    virtual char16_t         nextPostInc(void) = 0;
     
     /**
      * Gets the current code point for returning and advances to the next code point
@@ -230,7 +230,7 @@ protected:
  * showing a way to convert simple for() loops:
  * \code
  * void forward2(CharacterIterator &it) {
- *     UChar c;
+ *     char16_t c;
  *     for(c=it.firstPostInc(); c!=CharacterIterator::DONE; c=it.nextPostInc()) {
  *          // use c
  *      }
@@ -249,7 +249,7 @@ protected:
  * Backward iteration with a more traditional for() loop:
  * \code
  * void backward2(CharacterIterator &it) {
- *     UChar c;
+ *     char16_t c;
  *     for(c=it.last(); c!=CharacterIterator::DONE; c=it.previous()) {
  *         // use c
  *      }
@@ -266,7 +266,7 @@ protected:
  *      // get the position
  *      int32_t pos=it.getIndex();
  *      // get the previous code unit
- *      UChar u=it.previous();
+ *      char16_t u=it.previous();
  *      // move back one more code unit
  *      it.move(-1, CharacterIterator::kCurrent);
  *      // set the position back to where it was
@@ -283,7 +283,7 @@ protected:
  * Function processing characters, in this example simple output
  * <pre>
  * \code
- *  void processChar( UChar c )
+ *  void processChar( char16_t c )
  *  {
  *      cout << " " << c;
  *  }
@@ -294,7 +294,7 @@ protected:
  * \code
  *  void traverseForward(CharacterIterator& iter)
  *  {
- *      for(UChar c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
+ *      for(char16_t c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
  *          processChar(c);
  *      }
  *  }
@@ -305,7 +305,7 @@ protected:
  * \code
  *  void traverseBackward(CharacterIterator& iter)
  *  {
- *      for(UChar c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {
+ *      for(char16_t c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {
  *          processChar(c);
  *      }
  *  }
@@ -317,7 +317,7 @@ protected:
  * \code
  * void traverseOut(CharacterIterator& iter, int32_t pos)
  * {
- *      UChar c;
+ *      char16_t c;
  *      for (c = iter.setIndex(pos);
  *      c != CharacterIterator.DONE && (Unicode::isLetter(c) || Unicode::isDigit(c));
  *          c = iter.next()) {}
@@ -386,7 +386,7 @@ public:
      * @return the first code unit in its iteration range.
      * @stable ICU 2.0
      */
-    virtual UChar         first(void) = 0;
+    virtual char16_t         first(void) = 0;
 
     /**
      * Sets the iterator to refer to the first code unit in its
@@ -396,7 +396,7 @@ public:
      * @return the first code unit in its iteration range.
      * @stable ICU 2.0
      */
-    virtual UChar         firstPostInc(void);
+    virtual char16_t         firstPostInc(void);
 
     /**
      * Sets the iterator to refer to the first code point in its
@@ -435,7 +435,7 @@ public:
      * @return the last code unit.
      * @stable ICU 2.0
      */
-    virtual UChar         last(void) = 0;
+    virtual char16_t         last(void) = 0;
         
     /**
      * Sets the iterator to refer to the last code point in its
@@ -463,7 +463,7 @@ public:
      * @return the "position"-th code unit.
      * @stable ICU 2.0
      */
-    virtual UChar         setIndex(int32_t position) = 0;
+    virtual char16_t         setIndex(int32_t position) = 0;
 
     /**
      * Sets the iterator to refer to the beginning of the code point
@@ -483,7 +483,7 @@ public:
      * @return the current code unit. 
      * @stable ICU 2.0
      */
-    virtual UChar         current(void) const = 0;
+    virtual char16_t         current(void) const = 0;
         
     /**
      * Returns the code point the iterator currently refers to.  
@@ -499,7 +499,7 @@ public:
      * @return the next code unit.
      * @stable ICU 2.0
      */
-    virtual UChar         next(void) = 0;
+    virtual char16_t         next(void) = 0;
         
     /**
      * Advances to the next code point in the iteration range
@@ -520,7 +520,7 @@ public:
      * @return the previous code unit.
      * @stable ICU 2.0
      */
-    virtual UChar         previous(void) = 0;
+    virtual char16_t         previous(void) = 0;
 
     /**
      * Advances to the previous code point in the iteration range
@@ -607,6 +607,10 @@ public:
      * @return the new position
      * @stable ICU 2.0
      */
+#ifdef move32
+     // One of the system headers right now is sometimes defining a conflicting macro we don't use
+#undef move32
+#endif
     virtual int32_t      move32(int32_t delta, EOrigin origin) = 0;
 
     /**
index 590b6f3..a2c3d7d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 7fc1084..698e2ae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
  *     <td>C API</td>
  *   </tr>
  *   <tr>
+ *     <td>Codepage Detection</td>
+ *     <td>ucsdet.h</td>
+ *     <td>C API</td>
+ *   </tr>
+ *   <tr>
  *     <td>Unicode Text Compression</td>
  *     <td>ucnv.h<br/>(encoding name "SCSU" or "BOCU-1")</td>
  *     <td>C API</td>
index d45614a..10b566a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9c15b9a..f63dd16 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 13f43e1..81cad20 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  errorcode.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 2611511..51bb651 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 99e7c28..1cb202e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index cffa6f3..1a894a7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 23a1d7c..f08658e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  idna.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f2c8988..180fbcb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  listformatter.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -157,6 +157,8 @@ class U_COMMON_API ListFormatter : public UObject{
   private:
     static void initializeHash(UErrorCode& errorCode);
     static const ListFormatInternal* getListFormatInternal(const Locale& locale, const char *style, UErrorCode& errorCode);
+    struct ListPatternsSink;
+    static ListFormatInternal* loadListFormatInternal(const Locale& locale, const char* style, UErrorCode& errorCode);
 
     ListFormatter();
 
index 9ac5de5..3ab8201 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  localpointer.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -174,9 +174,9 @@ private:
  * \code
  * LocalPointer<UnicodeString> s(new UnicodeString((UChar32)0x50005));
  * int32_t length=s->length();  // 2
- * UChar lead=s->charAt(0);  // 0xd900
+ * char16_t lead=s->charAt(0);  // 0xd900
  * if(some condition) { return; }  // no need to explicitly delete the pointer
- * s.adoptInstead(new UnicodeString((UChar)0xfffc));
+ * s.adoptInstead(new UnicodeString((char16_t)0xfffc));
  * length=s->length();  // 1
  * // no need to explicitly delete the pointer
  * \endcode
@@ -323,10 +323,10 @@ public:
  * Usage example:
  * \code
  * LocalArray<UnicodeString> a(new UnicodeString[2]);
- * a[0].append((UChar)0x61);
+ * a[0].append((char16_t)0x61);
  * if(some condition) { return; }  // no need to explicitly delete the array
  * a.adoptInstead(new UnicodeString[4]);
- * a[3].append((UChar)0x62).append((UChar)0x63).reverse();
+ * a[3].append((char16_t)0x62).append((char16_t)0x63).reverse();
  * // no need to explicitly delete the array
  * \endcode
  *
index b8c7a0c..7f22782 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -20,6 +20,7 @@
 #if !UCONFIG_NO_FORMATTING
 
 #include "unicode/locid.h"
+#include "unicode/strenum.h"
 #include "unicode/uscript.h"
 #include "unicode/uldnames.h"
 #include "unicode/udisplaycontext.h"
index a8ddb7f..a37c4a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 
 #include "unicode/utypes.h"
 #include "unicode/uobject.h"
-#include "unicode/unistr.h"
 #include "unicode/putil.h"
 #include "unicode/uloc.h"
-#include "unicode/strenum.h"
 
 /**
  * \file
@@ -48,6 +46,9 @@ U_NAMESPACE_BEGIN
 // Forward Declarations
 void U_CALLCONV locale_available_init(); /**< @internal */
 
+class StringEnumeration;
+class UnicodeString;
+
 /**
  * A <code>Locale</code> object represents a specific geographical, political,
  * or cultural region. An operation that requires a <code>Locale</code> to perform
index 8c1115e..f28adaf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  messagepattern.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6a7668b..d326da9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  normalizer2.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -282,7 +282,7 @@ public:
      *
      * When used on a standard NFC Normalizer2 instance,
      * it returns the Decomposition_Mapping only if the Decomposition_Type (dt) is Canonical (Can);
-     * in this case, the result contains either one or two code points (=1..4 UChars).
+     * in this case, the result contains either one or two code points (=1..4 char16_ts).
      *
      * This function is independent of the mode of the Normalizer2.
      * The default implementation returns FALSE.
index d529aa2..0141058 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************
@@ -168,7 +168,7 @@ public:
    * @param mode  The normalization mode.
    * @deprecated ICU 56 Use Normalizer2 instead.
    */
-  Normalizer(const UChar* str, int32_t length, UNormalizationMode mode);
+  Normalizer(ConstChar16Ptr str, int32_t length, UNormalizationMode mode);
 
   /**
    * Creates a new <code>Normalizer</code> object for iterating over the
@@ -704,7 +704,7 @@ public:
    * @param status a UErrorCode
    * @deprecated ICU 56 Use Normalizer2 instead.
    */
-  void setText(const UChar* newText,
+  void setText(ConstChar16Ptr newText,
                     int32_t length,
             UErrorCode &status);
   /**
@@ -796,8 +796,8 @@ Normalizer::compare(const UnicodeString &s1, const UnicodeString &s2,
                     uint32_t options,
                     UErrorCode &errorCode) {
   // all argument checking is done in unorm_compare
-  return unorm_compare(s1.getBuffer(), s1.length(),
-                       s2.getBuffer(), s2.length(),
+  return unorm_compare(toUCharPtr(s1.getBuffer()), s1.length(),
+                       toUCharPtr(s2.getBuffer()), s2.length(),
                        options,
                        &errorCode);
 }
index 71aef40..fc1e3f4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 1f74ebd..bbebca7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 1997-2005, International Business Machines Corporation and others. All Rights Reserved.
index b42bef8..057182d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 #   define U_PLATFORM U_PF_ANDROID
     /* Android wchar_t support depends on the API level. */
 #   include <android/api-level.h>
-#elif defined(__native_client__)
+#elif defined(__pnacl__) || defined(__native_client__)
 #   define U_PLATFORM U_PF_BROWSER_NATIVE_CLIENT
 #elif defined(linux) || defined(__linux__) || defined(__linux)
 #   define U_PLATFORM U_PF_LINUX
 #endif
 
 /**
+ * \def U_PLATFORM_HAS_WINUWP_API
+ * Defines whether target is intended for Universal Windows Platform API
+ * Set to 1 for Windows10 Release Solution Configuration
+ * @internal
+ */
+#ifdef U_PLATFORM_HAS_WINUWP_API
+    /* Use the predefined value. */
+#else
+#   define U_PLATFORM_HAS_WINUWP_API 0
+#endif
+
+/**
  * \def U_PLATFORM_IMPLEMENTS_POSIX
  * Defines whether the platform implements (most of) the POSIX API.
  * Set to 1 for Cygwin and most other platforms.
 #define U_IOSTREAM_SOURCE 199711
 #endif
 
-/**
- * \def U_HAVE_STD_STRING
- * Defines whether the standard C++ (STL) &lt;string&gt; header is available.
- * @internal
- */
-#ifdef U_HAVE_STD_STRING
-    /* Use the predefined value. */
-#else
-#   define U_HAVE_STD_STRING 1
-#endif
-
 /*===========================================================================*/
 /** @{ Compiler and environment features                                     */
 /*===========================================================================*/
 #   define U_HAVE_DEBUG_LOCATION_NEW 0
 #endif
 
-/* Compatibility with non clang compilers: http://clang.llvm.org/docs/LanguageExtensions.html */
+/* Compatibility with compilers other than clang: http://clang.llvm.org/docs/LanguageExtensions.html */
 #ifndef __has_attribute
 #    define __has_attribute(x) 0
 #endif
 #   define U_CPLUSPLUS_VERSION 1
 #endif
 
+#if (U_PLATFORM == U_PF_AIX || U_PLATFORM == U_PF_OS390) && defined(__cplusplus) &&(U_CPLUSPLUS_VERSION < 11)
+// add in std::nullptr_t
+namespace std {
+  typedef decltype(nullptr) nullptr_t;
+};
+#endif
+
 /**
  * \def U_HAVE_RVALUE_REFERENCES
  * Set to 1 if the compiler supports rvalue references.
  * http://clang.llvm.org/docs/AttributeReference.html#fallthrough-clang-fallthrough
  * @internal
  */
-#ifdef __cplusplus
+#ifndef __cplusplus
+    // Not for C.
+#elif defined(U_FALLTHROUGH)
+    // Use the predefined value.
+#elif defined(__clang__)
+    // Test for compiler vs. feature separately.
+    // Other compilers might choke on the feature test.
 #   if __has_cpp_attribute(clang::fallthrough) || \
             (__has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough"))
 #       define U_FALLTHROUGH [[clang::fallthrough]]
-#   else
-#       define U_FALLTHROUGH
 #   endif
-#else
-#   define U_FALLTHROUGH
 #endif
 
+#ifndef U_FALLTHROUGH
+#   define U_FALLTHROUGH
+#endif
 
 /** @} */
 
      * gcc 4.4 defines the __CHAR16_TYPE__ macro to a usable type but
      * does not support u"abc" string literals.
      * C++11 and C11 require support for UTF-16 literals
+     * TODO: Fix for plain C. Doesn't work on Mac.
      */
 #   if U_CPLUSPLUS_VERSION >= 11 || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
 #       define U_HAVE_CHAR16_T 1
index 69d7286..6eaf2db 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 63a7b9b..406551a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 9f2a1a6..d654154 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index 6ffd1f4..41fdc04 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **************************************************************************
@@ -93,7 +93,7 @@ public:
      * @return 16-bit code unit of text at given offset
      * @stable ICU 1.8
      */
-    inline UChar charAt(int32_t offset) const;
+    inline char16_t charAt(int32_t offset) const;
 
     /**
      * Returns the 32-bit code point at the given 16-bit offset into
@@ -230,7 +230,7 @@ protected:
      * Virtual version of charAt().
      * @stable ICU 2.4
      */
-    virtual UChar getCharAt(int32_t offset) const = 0;
+    virtual char16_t getCharAt(int32_t offset) const = 0;
 
     /**
      * Virtual version of char32At().
@@ -246,7 +246,7 @@ Replaceable::length() const {
     return getLength();
 }
 
-inline UChar
+inline char16_t
 Replaceable::charAt(int32_t offset) const {
     return getCharAt(offset);
 }
index 927a65b..b522a7a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -216,7 +216,7 @@ public:
      *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
      *                could be a warning
      *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
-     * @return a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
+     * @return a pointer to a zero-terminated char16_t array which lives in a memory mapped/DLL file.
      * @stable ICU 2.0
      */
     UnicodeString
index e52b97c..b1dc939 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -175,7 +175,7 @@ protected:
    * @param newTextLength The length of the String
    * @stable ICU 2.0
    */
-  void setText(const UChar* newText, int32_t newTextLength);
+  void setText(const char16_t* newText, int32_t newTextLength);
 
   /**
    * Copy of the iterated string object.
index 2b74f5c..26eae01 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -19,8 +19,6 @@
 #include "unicode/utypes.h"
 #include "unicode/unistr.h"
 
-#ifndef U_HIDE_DRAFT_API
-
 U_NAMESPACE_BEGIN
 
 /**
@@ -49,15 +47,15 @@ U_NAMESPACE_BEGIN
  *
  * @see MessageFormat
  * @see UMessagePatternApostropheMode
- * @draft ICU 57
+ * @stable ICU 57
  */
 class U_COMMON_API SimpleFormatter U_FINAL : public UMemory {
 public:
     /**
      * Default constructor.
-     * @draft ICU 57
+     * @stable ICU 57
      */
-    SimpleFormatter() : compiledPattern((UChar)0) {}
+    SimpleFormatter() : compiledPattern((char16_t)0) {}
 
     /**
      * Constructs a formatter from the pattern string.
@@ -66,7 +64,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     SimpleFormatter(const UnicodeString& pattern, UErrorCode &errorCode) {
         applyPattern(pattern, errorCode);
@@ -84,7 +82,7 @@ public:
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax and
      *                  too few or too many arguments.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     SimpleFormatter(const UnicodeString& pattern, int32_t min, int32_t max,
                     UErrorCode &errorCode) {
@@ -93,20 +91,20 @@ public:
 
     /**
      * Copy constructor.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     SimpleFormatter(const SimpleFormatter& other)
             : compiledPattern(other.compiledPattern) {}
 
     /**
      * Assignment operator.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     SimpleFormatter &operator=(const SimpleFormatter& other);
 
     /**
      * Destructor.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     ~SimpleFormatter();
 
@@ -118,7 +116,7 @@ public:
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax.
      * @return TRUE if U_SUCCESS(errorCode).
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UBool applyPattern(const UnicodeString &pattern, UErrorCode &errorCode) {
         return applyPatternMinMaxArguments(pattern, 0, INT32_MAX, errorCode);
@@ -137,14 +135,14 @@ public:
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax and
      *                  too few or too many arguments.
      * @return TRUE if U_SUCCESS(errorCode).
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UBool applyPatternMinMaxArguments(const UnicodeString &pattern,
                                       int32_t min, int32_t max, UErrorCode &errorCode);
 
     /**
      * @return The max argument number + 1.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     int32_t getArgumentLimit() const {
         return getArgumentLimit(compiledPattern.getBuffer(), compiledPattern.length());
@@ -160,7 +158,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return appendTo
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UnicodeString &format(
             const UnicodeString &value0,
@@ -177,7 +175,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return appendTo
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UnicodeString &format(
             const UnicodeString &value0,
@@ -196,7 +194,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return appendTo
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UnicodeString &format(
             const UnicodeString &value0,
@@ -221,7 +219,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return appendTo
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UnicodeString &formatAndAppend(
             const UnicodeString *const *values, int32_t valuesLength,
@@ -247,7 +245,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return result
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UnicodeString &formatAndReplace(
             const UnicodeString *const *values, int32_t valuesLength,
@@ -257,7 +255,7 @@ public:
     /**
      * Returns the pattern text with none of the arguments.
      * Like formatting with all-empty string values.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UnicodeString getTextWithNoArguments() const {
         return getTextWithNoArguments(compiledPattern.getBuffer(), compiledPattern.length());
@@ -275,15 +273,15 @@ private:
      */
     UnicodeString compiledPattern;
 
-    static inline int32_t getArgumentLimit(const UChar *compiledPattern,
+    static inline int32_t getArgumentLimit(const char16_t *compiledPattern,
                                               int32_t compiledPatternLength) {
         return compiledPatternLength == 0 ? 0 : compiledPattern[0];
     }
 
-    static UnicodeString getTextWithNoArguments(const UChar *compiledPattern, int32_t compiledPatternLength);
+    static UnicodeString getTextWithNoArguments(const char16_t *compiledPattern, int32_t compiledPatternLength);
 
     static UnicodeString &format(
-            const UChar *compiledPattern, int32_t compiledPatternLength,
+            const char16_t *compiledPattern, int32_t compiledPatternLength,
             const UnicodeString *const *values,
             UnicodeString &result, const UnicodeString *resultCopy, UBool forbidResultAsValue,
             int32_t *offsets, int32_t offsetsLength,
@@ -292,6 +290,4 @@ private:
 
 U_NAMESPACE_END
 
-#endif /* U_HIDE_DRAFT_API */
-
 #endif  // __SIMPLEFORMATTER_H__
index 104ef0c..729c563 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  std_string.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 
 #include "unicode/utypes.h"
 
-#if U_HAVE_STD_STRING
-
-#if !defined(_MSC_VER)
-namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
+// Workaround for a libstdc++ bug before libstdc++4.6 (2011).
+// https://bugs.llvm.org/show_bug.cgi?id=13364
+#if defined(__GLIBCXX__)
+namespace std { class type_info; }
 #endif
 #include <string>
 
-#endif  // U_HAVE_STD_STRING
-
 #endif  // __STD_STRING_H__
index 5a33f7f..61d5148 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -35,7 +35,7 @@ U_NAMESPACE_BEGIN
  * call, so the returned string still might not be 'valid' on
  * subsequent use.</p>
  *
- * <p>Strings may take the form of const char*, const UChar*, or const
+ * <p>Strings may take the form of const char*, const char16_t*, or const
  * UnicodeString*.  The type you get is determine by the variant of
  * 'next' that you call.  In general the StringEnumeration is
  * optimized for one of these types, but all StringEnumerations can
@@ -112,7 +112,7 @@ public:
      * <p>If the iterator is out of sync with its service, status is set
      * to U_ENUM_OUT_OF_SYNC_ERROR and NULL is returned.</p>
      *
-     * <p>If the native service string is a UChar* string, it is
+     * <p>If the native service string is a char16_t* string, it is
      * converted to char* with the invariant converter.  If the
      * conversion fails (because a character cannot be converted) then
      * status is set to U_INVARIANT_CONVERSION_ERROR and the return
@@ -131,7 +131,7 @@ public:
     virtual const char* next(int32_t *resultLength, UErrorCode& status);
 
     /**
-     * <p>Returns the next element as a NUL-terminated UChar*.  If there
+     * <p>Returns the next element as a NUL-terminated char16_t*.  If there
      * are no more elements, returns NULL.  If the resultLength pointer
      * is not NULL, the length of the string (not counting the
      * terminating NUL) is returned at that address.  If an error
@@ -153,7 +153,7 @@ public:
      *
      * @stable ICU 2.4 
      */
-    virtual const UChar* unext(int32_t *resultLength, UErrorCode& status);
+    virtual const char16_t* unext(int32_t *resultLength, UErrorCode& status);
 
     /**
      * <p>Returns the next element a UnicodeString*.  If there are no
index 5e40d4a..b0887ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // Copyright (C) 2009-2013, International Business Machines
 // Corporation and others. All Rights Reserved.
@@ -68,14 +68,12 @@ class U_COMMON_API StringPiece : public UMemory {
    * @stable ICU 4.2
    */
   StringPiece(const char* str);
-#if U_HAVE_STD_STRING
   /**
    * Constructs from a std::string.
    * @stable ICU 4.2
    */
   StringPiece(const std::string& str)
     : ptr_(str.data()), length_(static_cast<int32_t>(str.size())) { }
-#endif
   /**
    * Constructs from a const char * pointer and a specified length.
    * @param offset a const char * pointer (need not be terminated)
index 95cd841..bcad248 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  stringtriebuilder.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -105,7 +105,7 @@ protected:
     /** @internal */
     virtual int32_t getElementStringLength(int32_t i) const = 0;
     /** @internal */
-    virtual UChar getElementUnit(int32_t i, int32_t unitIndex) const = 0;
+    virtual char16_t getElementUnit(int32_t i, int32_t unitIndex) const = 0;
     /** @internal */
     virtual int32_t getElementValue(int32_t i) const = 0;
 
@@ -120,7 +120,7 @@ protected:
     /** @internal */
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t count) const = 0;
     /** @internal */
-    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, UChar unit) const = 0;
+    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, char16_t unit) const = 0;
 
     /** @internal */
     virtual UBool matchNodesCanHaveValues() const = 0;
@@ -137,7 +137,7 @@ protected:
     /** @internal */
     static const int32_t kMaxBranchLinearSubNodeLength=5;
 
-    // Maximum number of nested split-branch levels for a branch on all 2^16 possible UChar units.
+    // Maximum number of nested split-branch levels for a branch on all 2^16 possible char16_t units.
     // log2(2^16/kMaxBranchLinearSubNodeLength) rounded up.
     /** @internal */
     static const int32_t kMaxSplitBranchLevels=14;
@@ -338,7 +338,7 @@ protected:
         virtual void write(StringTrieBuilder &builder);
         // Adds a unit with a final value.
         void add(int32_t c, int32_t value) {
-            units[length]=(UChar)c;
+            units[length]=(char16_t)c;
             equal[length]=NULL;
             values[length]=value;
             ++length;
@@ -346,7 +346,7 @@ protected:
         }
         // Adds a unit which leads to another match node.
         void add(int32_t c, Node *node) {
-            units[length]=(UChar)c;
+            units[length]=(char16_t)c;
             equal[length]=node;
             values[length]=0;
             ++length;
@@ -356,7 +356,7 @@ protected:
         Node *equal[kMaxBranchLinearSubNodeLength];  // NULL means "has final value".
         int32_t length;
         int32_t values[kMaxBranchLinearSubNodeLength];
-        UChar units[kMaxBranchLinearSubNodeLength];
+        char16_t units[kMaxBranchLinearSubNodeLength];
     };
 
     /**
@@ -364,7 +364,7 @@ protected:
      */
     class SplitBranchNode : public BranchNode {
     public:
-        SplitBranchNode(UChar middleUnit, Node *lessThanNode, Node *greaterOrEqualNode)
+        SplitBranchNode(char16_t middleUnit, Node *lessThanNode, Node *greaterOrEqualNode)
                 : BranchNode(((0x555555*37+middleUnit)*37+
                               hashCode(lessThanNode))*37+hashCode(greaterOrEqualNode)),
                   unit(middleUnit), lessThan(lessThanNode), greaterOrEqual(greaterOrEqualNode) {}
@@ -372,7 +372,7 @@ protected:
         virtual int32_t markRightEdgesFirst(int32_t edgeNumber);
         virtual void write(StringTrieBuilder &builder);
     protected:
-        UChar unit;
+        char16_t unit;
         Node *lessThan;
         Node *greaterOrEqual;
     };
index cf2c4f0..35e5f23 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index e599698..ef21f24 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ubidi.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -1196,11 +1196,14 @@ ubidi_setContext(UBiDi *pBiDi,
  *        A level overrides the directional property of its corresponding
  *        (same index) character if the level has the
  *        <code>#UBIDI_LEVEL_OVERRIDE</code> bit set.<br><br>
- *        Except for that bit, it must be
+ *        Aside from that bit, it must be
  *        <code>paraLevel<=embeddingLevels[]<=UBIDI_MAX_EXPLICIT_LEVEL</code>,
- *        with one exception: a level of zero may be specified for a paragraph
- *        separator even if <code>paraLevel>0</code> when multiple paragraphs
- *        are submitted in the same call to <code>ubidi_setPara()</code>.<br><br>
+ *        except that level 0 is always allowed.
+ *        Level 0 for a paragraph separator prevents reordering of paragraphs;
+ *        this only works reliably if <code>#UBIDI_LEVEL_OVERRIDE</code>
+ *        is also set for paragraph separators.
+ *        Level 0 for other characters is treated as a wildcard
+ *        and is lifted up to the resolved level of the surrounding paragraph.<br><br>
  *        <strong>Caution: </strong>A copy of this pointer, not of the levels,
  *        will be stored in the <code>UBiDi</code> object;
  *        the <code>embeddingLevels</code> array must not be
index 509f68b..724587d 100644 (file)
@@ -1,12 +1,12 @@
 /*
 ******************************************************************************
 *
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html
 *
 ******************************************************************************
 *   file name:  ubiditransform.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f43943e..22a4b99 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -267,6 +267,34 @@ ubrk_openRules(const UChar     *rules,
                UParseError     *parseErr,
                UErrorCode      *status);
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Open a new UBreakIterator for locating text boundaries using precompiled binary rules.
+ * Opening a UBreakIterator this way is substantially faster than using ubrk_openRules.
+ * Binary rules may be obtained using ubrk_getBinaryRules. The compiled rules are not
+ * compatible across different major versions of ICU, nor across platforms of different
+ * endianness or different base character set family (ASCII vs EBCDIC).
+ * @param binaryRules A set of compiled binary rules specifying the text breaking
+ *                    conventions. Ownership of the storage containing the compiled
+ *                    rules remains with the caller of this function. The compiled
+ *                    rules must not be modified or deleted during the life of the
+ *                    break iterator.
+ * @param rulesLength The length of binaryRules in bytes; must be >= 0.
+ * @param text        The text to be iterated over.  May be null, in which case
+ *                    ubrk_setText() is used to specify the text to be iterated.
+ * @param textLength  The number of characters in text, or -1 if null-terminated.
+ * @param status      Pointer to UErrorCode to receive any errors.
+ * @return            UBreakIterator for the specified rules.
+ * @see ubrk_getBinaryRules
+ * @draft ICU 59
+ */
+U_DRAFT UBreakIterator* U_EXPORT2
+ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
+                     const UChar *  text, int32_t textLength,
+                     UErrorCode *   status);
+
+#endif  /* U_HIDE_DRAFT_API */
+
 /**
  * Thread safe cloning operation
  * @param bi iterator to be cloned
@@ -566,6 +594,40 @@ ubrk_refreshUText(UBreakIterator *bi,
                        UText          *text,
                        UErrorCode     *status);
 
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Get a compiled binary version of the rules specifying the behavior of a UBreakIterator.
+ * The binary rules may be used with ubrk_openBinaryRules to open a new UBreakIterator
+ * more quickly than using ubrk_openRules. The compiled rules are not compatible across
+ * different major versions of ICU, nor across platforms of different endianness or
+ * different base character set family (ASCII vs EBCDIC). Supports preflighting (with
+ * binaryRules=NULL and rulesCapacity=0) to get the rules length without copying them to
+ * the binaryRules buffer. However, whether preflighting or not, if the actual length
+ * is greater than INT32_MAX, then the function returns 0 and sets *status to
+ * U_INDEX_OUTOFBOUNDS_ERROR.
+
+ * @param bi            The break iterator to use.
+ * @param binaryRules   Buffer to receive the compiled binary rules; set to NULL for
+ *                      preflighting.
+ * @param rulesCapacity Capacity (in bytes) of the binaryRules buffer; set to 0 for
+ *                      preflighting. Must be >= 0.
+ * @param status        Pointer to UErrorCode to receive any errors, such as
+ *                      U_BUFFER_OVERFLOW_ERROR, U_INDEX_OUTOFBOUNDS_ERROR, or
+ *                      U_ILLEGAL_ARGUMENT_ERROR.
+ * @return              The actual byte length of the binary rules, if <= INT32_MAX;
+ *                      otherwise 0. If not preflighting and this is larger than
+ *                      rulesCapacity, *status will be set to an error.
+ * @see ubrk_openBinaryRules
+ * @draft ICU 59
+ */
+U_DRAFT int32_t U_EXPORT2
+ubrk_getBinaryRules(UBreakIterator *bi,
+                    uint8_t *       binaryRules, int32_t rulesCapacity,
+                    UErrorCode *    status);
+
+#endif  /* U_HIDE_DRAFT_API */
+
 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
 
 #endif
index d7345e8..18e6c2b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucasemap.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -22,8 +22,8 @@
 #define __UCASEMAP_H__
 
 #include "unicode/utypes.h"
-#include "unicode/ustring.h"
 #include "unicode/localpointer.h"
+#include "unicode/ustring.h"
 
 /**
  * \file
@@ -185,6 +185,15 @@ ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode);
  */
 #define U_TITLECASE_NO_BREAK_ADJUSTMENT 0x200
 
+/**
+ * Omit unchanged text when case-mapping with Edits.
+ *
+ * @see CaseMap
+ * @see Edits
+ * @draft ICU 59
+ */
+#define UCASEMAP_OMIT_UNCHANGED_TEXT 0x4000
+
 #if !UCONFIG_NO_BREAK_ITERATION
 
 /**
@@ -253,7 +262,7 @@ ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode
  * @param dest      A buffer for the result string. The result will be NUL-terminated if
  *                  the buffer is large enough.
  *                  The contents is undefined in case of failure.
- * @param destCapacity The size of the buffer (number of bytes). If it is 0, then
+ * @param destCapacity The size of the buffer (number of UChars). If it is 0, then
  *                  dest may be NULL and the function will only return the length of the result
  *                  without writing any of the result string.
  * @param src       The original string.
@@ -272,7 +281,7 @@ ucasemap_toTitle(UCaseMap *csm,
                  const UChar *src, int32_t srcLength,
                  UErrorCode *pErrorCode);
 
-#endif
+#endif  // UCONFIG_NO_BREAK_ITERATION
 
 /**
  * Lowercase the characters in a UTF-8 string.
index c52e4d9..4d1ff3f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 7f6ea6d..8174ca2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -399,36 +399,34 @@ typedef enum UProperty {
     UCHAR_CHANGES_WHEN_CASEMAPPED=55,
     /** Binary property Changes_When_NFKC_Casefolded. @stable ICU 4.4 */
     UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED=56,
-#ifndef U_HIDE_DRAFT_API
     /**
      * Binary property Emoji.
      * See http://www.unicode.org/reports/tr51/#Emoji_Properties
      *
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UCHAR_EMOJI=57,
     /**
      * Binary property Emoji_Presentation.
      * See http://www.unicode.org/reports/tr51/#Emoji_Properties
      *
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UCHAR_EMOJI_PRESENTATION=58,
     /**
      * Binary property Emoji_Modifier.
      * See http://www.unicode.org/reports/tr51/#Emoji_Properties
      *
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UCHAR_EMOJI_MODIFIER=59,
     /**
      * Binary property Emoji_Modifier_Base.
      * See http://www.unicode.org/reports/tr51/#Emoji_Properties
      *
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UCHAR_EMOJI_MODIFIER_BASE=60,
-#endif /* U_HIDE_DRAFT_API */
 #ifndef U_HIDE_DEPRECATED_API
     /**
      * One more than the last constant for binary Unicode properties.
index 8daed44..dfc93f6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstrie.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -36,7 +36,7 @@ class UVector32;
 
 /**
  * Light-weight, non-const reader class for a UCharsTrie.
- * Traverses a UChar-serialized data structure with minimal state,
+ * Traverses a char16_t-serialized data structure with minimal state,
  * for mapping strings (16-bit-unit sequences) to non-negative integer values.
  *
  * This class owns the serialized trie data only if it was constructed by
@@ -52,18 +52,18 @@ public:
     /**
      * Constructs a UCharsTrie reader instance.
      *
-     * The trieUChars must contain a copy of a UChar sequence from the UCharsTrieBuilder,
-     * starting with the first UChar of that sequence.
-     * The UCharsTrie object will not read more UChars than
+     * The trieUChars must contain a copy of a char16_t sequence from the UCharsTrieBuilder,
+     * starting with the first char16_t of that sequence.
+     * The UCharsTrie object will not read more char16_ts than
      * the UCharsTrieBuilder generated in the corresponding build() call.
      *
      * The array is not copied/cloned and must not be modified while
      * the UCharsTrie object is in use.
      *
-     * @param trieUChars The UChar array that contains the serialized trie.
+     * @param trieUChars The char16_t array that contains the serialized trie.
      * @stable ICU 4.8
      */
-    UCharsTrie(const UChar *trieUChars)
+    UCharsTrie(ConstChar16Ptr trieUChars)
             : ownedArray_(NULL), uchars_(trieUChars),
               pos_(uchars_), remainingMatchLength_(-1) {}
 
@@ -75,7 +75,7 @@ public:
 
     /**
      * Copy constructor, copies the other trie reader object and its state,
-     * but not the UChar array which will be shared. (Shallow copy.)
+     * but not the char16_t array which will be shared. (Shallow copy.)
      * @param other Another UCharsTrie object.
      * @stable ICU 4.8
      */
@@ -109,8 +109,8 @@ public:
     private:
         friend class UCharsTrie;
 
-        const UChar *uchars;
-        const UChar *pos;
+        const char16_t *uchars;
+        const char16_t *pos;
         int32_t remainingMatchLength;
     };
 
@@ -148,14 +148,14 @@ public:
 
     /**
      * Determines whether the string so far matches, whether it has a value,
-     * and whether another input UChar can continue a matching string.
+     * and whether another input char16_t can continue a matching string.
      * @return The match/value Result.
      * @stable ICU 4.8
      */
     UStringTrieResult current() const;
 
     /**
-     * Traverses the trie from the initial state for this input UChar.
+     * Traverses the trie from the initial state for this input char16_t.
      * Equivalent to reset().next(uchar).
      * @param uchar Input char value. Values below 0 and above 0xffff will never match.
      * @return The match/value Result.
@@ -177,7 +177,7 @@ public:
     UStringTrieResult firstForCodePoint(UChar32 cp);
 
     /**
-     * Traverses the trie from the current state for this input UChar.
+     * Traverses the trie from the current state for this input char16_t.
      * @param uchar Input char value. Values below 0 and above 0xffff will never match.
      * @return The match/value Result.
      * @stable ICU 4.8
@@ -208,7 +208,7 @@ public:
      * @return The match/value Result.
      * @stable ICU 4.8
      */
-    UStringTrieResult next(const UChar *s, int32_t length);
+    UStringTrieResult next(ConstChar16Ptr s, int32_t length);
 
     /**
      * Returns a matching string's value if called immediately after
@@ -220,7 +220,7 @@ public:
      * @stable ICU 4.8
      */
     inline int32_t getValue() const {
-        const UChar *pos=pos_;
+        const char16_t *pos=pos_;
         int32_t leadUnit=*pos++;
         // U_ASSERT(leadUnit>=kMinValueLead);
         return leadUnit&kValueIsFinal ?
@@ -237,16 +237,16 @@ public:
      * @stable ICU 4.8
      */
     inline UBool hasUniqueValue(int32_t &uniqueValue) const {
-        const UChar *pos=pos_;
+        const char16_t *pos=pos_;
         // Skip the rest of a pending linear-match node.
         return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, FALSE, uniqueValue);
     }
 
     /**
-     * Finds each UChar which continues the string from the current state.
-     * That is, each UChar c for which it would be next(c)!=USTRINGTRIE_NO_MATCH now.
-     * @param out Each next UChar is appended to this object.
-     * @return the number of UChars which continue the string from here
+     * Finds each char16_t which continues the string from the current state.
+     * That is, each char16_t c for which it would be next(c)!=USTRINGTRIE_NO_MATCH now.
+     * @param out Each next char16_t is appended to this object.
+     * @return the number of char16_ts which continue the string from here
      * @stable ICU 4.8
      */
     int32_t getNextUChars(Appendable &out) const;
@@ -258,8 +258,8 @@ public:
     class U_COMMON_API Iterator : public UMemory {
     public:
         /**
-         * Iterates from the root of a UChar-serialized UCharsTrie.
-         * @param trieUChars The trie UChars.
+         * Iterates from the root of a char16_t-serialized UCharsTrie.
+         * @param trieUChars The trie char16_ts.
          * @param maxStringLength If 0, the iterator returns full strings.
          *                        Otherwise, the iterator returns strings with this maximum length.
          * @param errorCode Standard ICU error code. Its input value must
@@ -268,7 +268,7 @@ public:
          *                  function chaining. (See User Guide for details.)
          * @stable ICU 4.8
          */
-        Iterator(const UChar *trieUChars, int32_t maxStringLength, UErrorCode &errorCode);
+        Iterator(ConstChar16Ptr trieUChars, int32_t maxStringLength, UErrorCode &errorCode);
 
         /**
          * Iterates from the current state of the specified UCharsTrie.
@@ -336,11 +336,11 @@ public:
             return TRUE;
         }
 
-        const UChar *branchNext(const UChar *pos, int32_t length, UErrorCode &errorCode);
+        const char16_t *branchNext(const char16_t *pos, int32_t length, UErrorCode &errorCode);
 
-        const UChar *uchars_;
-        const UChar *pos_;
-        const UChar *initialPos_;
+        const char16_t *uchars_;
+        const char16_t *pos_;
+        const char16_t *initialPos_;
         int32_t remainingMatchLength_;
         int32_t initialRemainingMatchLength_;
         UBool skipValue_;  // Skip intermediate value which was already delivered.
@@ -368,7 +368,7 @@ private:
      * this constructor adopts the builder's array.
      * This constructor is only called by the builder.
      */
-    UCharsTrie(UChar *adoptUChars, const UChar *trieUChars)
+    UCharsTrie(char16_t *adoptUChars, const char16_t *trieUChars)
             : ownedArray_(adoptUChars), uchars_(trieUChars),
               pos_(uchars_), remainingMatchLength_(-1) {}
 
@@ -381,7 +381,7 @@ private:
 
     // Reads a compact 32-bit integer.
     // pos is already after the leadUnit, and the lead unit has bit 15 reset.
-    static inline int32_t readValue(const UChar *pos, int32_t leadUnit) {
+    static inline int32_t readValue(const char16_t *pos, int32_t leadUnit) {
         int32_t value;
         if(leadUnit<kMinTwoUnitValueLead) {
             value=leadUnit;
@@ -392,7 +392,7 @@ private:
         }
         return value;
     }
-    static inline const UChar *skipValue(const UChar *pos, int32_t leadUnit) {
+    static inline const char16_t *skipValue(const char16_t *pos, int32_t leadUnit) {
         if(leadUnit>=kMinTwoUnitValueLead) {
             if(leadUnit<kThreeUnitValueLead) {
                 ++pos;
@@ -402,12 +402,12 @@ private:
         }
         return pos;
     }
-    static inline const UChar *skipValue(const UChar *pos) {
+    static inline const char16_t *skipValue(const char16_t *pos) {
         int32_t leadUnit=*pos++;
         return skipValue(pos, leadUnit&0x7fff);
     }
 
-    static inline int32_t readNodeValue(const UChar *pos, int32_t leadUnit) {
+    static inline int32_t readNodeValue(const char16_t *pos, int32_t leadUnit) {
         // U_ASSERT(kMinValueLead<=leadUnit && leadUnit<kValueIsFinal);
         int32_t value;
         if(leadUnit<kMinTwoUnitNodeValueLead) {
@@ -419,7 +419,7 @@ private:
         }
         return value;
     }
-    static inline const UChar *skipNodeValue(const UChar *pos, int32_t leadUnit) {
+    static inline const char16_t *skipNodeValue(const char16_t *pos, int32_t leadUnit) {
         // U_ASSERT(kMinValueLead<=leadUnit && leadUnit<kValueIsFinal);
         if(leadUnit>=kMinTwoUnitNodeValueLead) {
             if(leadUnit<kThreeUnitNodeValueLead) {
@@ -431,7 +431,7 @@ private:
         return pos;
     }
 
-    static inline const UChar *jumpByDelta(const UChar *pos) {
+    static inline const char16_t *jumpByDelta(const char16_t *pos) {
         int32_t delta=*pos++;
         if(delta>=kMinTwoUnitDeltaLead) {
             if(delta==kThreeUnitDeltaLead) {
@@ -444,7 +444,7 @@ private:
         return pos+delta;
     }
 
-    static const UChar *skipDelta(const UChar *pos) {
+    static const char16_t *skipDelta(const char16_t *pos) {
         int32_t delta=*pos++;
         if(delta>=kMinTwoUnitDeltaLead) {
             if(delta==kThreeUnitDeltaLead) {
@@ -461,28 +461,28 @@ private:
     }
 
     // Handles a branch node for both next(uchar) and next(string).
-    UStringTrieResult branchNext(const UChar *pos, int32_t length, int32_t uchar);
+    UStringTrieResult branchNext(const char16_t *pos, int32_t length, int32_t uchar);
 
     // Requires remainingLength_<0.
-    UStringTrieResult nextImpl(const UChar *pos, int32_t uchar);
+    UStringTrieResult nextImpl(const char16_t *pos, int32_t uchar);
 
     // Helper functions for hasUniqueValue().
     // Recursively finds a unique value (or whether there is not a unique one)
     // from a branch.
-    static const UChar *findUniqueValueFromBranch(const UChar *pos, int32_t length,
+    static const char16_t *findUniqueValueFromBranch(const char16_t *pos, 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 UChar *pos, UBool haveUniqueValue, int32_t &uniqueValue);
+    static UBool findUniqueValue(const char16_t *pos, UBool haveUniqueValue, int32_t &uniqueValue);
 
     // Helper functions for getNextUChars().
     // getNextUChars() when pos is on a branch node.
-    static void getNextBranchUChars(const UChar *pos, int32_t length, Appendable &out);
+    static void getNextBranchUChars(const char16_t *pos, int32_t length, Appendable &out);
 
     // UCharsTrie data structure
     //
-    // The trie consists of a series of UChar-serialized nodes for incremental
-    // Unicode string/UChar sequence matching. (UChar=16-bit unsigned integer)
+    // The trie consists of a series of char16_t-serialized nodes for incremental
+    // Unicode string/char16_t sequence matching. (char16_t=16-bit unsigned integer)
     // The root node is at the beginning of the trie data.
     //
     // Types of nodes are distinguished by their node lead unit ranges.
@@ -491,9 +491,9 @@ private:
     //
     // Node types:
     //  - Final-value node: Stores a 32-bit integer in a compact, variable-length format.
-    //    The value is for the string/UChar sequence so far.
+    //    The value is for the string/char16_t sequence so far.
     //  - Match node, optionally with an intermediate value in a different compact format.
-    //    The value, if present, is for the string/UChar sequence so far.
+    //    The value, if present, is for the string/char16_t sequence so far.
     //
     //  Aside from the value, which uses the node lead unit's high bits:
     //
@@ -560,15 +560,15 @@ private:
 
     static const int32_t kMaxTwoUnitDelta=((kThreeUnitDeltaLead-kMinTwoUnitDeltaLead)<<16)-1;  // 0x03feffff
 
-    UChar *ownedArray_;
+    char16_t *ownedArray_;
 
     // Fixed value referencing the UCharsTrie words.
-    const UChar *uchars_;
+    const char16_t *uchars_;
 
     // Iterator variables.
 
     // Pointer to next trie unit to read. NULL if no more matches.
-    const UChar *pos_;
+    const char16_t *pos_;
     // Remaining length of a linear-match node, minus 1. Negative if not in such a node.
     int32_t remainingMatchLength_;
 };
index cc9fb77..2aa4757 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstriebuilder.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -89,21 +89,21 @@ public:
     UCharsTrie *build(UStringTrieBuildOption buildOption, UErrorCode &errorCode);
 
     /**
-     * Builds a UCharsTrie for the add()ed data and UChar-serializes it.
+     * Builds a UCharsTrie for the add()ed data and char16_t-serializes it.
      * Once built, no further data can be add()ed until clear() is called.
      *
      * A UCharsTrie cannot be empty. At least one (string, value) pair
      * must have been add()ed.
      *
      * Multiple calls to buildUnicodeString() set the UnicodeStrings to the
-     * builder's same UChar array, without rebuilding.
+     * builder's same char16_t array, without rebuilding.
      * If buildUnicodeString() is called after build(), the trie will be
      * re-serialized into a new array.
      * If build() is called after buildUnicodeString(), the trie object will become
      * the owner of the previously returned array.
      * After clear() has been called, a new array will be used as well.
      * @param buildOption Build option, see UStringTrieBuildOption.
-     * @param result A UnicodeString which will be set to the UChar-serialized
+     * @param result A UnicodeString which will be set to the char16_t-serialized
      *               UCharsTrie for the add()ed data.
      * @param errorCode Standard ICU error code. Its input value must
      *                  pass the U_SUCCESS() test, or else the function returns
@@ -135,14 +135,14 @@ private:
     void buildUChars(UStringTrieBuildOption buildOption, UErrorCode &errorCode);
 
     virtual int32_t getElementStringLength(int32_t i) const;
-    virtual UChar getElementUnit(int32_t i, int32_t unitIndex) const;
+    virtual char16_t getElementUnit(int32_t i, int32_t unitIndex) const;
     virtual int32_t getElementValue(int32_t i) const;
 
     virtual int32_t getLimitOfLinearMatch(int32_t first, int32_t last, int32_t unitIndex) const;
 
     virtual int32_t countElementUnits(int32_t start, int32_t limit, int32_t unitIndex) const;
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t count) const;
-    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, UChar unit) const;
+    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, char16_t unit) const;
 
     virtual UBool matchNodesCanHaveValues() const { return TRUE; }
 
@@ -152,11 +152,11 @@ private:
 
     class UCTLinearMatchNode : public LinearMatchNode {
     public:
-        UCTLinearMatchNode(const UChar *units, int32_t len, Node *nextNode);
+        UCTLinearMatchNode(const char16_t *units, int32_t len, Node *nextNode);
         virtual UBool operator==(const Node &other) const;
         virtual void write(StringTrieBuilder &builder);
     private:
-        const UChar *s;
+        const char16_t *s;
     };
 
     virtual Node *createLinearMatchNode(int32_t i, int32_t unitIndex, int32_t length,
@@ -164,7 +164,7 @@ private:
 
     UBool ensureCapacity(int32_t length);
     virtual int32_t write(int32_t unit);
-    int32_t write(const UChar *s, int32_t length);
+    int32_t write(const char16_t *s, int32_t length);
     virtual int32_t writeElementUnits(int32_t i, int32_t unitIndex, int32_t length);
     virtual int32_t writeValueAndFinal(int32_t i, UBool isFinal);
     virtual int32_t writeValueAndType(UBool hasValue, int32_t value, int32_t node);
@@ -175,9 +175,9 @@ private:
     int32_t elementsCapacity;
     int32_t elementsLength;
 
-    // UChar serialization of the trie.
+    // char16_t serialization of the trie.
     // Grows from the back: ucharsLength measures from the end of the buffer!
-    UChar *uchars;
+    char16_t *uchars;
     int32_t ucharsCapacity;
     int32_t ucharsLength;
 };
index d87ffb1..efcd263 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 
 /**
  * \file 
- * \brief C++ API: UChar Character Iterator
+ * \brief C++ API: char16_t Character Iterator
  */
  
 U_NAMESPACE_BEGIN
 
 /**
  * A concrete subclass of CharacterIterator that iterates over the
- * characters (code units or code points) in a UChar array.
+ * characters (code units or code points) in a char16_t array.
  * It's possible not only to create an
- * iterator that iterates over an entire UChar array, but also to
- * create one that iterates over only a subrange of a UChar array
- * (iterators over different subranges of the same UChar array don't
+ * iterator that iterates over an entire char16_t array, but also to
+ * create one that iterates over only a subrange of a char16_t array
+ * (iterators over different subranges of the same char16_t array don't
  * compare equal).
  * @see CharacterIterator
  * @see ForwardCharacterIterator
@@ -35,34 +35,34 @@ U_NAMESPACE_BEGIN
 class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
 public:
   /**
-   * Create an iterator over the UChar array referred to by "textPtr".
+   * Create an iterator over the char16_t array referred to by "textPtr".
    * The iteration range is 0 to <code>length-1</code>.
    * text is only aliased, not adopted (the
    * destructor will not delete it).
-   * @param textPtr The UChar array to be iterated over
-   * @param length The length of the UChar array
+   * @param textPtr The char16_t array to be iterated over
+   * @param length The length of the char16_t array
    * @stable ICU 2.0
    */
-  UCharCharacterIterator(const UChar* textPtr, int32_t length);
+  UCharCharacterIterator(ConstChar16Ptr textPtr, int32_t length);
 
   /**
-   * Create an iterator over the UChar array referred to by "textPtr".
+   * Create an iterator over the char16_t array referred to by "textPtr".
    * The iteration range is 0 to <code>length-1</code>.
    * text is only aliased, not adopted (the
    * destructor will not delete it).
    * The starting
    * position is specified by "position". If "position" is outside the valid
    * iteration range, the behavior of this object is undefined.
-   * @param textPtr The UChar array to be iteratd over
-   * @param length The length of the UChar array
+   * @param textPtr The char16_t array to be iteratd over
+   * @param length The length of the char16_t array
    * @param position The starting position of the iteration
    * @stable ICU 2.0
    */
-  UCharCharacterIterator(const UChar* textPtr, int32_t length,
+  UCharCharacterIterator(ConstChar16Ptr textPtr, int32_t length,
                          int32_t position);
 
   /**
-   * Create an iterator over the UChar array referred to by "textPtr".
+   * Create an iterator over the char16_t array referred to by "textPtr".
    * The iteration range is 0 to <code>end-1</code>.
    * text is only aliased, not adopted (the
    * destructor will not delete it).
@@ -70,14 +70,14 @@ public:
    * position is specified by "position". If begin and end do not
    * form a valid iteration range or "position" is outside the valid
    * iteration range, the behavior of this object is undefined.
-   * @param textPtr The UChar array to be iterated over
-   * @param length The length of the UChar array
+   * @param textPtr The char16_t array to be iterated over
+   * @param length The length of the char16_t array
    * @param textBegin  The begin position of the iteration range
    * @param textEnd    The end position of the iteration range
    * @param position    The starting position of the iteration
    * @stable ICU 2.0
    */
-  UCharCharacterIterator(const UChar* textPtr, int32_t length,
+  UCharCharacterIterator(ConstChar16Ptr textPtr, int32_t length,
                          int32_t textBegin,
                          int32_t textEnd,
                          int32_t position);
@@ -141,7 +141,7 @@ public:
    * @return the first code unit in its iteration range.
    * @stable ICU 2.0
    */
-  virtual UChar         first(void);
+  virtual char16_t         first(void);
 
   /**
    * Sets the iterator to refer to the first code unit in its
@@ -151,7 +151,7 @@ public:
    * @return the first code unit in its iteration range
    * @stable ICU 2.0
    */
-  virtual UChar         firstPostInc(void);
+  virtual char16_t         firstPostInc(void);
 
   /**
    * Sets the iterator to refer to the first code point in its
@@ -181,7 +181,7 @@ public:
    * @return the last code unit in its iteration range.
    * @stable ICU 2.0
    */
-  virtual UChar         last(void);
+  virtual char16_t         last(void);
 
   /**
    * Sets the iterator to refer to the last code point in its
@@ -200,7 +200,7 @@ public:
    * @return the code unit
    * @stable ICU 2.0
    */
-  virtual UChar         setIndex(int32_t position);
+  virtual char16_t         setIndex(int32_t position);
 
   /**
    * Sets the iterator to refer to the beginning of the code point
@@ -220,7 +220,7 @@ public:
    * @return the code unit the iterator currently refers to.
    * @stable ICU 2.0
    */
-  virtual UChar         current(void) const;
+  virtual char16_t         current(void) const;
 
   /**
    * Returns the code point the iterator currently refers to.
@@ -236,7 +236,7 @@ public:
    * @return the next code unit in the iteration range.
    * @stable ICU 2.0
    */
-  virtual UChar         next(void);
+  virtual char16_t         next(void);
 
   /**
    * Gets the current code unit for returning and advances to the next code unit
@@ -246,7 +246,7 @@ public:
    * @return the current code unit.
    * @stable ICU 2.0
    */
-  virtual UChar         nextPostInc(void);
+  virtual char16_t         nextPostInc(void);
 
   /**
    * Advances to the next code point in the iteration range (toward
@@ -288,7 +288,7 @@ public:
    * @return the previous code unit in the iteration range.
    * @stable ICU 2.0
    */
-  virtual UChar         previous(void);
+  virtual char16_t         previous(void);
 
   /**
    * Advances to the previous code point in the iteration range (toward
@@ -334,16 +334,20 @@ public:
    * @return the new position
    * @stable ICU 2.0
    */
+#ifdef move32
+   // One of the system headers right now is sometimes defining a conflicting macro we don't use
+#undef move32
+#endif
   virtual int32_t      move32(int32_t delta, EOrigin origin);
 
   /**
    * Sets the iterator to iterate over a new range of text
    * @stable ICU 2.0
    */
-  void setText(const UChar* newText, int32_t newTextLength);
+  void setText(ConstChar16Ptr newText, int32_t newTextLength);
 
   /**
-   * Copies the UChar array under iteration into the UnicodeString
+   * Copies the char16_t array under iteration into the UnicodeString
    * referred to by "result".  Even if this iterator iterates across
    * only a part of this string, the whole string is copied.
    * @param result Receives a copy of the text under iteration.
@@ -375,7 +379,7 @@ protected:
    * Protected member text
    * @stable ICU 2.0
    */
-  const UChar*            text;
+  const char16_t*            text;
 
 };
 
index d7801d6..5beb1f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  uclean.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -101,7 +101,7 @@ u_init(UErrorCode *status);
 U_STABLE void U_EXPORT2 
 u_cleanup(void);
 
-
+U_CDECL_BEGIN
 /**
   *  Pointer type for a user supplied memory allocation function.
   *  @param context user supplied value, obtained from from u_setMemoryFunctions().
@@ -149,9 +149,10 @@ typedef void  U_CALLCONV UMemFreeFn (const void *context, void *mem);
  *  @system
  */  
 U_STABLE void U_EXPORT2 
-u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMemFreeFn *f, 
+u_setMemoryFunctions(const void *context, UMemAllocFn * U_CALLCONV a, UMemReallocFn * U_CALLCONV r, UMemFreeFn * U_CALLCONV f, 
                     UErrorCode *status);
 
+U_CDECL_END
 
 #ifndef U_HIDE_DEPRECATED_API
 /*********************************************************************************
@@ -172,6 +173,7 @@ u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMem
   */
 typedef void *UMTX;
 
+U_CDECL_BEGIN
 /**
   *  Function Pointer type for a user supplied mutex initialization function.
   *  The user-supplied function will be called by ICU whenever ICU needs to create a
@@ -201,7 +203,7 @@ typedef void U_CALLCONV UMtxInitFn (const void *context, UMTX  *mutex, UErrorCod
   *  @system
   */
 typedef void U_CALLCONV UMtxFn   (const void *context, UMTX  *mutex);
-
+U_CDECL_END
 
 /**
   *  Set the functions that ICU will use for mutex operations
index 767c1a2..86e3b84 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 7104c72..14169ed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b970b89..2f74754 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 3eed081..d423845 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 77a476d..c26fce4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  uconfig.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 56bad0a..1abb3b2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index bde719d..a0286e1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  udata.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index eaef02d..c4f6c95 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 8da1bd4..fc6efa2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uenum.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:2
 *
@@ -23,7 +23,9 @@
 #include "unicode/localpointer.h"
 
 #if U_SHOW_CPLUSPLUS_API
-#include "unicode/strenum.h"
+U_NAMESPACE_BEGIN
+class StringEnumeration;
+U_NAMESPACE_END
 #endif
 
 /**
index af3455c..0dafb76 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  uidna.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index e6cb838..11ad75a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uiter.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 30f465a..3ebffa2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2167f60..9fe24f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
@@ -49,7 +49,7 @@ typedef struct UListFormatter UListFormatter;  /**< C typedef for struct UListFo
  *            or NULL if an error occurred.
  * @stable ICU 55
  */
-U_STABLE UListFormatter* U_EXPORT2
+U_CAPI UListFormatter* U_EXPORT2
 ulistfmt_open(const char*  locale,
               UErrorCode*  status);
 
@@ -59,7 +59,7 @@ ulistfmt_open(const char*  locale,
  *            The UListFormatter object to close.
  * @stable ICU 55
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulistfmt_close(UListFormatter *listfmt);
 
 
@@ -116,7 +116,7 @@ U_NAMESPACE_END
  *            total buffer size needed (e.g. for illegal arguments).
  * @stable ICU 55
  */
-U_DRAFT int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulistfmt_format(const UListFormatter* listfmt,
                 const UChar* const strings[],
                 const int32_t *    stringLengths,
index 92ce20e..23a54a9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -61,7 +61,7 @@
  * http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt</a>
  *
  * <P>
- * The second option includes an additonal <STRONG>ISO Country
+ * The second option includes an additional <STRONG>ISO Country
  * Code.</STRONG> These codes are the upper-case two-letter codes
  * as defined by ISO-3166.
  * You can find a full list of these codes at a number of sites, such as:
@@ -69,7 +69,7 @@
  * http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html</a>
  *
  * <P>
- * The third option requires another additonal information--the 
+ * The third option requires another additional information--the 
  * <STRONG>Variant.</STRONG>
  * The Variant codes are vendor and browser-specific.
  * For example, use WIN for Windows, MAC for Macintosh, and POSIX for POSIX.
  * <STRONG>just</STRONG> a mechanism for identifying these services.
  *
  * <P>
- * Each international serivce that performs locale-sensitive operations 
+ * Each international service that performs locale-sensitive operations 
  * allows you
  * to get all the available objects of that type. You can sift
  * through these objects by language, country, or variant,
@@ -539,6 +539,9 @@ uloc_getISO3Country(const char* localeID);
  * Gets the Win32 LCID value for the specified locale.
  * If the ICU locale is not recognized by Windows, 0 will be returned.
  *
+ * LCIDs were deprecated with Windows Vista and Microsoft recommends
+ * that developers use BCP47 style tags instead (uloc_toLanguageTag).
+ *
  * @param localeID the locale to get the Win32 LCID value with
  * @return country the Win32 LCID for localeID
  * @stable ICU 2.0
@@ -577,7 +580,7 @@ uloc_getDisplayLanguage(const char* locale,
  *                 if the locale's language code is "en", passing Locale::getFrench() for
  *                 inLocale would result in "", while passing Locale::getGerman()
  *                 for inLocale would result in "". NULL may be used to specify the default.
- * @param script the displayable country code for localeID
+ * @param script the displayable script for the localeID
  * @param scriptCapacity the size of the script buffer to store the  
  * displayable script code with
  * @param status error information if retrieving the displayable script code failed
@@ -852,10 +855,12 @@ uloc_openKeywords(const char* localeID,
  * Get the value for a keyword. Locale name does not need to be normalized.
  * 
  * @param localeID locale name containing the keyword ("de_DE@currency=EURO;collation=PHONEBOOK")
- * @param keywordName name of the keyword for which we want the value. Case insensitive.
+ * @param keywordName name of the keyword for which we want the value; must not be
+ *  NULL or empty, and must consist only of [A-Za-z0-9]. Case insensitive.
  * @param buffer receiving buffer
  * @param bufferCapacity capacity of receiving buffer
- * @param status containing error code - buffer not big enough.
+ * @param status containing error code: e.g. buffer not big enough or ill-formed localeID
+ *  or keywordName parameters.
  * @return the length of keyword value
  * @stable ICU 2.8
  */
@@ -872,18 +877,26 @@ uloc_getKeywordValue(const char* localeID,
  * For removing all keywords, use uloc_getBaseName().
  *
  * NOTE: Unlike almost every other ICU function which takes a
- * buffer, this function will NOT truncate the output text. If a
- * BUFFER_OVERFLOW_ERROR is received, it means that the original
- * buffer is untouched. This is done to prevent incorrect or possibly
- * even malformed locales from being generated and used.
+ * buffer, this function will NOT truncate the output text, and will
+ * not update the buffer with unterminated text setting a status of
+ * U_STRING_NOT_TERMINATED_WARNING. If a BUFFER_OVERFLOW_ERROR is received,
+ * it means a terminated version of the updated locale ID would not fit
+ * in the buffer, and the original buffer is untouched. This is done to
+ * prevent incorrect or possibly even malformed locales from being generated
+ * and used.
  *
- * @param keywordName name of the keyword to be set. Case insensitive.
+ * @param keywordName name of the keyword to be set; must not be
+ *  NULL or empty, and must consist only of [A-Za-z0-9]. Case insensitive.
  * @param keywordValue value of the keyword to be set. If 0-length or
- *  NULL, will result in the keyword being removed. No error is given if 
- *  that keyword does not exist.
- * @param buffer input buffer containing locale to be modified.
+ *  NULL, will result in the keyword being removed; no error is given if 
+ *  that keyword does not exist. Otherwise, must consist only of
+ *  [A-Za-z0-9] and [/_+-].
+ * @param buffer input buffer containing well-formed locale ID to be
+ *  modified.
  * @param bufferCapacity capacity of receiving buffer
- * @param status containing error code - buffer not big enough.
+ * @param status containing error code: e.g. buffer not big enough
+ *  or ill-formed keywordName or keywordValue parameters, or ill-formed
+ *  locale ID in buffer on input.
  * @return the length needed for the buffer
  * @see uloc_getKeywordValue
  * @stable ICU 3.2
index 51581c7..3ba9161 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  umachine.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
  */
 #include <stddef.h>
 
-#ifndef U_HIDE_INTERNAL_API
-/*
- *  U_USE_CHAR16_T
- *     When defined, force use of char16_t for UChar.
- *     Note: char16_t is expected to become the default and required in the future,
- *           and this option will be removed.
- *     @internal
- */
-#ifdef U_USE_CHAR16_T
-#ifdef UCHAR_TYPE
-#undef UCHAR_TYPE
-#endif
-#define UCHAR_TYPE char16_t
-
-/*
- * In plain C, <uchar.h> is needed for the definition of char16_t
- */
-#ifndef __cplusplus
-#include <uchar.h>
-#endif
-#endif
-#endif  /* U_HIDE_INTERNAL_API */
-
 /*==========================================================================*/
 /* For C wrappers, we use the symbol U_STABLE.                                */
 /* This works properly if the includer is C or C++.                         */
@@ -314,30 +291,92 @@ typedef int8_t UBool;
 #define U_SIZEOF_UCHAR 2
 
 /**
+ * \def U_CHAR16_IS_TYPEDEF
+ * If 1, then char16_t is a typedef and not a real type (yet)
+ * @internal
+ */
+#if (U_PLATFORM == U_PF_AIX) && defined(__cplusplus) &&(U_CPLUSPLUS_VERSION < 11)
+// for AIX, uchar.h needs to be included
+# include <uchar.h>
+# define U_CHAR16_IS_TYPEDEF 1
+#else
+# define U_CHAR16_IS_TYPEDEF 0
+#endif
+
+
+/**
  * \var UChar
- * Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t),
- * or wchar_t if that is 16 bits wide; always assumed to be unsigned.
- * If neither is available, then define UChar to be uint16_t.
  *
- * This makes the definition of UChar platform-dependent
- * but allows direct string type compatibility with platforms with
- * 16-bit wchar_t types.
+ * The base type for UTF-16 code units and pointers.
+ * Unsigned 16-bit integer.
+ * Starting with ICU 59, C++ API uses char16_t directly, while C API continues to use UChar.
+ *
+ * UChar is configurable by defining the macro UCHAR_TYPE
+ * on the preprocessor or compiler command line:
+ * -DUCHAR_TYPE=uint16_t or -DUCHAR_TYPE=wchar_t (if U_SIZEOF_WCHAR_T==2) etc.
+ * (The UCHAR_TYPE can also be #defined earlier in this file, for outside the ICU library code.)
+ * This is for transitional use from application code that uses uint16_t or wchar_t for UTF-16.
+ *
+ * The default is UChar=char16_t.
+ *
+ * C++11 defines char16_t as bit-compatible with uint16_t, but as a distinct type.
+ *
+ * In C, char16_t is a simple typedef of uint_least16_t.
+ * ICU requires uint_least16_t=uint16_t for data memory mapping.
+ * On macOS, char16_t is not available because the uchar.h standard header is missing.
  *
  * @stable ICU 4.4
  */
-#if defined(UCHAR_TYPE)
+
+#if 1
+    // #if 1 is normal. UChar defaults to char16_t in C++.
+    // For configuration testing of UChar=uint16_t temporarily change this to #if 0.
+    // The intltest Makefile #defines UCHAR_TYPE=char16_t,
+    // so we only #define it to uint16_t if it is undefined so far.
+#elif !defined(UCHAR_TYPE)
+#   define UCHAR_TYPE uint16_t
+#endif
+
+#if defined(U_COMBINED_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION) || \
+        defined(U_I18N_IMPLEMENTATION) || defined(U_IO_IMPLEMENTATION)
+    // Inside the ICU library code, never configurable.
+    typedef char16_t UChar;
+#elif defined(UCHAR_TYPE)
     typedef UCHAR_TYPE UChar;
-/* Not #elif U_HAVE_CHAR16_T -- because that is type-incompatible with pre-C++11 callers
-    typedef char16_t UChar;  */
-#elif U_SIZEOF_WCHAR_T==2
-    typedef wchar_t UChar;
-#elif defined(__CHAR16_TYPE__)
-    typedef __CHAR16_TYPE__ UChar;
+#elif defined(__cplusplus)
+    typedef char16_t UChar;
 #else
     typedef uint16_t UChar;
 #endif
 
 /**
+ * \var OldUChar
+ * Default ICU 58 definition of UChar.
+ * A base type for UTF-16 code units and pointers.
+ * Unsigned 16-bit integer.
+ *
+ * Define OldUChar to be wchar_t if that is 16 bits wide.
+ * If wchar_t is not 16 bits wide, then define UChar to be uint16_t.
+ *
+ * This makes the definition of OldUChar platform-dependent
+ * but allows direct string type compatibility with platforms with
+ * 16-bit wchar_t types.
+ *
+ * This is how UChar was defined in ICU 58, for transition convenience.
+ * Exception: ICU 58 UChar was defined to UCHAR_TYPE if that macro was defined.
+ * The current UChar responds to UCHAR_TYPE but OldUChar does not.
+ *
+ * @draft ICU 59
+ */
+#if U_SIZEOF_WCHAR_T==2
+    typedef wchar_t OldUChar;
+#elif defined(__CHAR16_TYPE__)
+    typedef __CHAR16_TYPE__ OldUChar;
+#else
+    typedef uint16_t OldUChar;
+#endif
+
+/**
  * Define UChar32 as a type for single Unicode code points.
  * UChar32 is a signed 32-bit integer (same as int32_t).
  *
index 7b6d35f..213290b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  umisc.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 0fdcd14..e105271 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -30,7 +30,7 @@ U_NAMESPACE_BEGIN
  * defined range.
  * @stable ICU 3.0
  */
-#define U_ETHER ((UChar)0xFFFF)
+#define U_ETHER ((char16_t)0xFFFF)
 
 /**
  *
index b40027c..1c50759 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 605f3f5..ee4326f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 2001-2005, International Business Machines Corporation and others. All Rights Reserved.
index fdd7fc3..4a4ce19 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
@@ -294,7 +294,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter {
      * indicating that toPattern() must generate a pattern
      * representation from the inversion list.
      */
-    UChar *pat;
+    char16_t *pat;
     UVector* strings; // maintained in sorted order
     UnicodeSetStringSpan *stringSpan;
 
@@ -891,7 +891,7 @@ public:
      * @stable ICU 3.8
      * @see USetSpanCondition
      */
-    int32_t span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const;
+    int32_t span(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const;
 
     /**
      * Returns the end of the substring of the input string according to the USetSpanCondition.
@@ -924,7 +924,7 @@ public:
      * @stable ICU 3.8
      * @see USetSpanCondition
      */
-    int32_t spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const;
+    int32_t spanBack(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const;
 
     /**
      * Returns the start of the substring of the input string according to the USetSpanCondition.
index 6f62244..e0ab0b9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
  * \brief C++ API: Unicode String
  */
 
+#include <cstddef>
 #include "unicode/utypes.h"
+#include "unicode/char16ptr.h"
 #include "unicode/rep.h"
 #include "unicode/std_string.h"
 #include "unicode/stringpiece.h"
 #include "unicode/bytestream.h"
-#include "unicode/ucasemap.h"
 
 struct UConverter;          // unicode/ucnv.h
 
@@ -55,30 +56,34 @@ U_STABLE int32_t U_EXPORT2
 u_strlen(const UChar *s);
 #endif
 
-/**
- * \def U_STRING_CASE_MAPPER_DEFINED
- * @internal
- */
-#ifndef U_STRING_CASE_MAPPER_DEFINED
-#define U_STRING_CASE_MAPPER_DEFINED
+U_NAMESPACE_BEGIN
 
+#if !UCONFIG_NO_BREAK_ITERATION
+class BreakIterator;        // unicode/brkiter.h
+#endif
+class Edits;
+
+U_NAMESPACE_END
+
+// Not #ifndef U_HIDE_INTERNAL_API because UnicodeString needs the UStringCaseMapper.
 /**
  * Internal string case mapping function type.
+ * All error checking must be done.
+ * src and dest must not overlap.
  * @internal
  */
 typedef int32_t U_CALLCONV
-UStringCaseMapper(const UCaseMap *csm,
-                  UChar *dest, int32_t destCapacity,
-                  const UChar *src, int32_t srcLength,
-                  UErrorCode *pErrorCode);
-
+UStringCaseMapper(int32_t caseLocale, uint32_t options,
+#if !UCONFIG_NO_BREAK_ITERATION
+                  icu::BreakIterator *iter,
 #endif
+                  char16_t *dest, int32_t destCapacity,
+                  const char16_t *src, int32_t srcLength,
+                  icu::Edits *edits,
+                  UErrorCode &errorCode);
 
 U_NAMESPACE_BEGIN
 
-#if !UCONFIG_NO_BREAK_ITERATION
-class BreakIterator;        // unicode/brkiter.h
-#endif
 class Locale;               // unicode/locid.h
 class StringCharacterIterator;
 class UnicodeStringAppendable;  // unicode/appendable.h
@@ -99,10 +104,12 @@ class UnicodeStringAppendable;  // unicode/appendable.h
 
 /**
  * Unicode String literals in C++.
- * Dependent on the platform properties, different UnicodeString
- * constructors should be used to create a UnicodeString object from
- * a string literal.
- * The macros are defined for maximum performance.
+ *
+ * Note: these macros are not recommended for new code.
+ * Prior to the availability of C++11 and u"unicode string literals",
+ * these macros were provided for portability and efficiency when
+ * initializing UnicodeStrings from literals.
+ *
  * They work only for strings that contain "invariant characters", i.e.,
  * only latin letters, digits, and some punctuation.
  * See utypes.h for details.
@@ -110,18 +117,12 @@ class UnicodeStringAppendable;  // unicode/appendable.h
  * The string parameter must be a C string literal.
  * The length of the string, not including the terminating
  * <code>NUL</code>, must be specified as a constant.
- * The U_STRING_DECL macro should be invoked exactly once for one
- * such string variable before it is used.
  * @stable ICU 2.0
  */
-#if defined(U_DECLARE_UTF16)
-#   define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const UChar *)U_DECLARE_UTF16(cs), _length)
-#elif U_SIZEOF_WCHAR_T==U_SIZEOF_UCHAR && (U_CHARSET_FAMILY==U_ASCII_FAMILY || (U_SIZEOF_UCHAR == 2 && defined(U_WCHAR_IS_UTF16)))
-#   define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const UChar *)L ## cs, _length)
-#elif U_SIZEOF_UCHAR==1 && U_CHARSET_FAMILY==U_ASCII_FAMILY
-#   define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const UChar *)cs, _length)
+#if !U_CHAR16_IS_TYPEDEF
+# define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, u ## cs, _length)
 #else
-#   define UNICODE_STRING(cs, _length) icu::UnicodeString(cs, _length, US_INV)
+# define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const char16_t*)u ## cs, _length)
 #endif
 
 /**
@@ -142,7 +143,7 @@ class UnicodeStringAppendable;  // unicode/appendable.h
 /**
  * \def UNISTR_FROM_CHAR_EXPLICIT
  * This can be defined to be empty or "explicit".
- * If explicit, then the UnicodeString(UChar) and UnicodeString(UChar32)
+ * If explicit, then the UnicodeString(char16_t) and UnicodeString(UChar32)
  * constructors are marked as explicit, preventing their inadvertent use.
  * @stable ICU 49
  */
@@ -159,7 +160,7 @@ class UnicodeStringAppendable;  // unicode/appendable.h
 /**
  * \def UNISTR_FROM_STRING_EXPLICIT
  * This can be defined to be empty or "explicit".
- * If explicit, then the UnicodeString(const char *) and UnicodeString(const UChar *)
+ * If explicit, then the UnicodeString(const char *) and UnicodeString(const char16_t *)
  * constructors are marked as explicit, preventing their inadvertent use.
  *
  * In particular, this helps prevent accidentally depending on ICU conversion code
@@ -193,18 +194,18 @@ class UnicodeStringAppendable;  // unicode/appendable.h
  * to 4 * sizeof(pointer) (or 3 * sizeof(pointer) for P128 data models),
  * to hold the fields for heap-allocated strings.
  * Such a minimum size also ensures that the object is easily large enough
- * to hold at least 2 UChars, for one supplementary code point (U16_MAX_LENGTH).
+ * to hold at least 2 char16_ts, for one supplementary code point (U16_MAX_LENGTH).
  *
  * sizeof(UnicodeString) >= 48 should work for all known platforms.
  *
  * For example, on a 64-bit machine where sizeof(vtable pointer) is 8,
  * sizeof(UnicodeString) = 64 would leave space for
  * (64 - sizeof(vtable pointer) - 2) / U_SIZEOF_UCHAR = (64 - 8 - 2) / 2 = 27
- * UChars stored inside the object.
+ * char16_ts stored inside the object.
  *
  * The minimum object size on a 64-bit machine would be
  * 4 * sizeof(pointer) = 4 * 8 = 32 bytes,
- * and the internal buffer would hold up to 11 UChars in that case.
+ * and the internal buffer would hold up to 11 char16_ts in that case.
  *
  * @see U16_MAX_LENGTH
  * @stable ICU 56
@@ -236,7 +237,7 @@ class UnicodeStringAppendable;  // unicode/appendable.h
  * <p>In ICU, a Unicode string consists of 16-bit Unicode <em>code units</em>.
  * A Unicode character may be stored with either one code unit
  * (the most common case) or with a matched pair of special code units
- * ("surrogates"). The data type for code units is UChar.
+ * ("surrogates"). The data type for code units is char16_t.
  * For single-character handling, a Unicode character code <em>point</em> is a value
  * in the range 0..0x10ffff. ICU uses the UChar32 type for code points.</p>
  *
@@ -252,7 +253,7 @@ class UnicodeStringAppendable;  // unicode/appendable.h
  * than other ICU APIs. In particular:
  * - If indexes are out of bounds for a UnicodeString object
  *   (<0 or >length()) then they are "pinned" to the nearest boundary.
- * - If primitive string pointer values (e.g., const UChar * or char *)
+ * - If primitive string pointer values (e.g., const char16_t * or char *)
  *   for input strings are NULL, then those input string parameters are treated
  *   as if they pointed to an empty string.
  *   However, this is <em>not</em> the case for char * parameters for charset names
@@ -439,7 +440,7 @@ public:
    * in <code>srcChars</code>.
    * @stable ICU 2.0
    */
-  inline int8_t compare(const UChar *srcChars,
+  inline int8_t compare(ConstChar16Ptr srcChars,
          int32_t srcLength) const;
 
   /**
@@ -458,7 +459,7 @@ public:
    */
   inline int8_t compare(int32_t start,
          int32_t length,
-         const UChar *srcChars) const;
+         const char16_t *srcChars) const;
 
   /**
    * Compare the characters bitwise in the range
@@ -479,7 +480,7 @@ public:
    */
   inline int8_t compare(int32_t start,
          int32_t length,
-         const UChar *srcChars,
+         const char16_t *srcChars,
          int32_t srcStart,
          int32_t srcLength) const;
 
@@ -593,7 +594,7 @@ public:
    * in code point order
    * @stable ICU 2.0
    */
-  inline int8_t compareCodePointOrder(const UChar *srcChars,
+  inline int8_t compareCodePointOrder(ConstChar16Ptr srcChars,
                                       int32_t srcLength) const;
 
   /**
@@ -617,7 +618,7 @@ public:
    */
   inline int8_t compareCodePointOrder(int32_t start,
                                       int32_t length,
-                                      const UChar *srcChars) const;
+                                      const char16_t *srcChars) const;
 
   /**
    * Compare two Unicode strings in code point order.
@@ -642,7 +643,7 @@ public:
    */
   inline int8_t compareCodePointOrder(int32_t start,
                                       int32_t length,
-                                      const UChar *srcChars,
+                                      const char16_t *srcChars,
                                       int32_t srcStart,
                                       int32_t srcLength) const;
 
@@ -766,7 +767,7 @@ public:
    * @return A negative, zero, or positive integer indicating the comparison result.
    * @stable ICU 2.0
    */
-  inline int8_t caseCompare(const UChar *srcChars,
+  inline int8_t caseCompare(ConstChar16Ptr srcChars,
          int32_t srcLength,
          uint32_t options) const;
 
@@ -792,7 +793,7 @@ public:
    */
   inline int8_t caseCompare(int32_t start,
          int32_t length,
-         const UChar *srcChars,
+         const char16_t *srcChars,
          uint32_t options) const;
 
   /**
@@ -819,7 +820,7 @@ public:
    */
   inline int8_t caseCompare(int32_t start,
          int32_t length,
-         const UChar *srcChars,
+         const char16_t *srcChars,
          int32_t srcStart,
          int32_t srcLength,
          uint32_t options) const;
@@ -884,7 +885,7 @@ public:
    * FALSE otherwise
    * @stable ICU 2.0
    */
-  inline UBool startsWith(const UChar *srcChars,
+  inline UBool startsWith(ConstChar16Ptr srcChars,
             int32_t srcLength) const;
 
   /**
@@ -896,7 +897,7 @@ public:
    * @return TRUE if this ends with the characters in <TT>srcChars</TT>, FALSE otherwise
    * @stable ICU 2.0
    */
-  inline UBool startsWith(const UChar *srcChars,
+  inline UBool startsWith(const char16_t *srcChars,
             int32_t srcStart,
             int32_t srcLength) const;
 
@@ -931,7 +932,7 @@ public:
    * FALSE otherwise
    * @stable ICU 2.0
    */
-  inline UBool endsWith(const UChar *srcChars,
+  inline UBool endsWith(ConstChar16Ptr srcChars,
           int32_t srcLength) const;
 
   /**
@@ -944,7 +945,7 @@ public:
    * FALSE otherwise
    * @stable ICU 2.0
    */
-  inline UBool endsWith(const UChar *srcChars,
+  inline UBool endsWith(const char16_t *srcChars,
           int32_t srcStart,
           int32_t srcLength) const;
 
@@ -1021,7 +1022,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(const UChar *srcChars,
+  inline int32_t indexOf(const char16_t *srcChars,
               int32_t srcLength,
               int32_t start) const;
 
@@ -1037,7 +1038,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(const UChar *srcChars,
+  inline int32_t indexOf(ConstChar16Ptr srcChars,
               int32_t srcLength,
               int32_t start,
               int32_t length) const;
@@ -1058,7 +1059,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  int32_t indexOf(const UChar *srcChars,
+  int32_t indexOf(const char16_t *srcChars,
               int32_t srcStart,
               int32_t srcLength,
               int32_t start,
@@ -1071,7 +1072,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(UChar c) const;
+  inline int32_t indexOf(char16_t c) const;
 
   /**
    * Locate in this the first occurrence of the code point <TT>c</TT>,
@@ -1091,7 +1092,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(UChar c,
+  inline int32_t indexOf(char16_t c,
               int32_t start) const;
 
   /**
@@ -1116,7 +1117,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(UChar c,
+  inline int32_t indexOf(char16_t c,
               int32_t start,
               int32_t length) const;
 
@@ -1204,7 +1205,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(const UChar *srcChars,
+  inline int32_t lastIndexOf(const char16_t *srcChars,
               int32_t srcLength,
               int32_t start) const;
 
@@ -1220,7 +1221,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(const UChar *srcChars,
+  inline int32_t lastIndexOf(ConstChar16Ptr srcChars,
               int32_t srcLength,
               int32_t start,
               int32_t length) const;
@@ -1241,7 +1242,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  int32_t lastIndexOf(const UChar *srcChars,
+  int32_t lastIndexOf(const char16_t *srcChars,
               int32_t srcStart,
               int32_t srcLength,
               int32_t start,
@@ -1254,7 +1255,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(UChar c) const;
+  inline int32_t lastIndexOf(char16_t c) const;
 
   /**
    * Locate in this the last occurrence of the code point <TT>c</TT>,
@@ -1274,7 +1275,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(UChar c,
+  inline int32_t lastIndexOf(char16_t c,
               int32_t start) const;
 
   /**
@@ -1299,7 +1300,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(UChar c,
+  inline int32_t lastIndexOf(char16_t c,
               int32_t start,
               int32_t length) const;
 
@@ -1329,7 +1330,7 @@ public:
    *         or 0xffff if the offset is not valid for this string
    * @stable ICU 2.0
    */
-  inline UChar charAt(int32_t offset) const;
+  inline char16_t charAt(int32_t offset) const;
 
   /**
    * Return the code unit at offset <tt>offset</tt>.
@@ -1338,7 +1339,7 @@ public:
    * @return the code unit at offset <tt>offset</tt>
    * @stable ICU 2.0
    */
-  inline UChar operator[] (int32_t offset) const;
+  inline char16_t operator[] (int32_t offset) const;
 
   /**
    * Return the code point that contains the code unit
@@ -1459,7 +1460,7 @@ public:
    */
   inline void extract(int32_t start,
            int32_t length,
-           UChar *dst,
+           Char16Ptr dst,
            int32_t dstStart = 0) const;
 
   /**
@@ -1478,13 +1479,13 @@ public:
    * then extract() will not copy the contents.
    *
    * @param dest Destination string buffer.
-   * @param destCapacity Number of UChars available at dest.
+   * @param destCapacity Number of char16_ts available at dest.
    * @param errorCode ICU error code.
    * @return length()
    * @stable ICU 2.0
    */
   int32_t
-  extract(UChar *dest, int32_t destCapacity,
+  extract(Char16Ptr dest, int32_t destCapacity,
           UErrorCode &errorCode) const;
 
   /**
@@ -1514,7 +1515,7 @@ public:
    */
   inline void extractBetween(int32_t start,
               int32_t limit,
-              UChar *dst,
+              char16_t *dst,
               int32_t dstStart = 0) const;
 
   /**
@@ -1715,8 +1716,6 @@ public:
    */
   void toUTF8(ByteSink &sink) const;
 
-#if U_HAVE_STD_STRING
-
   /**
    * Convert the UnicodeString to UTF-8 and append the result
    * to a standard string.
@@ -1736,8 +1735,6 @@ public:
     return result;
   }
 
-#endif
-
   /**
    * Convert the UnicodeString to UTF-32.
    * Unpaired surrogates are replaced with U+FFFD.
@@ -1759,7 +1756,7 @@ public:
 
   /**
    * Return the length of the UnicodeString object.
-   * The length is the number of UChar code units are in the UnicodeString.
+   * The length is the number of char16_t code units are in the UnicodeString.
    * If you want the number of code points, please use countChar32().
    * @return the length of the UnicodeString object
    * @see countChar32
@@ -1768,14 +1765,14 @@ public:
   inline int32_t length(void) const;
 
   /**
-   * Count Unicode code points in the length UChar code units of the string.
-   * A code point may occupy either one or two UChar code units.
+   * Count Unicode code points in the length char16_t code units of the string.
+   * A code point may occupy either one or two char16_t code units.
    * Counting code points involves reading all code units.
    *
    * This functions is basically the inverse of moveIndex32().
    *
    * @param start the index of the first code unit to check
-   * @param length the number of UChar code units to check
+   * @param length the number of char16_t code units to check
    * @return the number of code points in the specified code units
    * @see length
    * @stable ICU 2.0
@@ -1784,7 +1781,7 @@ public:
   countChar32(int32_t start=0, int32_t length=INT32_MAX) const;
 
   /**
-   * Check if the length UChar code units of the string
+   * Check if the length char16_t code units of the string
    * contain more Unicode code points than a certain number.
    * This is more efficient than counting all code points in this part of the string
    * and comparing that number with a threshold.
@@ -1792,10 +1789,10 @@ public:
    * falls within a certain range, and
    * never needs to count more than 'number+1' code points.
    * Logically equivalent to (countChar32(start, length)>number).
-   * A Unicode code point may occupy either one or two UChar code units.
+   * A Unicode code point may occupy either one or two char16_t code units.
    *
    * @param start the index of the first code unit to check (0 for the entire string)
-   * @param length the number of UChar code units to check
+   * @param length the number of char16_t code units to check
    *               (use INT32_MAX for the entire string; remember that start/length
    *                values are pinned)
    * @param number The number of code points in the (sub)string is compared against
@@ -1821,7 +1818,7 @@ public:
    * This is useful together with the getBuffer functions.
    * See there for details.
    *
-   * @return the number of UChars available in the internal buffer
+   * @return the number of char16_ts available in the internal buffer
    * @see getBuffer
    * @stable ICU 2.0
    */
@@ -1955,7 +1952,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& operator= (UChar ch);
+  inline UnicodeString& operator= (char16_t ch);
 
   /**
    * Assignment operator.  Replace the characters in this UnicodeString
@@ -2015,7 +2012,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& setTo(const UChar *srcChars,
+  inline UnicodeString& setTo(const char16_t *srcChars,
                int32_t srcLength);
 
   /**
@@ -2026,7 +2023,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  UnicodeString& setTo(UChar srcChar);
+  UnicodeString& setTo(char16_t srcChar);
 
   /**
    * Set the characters in the UnicodeString object to the code point
@@ -2039,7 +2036,7 @@ public:
   UnicodeString& setTo(UChar32 srcChar);
 
   /**
-   * Aliasing setTo() function, analogous to the readonly-aliasing UChar* constructor.
+   * Aliasing setTo() function, analogous to the readonly-aliasing char16_t* constructor.
    * The text will be used for the UnicodeString object, but
    * it will not be released when the UnicodeString is destroyed.
    * This has copy-on-write semantics:
@@ -2062,11 +2059,11 @@ public:
    * @stable ICU 2.0
    */
   UnicodeString &setTo(UBool isTerminated,
-                       const UChar *text,
+                       ConstChar16Ptr text,
                        int32_t textLength);
 
   /**
-   * Aliasing setTo() function, analogous to the writable-aliasing UChar* constructor.
+   * Aliasing setTo() function, analogous to the writable-aliasing char16_t* constructor.
    * The text will be used for the UnicodeString object, but
    * it will not be released when the UnicodeString is destroyed.
    * This has write-through semantics:
@@ -2075,16 +2072,16 @@ public:
    * a new buffer will be allocated and the contents copied as with regularly
    * constructed strings.
    * In an assignment to another UnicodeString, the buffer will be copied.
-   * The extract(UChar *dst) function detects whether the dst pointer is the same
+   * The extract(Char16Ptr dst) function detects whether the dst pointer is the same
    * as the string buffer itself and will in this case not copy the contents.
    *
    * @param buffer The characters to alias for the UnicodeString.
    * @param buffLength The number of Unicode characters in <code>buffer</code> to alias.
-   * @param buffCapacity The size of <code>buffer</code> in UChars.
+   * @param buffCapacity The size of <code>buffer</code> in char16_ts.
    * @return a reference to this
    * @stable ICU 2.0
    */
-  UnicodeString &setTo(UChar *buffer,
+  UnicodeString &setTo(char16_t *buffer,
                        int32_t buffLength,
                        int32_t buffCapacity);
 
@@ -2120,7 +2117,7 @@ public:
    *   s.truncate(0);        // set to an empty string (complete truncation), or
    *   s=UnicodeString();    // assign an empty string, or
    *   s.setTo((UChar32)-1); // set to a pseudo code point that is out of range, or
-   *   static const UChar nul=0;
+   *   static const char16_t nul=0;
    *   s.setTo(&nul, 0);     // set to an empty C Unicode string
    * }
    * \endcode
@@ -2138,7 +2135,7 @@ public:
    * @stable ICU 2.0
    */
   UnicodeString& setCharAt(int32_t offset,
-               UChar ch);
+               char16_t ch);
 
 
   /* Append operations */
@@ -2150,7 +2147,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
- inline  UnicodeString& operator+= (UChar ch);
+ inline  UnicodeString& operator+= (char16_t ch);
 
   /**
    * Append operator. Append the code point <TT>ch</TT> to the UnicodeString
@@ -2210,7 +2207,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& append(const UChar *srcChars,
+  inline UnicodeString& append(const char16_t *srcChars,
             int32_t srcStart,
             int32_t srcLength);
 
@@ -2223,7 +2220,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& append(const UChar *srcChars,
+  inline UnicodeString& append(ConstChar16Ptr srcChars,
             int32_t srcLength);
 
   /**
@@ -2232,7 +2229,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& append(UChar srcChar);
+  inline UnicodeString& append(char16_t srcChar);
 
   /**
    * Append the code point <TT>srcChar</TT> to the UnicodeString object.
@@ -2288,7 +2285,7 @@ public:
    * @stable ICU 2.0
    */
   inline UnicodeString& insert(int32_t start,
-            const UChar *srcChars,
+            const char16_t *srcChars,
             int32_t srcStart,
             int32_t srcLength);
 
@@ -2302,7 +2299,7 @@ public:
    * @stable ICU 2.0
    */
   inline UnicodeString& insert(int32_t start,
-            const UChar *srcChars,
+            ConstChar16Ptr srcChars,
             int32_t srcLength);
 
   /**
@@ -2314,7 +2311,7 @@ public:
    * @stable ICU 2.0
    */
   inline UnicodeString& insert(int32_t start,
-            UChar srcChar);
+            char16_t srcChar);
 
   /**
    * Insert the code point <TT>srcChar</TT> into the UnicodeString object at
@@ -2388,7 +2385,7 @@ public:
    */
   UnicodeString& replace(int32_t start,
              int32_t length,
-             const UChar *srcChars,
+             const char16_t *srcChars,
              int32_t srcStart,
              int32_t srcLength);
 
@@ -2406,7 +2403,7 @@ public:
    */
   inline UnicodeString& replace(int32_t start,
              int32_t length,
-             const UChar *srcChars,
+             ConstChar16Ptr srcChars,
              int32_t srcLength);
 
   /**
@@ -2422,7 +2419,7 @@ public:
    */
   inline UnicodeString& replace(int32_t start,
              int32_t length,
-             UChar srcChar);
+             char16_t srcChar);
 
   /**
    * Replace the characters in the range
@@ -2620,7 +2617,7 @@ public:
    * @stable ICU 2.0
    */
   UBool padLeading(int32_t targetLength,
-                    UChar padChar = 0x0020);
+                    char16_t padChar = 0x0020);
 
   /**
    * Pad the end of this UnicodeString with the character <TT>padChar</TT>.
@@ -2634,7 +2631,7 @@ public:
    * @stable ICU 2.0
    */
   UBool padTrailing(int32_t targetLength,
-                     UChar padChar = 0x0020);
+                     char16_t padChar = 0x0020);
 
   /**
    * Truncate this UnicodeString to the <TT>targetLength</TT>.
@@ -2821,7 +2818,7 @@ public:
 
   /**
    * Get a read/write pointer to the internal buffer.
-   * The buffer is guaranteed to be large enough for at least minCapacity UChars,
+   * The buffer is guaranteed to be large enough for at least minCapacity char16_ts,
    * writable, and is still owned by the UnicodeString object.
    * Calls to getBuffer(minCapacity) must not be nested, and
    * must be matched with calls to releaseBuffer(newLength).
@@ -2852,17 +2849,17 @@ public:
    * - You must call releaseBuffer(newLength) before and in order to
    *   return to normal UnicodeString operation.
    *
-   * @param minCapacity the minimum number of UChars that are to be available
+   * @param minCapacity the minimum number of char16_ts that are to be available
    *        in the buffer, starting at the returned pointer;
    *        default to the current string capacity if minCapacity==-1
    * @return a writable pointer to the internal string buffer,
-   *         or 0 if an error occurs (nested calls, out of memory)
+   *         or nullptr if an error occurs (nested calls, out of memory)
    *
    * @see releaseBuffer
    * @see getTerminatedBuffer()
    * @stable ICU 2.0
    */
-  UChar *getBuffer(int32_t minCapacity);
+  char16_t *getBuffer(int32_t minCapacity);
 
   /**
    * Release a read/write buffer on a UnicodeString object with an
@@ -2910,13 +2907,13 @@ public:
    * be modified.
    *
    * @return a read-only pointer to the internal string buffer,
-   *         or 0 if the string is empty or bogus
+   *         or nullptr if the string is empty or bogus
    *
    * @see getBuffer(int32_t minCapacity)
    * @see getTerminatedBuffer()
    * @stable ICU 2.0
    */
-  inline const UChar *getBuffer() const;
+  inline const char16_t *getBuffer() const;
 
   /**
    * Get a read-only pointer to the internal buffer,
@@ -2951,7 +2948,7 @@ public:
    * @see getBuffer()
    * @stable ICU 2.2
    */
-  const UChar *getTerminatedBuffer();
+  const char16_t *getTerminatedBuffer();
 
   //========================================
   // Constructors
@@ -2963,8 +2960,8 @@ public:
   inline UnicodeString();
 
   /**
-   * Construct a UnicodeString with capacity to hold <TT>capacity</TT> UChars
-   * @param capacity the number of UChars this UnicodeString should hold
+   * Construct a UnicodeString with capacity to hold <TT>capacity</TT> char16_ts
+   * @param capacity the number of char16_ts this UnicodeString should hold
    * before a resize is necessary; if count is greater than 0 and count
    * code points c take up more space than capacity, then capacity is adjusted
    * accordingly.
@@ -2976,7 +2973,7 @@ public:
   UnicodeString(int32_t capacity, UChar32 c, int32_t count);
 
   /**
-   * Single UChar (code unit) constructor.
+   * Single char16_t (code unit) constructor.
    *
    * It is recommended to mark this constructor "explicit" by
    * <code>-DUNISTR_FROM_CHAR_EXPLICIT=explicit</code>
@@ -2984,7 +2981,7 @@ public:
    * @param ch the character to place in the UnicodeString
    * @stable ICU 2.0
    */
-  UNISTR_FROM_CHAR_EXPLICIT UnicodeString(UChar ch);
+  UNISTR_FROM_CHAR_EXPLICIT UnicodeString(char16_t ch);
 
   /**
    * Single UChar32 (code point) constructor.
@@ -2998,7 +2995,7 @@ public:
   UNISTR_FROM_CHAR_EXPLICIT UnicodeString(UChar32 ch);
 
   /**
-   * UChar* constructor.
+   * char16_t* constructor.
    *
    * It is recommended to mark this constructor "explicit" by
    * <code>-DUNISTR_FROM_STRING_EXPLICIT=explicit</code>
@@ -3007,20 +3004,121 @@ public:
    * must be NULL (U+0000) terminated.
    * @stable ICU 2.0
    */
-  UNISTR_FROM_STRING_EXPLICIT UnicodeString(const UChar *text);
+  UNISTR_FROM_STRING_EXPLICIT UnicodeString(const char16_t *text);
+
+  /*
+   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
+   * it should always be available regardless of U_HIDE_DRAFT_API status
+   */
+#if !U_CHAR16_IS_TYPEDEF
+  /**
+   * uint16_t * constructor.
+   * Delegates to UnicodeString(const char16_t *).
+   *
+   * It is recommended to mark this constructor "explicit" by
+   * <code>-DUNISTR_FROM_STRING_EXPLICIT=explicit</code>
+   * on the compiler command line or similar.
+   * @param text NUL-terminated UTF-16 string
+   * @draft ICU 59
+   */
+  UNISTR_FROM_STRING_EXPLICIT UnicodeString(const uint16_t *text) :
+      UnicodeString(ConstChar16Ptr(text)) {}
+#endif
+
+  /*
+   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
+   * it should always be available regardless of U_HIDE_DRAFT_API status
+   */
+#if U_SIZEOF_WCHAR_T==2 || defined(U_IN_DOXYGEN)
+  /**
+   * wchar_t * constructor.
+   * (Only defined if U_SIZEOF_WCHAR_T==2.)
+   * Delegates to UnicodeString(const char16_t *).
+   *
+   * It is recommended to mark this constructor "explicit" by
+   * <code>-DUNISTR_FROM_STRING_EXPLICIT=explicit</code>
+   * on the compiler command line or similar.
+   * @param text NUL-terminated UTF-16 string
+   * @draft ICU 59
+   */
+  UNISTR_FROM_STRING_EXPLICIT UnicodeString(const wchar_t *text) :
+      UnicodeString(ConstChar16Ptr(text)) {}
+#endif
+
+  /*
+   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
+   * it should always be available regardless of U_HIDE_DRAFT_API status
+   */
+  /**
+   * nullptr_t constructor.
+   * Effectively the same as the default constructor, makes an empty string object.
+   *
+   * It is recommended to mark this constructor "explicit" by
+   * <code>-DUNISTR_FROM_STRING_EXPLICIT=explicit</code>
+   * on the compiler command line or similar.
+   * @param text nullptr
+   * @draft ICU 59
+   */
+  UNISTR_FROM_STRING_EXPLICIT inline UnicodeString(const std::nullptr_t text);
 
   /**
-   * UChar* constructor.
+   * char16_t* constructor.
    * @param text The characters to place in the UnicodeString.
    * @param textLength The number of Unicode characters in <TT>text</TT>
    * to copy.
    * @stable ICU 2.0
    */
-  UnicodeString(const UChar *text,
+  UnicodeString(const char16_t *text,
         int32_t textLength);
 
+  /*
+   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
+   * it should always be available regardless of U_HIDE_DRAFT_API status
+   */
+#if !U_CHAR16_IS_TYPEDEF
   /**
-   * Readonly-aliasing UChar* constructor.
+   * uint16_t * constructor.
+   * Delegates to UnicodeString(const char16_t *, int32_t).
+   * @param text UTF-16 string
+   * @param length string length
+   * @draft ICU 59
+   */
+  UnicodeString(const uint16_t *text, int32_t length) :
+      UnicodeString(ConstChar16Ptr(text), length) {}
+#endif
+
+  /*
+   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
+   * it should always be available regardless of U_HIDE_DRAFT_API status
+   */
+#if U_SIZEOF_WCHAR_T==2 || defined(U_IN_DOXYGEN)
+  /**
+   * wchar_t * constructor.
+   * (Only defined if U_SIZEOF_WCHAR_T==2.)
+   * Delegates to UnicodeString(const char16_t *, int32_t).
+   * @param text NUL-terminated UTF-16 string
+   * @param length string length
+   * @draft ICU 59
+   */
+  UnicodeString(const wchar_t *text, int32_t length) :
+      UnicodeString(ConstChar16Ptr(text), length) {}
+#endif
+
+  /*
+   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
+   * it should always be available regardless of U_HIDE_DRAFT_API status
+   */
+  /**
+   * nullptr_t constructor.
+   * Effectively the same as the default constructor, makes an empty string object.
+   * @param text nullptr
+   * @param length ignored
+   * @draft ICU 59
+   */
+  inline UnicodeString(const std::nullptr_t text, int32_t length);
+
+  /**
+   * Readonly-aliasing char16_t* constructor.
    * The text will be used for the UnicodeString object, but
    * it will not be released when the UnicodeString is destroyed.
    * This has copy-on-write semantics:
@@ -3042,11 +3140,11 @@ public:
    * @stable ICU 2.0
    */
   UnicodeString(UBool isTerminated,
-                const UChar *text,
+                ConstChar16Ptr text,
                 int32_t textLength);
 
   /**
-   * Writable-aliasing UChar* constructor.
+   * Writable-aliasing char16_t* constructor.
    * The text will be used for the UnicodeString object, but
    * it will not be released when the UnicodeString is destroyed.
    * This has write-through semantics:
@@ -3055,15 +3153,64 @@ public:
    * a new buffer will be allocated and the contents copied as with regularly
    * constructed strings.
    * In an assignment to another UnicodeString, the buffer will be copied.
-   * The extract(UChar *dst) function detects whether the dst pointer is the same
+   * The extract(Char16Ptr dst) function detects whether the dst pointer is the same
    * as the string buffer itself and will in this case not copy the contents.
    *
    * @param buffer The characters to alias for the UnicodeString.
    * @param buffLength The number of Unicode characters in <code>buffer</code> to alias.
-   * @param buffCapacity The size of <code>buffer</code> in UChars.
+   * @param buffCapacity The size of <code>buffer</code> in char16_ts.
    * @stable ICU 2.0
    */
-  UnicodeString(UChar *buffer, int32_t buffLength, int32_t buffCapacity);
+  UnicodeString(char16_t *buffer, int32_t buffLength, int32_t buffCapacity);
+
+  /*
+   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
+   * it should always be available regardless of U_HIDE_DRAFT_API status
+   */
+#if !U_CHAR16_IS_TYPEDEF
+  /**
+   * Writable-aliasing uint16_t * constructor.
+   * Delegates to UnicodeString(const char16_t *, int32_t, int32_t).
+   * @param buffer writable buffer of/for UTF-16 text
+   * @param buffLength length of the current buffer contents
+   * @param buffCapacity buffer capacity
+   * @draft ICU 59
+   */
+  UnicodeString(uint16_t *buffer, int32_t buffLength, int32_t buffCapacity) :
+      UnicodeString(Char16Ptr(buffer), buffLength, buffCapacity) {}
+#endif
+
+  /*
+   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
+   * it should always be available regardless of U_HIDE_DRAFT_API status
+   */
+#if U_SIZEOF_WCHAR_T==2 || defined(U_IN_DOXYGEN)
+  /**
+   * Writable-aliasing wchar_t * constructor.
+   * (Only defined if U_SIZEOF_WCHAR_T==2.)
+   * Delegates to UnicodeString(const char16_t *, int32_t, int32_t).
+   * @param buffer writable buffer of/for UTF-16 text
+   * @param buffLength length of the current buffer contents
+   * @param buffCapacity buffer capacity
+   * @draft ICU 59
+   */
+  UnicodeString(wchar_t *buffer, int32_t buffLength, int32_t buffCapacity) :
+      UnicodeString(Char16Ptr(buffer), buffLength, buffCapacity) {}
+#endif
+
+  /*
+   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
+   * it should always be available regardless of U_HIDE_DRAFT_API status
+   */
+  /**
+   * Writable-aliasing nullptr_t constructor.
+   * Effectively the same as the default constructor, makes an empty string object.
+   * @param buffer nullptr
+   * @param buffLength ignored
+   * @param buffCapacity ignored
+   * @draft ICU 59
+   */
+  inline UnicodeString(std::nullptr_t buffer, int32_t buffLength, int32_t buffCapacity);
 
 #if U_CHARSET_IS_UTF8 || !UCONFIG_NO_CONVERSION
 
@@ -3380,7 +3527,7 @@ protected:
    * UnicodeString::charAt() to be inline again (see jitterbug 709).
    * @stable ICU 2.4
    */
-  virtual UChar getCharAt(int32_t offset) const;
+  virtual char16_t getCharAt(int32_t offset) const;
 
   /**
    * The change in Replaceable to use virtual getChar32At() allows
@@ -3416,7 +3563,7 @@ private:
 
   int8_t doCompare(int32_t start,
            int32_t length,
-           const UChar *srcChars,
+           const char16_t *srcChars,
            int32_t srcStart,
            int32_t srcLength) const;
 
@@ -3429,7 +3576,7 @@ private:
 
   int8_t doCompareCodePointOrder(int32_t start,
                                  int32_t length,
-                                 const UChar *srcChars,
+                                 const char16_t *srcChars,
                                  int32_t srcStart,
                                  int32_t srcLength) const;
 
@@ -3444,12 +3591,12 @@ private:
   int8_t
   doCaseCompare(int32_t start,
                 int32_t length,
-                const UChar *srcChars,
+                const char16_t *srcChars,
                 int32_t srcStart,
                 int32_t srcLength,
                 uint32_t options) const;
 
-  int32_t doIndexOf(UChar c,
+  int32_t doIndexOf(char16_t c,
             int32_t start,
             int32_t length) const;
 
@@ -3457,7 +3604,7 @@ private:
                         int32_t start,
                         int32_t length) const;
 
-  int32_t doLastIndexOf(UChar c,
+  int32_t doLastIndexOf(char16_t c,
                 int32_t start,
                 int32_t length) const;
 
@@ -3467,14 +3614,14 @@ private:
 
   void doExtract(int32_t start,
          int32_t length,
-         UChar *dst,
+         char16_t *dst,
          int32_t dstStart) const;
 
   inline void doExtract(int32_t start,
          int32_t length,
          UnicodeString& target) const;
 
-  inline UChar doCharAt(int32_t offset)  const;
+  inline char16_t doCharAt(int32_t offset)  const;
 
   UnicodeString& doReplace(int32_t start,
                int32_t length,
@@ -3484,12 +3631,12 @@ private:
 
   UnicodeString& doReplace(int32_t start,
                int32_t length,
-               const UChar *srcChars,
+               const char16_t *srcChars,
                int32_t srcStart,
                int32_t srcLength);
 
   UnicodeString& doAppend(const UnicodeString& src, int32_t srcStart, int32_t srcLength);
-  UnicodeString& doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLength);
+  UnicodeString& doAppend(const char16_t *srcChars, int32_t srcStart, int32_t srcLength);
 
   UnicodeString& doReverse(int32_t start,
                int32_t length);
@@ -3499,8 +3646,8 @@ private:
 
   // get pointer to start of array
   // these do not check for kOpenGetBuffer, unlike the public getBuffer() function
-  inline UChar* getArrayStart(void);
-  inline const UChar* getArrayStart(void) const;
+  inline char16_t* getArrayStart(void);
+  inline const char16_t* getArrayStart(void) const;
 
   inline UBool hasShortLength() const;
   inline int32_t getShortLength() const;
@@ -3517,7 +3664,7 @@ private:
   inline void setShortLength(int32_t len);
   inline void setLength(int32_t len);
   inline void setToEmpty();
-  inline void setArray(UChar *array, int32_t len, int32_t capacity); // sets length but not flags
+  inline void setArray(char16_t *array, int32_t len, int32_t capacity); // sets length but not flags
 
   // allocate the array; result may be the stack buffer
   // sets refCount to 1 if appropriate
@@ -3600,7 +3747,11 @@ private:
    * as in ustr_imp.h for ustrcase_map().
    */
   UnicodeString &
-  caseMap(const UCaseMap *csm, UStringCaseMapper *stringCaseMapper);
+  caseMap(int32_t caseLocale, uint32_t options,
+#if !UCONFIG_NO_BREAK_ITERATION
+          BreakIterator *iter,
+#endif
+          UStringCaseMapper *stringCaseMapper);
 
   // ref counting
   void addRef(void);
@@ -3691,15 +3842,15 @@ private:
     // Each struct of the union must begin with fLengthAndFlags.
     struct {
       int16_t fLengthAndFlags;          // bit fields: see constants above
-      UChar fBuffer[US_STACKBUF_SIZE];  // buffer for short strings
+      char16_t fBuffer[US_STACKBUF_SIZE];  // buffer for short strings
     } fStackFields;
     struct {
       int16_t fLengthAndFlags;          // bit fields: see constants above
       int32_t fLength;    // number of characters in fArray if >127; else undefined
-      int32_t fCapacity;  // capacity of fArray (in UChars)
+      int32_t fCapacity;  // capacity of fArray (in char16_ts)
       // array pointer last to minimize padding for machines with P128 data model
       // or pointer sizes that are not a power of 2
-      UChar   *fArray;    // the Unicode data
+      char16_t   *fArray;    // the Unicode data
     } fFields;
   } fUnion;
 };
@@ -3752,13 +3903,13 @@ UnicodeString::pinIndices(int32_t& start,
   }
 }
 
-inline UChar*
+inline char16_t*
 UnicodeString::getArrayStart() {
   return (fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) ?
     fUnion.fStackFields.fBuffer : fUnion.fFields.fArray;
 }
 
-inline const UChar*
+inline const char16_t*
 UnicodeString::getArrayStart() const {
   return (fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) ?
     fUnion.fStackFields.fBuffer : fUnion.fFields.fArray;
@@ -3773,6 +3924,18 @@ UnicodeString::UnicodeString() {
   fUnion.fStackFields.fLengthAndFlags=kShortString;
 }
 
+inline UnicodeString::UnicodeString(const std::nullptr_t /*text*/) {
+  fUnion.fStackFields.fLengthAndFlags=kShortString;
+}
+
+inline UnicodeString::UnicodeString(const std::nullptr_t /*text*/, int32_t /*length*/) {
+  fUnion.fStackFields.fLengthAndFlags=kShortString;
+}
+
+inline UnicodeString::UnicodeString(std::nullptr_t /*buffer*/, int32_t /*buffLength*/, int32_t /*buffCapacity*/) {
+  fUnion.fStackFields.fLengthAndFlags=kShortString;
+}
+
 //========================================
 // Read-only implementation methods
 //========================================
@@ -3819,10 +3982,10 @@ UnicodeString::isBufferWritable() const
       (!(fUnion.fFields.fLengthAndFlags&kRefCounted) || refCount()==1));
 }
 
-inline const UChar *
+inline const char16_t *
 UnicodeString::getBuffer() const {
   if(fUnion.fFields.fLengthAndFlags&(kIsBogus|kOpenGetBuffer)) {
-    return 0;
+    return nullptr;
   } else if(fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) {
     return fUnion.fStackFields.fBuffer;
   } else {
@@ -3890,7 +4053,7 @@ UnicodeString::compare(int32_t start,
 { return doCompare(start, _length, srcText, 0, srcText.length()); }
 
 inline int8_t
-UnicodeString::compare(const UChar *srcChars,
+UnicodeString::compare(ConstChar16Ptr srcChars,
                int32_t srcLength) const
 { return doCompare(0, length(), srcChars, 0, srcLength); }
 
@@ -3905,13 +4068,13 @@ UnicodeString::compare(int32_t start,
 inline int8_t
 UnicodeString::compare(int32_t start,
                int32_t _length,
-               const UChar *srcChars) const
+               const char16_t *srcChars) const
 { return doCompare(start, _length, srcChars, 0, _length); }
 
 inline int8_t
 UnicodeString::compare(int32_t start,
                int32_t _length,
-               const UChar *srcChars,
+               const char16_t *srcChars,
                int32_t srcStart,
                int32_t srcLength) const
 { return doCompare(start, _length, srcChars, srcStart, srcLength); }
@@ -3951,7 +4114,7 @@ UnicodeString::compareCodePointOrder(int32_t start,
 { return doCompareCodePointOrder(start, _length, srcText, 0, srcText.length()); }
 
 inline int8_t
-UnicodeString::compareCodePointOrder(const UChar *srcChars,
+UnicodeString::compareCodePointOrder(ConstChar16Ptr srcChars,
                                      int32_t srcLength) const
 { return doCompareCodePointOrder(0, length(), srcChars, 0, srcLength); }
 
@@ -3966,13 +4129,13 @@ UnicodeString::compareCodePointOrder(int32_t start,
 inline int8_t
 UnicodeString::compareCodePointOrder(int32_t start,
                                      int32_t _length,
-                                     const UChar *srcChars) const
+                                     const char16_t *srcChars) const
 { return doCompareCodePointOrder(start, _length, srcChars, 0, _length); }
 
 inline int8_t
 UnicodeString::compareCodePointOrder(int32_t start,
                                      int32_t _length,
-                                     const UChar *srcChars,
+                                     const char16_t *srcChars,
                                      int32_t srcStart,
                                      int32_t srcLength) const
 { return doCompareCodePointOrder(start, _length, srcChars, srcStart, srcLength); }
@@ -4016,7 +4179,7 @@ UnicodeString::caseCompare(int32_t start,
 }
 
 inline int8_t
-UnicodeString::caseCompare(const UChar *srcChars,
+UnicodeString::caseCompare(ConstChar16Ptr srcChars,
                            int32_t srcLength,
                            uint32_t options) const {
   return doCaseCompare(0, length(), srcChars, 0, srcLength, options);
@@ -4035,7 +4198,7 @@ UnicodeString::caseCompare(int32_t start,
 inline int8_t
 UnicodeString::caseCompare(int32_t start,
                            int32_t _length,
-                           const UChar *srcChars,
+                           const char16_t *srcChars,
                            uint32_t options) const {
   return doCaseCompare(start, _length, srcChars, 0, _length, options);
 }
@@ -4043,7 +4206,7 @@ UnicodeString::caseCompare(int32_t start,
 inline int8_t
 UnicodeString::caseCompare(int32_t start,
                            int32_t _length,
-                           const UChar *srcChars,
+                           const char16_t *srcChars,
                            int32_t srcStart,
                            int32_t srcLength,
                            uint32_t options) const {
@@ -4094,7 +4257,7 @@ UnicodeString::indexOf(const UnicodeString& text,
 { return indexOf(text, 0, text.length(), start, _length); }
 
 inline int32_t
-UnicodeString::indexOf(const UChar *srcChars,
+UnicodeString::indexOf(const char16_t *srcChars,
                int32_t srcLength,
                int32_t start) const {
   pinIndex(start);
@@ -4102,14 +4265,14 @@ UnicodeString::indexOf(const UChar *srcChars,
 }
 
 inline int32_t
-UnicodeString::indexOf(const UChar *srcChars,
+UnicodeString::indexOf(ConstChar16Ptr srcChars,
                int32_t srcLength,
                int32_t start,
                int32_t _length) const
 { return indexOf(srcChars, 0, srcLength, start, _length); }
 
 inline int32_t
-UnicodeString::indexOf(UChar c,
+UnicodeString::indexOf(char16_t c,
                int32_t start,
                int32_t _length) const
 { return doIndexOf(c, start, _length); }
@@ -4121,7 +4284,7 @@ UnicodeString::indexOf(UChar32 c,
 { return doIndexOf(c, start, _length); }
 
 inline int32_t
-UnicodeString::indexOf(UChar c) const
+UnicodeString::indexOf(char16_t c) const
 { return doIndexOf(c, 0, length()); }
 
 inline int32_t
@@ -4129,7 +4292,7 @@ UnicodeString::indexOf(UChar32 c) const
 { return indexOf(c, 0, length()); }
 
 inline int32_t
-UnicodeString::indexOf(UChar c,
+UnicodeString::indexOf(char16_t c,
                int32_t start) const {
   pinIndex(start);
   return doIndexOf(c, start, length() - start);
@@ -4143,14 +4306,14 @@ UnicodeString::indexOf(UChar32 c,
 }
 
 inline int32_t
-UnicodeString::lastIndexOf(const UChar *srcChars,
+UnicodeString::lastIndexOf(ConstChar16Ptr srcChars,
                int32_t srcLength,
                int32_t start,
                int32_t _length) const
 { return lastIndexOf(srcChars, 0, srcLength, start, _length); }
 
 inline int32_t
-UnicodeString::lastIndexOf(const UChar *srcChars,
+UnicodeString::lastIndexOf(const char16_t *srcChars,
                int32_t srcLength,
                int32_t start) const {
   pinIndex(start);
@@ -4191,7 +4354,7 @@ UnicodeString::lastIndexOf(const UnicodeString& text) const
 { return lastIndexOf(text, 0, text.length(), 0, length()); }
 
 inline int32_t
-UnicodeString::lastIndexOf(UChar c,
+UnicodeString::lastIndexOf(char16_t c,
                int32_t start,
                int32_t _length) const
 { return doLastIndexOf(c, start, _length); }
@@ -4204,7 +4367,7 @@ UnicodeString::lastIndexOf(UChar32 c,
 }
 
 inline int32_t
-UnicodeString::lastIndexOf(UChar c) const
+UnicodeString::lastIndexOf(char16_t c) const
 { return doLastIndexOf(c, 0, length()); }
 
 inline int32_t
@@ -4213,7 +4376,7 @@ UnicodeString::lastIndexOf(UChar32 c) const {
 }
 
 inline int32_t
-UnicodeString::lastIndexOf(UChar c,
+UnicodeString::lastIndexOf(char16_t c,
                int32_t start) const {
   pinIndex(start);
   return doLastIndexOf(c, start, length() - start);
@@ -4237,17 +4400,17 @@ UnicodeString::startsWith(const UnicodeString& srcText,
 { return doCompare(0, srcLength, srcText, srcStart, srcLength) == 0; }
 
 inline UBool
-UnicodeString::startsWith(const UChar *srcChars, int32_t srcLength) const {
+UnicodeString::startsWith(ConstChar16Ptr srcChars, int32_t srcLength) const {
   if(srcLength < 0) {
-    srcLength = u_strlen(srcChars);
+    srcLength = u_strlen(toUCharPtr(srcChars));
   }
   return doCompare(0, srcLength, srcChars, 0, srcLength) == 0;
 }
 
 inline UBool
-UnicodeString::startsWith(const UChar *srcChars, int32_t srcStart, int32_t srcLength) const {
+UnicodeString::startsWith(const char16_t *srcChars, int32_t srcStart, int32_t srcLength) const {
   if(srcLength < 0) {
-    srcLength = u_strlen(srcChars);
+    srcLength = u_strlen(toUCharPtr(srcChars));
   }
   return doCompare(0, srcLength, srcChars, srcStart, srcLength) == 0;
 }
@@ -4267,21 +4430,21 @@ UnicodeString::endsWith(const UnicodeString& srcText,
 }
 
 inline UBool
-UnicodeString::endsWith(const UChar *srcChars,
+UnicodeString::endsWith(ConstChar16Ptr srcChars,
             int32_t srcLength) const {
   if(srcLength < 0) {
-    srcLength = u_strlen(srcChars);
+    srcLength = u_strlen(toUCharPtr(srcChars));
   }
   return doCompare(length() - srcLength, srcLength,
                    srcChars, 0, srcLength) == 0;
 }
 
 inline UBool
-UnicodeString::endsWith(const UChar *srcChars,
+UnicodeString::endsWith(const char16_t *srcChars,
             int32_t srcStart,
             int32_t srcLength) const {
   if(srcLength < 0) {
-    srcLength = u_strlen(srcChars + srcStart);
+    srcLength = u_strlen(toUCharPtr(srcChars + srcStart));
   }
   return doCompare(length() - srcLength, srcLength,
                    srcChars, srcStart, srcLength) == 0;
@@ -4307,14 +4470,14 @@ UnicodeString::replace(int32_t start,
 inline UnicodeString&
 UnicodeString::replace(int32_t start,
                int32_t _length,
-               const UChar *srcChars,
+               ConstChar16Ptr srcChars,
                int32_t srcLength)
 { return doReplace(start, _length, srcChars, 0, srcLength); }
 
 inline UnicodeString&
 UnicodeString::replace(int32_t start,
                int32_t _length,
-               const UChar *srcChars,
+               const char16_t *srcChars,
                int32_t srcStart,
                int32_t srcLength)
 { return doReplace(start, _length, srcChars, srcStart, srcLength); }
@@ -4322,7 +4485,7 @@ UnicodeString::replace(int32_t start,
 inline UnicodeString&
 UnicodeString::replace(int32_t start,
                int32_t _length,
-               UChar srcChar)
+               char16_t srcChar)
 { return doReplace(start, _length, &srcChar, 0, 1); }
 
 inline UnicodeString&
@@ -4365,7 +4528,7 @@ UnicodeString::doExtract(int32_t start,
 inline void
 UnicodeString::extract(int32_t start,
                int32_t _length,
-               UChar *target,
+               Char16Ptr target,
                int32_t targetStart) const
 { doExtract(start, _length, target, targetStart); }
 
@@ -4393,7 +4556,7 @@ UnicodeString::extract(int32_t start,
 inline void
 UnicodeString::extractBetween(int32_t start,
                   int32_t limit,
-                  UChar *dst,
+                  char16_t *dst,
                   int32_t dstStart) const {
   pinIndex(start);
   pinIndex(limit);
@@ -4405,7 +4568,7 @@ UnicodeString::tempSubStringBetween(int32_t start, int32_t limit) const {
     return tempSubString(start, limit - start);
 }
 
-inline UChar
+inline char16_t
 UnicodeString::doCharAt(int32_t offset) const
 {
   if((uint32_t)offset < (uint32_t)length()) {
@@ -4415,11 +4578,11 @@ UnicodeString::doCharAt(int32_t offset) const
   }
 }
 
-inline UChar
+inline char16_t
 UnicodeString::charAt(int32_t offset) const
 { return doCharAt(offset); }
 
-inline UChar
+inline char16_t
 UnicodeString::operator[] (int32_t offset) const
 { return doCharAt(offset); }
 
@@ -4460,14 +4623,14 @@ UnicodeString::setToEmpty() {
 }
 
 inline void
-UnicodeString::setArray(UChar *array, int32_t len, int32_t capacity) {
+UnicodeString::setArray(char16_t *array, int32_t len, int32_t capacity) {
   setLength(len);
   fUnion.fFields.fArray = array;
   fUnion.fFields.fCapacity = capacity;
 }
 
 inline UnicodeString&
-UnicodeString::operator= (UChar ch)
+UnicodeString::operator= (char16_t ch)
 { return doReplace(0, length(), &ch, 0, 1); }
 
 inline UnicodeString&
@@ -4499,7 +4662,7 @@ UnicodeString::setTo(const UnicodeString& srcText)
 }
 
 inline UnicodeString&
-UnicodeString::setTo(const UChar *srcChars,
+UnicodeString::setTo(const char16_t *srcChars,
              int32_t srcLength)
 {
   unBogus();
@@ -4507,7 +4670,7 @@ UnicodeString::setTo(const UChar *srcChars,
 }
 
 inline UnicodeString&
-UnicodeString::setTo(UChar srcChar)
+UnicodeString::setTo(char16_t srcChar)
 {
   unBogus();
   return doReplace(0, length(), &srcChar, 0, 1);
@@ -4531,22 +4694,22 @@ UnicodeString::append(const UnicodeString& srcText)
 { return doAppend(srcText, 0, srcText.length()); }
 
 inline UnicodeString&
-UnicodeString::append(const UChar *srcChars,
+UnicodeString::append(const char16_t *srcChars,
               int32_t srcStart,
               int32_t srcLength)
 { return doAppend(srcChars, srcStart, srcLength); }
 
 inline UnicodeString&
-UnicodeString::append(const UChar *srcChars,
+UnicodeString::append(ConstChar16Ptr srcChars,
               int32_t srcLength)
 { return doAppend(srcChars, 0, srcLength); }
 
 inline UnicodeString&
-UnicodeString::append(UChar srcChar)
+UnicodeString::append(char16_t srcChar)
 { return doAppend(&srcChar, 0, 1); }
 
 inline UnicodeString&
-UnicodeString::operator+= (UChar ch)
+UnicodeString::operator+= (char16_t ch)
 { return doAppend(&ch, 0, 1); }
 
 inline UnicodeString&
@@ -4572,20 +4735,20 @@ UnicodeString::insert(int32_t start,
 
 inline UnicodeString&
 UnicodeString::insert(int32_t start,
-              const UChar *srcChars,
+              const char16_t *srcChars,
               int32_t srcStart,
               int32_t srcLength)
 { return doReplace(start, 0, srcChars, srcStart, srcLength); }
 
 inline UnicodeString&
 UnicodeString::insert(int32_t start,
-              const UChar *srcChars,
+              ConstChar16Ptr srcChars,
               int32_t srcLength)
 { return doReplace(start, 0, srcChars, 0, srcLength); }
 
 inline UnicodeString&
 UnicodeString::insert(int32_t start,
-              UChar srcChar)
+              char16_t srcChar)
 { return doReplace(start, 0, &srcChar, 0, 1); }
 
 inline UnicodeString&
index f527c26..1b5af16 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 56e99b2..c6d3494 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unorm2.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ec231ee..9782f27 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  uobject.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b220a54..21c839a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -7,7 +7,7 @@
 *******************************************************************************
 *
 *   file name:  urename.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #define _UTF16BEData U_ICU_ENTRY_POINT_RENAME(_UTF16BEData)
 #define _UTF16Data U_ICU_ENTRY_POINT_RENAME(_UTF16Data)
 #define _UTF16LEData U_ICU_ENTRY_POINT_RENAME(_UTF16LEData)
+#define _UTF16v2Data U_ICU_ENTRY_POINT_RENAME(_UTF16v2Data)
 #define _UTF32BEData U_ICU_ENTRY_POINT_RENAME(_UTF32BEData)
 #define _UTF32Data U_ICU_ENTRY_POINT_RENAME(_UTF32Data)
 #define _UTF32LEData U_ICU_ENTRY_POINT_RENAME(_UTF32LEData)
 #define _UTF7Data U_ICU_ENTRY_POINT_RENAME(_UTF7Data)
 #define _UTF8Data U_ICU_ENTRY_POINT_RENAME(_UTF8Data)
+#define allowedHourFormatsCleanup U_ICU_ENTRY_POINT_RENAME(allowedHourFormatsCleanup)
 #define cmemory_cleanup U_ICU_ENTRY_POINT_RENAME(cmemory_cleanup)
+#define dayPeriodRulesCleanup U_ICU_ENTRY_POINT_RENAME(dayPeriodRulesCleanup)
+#define deleteAllowedHourFormats U_ICU_ENTRY_POINT_RENAME(deleteAllowedHourFormats)
 #define gTimeZoneFilesInitOnce U_ICU_ENTRY_POINT_RENAME(gTimeZoneFilesInitOnce)
 #define izrule_clone U_ICU_ENTRY_POINT_RENAME(izrule_clone)
 #define izrule_close U_ICU_ENTRY_POINT_RENAME(izrule_close)
 #define izrule_getStaticClassID U_ICU_ENTRY_POINT_RENAME(izrule_getStaticClassID)
 #define izrule_isEquivalentTo U_ICU_ENTRY_POINT_RENAME(izrule_isEquivalentTo)
 #define izrule_open U_ICU_ENTRY_POINT_RENAME(izrule_open)
-#define le_close U_ICU_ENTRY_POINT_RENAME(le_close)
-#define le_create U_ICU_ENTRY_POINT_RENAME(le_create)
-#define le_getCharIndices U_ICU_ENTRY_POINT_RENAME(le_getCharIndices)
-#define le_getCharIndicesWithBase U_ICU_ENTRY_POINT_RENAME(le_getCharIndicesWithBase)
-#define le_getGlyphCount U_ICU_ENTRY_POINT_RENAME(le_getGlyphCount)
-#define le_getGlyphPosition U_ICU_ENTRY_POINT_RENAME(le_getGlyphPosition)
-#define le_getGlyphPositions U_ICU_ENTRY_POINT_RENAME(le_getGlyphPositions)
-#define le_getGlyphs U_ICU_ENTRY_POINT_RENAME(le_getGlyphs)
-#define le_layoutChars U_ICU_ENTRY_POINT_RENAME(le_layoutChars)
-#define le_reset U_ICU_ENTRY_POINT_RENAME(le_reset)
 #define locale_getKeywords U_ICU_ENTRY_POINT_RENAME(locale_getKeywords)
 #define locale_getKeywordsStart U_ICU_ENTRY_POINT_RENAME(locale_getKeywordsStart)
 #define locale_get_default U_ICU_ENTRY_POINT_RENAME(locale_get_default)
 #define ubrk_first U_ICU_ENTRY_POINT_RENAME(ubrk_first)
 #define ubrk_following U_ICU_ENTRY_POINT_RENAME(ubrk_following)
 #define ubrk_getAvailable U_ICU_ENTRY_POINT_RENAME(ubrk_getAvailable)
+#define ubrk_getBinaryRules U_ICU_ENTRY_POINT_RENAME(ubrk_getBinaryRules)
 #define ubrk_getLocaleByType U_ICU_ENTRY_POINT_RENAME(ubrk_getLocaleByType)
 #define ubrk_getRuleStatus U_ICU_ENTRY_POINT_RENAME(ubrk_getRuleStatus)
 #define ubrk_getRuleStatusVec U_ICU_ENTRY_POINT_RENAME(ubrk_getRuleStatusVec)
 #define ubrk_last U_ICU_ENTRY_POINT_RENAME(ubrk_last)
 #define ubrk_next U_ICU_ENTRY_POINT_RENAME(ubrk_next)
 #define ubrk_open U_ICU_ENTRY_POINT_RENAME(ubrk_open)
+#define ubrk_openBinaryRules U_ICU_ENTRY_POINT_RENAME(ubrk_openBinaryRules)
 #define ubrk_openRules U_ICU_ENTRY_POINT_RENAME(ubrk_openRules)
 #define ubrk_preceding U_ICU_ENTRY_POINT_RENAME(ubrk_preceding)
 #define ubrk_previous U_ICU_ENTRY_POINT_RENAME(ubrk_previous)
 #define ucase_addStringCaseClosure U_ICU_ENTRY_POINT_RENAME(ucase_addStringCaseClosure)
 #define ucase_fold U_ICU_ENTRY_POINT_RENAME(ucase_fold)
 #define ucase_getCaseLocale U_ICU_ENTRY_POINT_RENAME(ucase_getCaseLocale)
-#define ucase_getSingleton U_ICU_ENTRY_POINT_RENAME(ucase_getSingleton)
 #define ucase_getType U_ICU_ENTRY_POINT_RENAME(ucase_getType)
 #define ucase_getTypeOrIgnorable U_ICU_ENTRY_POINT_RENAME(ucase_getTypeOrIgnorable)
 #define ucase_hasBinaryProperty U_ICU_ENTRY_POINT_RENAME(ucase_hasBinaryProperty)
 #define unum_formatDecimal U_ICU_ENTRY_POINT_RENAME(unum_formatDecimal)
 #define unum_formatDouble U_ICU_ENTRY_POINT_RENAME(unum_formatDouble)
 #define unum_formatDoubleCurrency U_ICU_ENTRY_POINT_RENAME(unum_formatDoubleCurrency)
+#define unum_formatDoubleForFields U_ICU_ENTRY_POINT_RENAME(unum_formatDoubleForFields)
 #define unum_formatInt64 U_ICU_ENTRY_POINT_RENAME(unum_formatInt64)
 #define unum_formatUFormattable U_ICU_ENTRY_POINT_RENAME(unum_formatUFormattable)
 #define unum_getAttribute U_ICU_ENTRY_POINT_RENAME(unum_getAttribute)
 #define unumsys_openAvailableNames U_ICU_ENTRY_POINT_RENAME(unumsys_openAvailableNames)
 #define unumsys_openByName U_ICU_ENTRY_POINT_RENAME(unumsys_openByName)
 #define uplrules_close U_ICU_ENTRY_POINT_RENAME(uplrules_close)
+#define uplrules_getKeywords U_ICU_ENTRY_POINT_RENAME(uplrules_getKeywords)
 #define uplrules_open U_ICU_ENTRY_POINT_RENAME(uplrules_open)
 #define uplrules_openForType U_ICU_ENTRY_POINT_RENAME(uplrules_openForType)
 #define uplrules_select U_ICU_ENTRY_POINT_RENAME(uplrules_select)
+#define uplrules_selectWithFormat U_ICU_ENTRY_POINT_RENAME(uplrules_selectWithFormat)
 #define uplug_closeLibrary U_ICU_ENTRY_POINT_RENAME(uplug_closeLibrary)
 #define uplug_findLibrary U_ICU_ENTRY_POINT_RENAME(uplug_findLibrary)
 #define uplug_getConfiguration U_ICU_ENTRY_POINT_RENAME(uplug_getConfiguration)
 #define uprv_compareInvEbcdic U_ICU_ENTRY_POINT_RENAME(uprv_compareInvEbcdic)
 #define uprv_compareInvEbcdicAsAscii U_ICU_ENTRY_POINT_RENAME(uprv_compareInvEbcdicAsAscii)
 #define uprv_convertToLCID U_ICU_ENTRY_POINT_RENAME(uprv_convertToLCID)
+#define uprv_convertToLCIDPlatform U_ICU_ENTRY_POINT_RENAME(uprv_convertToLCIDPlatform)
 #define uprv_convertToPosix U_ICU_ENTRY_POINT_RENAME(uprv_convertToPosix)
 #define uprv_copyAscii U_ICU_ENTRY_POINT_RENAME(uprv_copyAscii)
 #define uprv_copyEbcdic U_ICU_ENTRY_POINT_RENAME(uprv_copyEbcdic)
 #define ustr_hashCharsN U_ICU_ENTRY_POINT_RENAME(ustr_hashCharsN)
 #define ustr_hashICharsN U_ICU_ENTRY_POINT_RENAME(ustr_hashICharsN)
 #define ustr_hashUCharsN U_ICU_ENTRY_POINT_RENAME(ustr_hashUCharsN)
+#define ustrcase_getCaseLocale U_ICU_ENTRY_POINT_RENAME(ustrcase_getCaseLocale)
 #define ustrcase_internalFold U_ICU_ENTRY_POINT_RENAME(ustrcase_internalFold)
 #define ustrcase_internalToLower U_ICU_ENTRY_POINT_RENAME(ustrcase_internalToLower)
 #define ustrcase_internalToTitle U_ICU_ENTRY_POINT_RENAME(ustrcase_internalToTitle)
 #define ustrcase_internalToUpper U_ICU_ENTRY_POINT_RENAME(ustrcase_internalToUpper)
 #define ustrcase_map U_ICU_ENTRY_POINT_RENAME(ustrcase_map)
-#define ustrcase_setTempCaseMapLocale U_ICU_ENTRY_POINT_RENAME(ustrcase_setTempCaseMapLocale)
+#define ustrcase_mapWithOverlap U_ICU_ENTRY_POINT_RENAME(ustrcase_mapWithOverlap)
 #define utext_char32At U_ICU_ENTRY_POINT_RENAME(utext_char32At)
 #define utext_clone U_ICU_ENTRY_POINT_RENAME(utext_clone)
 #define utext_close U_ICU_ENTRY_POINT_RENAME(utext_close)
 #define utrace_functionName U_ICU_ENTRY_POINT_RENAME(utrace_functionName)
 #define utrace_getFunctions U_ICU_ENTRY_POINT_RENAME(utrace_getFunctions)
 #define utrace_getLevel U_ICU_ENTRY_POINT_RENAME(utrace_getLevel)
-#define utrace_level U_ICU_ENTRY_POINT_RENAME(utrace_level)
 #define utrace_setFunctions U_ICU_ENTRY_POINT_RENAME(utrace_setFunctions)
 #define utrace_setLevel U_ICU_ENTRY_POINT_RENAME(utrace_setLevel)
 #define utrace_vformat U_ICU_ENTRY_POINT_RENAME(utrace_vformat)
index b559b24..932202d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 620d926..918b9f2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a20cd15..1420578 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 8baabbe..59f4650 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uset.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 26591d0..d0d9918 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 0ea3231..c64fe22 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ushape.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5bd837e..da0848d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  usprep.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index e62fef5..31b0556 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 50d31ba..fd85648 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  udicttrie.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index fd11995..80ce8af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utext.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ffb094f..dff4286 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6e7d1da..9cc73f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf16.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f93727c..8822c4d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf32.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 55f7b9d..18e7e94 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf8.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 
 /* internal definitions ----------------------------------------------------- */
 
-/**
- * \var utf8_countTrailBytes
- * Internal array with numbers of trail bytes for any given byte used in
- * lead byte position.
- *
- * This is internal since it is not meant to be called directly by external clients;
- * however it is called by public macros in this file and thus must remain stable,
- * and should not be hidden when other internal functions are hidden (otherwise
- * public macros would fail to compile).
- * @internal
- */
-#ifdef U_UTF8_IMPL
-U_EXPORT const uint8_t 
-#elif defined(U_STATIC_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION)
-U_CFUNC const uint8_t
-#else
-U_CFUNC U_IMPORT const uint8_t /* U_IMPORT2? */ /*U_IMPORT*/ 
-#endif
-utf8_countTrailBytes[256];
+
 
 /**
  * Counts the trail bytes for a UTF-8 lead byte.
index c7d5145..250cb8c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf_old.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 */
 
 /**
- * \file 
+ * \file
  * \brief C API: Deprecated macros for Unicode string handling
  */
 
 /**
- * 
+ *
  * The macros in utf_old.h are all deprecated and their use discouraged.
  * Some of the design principles behind the set of UTF macros
  * have changed or proved impractical.
@@ -268,6 +268,25 @@ typedef int32_t UTextOffset;
 /* Formerly utf8.h ---------------------------------------------------------- */
 
 /**
+* \var utf8_countTrailBytes
+* Internal array with numbers of trail bytes for any given byte used in
+* lead byte position.
+*
+* This is internal since it is not meant to be called directly by external clients;
+* however it is called by public macros in this file and thus must remain stable,
+* and should not be hidden when other internal functions are hidden (otherwise
+* public macros would fail to compile).
+* @internal
+*/
+#ifdef U_UTF8_IMPL
+// No forward declaration if compiling utf_impl.cpp, which defines utf8_countTrailBytes.
+#elif defined(U_STATIC_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION)
+U_CFUNC const uint8_t utf8_countTrailBytes[];
+#else
+U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[];    /* U_IMPORT2? */ /*U_IMPORT*/
+#endif
+
+/**
  * Count the trail bytes for a UTF-8 lead byte.
  * @deprecated ICU 2.4. Renamed to U8_COUNT_TRAIL_BYTES, see utf_old.h.
  */
index c55f8c1..6b4c4df 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utrace.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 3d19c50..d60450b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 
 /**
  * \def NULL
- * Define NULL if necessary, to 0 for C++ and to ((void *)0) for C.
+ * Define NULL if necessary, to nullptr for C++ and to ((void *)0) for C.
  * @stable ICU 2.0
  */
 #ifndef NULL
 #ifdef __cplusplus
-#define NULL    0
+#define NULL    nullptr
 #else
 #define NULL    ((void *)0)
 #endif
index 5590f9a..cae59ad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -7,7 +7,7 @@
 *******************************************************************************
 *
 *   file name:  uvernum.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION_MAJOR_NUM 58
+#define U_ICU_VERSION_MAJOR_NUM 59
 
 /** 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 2
+#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
@@ -84,7 +84,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_SUFFIX _58
+#define U_ICU_VERSION_SUFFIX _59
 
 /**
  * \def U_DEF2_ICU_ENTRY_POINT_RENAME
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION "58.2"
+#define U_ICU_VERSION "59.1"
 
 /** The current ICU library major/minor version as a string without dots, for library name suffixes.
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_SHORT "58"
+#if U_PLATFORM_HAS_WINUWP_API == 0
+#define U_ICU_VERSION_SHORT "59"
+#else
+// U_DISABLE_RENAMING does not impact dat file name
+#define U_ICU_VERSION_SHORT
+#endif /* U_PLATFORM_HAS_WINUWP_API == 0 */
 
 #ifndef U_HIDE_INTERNAL_API
 /** Data version in ICU4C.
  * @internal ICU 4.4 Internal Use Only
  **/
-#define U_ICU_DATA_VERSION "58.2"
+#define U_ICU_DATA_VERSION "59.1"
 #endif  /* U_HIDE_INTERNAL_API */
 
 /*===========================================================================
index 3f8ad36..e24068d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -7,7 +7,7 @@
 *******************************************************************************
 *
 *   file name:  uversion.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6e7156f..fd2d107 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 72b8a79..97da7ff 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 2d8ce35..4ab0d9b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8fdc638..f3995b2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 7866719..fe5a157 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b6bc64f..44bb4bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uniset_closure.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -184,7 +184,6 @@ UnicodeSet& UnicodeSet::closeOver(int32_t attribute) {
         return *this;
     }
     if (attribute & (USET_CASE_INSENSITIVE | USET_ADD_CASE_MAPPINGS)) {
-        const UCaseProps *csp = ucase_getSingleton();
         {
             UnicodeSet foldSet(*this);
             UnicodeString str;
@@ -207,7 +206,6 @@ UnicodeSet& UnicodeSet::closeOver(int32_t attribute) {
             int32_t n = getRangeCount();
             UChar32 result;
             const UChar *full;
-            int32_t locCache = 0;
 
             for (int32_t i=0; i<n; ++i) {
                 UChar32 start = getRangeStart(i);
@@ -216,22 +214,22 @@ UnicodeSet& UnicodeSet::closeOver(int32_t attribute) {
                 if (attribute & USET_CASE_INSENSITIVE) {
                     // full case closure
                     for (UChar32 cp=start; cp<=end; ++cp) {
-                        ucase_addCaseClosure(csp, cp, &sa);
+                        ucase_addCaseClosure(cp, &sa);
                     }
                 } else {
                     // add case mappings
                     // (does not add long s for regular s, or Kelvin for k, for example)
                     for (UChar32 cp=start; cp<=end; ++cp) {
-                        result = ucase_toFullLower(csp, cp, NULL, NULL, &full, "", &locCache);
+                        result = ucase_toFullLower(cp, NULL, NULL, &full, UCASE_LOC_ROOT);
                         addCaseMapping(foldSet, result, full, str);
 
-                        result = ucase_toFullTitle(csp, cp, NULL, NULL, &full, "", &locCache);
+                        result = ucase_toFullTitle(cp, NULL, NULL, &full, UCASE_LOC_ROOT);
                         addCaseMapping(foldSet, result, full, str);
 
-                        result = ucase_toFullUpper(csp, cp, NULL, NULL, &full, "", &locCache);
+                        result = ucase_toFullUpper(cp, NULL, NULL, &full, UCASE_LOC_ROOT);
                         addCaseMapping(foldSet, result, full, str);
 
-                        result = ucase_toFullFolding(csp, cp, &full, 0);
+                        result = ucase_toFullFolding(cp, &full, 0);
                         addCaseMapping(foldSet, result, full, str);
                     }
                 }
@@ -241,7 +239,7 @@ UnicodeSet& UnicodeSet::closeOver(int32_t attribute) {
                     for (int32_t j=0; j<strings->size(); ++j) {
                         str = *(const UnicodeString *) strings->elementAt(j);
                         str.foldCase();
-                        if(!ucase_addStringCaseClosure(csp, str.getBuffer(), str.length(), &sa)) {
+                        if(!ucase_addStringCaseClosure(str.getBuffer(), str.length(), &sa)) {
                             foldSet.add(str); // does not map to code points: add the folded string itself
                         }
                     }
index ed31946..0a13740 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uniset_props.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -195,7 +195,7 @@ void U_CALLCONV UnicodeSet_initInclusion(int32_t src, UErrorCode &status) {
         if(U_SUCCESS(status)) {
             impl->addPropertyStarts(&sa, status);
         }
-        ucase_addPropertyStarts(ucase_getSingleton(), &sa, &status);
+        ucase_addPropertyStarts(&sa, &status);
         break;
     }
     case UPROPS_SRC_NFC: {
@@ -228,7 +228,7 @@ void U_CALLCONV UnicodeSet_initInclusion(int32_t src, UErrorCode &status) {
     }
 #endif
     case UPROPS_SRC_CASE:
-        ucase_addPropertyStarts(ucase_getSingleton(), &sa, &status);
+        ucase_addPropertyStarts(&sa, &status);
         break;
     case UPROPS_SRC_BIDI:
         ubidi_addPropertyStarts(ubidi_getSingleton(), &sa, &status);
index 2e77dfd..83bc794 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  unisetspan.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 36cdd98..f1e78ff 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  unisetspan.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index bdd58ec..1bfb71a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -218,9 +218,10 @@ UnicodeString::UnicodeString(const UChar *text,
 }
 
 UnicodeString::UnicodeString(UBool isTerminated,
-                             const UChar *text,
+                             ConstChar16Ptr textPtr,
                              int32_t textLength) {
   fUnion.fFields.fLengthAndFlags = kReadonlyAlias;
+  const UChar *text = textPtr;
   if(text == NULL) {
     // treat as an empty string, do not alias
     setToEmpty();
@@ -234,7 +235,8 @@ UnicodeString::UnicodeString(UBool isTerminated,
       // text is terminated, or else it would have failed the above test
       textLength = u_strlen(text);
     }
-    setArray((UChar *)text, textLength, isTerminated ? textLength + 1 : textLength);
+    setArray(const_cast<UChar *>(text), textLength,
+             isTerminated ? textLength + 1 : textLength);
   }
 }
 
@@ -873,7 +875,7 @@ UnicodeString::doExtract(int32_t start,
 }
 
 int32_t
-UnicodeString::extract(UChar *dest, int32_t destCapacity,
+UnicodeString::extract(Char16Ptr dest, int32_t destCapacity,
                        UErrorCode &errorCode) const {
   int32_t len = length();
   if(U_SUCCESS(errorCode)) {
@@ -1215,10 +1217,10 @@ UnicodeString::unBogus() {
   }
 }
 
-const UChar *
+const char16_t *
 UnicodeString::getTerminatedBuffer() {
   if(!isWritable()) {
-    return 0;
+    return nullptr;
   }
   UChar *array = getArrayStart();
   int32_t len = length();
@@ -1249,14 +1251,14 @@ UnicodeString::getTerminatedBuffer() {
     array[len] = 0;
     return array;
   } else {
-    return NULL;
+    return nullptr;
   }
 }
 
 // setTo() analogous to the readonly-aliasing constructor with the same signature
 UnicodeString &
 UnicodeString::setTo(UBool isTerminated,
-                     const UChar *text,
+                     ConstChar16Ptr textPtr,
                      int32_t textLength)
 {
   if(fUnion.fFields.fLengthAndFlags & kOpenGetBuffer) {
@@ -1264,6 +1266,7 @@ UnicodeString::setTo(UBool isTerminated,
     return *this;
   }
 
+  const UChar *text = textPtr;
   if(text == NULL) {
     // treat as an empty string, do not alias
     releaseArray();
@@ -1713,14 +1716,14 @@ UnicodeString::doHashCode() const
 // External Buffer
 //========================================
 
-UChar *
+char16_t *
 UnicodeString::getBuffer(int32_t minCapacity) {
   if(minCapacity>=-1 && cloneArrayIfNeeded(minCapacity)) {
     fUnion.fFields.fLengthAndFlags|=kOpenGetBuffer;
     setZeroLength();
     return getArrayStart();
   } else {
-    return 0;
+    return nullptr;
   }
 }
 
index 1715b6e..1c62ce5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unistr_case.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:2
 *
 */
 
 #include "unicode/utypes.h"
+#include "unicode/casemap.h"
+#include "unicode/edits.h"
 #include "unicode/putil.h"
 #include "cstring.h"
 #include "cmemory.h"
 #include "unicode/ustring.h"
 #include "unicode/unistr.h"
 #include "unicode/uchar.h"
+#include "uassert.h"
+#include "ucasemap_imp.h"
 #include "uelement.h"
-#include "ustr_imp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -87,56 +90,104 @@ UnicodeString::doCaseCompare(int32_t start,
 //========================================
 
 UnicodeString &
-UnicodeString::caseMap(const UCaseMap *csm,
+UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
                        UStringCaseMapper *stringCaseMapper) {
   if(isEmpty() || !isWritable()) {
     // nothing to do
     return *this;
   }
 
-  // We need to allocate a new buffer for the internal string case mapping function.
-  // This is very similar to how doReplace() keeps the old array pointer
-  // and deletes the old array itself after it is done.
-  // In addition, we are forcing cloneArrayIfNeeded() to always allocate a new array.
-  UChar oldStackBuffer[US_STACKBUF_SIZE];
+  UChar oldBuffer[2 * US_STACKBUF_SIZE];
   UChar *oldArray;
-  int32_t oldLength;
-
-  if(fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) {
-    // copy the stack buffer contents because it will be overwritten
-    oldArray = oldStackBuffer;
-    oldLength = getShortLength();
-    u_memcpy(oldStackBuffer, fUnion.fStackFields.fBuffer, oldLength);
+  int32_t oldLength = length();
+  int32_t newLength;
+  UBool writable = isBufferWritable();
+  UErrorCode errorCode = U_ZERO_ERROR;
+
+  // Try to avoid heap-allocating a new character array for this string.
+  if (writable ? oldLength <= UPRV_LENGTHOF(oldBuffer) : oldLength < US_STACKBUF_SIZE) {
+    // Short string: Copy the contents into a temporary buffer and
+    // case-map back into the current array, or into the stack buffer.
+    UChar *buffer = getArrayStart();
+    int32_t capacity;
+    oldArray = oldBuffer;
+    u_memcpy(oldBuffer, buffer, oldLength);
+    if (writable) {
+      capacity = getCapacity();
+    } else {
+      // Switch from the read-only alias or shared heap buffer to the stack buffer.
+      if (!cloneArrayIfNeeded(US_STACKBUF_SIZE, US_STACKBUF_SIZE, /* doCopyArray= */ FALSE)) {
+        return *this;
+      }
+      U_ASSERT(fUnion.fFields.fLengthAndFlags & kUsingStackBuffer);
+      buffer = fUnion.fStackFields.fBuffer;
+      capacity = US_STACKBUF_SIZE;
+    }
+    newLength = stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
+                                 buffer, capacity,
+                                 oldArray, oldLength, NULL, errorCode);
+    if (U_SUCCESS(errorCode)) {
+      setLength(newLength);
+      return *this;
+    } else if (errorCode == U_BUFFER_OVERFLOW_ERROR) {
+      // common overflow handling below
+    } else {
+      setToBogus();
+      return *this;
+    }
   } else {
+    // Longer string or read-only buffer:
+    // Collect only changes and then apply them to this string.
+    // Case mapping often changes only small parts of a string,
+    // and often does not change its length.
     oldArray = getArrayStart();
-    oldLength = length();
+    Edits edits;
+    UChar replacementChars[200];
+    stringCaseMapper(caseLocale, options | UCASEMAP_OMIT_UNCHANGED_TEXT, UCASEMAP_BREAK_ITERATOR
+                     replacementChars, UPRV_LENGTHOF(replacementChars),
+                     oldArray, oldLength, &edits, errorCode);
+    if (U_SUCCESS(errorCode)) {
+      // Grow the buffer at most once, not for multiple doReplace() calls.
+      newLength = oldLength + edits.lengthDelta();
+      if (newLength > oldLength && !cloneArrayIfNeeded(newLength, newLength)) {
+        return *this;
+      }
+      for (Edits::Iterator ei = edits.getCoarseChangesIterator(); ei.next(errorCode);) {
+        doReplace(ei.destinationIndex(), ei.oldLength(),
+                  replacementChars, ei.replacementIndex(), ei.newLength());
+      }
+      if (U_FAILURE(errorCode)) {
+        setToBogus();
+      }
+      return *this;
+    } else if (errorCode == U_BUFFER_OVERFLOW_ERROR) {
+      // common overflow handling below
+      newLength = oldLength + edits.lengthDelta();
+    } else {
+      setToBogus();
+      return *this;
+    }
   }
 
-  int32_t capacity;
-  if(oldLength <= US_STACKBUF_SIZE) {
-    capacity = US_STACKBUF_SIZE;
-  } else {
-    capacity = oldLength + 20;
-  }
+  // Handle buffer overflow, newLength is known.
+  // We need to allocate a new buffer for the internal string case mapping function.
+  // This is very similar to how doReplace() keeps the old array pointer
+  // and deletes the old array itself after it is done.
+  // In addition, we are forcing cloneArrayIfNeeded() to always allocate a new array.
   int32_t *bufferToDelete = 0;
-  if(!cloneArrayIfNeeded(capacity, capacity, FALSE, &bufferToDelete, TRUE)) {
+  if (!cloneArrayIfNeeded(newLength, newLength, FALSE, &bufferToDelete, TRUE)) {
     return *this;
   }
-
-  // Case-map, and if the result is too long, then reallocate and repeat.
-  UErrorCode errorCode;
-  int32_t newLength;
-  do {
-    errorCode = U_ZERO_ERROR;
-    newLength = stringCaseMapper(csm, getArrayStart(), getCapacity(),
-                                 oldArray, oldLength, &errorCode);
-    setLength(newLength);
-  } while(errorCode==U_BUFFER_OVERFLOW_ERROR && cloneArrayIfNeeded(newLength, newLength, FALSE));
-
+  errorCode = U_ZERO_ERROR;
+  newLength = stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
+                               getArrayStart(), getCapacity(),
+                               oldArray, oldLength, NULL, errorCode);
   if (bufferToDelete) {
     uprv_free(bufferToDelete);
   }
-  if(U_FAILURE(errorCode)) {
+  if (U_SUCCESS(errorCode)) {
+    setLength(newLength);
+  } else {
     setToBogus();
   }
   return *this;
@@ -144,10 +195,7 @@ UnicodeString::caseMap(const UCaseMap *csm,
 
 UnicodeString &
 UnicodeString::foldCase(uint32_t options) {
-  UCaseMap csm=UCASEMAP_INITIALIZER;
-  csm.csp=ucase_getSingleton();
-  csm.options=options;
-  return caseMap(&csm, ustrcase_internalFold);
+  return caseMap(UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalFold);
 }
 
 U_NAMESPACE_END
index a01be5c..f0f3048 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  unistr_case_locale.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -19,9 +19,9 @@
 
 #include "unicode/utypes.h"
 #include "unicode/locid.h"
+#include "unicode/ucasemap.h"
 #include "unicode/unistr.h"
-#include "cmemory.h"
-#include "ustr_imp.h"
+#include "ucasemap_imp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -29,44 +29,28 @@ U_NAMESPACE_BEGIN
 // Write implementation
 //========================================
 
-/*
- * Set parameters on an empty UCaseMap, for UCaseMap-less API functions.
- * Do this fast because it is called with every function call.
- */
-static inline void
-setTempCaseMap(UCaseMap *csm, const char *locale) {
-    if(csm->csp==NULL) {
-        csm->csp=ucase_getSingleton();
-    }
-    if(locale!=NULL && locale[0]==0) {
-        csm->locale[0]=0;
-    } else {
-        ustrcase_setTempCaseMapLocale(csm, locale);
-    }
-}
-
 UnicodeString &
 UnicodeString::toLower() {
-  return toLower(Locale::getDefault());
+  return caseMap(ustrcase_getCaseLocale(NULL), 0,
+                 UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToLower);
 }
 
 UnicodeString &
 UnicodeString::toLower(const Locale &locale) {
-  UCaseMap csm=UCASEMAP_INITIALIZER;
-  setTempCaseMap(&csm, locale.getName());
-  return caseMap(&csm, ustrcase_internalToLower);
+  return caseMap(ustrcase_getCaseLocale(locale.getBaseName()), 0,
+                 UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToLower);
 }
 
 UnicodeString &
 UnicodeString::toUpper() {
-  return toUpper(Locale::getDefault());
+  return caseMap(ustrcase_getCaseLocale(NULL), 0,
+                 UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToUpper);
 }
 
 UnicodeString &
 UnicodeString::toUpper(const Locale &locale) {
-  UCaseMap csm=UCASEMAP_INITIALIZER;
-  setTempCaseMap(&csm, locale.getName());
-  return caseMap(&csm, ustrcase_internalToUpper);
+  return caseMap(ustrcase_getCaseLocale(locale.getBaseName()), 0,
+                 UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToUpper);
 }
 
 U_NAMESPACE_END
index a9b44ee..64d3c16 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unistr_cnv.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:2
 *
index f099779..4006475 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unistr_props.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:2
 *
index 3d6737c..3156fdf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  unistr_titlecase_brkiter.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:2
 *
 #if !UCONFIG_NO_BREAK_ITERATION
 
 #include "unicode/brkiter.h"
-#include "unicode/ubrk.h"
+#include "unicode/locid.h"
+#include "unicode/ucasemap.h"
 #include "unicode/unistr.h"
-#include "unicode/ustring.h"
-#include "cmemory.h"
-#include "ustr_imp.h"
-
-static int32_t U_CALLCONV
-unistr_case_internalToTitle(const UCaseMap *csm,
-                            UChar *dest, int32_t destCapacity,
-                            const UChar *src, int32_t srcLength,
-                            UErrorCode *pErrorCode) {
-  ubrk_setText(csm->iter, src, srcLength, pErrorCode);
-  return ustrcase_internalToTitle(csm, dest, destCapacity, src, srcLength, pErrorCode);
-}
-
-/*
- * Set parameters on an empty UCaseMap, for UCaseMap-less API functions.
- * Do this fast because it is called with every function call.
- */
-static inline void
-setTempCaseMap(UCaseMap *csm, const char *locale) {
-    if(csm->csp==NULL) {
-        csm->csp=ucase_getSingleton();
-    }
-    if(locale!=NULL && locale[0]==0) {
-        csm->locale[0]=0;
-    } else {
-        ustrcase_setTempCaseMapLocale(csm, locale);
-    }
-}
+#include "ucasemap_imp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -67,9 +41,6 @@ UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale) {
 
 UnicodeString &
 UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t options) {
-  UCaseMap csm=UCASEMAP_INITIALIZER;
-  csm.options=options;
-  setTempCaseMap(&csm, locale.getName());
   BreakIterator *bi=titleIter;
   if(bi==NULL) {
     UErrorCode errorCode=U_ZERO_ERROR;
@@ -79,8 +50,12 @@ UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t
       return *this;
     }
   }
-  csm.iter=reinterpret_cast<UBreakIterator *>(bi);
-  caseMap(&csm, unistr_case_internalToTitle);
+  // Because the "this" string is both the source and the destination,
+  // make a copy of the original source for use by the break iterator.
+  // See tickets #13127 and #13128
+  UnicodeString copyOfInput(*this);
+  bi->setText(copyOfInput);
+  caseMap(ustrcase_getCaseLocale(locale.getBaseName()), options, bi, ustrcase_internalToTitle);
   if(titleIter==NULL) {
     delete bi;
   }
index 330f3a5..75fcb9e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index a9df6d2..2d9f460 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index b40a10a..689b0b5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unormcmp.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -145,7 +145,6 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
                    uint32_t options,
                    UErrorCode *pErrorCode) {
     const Normalizer2Impl *nfcImpl;
-    const UCaseProps *csp;
 
     /* current-level start/limit - s1/s2 as current */
     const UChar *start1, *start2, *limit1, *limit2;
@@ -183,11 +182,6 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
     } else {
         nfcImpl=NULL;
     }
-    if((options&U_COMPARE_IGNORE_CASE)!=0) {
-        csp=ucase_getSingleton();
-    } else {
-        csp=NULL;
-    }
     if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
@@ -319,7 +313,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
          */
 
         if( level1==0 && (options&U_COMPARE_IGNORE_CASE) &&
-            (length=ucase_toFullFolding(csp, (UChar32)cp1, &p, options))>=0
+            (length=ucase_toFullFolding((UChar32)cp1, &p, options))>=0
         ) {
             /* cp1 case-folds to the code point "length" or to p[length] */
             if(U_IS_SURROGATE(c1)) {
@@ -364,7 +358,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
         }
 
         if( level2==0 && (options&U_COMPARE_IGNORE_CASE) &&
-            (length=ucase_toFullFolding(csp, (UChar32)cp2, &p, options))>=0
+            (length=ucase_toFullFolding((UChar32)cp2, &p, options))>=0
         ) {
             /* cp2 case-folds to the code point "length" or to p[length] */
             if(U_IS_SURROGATE(c2)) {
index cd1d9a8..88c7975 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unormimp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 37406e4..1133dd9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  uobject.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 495deea..45ca123 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uposixdefs.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
  *
  * z/OS needs this definition for timeval and to get usleep.
  */
-#if !defined(_XOPEN_SOURCE_EXTENDED)
+#if !defined(_XOPEN_SOURCE_EXTENDED) && defined(__TOS_MVS__)
 #   define _XOPEN_SOURCE_EXTENDED 1
 #endif
 
-/*
- * There is an issue with turning on _XOPEN_SOURCE_EXTENDED on certain platforms.
- * A compatibility issue exists between turning on _XOPEN_SOURCE_EXTENDED and using
- * standard C++ string class. As a result, standard C++ string class needs to be
- * turned off for the follwing platforms:
- *  -AIX/VACPP
- *  -Solaris/GCC
+/**
+ * Solaris says:
+ *   "...it is invalid to compile an XPG6 or a POSIX.1-2001 application with anything other
+ *   than a c99 or later compiler."
+ * Apparently C++11 is not "or later". Work around this.
  */
-#if (U_PLATFORM == U_PF_AIX && !defined(__GNUC__)) || (U_PLATFORM == U_PF_SOLARIS && defined(__GNUC__))
-#   if _XOPEN_SOURCE_EXTENDED && !defined(U_HAVE_STD_STRING)
-#   define U_HAVE_STD_STRING 0
-#   endif
+#if defined(__cplusplus) && (defined(sun) || defined(__sun)) && !defined (_STDC_C99)
+#   define _STDC_C99
 #endif
 
 #endif  /* __UPOSIXDEFS_H__ */
index 46ceb66..fc91c89 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uprops.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -128,9 +128,8 @@ static UBool changesWhenCasefolded(const BinaryProperty &/*prop*/, UChar32 c, UP
     }
     if(c>=0) {
         /* single code point */
-        const UCaseProps *csp=ucase_getSingleton();
         const UChar *resultString;
-        return (UBool)(ucase_toFullFolding(csp, c, &resultString, U_FOLD_CASE_DEFAULT)>=0);
+        return (UBool)(ucase_toFullFolding(c, &resultString, U_FOLD_CASE_DEFAULT)>=0);
     } else {
         /* guess some large but stack-friendly capacity */
         UChar dest[2*UCASE_MAX_STRING_LENGTH];
@@ -576,14 +575,13 @@ u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *p
     // case folding and NFKC.)
     // For the derivation, see Unicode's DerivedNormalizationProps.txt.
     const Normalizer2 *nfkc=Normalizer2::getNFKCInstance(*pErrorCode);
-    const UCaseProps *csp=ucase_getSingleton();
     if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
     // first: b = NFKC(Fold(a))
     UnicodeString folded1String;
     const UChar *folded1;
-    int32_t folded1Length=ucase_toFullFolding(csp, c, &folded1, U_FOLD_CASE_DEFAULT);
+    int32_t folded1Length=ucase_toFullFolding(c, &folded1, U_FOLD_CASE_DEFAULT);
     if(folded1Length<0) {
         const Normalizer2Impl *nfkcImpl=Normalizer2Factory::getImpl(nfkc);
         if(nfkcImpl->getCompQuickCheck(nfkcImpl->getNorm16(c))!=UNORM_NO) {
index 63c5880..f5d69fe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uprops.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ures_cnv.c b/source/common/ures_cnv.c
deleted file mode 100644 (file)
index 58c6cd0..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 1997-2006, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  ures_cnv.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2004aug25
-*   created by: Markus W. Scherer
-*
-*   Character conversion functions moved here from uresbund.c
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/putil.h"
-#include "unicode/ustring.h"
-#include "unicode/ucnv.h"
-#include "unicode/ures.h"
-#include "uinvchar.h"
-#include "ustr_cnv.h"
-
-U_CAPI UResourceBundle * U_EXPORT2
-ures_openU(const UChar *myPath, 
-           const char *localeID, 
-           UErrorCode *status)
-{
-    char pathBuffer[1024];
-    int32_t length;
-    char *path = pathBuffer;
-
-    if(status==NULL || U_FAILURE(*status)) {
-        return NULL;
-    }
-    if(myPath==NULL) {
-        path = NULL;
-    }
-    else {
-        length=u_strlen(myPath);
-        if(length>=sizeof(pathBuffer)) {
-            *status=U_ILLEGAL_ARGUMENT_ERROR;
-            return NULL;
-        } else if(uprv_isInvariantUString(myPath, length)) {
-            /*
-             * the invariant converter is sufficient for package and tree names
-             * and is more efficient
-             */
-            u_UCharsToChars(myPath, path, length+1); /* length+1 to include the NUL */
-        } else {
-#if !UCONFIG_NO_CONVERSION
-            /* use the default converter to support variant-character paths */
-            UConverter *cnv=u_getDefaultConverter(status);
-            length=ucnv_fromUChars(cnv, path, (int32_t)sizeof(pathBuffer), myPath, length, status);
-            u_releaseDefaultConverter(cnv);
-            if(U_FAILURE(*status)) {
-                return NULL;
-            }
-            if(length>=sizeof(pathBuffer)) {
-                /* not NUL-terminated - path too long */
-                *status=U_ILLEGAL_ARGUMENT_ERROR;
-                return NULL;
-            }
-#else
-            /* the default converter is not available */
-            *status=U_UNSUPPORTED_ERROR;
-            return NULL;
-#endif
-        }
-    }
-
-    return ures_open(path, localeID, status);
-}
index a32bfd1..5a1dd0a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 44654dc..8bcb9ab 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *               and others. All Rights Reserved.
 *******************************************************************************
 *   file name:  uresdata.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -758,7 +758,9 @@ res_getTableItemByIndex(const ResourceData *pResData, Resource table,
                         int32_t indexR, const char **key) {
     uint32_t offset=RES_GET_OFFSET(table);
     int32_t length;
-    U_ASSERT(indexR>=0); /* to ensure the index is not negative */
+    if (indexR < 0) {
+        return RES_BOGUS;
+    }
     switch(RES_GET_TYPE(table)) {
     case URES_TABLE: {
         if (offset != 0) { /* empty if offset==0 */
@@ -836,7 +838,9 @@ UBool icu::ResourceTable::getKeyAndValue(int32_t i,
 U_CAPI Resource U_EXPORT2
 res_getArrayItem(const ResourceData *pResData, Resource array, int32_t indexR) {
     uint32_t offset=RES_GET_OFFSET(array);
-    U_ASSERT(indexR>=0); /* to ensure the index is not negative */
+    if (indexR < 0) {
+        return RES_BOGUS;
+    }
     switch(RES_GET_TYPE(array)) {
     case URES_ARRAY: {
         if (offset!=0) { /* empty if offset==0 */
@@ -923,14 +927,14 @@ res_findResource(const ResourceData *pResData, Resource r, char** path, const ch
       if(t2 == RES_BOGUS) { 
         /* if we fail to get the resource by key, maybe we got an index */
         indexR = uprv_strtol(pathP, &closeIndex, 10);
-        if(*closeIndex == 0) {
+        if(indexR >= 0 && *closeIndex == 0) {
           /* if we indeed have an index, try to get the item by index */
           t2 = res_getTableItemByIndex(pResData, t1, indexR, key);
-        }
+        } // else t2 is already RES_BOGUS
       }
     } else if(URES_IS_ARRAY(type)) {
       indexR = uprv_strtol(pathP, &closeIndex, 10);
-      if(*closeIndex == 0) {
+      if(indexR >= 0 && *closeIndex == 0) {
         t2 = res_getArrayItem(pResData, t1, indexR);
       } else {
         t2 = RES_BOGUS; /* have an array, but don't have a valid index */
index ae7d9a8..8d845e3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  uresdata.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5645ee9..e7fa3e1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 85dd8fb..f7c3344 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/usc_impl.c b/source/common/usc_impl.c
deleted file mode 100644 (file)
index 1fff0c4..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-**********************************************************************
-*   Copyright (C) 1999-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*
-* File USC_IMPL.C
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   07/08/2002  Eric Mader  Creation.
-******************************************************************************
-*/
-
-#include "unicode/uscript.h"
-#include "usc_impl.h"
-#include "cmemory.h"
-
-#define PAREN_STACK_DEPTH 32
-
-#define MOD(sp) ((sp) % PAREN_STACK_DEPTH)
-#define LIMIT_INC(sp) (((sp) < PAREN_STACK_DEPTH)? (sp) + 1 : PAREN_STACK_DEPTH)
-#define INC(sp,count) (MOD((sp) + (count)))
-#define INC1(sp) (INC(sp, 1))
-#define DEC(sp,count) (MOD((sp) + PAREN_STACK_DEPTH - (count)))
-#define DEC1(sp) (DEC(sp, 1))
-#define STACK_IS_EMPTY(scriptRun) ((scriptRun)->pushCount <= 0)
-#define STACK_IS_NOT_EMPTY(scriptRun) (! STACK_IS_EMPTY(scriptRun))
-#define TOP(scriptRun) ((scriptRun)->parenStack[(scriptRun)->parenSP])
-#define SYNC_FIXUP(scriptRun) ((scriptRun)->fixupCount = 0)
-
-struct ParenStackEntry
-{
-    int32_t pairIndex;
-    UScriptCode scriptCode;
-};
-
-struct UScriptRun
-{
-    int32_t textLength;
-    const UChar *textArray;
-
-    int32_t scriptStart;
-    int32_t scriptLimit;
-    UScriptCode scriptCode;
-
-    struct ParenStackEntry parenStack[PAREN_STACK_DEPTH];
-    int32_t parenSP;
-    int32_t pushCount;
-    int32_t fixupCount;
-};
-
-static int8_t highBit(int32_t value);
-
-static const UChar32 pairedChars[] = {
-    0x0028, 0x0029, /* ascii paired punctuation */
-    0x003c, 0x003e,
-    0x005b, 0x005d,
-    0x007b, 0x007d,
-    0x00ab, 0x00bb, /* guillemets */
-    0x2018, 0x2019, /* general punctuation */
-    0x201c, 0x201d,
-    0x2039, 0x203a,
-    0x3008, 0x3009, /* chinese paired punctuation */
-    0x300a, 0x300b,
-    0x300c, 0x300d,
-    0x300e, 0x300f,
-    0x3010, 0x3011,
-    0x3014, 0x3015,
-    0x3016, 0x3017,
-    0x3018, 0x3019,
-    0x301a, 0x301b
-};
-
-static void push(UScriptRun *scriptRun, int32_t pairIndex, UScriptCode scriptCode)
-{
-    scriptRun->pushCount  = LIMIT_INC(scriptRun->pushCount);
-    scriptRun->fixupCount = LIMIT_INC(scriptRun->fixupCount);
-    
-    scriptRun->parenSP = INC1(scriptRun->parenSP);
-    scriptRun->parenStack[scriptRun->parenSP].pairIndex  = pairIndex;
-    scriptRun->parenStack[scriptRun->parenSP].scriptCode = scriptCode;
-}
-
-static void pop(UScriptRun *scriptRun)
-{
-    if (STACK_IS_EMPTY(scriptRun)) {
-        return;
-    }
-    
-    if (scriptRun->fixupCount > 0) {
-        scriptRun->fixupCount -= 1;
-    }
-    
-    scriptRun->pushCount -= 1;
-    scriptRun->parenSP = DEC1(scriptRun->parenSP);
-    
-    /* If the stack is now empty, reset the stack
-       pointers to their initial values.
-     */
-    if (STACK_IS_EMPTY(scriptRun)) {
-        scriptRun->parenSP = -1;
-    }
-}
-
-static void fixup(UScriptRun *scriptRun, UScriptCode scriptCode)
-{
-    int32_t fixupSP = DEC(scriptRun->parenSP, scriptRun->fixupCount);
-    
-    while (scriptRun->fixupCount-- > 0) {
-        fixupSP = INC1(fixupSP);
-        scriptRun->parenStack[fixupSP].scriptCode = scriptCode;
-    }
-}
-
-static int8_t
-highBit(int32_t value)
-{
-    int8_t bit = 0;
-
-    if (value <= 0) {
-        return -32;
-    }
-
-    if (value >= 1 << 16) {
-        value >>= 16;
-        bit += 16;
-    }
-
-    if (value >= 1 << 8) {
-        value >>= 8;
-        bit += 8;
-    }
-
-    if (value >= 1 << 4) {
-        value >>= 4;
-        bit += 4;
-    }
-
-    if (value >= 1 << 2) {
-        value >>= 2;
-        bit += 2;
-    }
-
-    if (value >= 1 << 1) {
-        //value >>= 1;
-        bit += 1;
-    }
-
-    return bit;
-}
-
-static int32_t
-getPairIndex(UChar32 ch)
-{
-    int32_t pairedCharCount = UPRV_LENGTHOF(pairedChars);
-    int32_t pairedCharPower = 1 << highBit(pairedCharCount);
-    int32_t pairedCharExtra = pairedCharCount - pairedCharPower;
-
-    int32_t probe = pairedCharPower;
-    int32_t pairIndex = 0;
-
-    if (ch >= pairedChars[pairedCharExtra]) {
-        pairIndex = pairedCharExtra;
-    }
-
-    while (probe > (1 << 0)) {
-        probe >>= 1;
-
-        if (ch >= pairedChars[pairIndex + probe]) {
-            pairIndex += probe;
-        }
-    }
-
-    if (pairedChars[pairIndex] != ch) {
-        pairIndex = -1;
-    }
-
-    return pairIndex;
-}
-
-static UBool
-sameScript(UScriptCode scriptOne, UScriptCode scriptTwo)
-{
-    return scriptOne <= USCRIPT_INHERITED || scriptTwo <= USCRIPT_INHERITED || scriptOne == scriptTwo;
-}
-
-U_CAPI UScriptRun * U_EXPORT2
-uscript_openRun(const UChar *src, int32_t length, UErrorCode *pErrorCode)
-{
-    UScriptRun *result = NULL;
-
-    if (pErrorCode == NULL || U_FAILURE(*pErrorCode)) {
-        return NULL;
-    }
-
-    result = uprv_malloc(sizeof (UScriptRun));
-
-    if (result == NULL) {
-        *pErrorCode = U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-
-    uscript_setRunText(result, src, length, pErrorCode);
-
-    /* Release the UScriptRun if uscript_setRunText() returns an error */
-    if (U_FAILURE(*pErrorCode)) {
-        uprv_free(result);
-        result = NULL;
-    }
-
-    return result;
-}
-
-U_CAPI void U_EXPORT2
-uscript_closeRun(UScriptRun *scriptRun)
-{
-    if (scriptRun != NULL) {
-        uprv_free(scriptRun);
-    }
-}
-
-U_CAPI void U_EXPORT2
-uscript_resetRun(UScriptRun *scriptRun)
-{
-    if (scriptRun != NULL) {
-        scriptRun->scriptStart = 0;
-        scriptRun->scriptLimit = 0;
-        scriptRun->scriptCode  = USCRIPT_INVALID_CODE;
-        scriptRun->parenSP     = -1;
-        scriptRun->pushCount   =  0;
-        scriptRun->fixupCount  =  0;
-    }
-}
-
-U_CAPI void U_EXPORT2
-uscript_setRunText(UScriptRun *scriptRun, const UChar *src, int32_t length, UErrorCode *pErrorCode)
-{
-    if (pErrorCode == NULL || U_FAILURE(*pErrorCode)) {
-        return;
-    }
-
-    if (scriptRun == NULL || length < 0 || ((src == NULL) != (length == 0))) {
-        *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    scriptRun->textArray  = src;
-    scriptRun->textLength = length;
-
-    uscript_resetRun(scriptRun);
-}
-
-U_CAPI UBool U_EXPORT2
-uscript_nextRun(UScriptRun *scriptRun, int32_t *pRunStart, int32_t *pRunLimit, UScriptCode *pRunScript)
-{
-    UErrorCode error = U_ZERO_ERROR;
-
-    /* if we've fallen off the end of the text, we're done */
-    if (scriptRun == NULL || scriptRun->scriptLimit >= scriptRun->textLength) {
-        return FALSE;
-    }
-    
-    SYNC_FIXUP(scriptRun);
-    scriptRun->scriptCode = USCRIPT_COMMON;
-
-    for (scriptRun->scriptStart = scriptRun->scriptLimit; scriptRun->scriptLimit < scriptRun->textLength; scriptRun->scriptLimit += 1) {
-        UChar   high = scriptRun->textArray[scriptRun->scriptLimit];
-        UChar32 ch   = high;
-        UScriptCode sc;
-        int32_t pairIndex;
-
-        /*
-         * if the character is a high surrogate and it's not the last one
-         * in the text, see if it's followed by a low surrogate
-         */
-        if (high >= 0xD800 && high <= 0xDBFF && scriptRun->scriptLimit < scriptRun->textLength - 1) {
-            UChar low = scriptRun->textArray[scriptRun->scriptLimit + 1];
-
-            /*
-             * if it is followed by a low surrogate,
-             * consume it and form the full character
-             */
-            if (low >= 0xDC00 && low <= 0xDFFF) {
-                ch = (high - 0xD800) * 0x0400 + low - 0xDC00 + 0x10000;
-                scriptRun->scriptLimit += 1;
-            }
-        }
-
-        sc = uscript_getScript(ch, &error);
-        pairIndex = getPairIndex(ch);
-
-        /*
-         * Paired character handling:
-         *
-         * if it's an open character, push it onto the stack.
-         * if it's a close character, find the matching open on the
-         * stack, and use that script code. Any non-matching open
-         * characters above it on the stack will be poped.
-         */
-        if (pairIndex >= 0) {
-            if ((pairIndex & 1) == 0) {
-                push(scriptRun, pairIndex, scriptRun->scriptCode);
-            } else {
-                int32_t pi = pairIndex & ~1;
-
-                while (STACK_IS_NOT_EMPTY(scriptRun) && TOP(scriptRun).pairIndex != pi) {
-                    pop(scriptRun);
-                }
-
-                if (STACK_IS_NOT_EMPTY(scriptRun)) {
-                    sc = TOP(scriptRun).scriptCode;
-                }
-            }
-        }
-
-        if (sameScript(scriptRun->scriptCode, sc)) {
-            if (scriptRun->scriptCode <= USCRIPT_INHERITED && sc > USCRIPT_INHERITED) {
-                scriptRun->scriptCode = sc;
-
-                fixup(scriptRun, scriptRun->scriptCode);
-            }
-
-            /*
-             * if this character is a close paired character,
-             * pop the matching open character from the stack
-             */
-            if (pairIndex >= 0 && (pairIndex & 1) != 0) {
-                pop(scriptRun);
-            }
-        } else {
-            /*
-             * if the run broke on a surrogate pair,
-             * end it before the high surrogate
-             */
-            if (ch >= 0x10000) {
-                scriptRun->scriptLimit -= 1;
-            }
-
-            break;
-        }
-    }
-
-
-    if (pRunStart != NULL) {
-        *pRunStart = scriptRun->scriptStart;
-    }
-
-    if (pRunLimit != NULL) {
-        *pRunLimit = scriptRun->scriptLimit;
-    }
-
-    if (pRunScript != NULL) {
-        *pRunScript = scriptRun->scriptCode;
-    }
-
-    return TRUE;
-}
index 7c9c5e0..4489964 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/uscript.c b/source/common/uscript.c
deleted file mode 100644 (file)
index 336e185..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-**********************************************************************
-*   Copyright (C) 1997-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*
-* File USCRIPT.C
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   07/06/2001    Ram         Creation.
-******************************************************************************
-*/
-
-#include "unicode/uchar.h"
-#include "unicode/uscript.h"
-#include "unicode/uloc.h"
-#include "cmemory.h"
-#include "cstring.h"
-
-static const UScriptCode JAPANESE[3] = { USCRIPT_KATAKANA, USCRIPT_HIRAGANA, USCRIPT_HAN };
-static const UScriptCode KOREAN[2] = { USCRIPT_HANGUL, USCRIPT_HAN };
-static const UScriptCode HAN_BOPO[2] = { USCRIPT_HAN, USCRIPT_BOPOMOFO };
-
-static int32_t
-setCodes(const UScriptCode *src, int32_t length,
-         UScriptCode *dest, int32_t capacity, UErrorCode *err) {
-    int32_t i;
-    if(U_FAILURE(*err)) { return 0; }
-    if(length > capacity) {
-        *err = U_BUFFER_OVERFLOW_ERROR;
-        return length;
-    }
-    for(i = 0; i < length; ++i) {
-        dest[i] = src[i];
-    }
-    return length;
-}
-
-static int32_t
-setOneCode(UScriptCode script, UScriptCode *scripts, int32_t capacity, UErrorCode *err) {
-    if(U_FAILURE(*err)) { return 0; }
-    if(1 > capacity) {
-        *err = U_BUFFER_OVERFLOW_ERROR;
-        return 1;
-    }
-    scripts[0] = script;
-    return 1;
-}
-
-static int32_t
-getCodesFromLocale(const char *locale,
-                   UScriptCode *scripts, int32_t capacity, UErrorCode *err) {
-    UErrorCode internalErrorCode = U_ZERO_ERROR;
-    char lang[8];
-    char script[8];
-    int32_t scriptLength;
-    if(U_FAILURE(*err)) { return 0; }
-    // Multi-script languages, equivalent to the LocaleScript data
-    // that we used to load from locale resource bundles.
-    /*length = */ uloc_getLanguage(locale, lang, UPRV_LENGTHOF(lang), &internalErrorCode);
-    if(U_FAILURE(internalErrorCode) || internalErrorCode == U_STRING_NOT_TERMINATED_WARNING) {
-        return 0;
-    }
-    if(0 == uprv_strcmp(lang, "ja")) {
-        return setCodes(JAPANESE, UPRV_LENGTHOF(JAPANESE), scripts, capacity, err);
-    }
-    if(0 == uprv_strcmp(lang, "ko")) {
-        return setCodes(KOREAN, UPRV_LENGTHOF(KOREAN), scripts, capacity, err);
-    }
-    scriptLength = uloc_getScript(locale, script, UPRV_LENGTHOF(script), &internalErrorCode);
-    if(U_FAILURE(internalErrorCode) || internalErrorCode == U_STRING_NOT_TERMINATED_WARNING) {
-        return 0;
-    }
-    if(0 == uprv_strcmp(lang, "zh") && 0 == uprv_strcmp(script, "Hant")) {
-        return setCodes(HAN_BOPO, UPRV_LENGTHOF(HAN_BOPO), scripts, capacity, err);
-    }
-    // Explicit script code.
-    if(scriptLength != 0) {
-        UScriptCode scriptCode = (UScriptCode)u_getPropertyValueEnum(UCHAR_SCRIPT, script);
-        if(scriptCode != USCRIPT_INVALID_CODE) {
-            if(scriptCode == USCRIPT_SIMPLIFIED_HAN || scriptCode == USCRIPT_TRADITIONAL_HAN) {
-                scriptCode = USCRIPT_HAN;
-            }
-            return setOneCode(scriptCode, scripts, capacity, err);
-        }
-    }
-    return 0;
-}
-
-/* TODO: this is a bad API and should be deprecated, ticket #11141 */
-U_CAPI int32_t  U_EXPORT2
-uscript_getCode(const char* nameOrAbbrOrLocale,
-                UScriptCode* fillIn,
-                int32_t capacity,
-                UErrorCode* err){
-    UBool triedCode;
-    char likely[ULOC_FULLNAME_CAPACITY];
-    UErrorCode internalErrorCode;
-    int32_t length;
-
-    if(U_FAILURE(*err)) {
-        return 0;
-    }
-    if(nameOrAbbrOrLocale==NULL ||
-            (fillIn == NULL ? capacity != 0 : capacity < 0)) {
-        *err = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    triedCode = FALSE;
-    if(uprv_strchr(nameOrAbbrOrLocale, '-')==NULL && uprv_strchr(nameOrAbbrOrLocale, '_')==NULL ){
-        /* try long and abbreviated script names first */
-        UScriptCode code = (UScriptCode) u_getPropertyValueEnum(UCHAR_SCRIPT, nameOrAbbrOrLocale);
-        if(code!=USCRIPT_INVALID_CODE) {
-            return setOneCode(code, fillIn, capacity, err);
-        }
-        triedCode = TRUE;
-    }
-    internalErrorCode = U_ZERO_ERROR;
-    length = getCodesFromLocale(nameOrAbbrOrLocale, fillIn, capacity, err);
-    if(U_FAILURE(*err) || length != 0) {
-        return length;
-    }
-    (void)uloc_addLikelySubtags(nameOrAbbrOrLocale,
-                                likely, UPRV_LENGTHOF(likely), &internalErrorCode);
-    if(U_SUCCESS(internalErrorCode) && internalErrorCode != U_STRING_NOT_TERMINATED_WARNING) {
-        length = getCodesFromLocale(likely, fillIn, capacity, err);
-        if(U_FAILURE(*err) || length != 0) {
-            return length;
-        }
-    }
-    if(!triedCode) {
-        /* still not found .. try long and abbreviated script names again */
-        UScriptCode code = (UScriptCode) u_getPropertyValueEnum(UCHAR_SCRIPT, nameOrAbbrOrLocale);
-        if(code!=USCRIPT_INVALID_CODE) {
-            return setOneCode(code, fillIn, capacity, err);
-        }
-    }
-    return 0;
-}
index 20c7cdc..f8ec5e3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uscript_props.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index dbbf694..39ad0a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uset.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 703c881..7233b93 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uset_imp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index fd48f45..f08e760 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uset_props.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 514dc03..93048ba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8420cc9..90f339b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
@@ -8,7 +8,7 @@
  *
  ******************************************************************************
  *   file name:  ushape.cpp
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 565d9e5..d96e825 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  usprep.cpp
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 1de79ec..fb314b0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index e27639f..38f4d82 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ustr_cnv.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 74f8885..861e3eb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  ustr_cnv.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 34a6936..9815915 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  ustr_imp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #define __USTR_IMP_H__
 
 #include "unicode/utypes.h"
-#include "unicode/uiter.h"
-#include "ucase.h"
-
-/** Simple declaration to avoid including unicode/ubrk.h. */
-#ifndef UBRK_TYPEDEF_UBREAK_ITERATOR
-#   define UBRK_TYPEDEF_UBREAK_ITERATOR
-    typedef struct UBreakIterator UBreakIterator;
-#endif
-
-#ifndef U_COMPARE_IGNORE_CASE
-/* see also unorm.h */
-/**
- * Option bit for unorm_compare:
- * Perform case-insensitive comparison.
- */
-#define U_COMPARE_IGNORE_CASE       0x10000
-#endif
 
 /**
  * Internal option for unorm_cmpEquivFold() for strncmp style.
@@ -53,211 +36,6 @@ uprv_strCompare(const UChar *s1, int32_t length1,
                 const UChar *s2, int32_t length2,
                 UBool strncmpStyle, UBool codePointOrder);
 
-/**
- * Internal API, used by u_strcasecmp() etc.
- * Compare strings case-insensitively,
- * in code point order or code unit order.
- */
-U_CFUNC int32_t
-u_strcmpFold(const UChar *s1, int32_t length1,
-             const UChar *s2, int32_t length2,
-             uint32_t options,
-             UErrorCode *pErrorCode);
-
-/**
- * Interanl API, used for detecting length of
- * shared prefix case-insensitively.
- * @param s1            input string 1
- * @param length1       length of string 1, or -1 (NULL terminated)
- * @param s2            input string 2
- * @param length2       length of string 2, or -1 (NULL terminated)
- * @param options       compare options
- * @param matchLen1     (output) length of partial prefix match in s1
- * @param matchLen2     (output) length of partial prefix match in s2
- * @param pErrorCode    receives error status
- */
-U_CAPI void
-u_caseInsensitivePrefixMatch(const UChar *s1, int32_t length1,
-                             const UChar *s2, int32_t length2,
-                             uint32_t options,
-                             int32_t *matchLen1, int32_t *matchLen2,
-                             UErrorCode *pErrorCode);
-
-/**
- * Are the Unicode properties loaded?
- * This must be used before internal functions are called that do
- * not perform this check.
- * Generate a debug assertion failure if data is not loaded.
- */
-U_CFUNC UBool
-uprv_haveProperties(UErrorCode *pErrorCode);
-
-/**
-  * Load the Unicode property data.
-  * Intended primarily for use from u_init().
-  * Has no effect if property data is already loaded.
-  * NOT thread safe.
-  */
-/*U_CFUNC int8_t
-uprv_loadPropsData(UErrorCode *errorCode);*/
-
-/*
- * Internal string casing functions implementing
- * ustring.h/ustrcase.c and UnicodeString case mapping functions.
- */
-
-struct UCaseMap {
-    const UCaseProps *csp;
-#if !UCONFIG_NO_BREAK_ITERATION
-    UBreakIterator *iter;  /* We adopt the iterator, so we own it. */
-#endif
-    char locale[32];
-    int32_t locCache;
-    uint32_t options;
-};
-
-#ifndef __UCASEMAP_H__
-typedef struct UCaseMap UCaseMap;
-#endif
-
-#if UCONFIG_NO_BREAK_ITERATION
-#   define UCASEMAP_INITIALIZER { NULL, { 0 }, 0, 0 }
-#else
-#   define UCASEMAP_INITIALIZER { NULL, NULL, { 0 }, 0, 0 }
-#endif
-
-U_CFUNC void
-ustrcase_setTempCaseMapLocale(UCaseMap *csm, const char *locale);
-
-#ifndef U_STRING_CASE_MAPPER_DEFINED
-#define U_STRING_CASE_MAPPER_DEFINED
-
-/**
- * String case mapping function type, used by ustrcase_map().
- * All error checking must be done.
- * The UCaseMap must be fully initialized, with locale and/or iter set as needed.
- * src and dest must not overlap.
- */
-typedef int32_t U_CALLCONV
-UStringCaseMapper(const UCaseMap *csm,
-                  UChar *dest, int32_t destCapacity,
-                  const UChar *src, int32_t srcLength,
-                  UErrorCode *pErrorCode);
-
-#endif
-
-/** Implements UStringCaseMapper. */
-U_CFUNC int32_t U_CALLCONV
-ustrcase_internalToLower(const UCaseMap *csm,
-                         UChar *dest, int32_t destCapacity,
-                         const UChar *src, int32_t srcLength,
-                         UErrorCode *pErrorCode);
-
-/** Implements UStringCaseMapper. */
-U_CFUNC int32_t U_CALLCONV
-ustrcase_internalToUpper(const UCaseMap *csm,
-                         UChar *dest, int32_t destCapacity,
-                         const UChar *src, int32_t srcLength,
-                         UErrorCode *pErrorCode);
-
-#if !UCONFIG_NO_BREAK_ITERATION
-
-/** Implements UStringCaseMapper. */
-U_CFUNC int32_t U_CALLCONV
-ustrcase_internalToTitle(const UCaseMap *csm,
-                         UChar *dest, int32_t destCapacity,
-                         const UChar *src, int32_t srcLength,
-                         UErrorCode *pErrorCode);
-
-#endif
-
-/** Implements UStringCaseMapper. */
-U_CFUNC int32_t U_CALLCONV
-ustrcase_internalFold(const UCaseMap *csm,
-                      UChar *dest, int32_t destCapacity,
-                      const UChar *src, int32_t srcLength,
-                      UErrorCode *pErrorCode);
-
-/**
- * Implements argument checking and buffer handling
- * for string case mapping as a common function.
- */
-U_CFUNC int32_t
-ustrcase_map(const UCaseMap *csm,
-             UChar *dest, int32_t destCapacity,
-             const UChar *src, int32_t srcLength,
-             UStringCaseMapper *stringCaseMapper,
-             UErrorCode *pErrorCode);
-
-/**
- * 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.
- * src and dest must not overlap.
- */
-typedef int32_t U_CALLCONV
-UTF8CaseMapper(const UCaseMap *csm,
-               uint8_t *dest, int32_t destCapacity,
-               const uint8_t *src, int32_t srcLength,
-               UErrorCode *pErrorCode);
-
-/** Implements UTF8CaseMapper. */
-U_CFUNC int32_t U_CALLCONV
-ucasemap_internalUTF8ToTitle(const UCaseMap *csm,
-         uint8_t *dest, int32_t destCapacity,
-         const uint8_t *src, int32_t srcLength,
-         UErrorCode *pErrorCode);
-
-/**
- * Implements argument checking and buffer handling
- * for UTF-8 string case mapping as a common function.
- */
-U_CFUNC int32_t
-ucasemap_mapUTF8(const UCaseMap *csm,
-                 uint8_t *dest, int32_t destCapacity,
-                 const uint8_t *src, int32_t srcLength,
-                 UTF8CaseMapper *stringCaseMapper,
-                 UErrorCode *pErrorCode);
-
-#ifdef __cplusplus
-
-U_NAMESPACE_BEGIN
-namespace GreekUpper {
-
-// Data bits.
-static const uint32_t UPPER_MASK = 0x3ff;
-static const uint32_t HAS_VOWEL = 0x1000;
-static const uint32_t HAS_YPOGEGRAMMENI = 0x2000;
-static const uint32_t HAS_ACCENT = 0x4000;
-static const uint32_t HAS_DIALYTIKA = 0x8000;
-// Further bits during data building and processing, not stored in the data map.
-static const uint32_t HAS_COMBINING_DIALYTIKA = 0x10000;
-static const uint32_t HAS_OTHER_GREEK_DIACRITIC = 0x20000;
-
-static const uint32_t HAS_VOWEL_AND_ACCENT = HAS_VOWEL | HAS_ACCENT;
-static const uint32_t HAS_VOWEL_AND_ACCENT_AND_DIALYTIKA =
-        HAS_VOWEL_AND_ACCENT | HAS_DIALYTIKA;
-static const uint32_t HAS_EITHER_DIALYTIKA = HAS_DIALYTIKA | HAS_COMBINING_DIALYTIKA;
-
-// State bits.
-static const uint32_t AFTER_CASED = 1;
-static const uint32_t AFTER_VOWEL_WITH_ACCENT = 2;
-
-uint32_t getLetterData(UChar32 c);
-
-/**
- * Returns a non-zero value for each of the Greek combining diacritics
- * listed in The Unicode Standard, version 8, chapter 7.2 Greek,
- * plus some perispomeni look-alikes.
- */
-uint32_t getDiacriticData(UChar32 c);
-
-}  // namespace GreekUpper
-U_NAMESPACE_END
-
-#endif  // __cplusplus
-
 U_CAPI int32_t U_EXPORT2 
 ustr_hashUCharsN(const UChar *str, int32_t length);
 
index 6380877..0b2ba02 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ustr_titlecase_brkiter.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #if !UCONFIG_NO_BREAK_ITERATION
 
 #include "unicode/brkiter.h"
+#include "unicode/casemap.h"
+#include "unicode/localpointer.h"
 #include "unicode/ubrk.h"
 #include "unicode/ucasemap.h"
 #include "cmemory.h"
 #include "ucase.h"
-#include "ustr_imp.h"
+#include "ucasemap_imp.h"
 
-/* functions available in the common library (for unistr_case.cpp) */
+U_NAMESPACE_USE
 
-/*
- * Set parameters on an empty UCaseMap, for UCaseMap-less API functions.
- * Do this fast because it is called with every function call.
- * Duplicate of the same function in ustrcase.cpp, to keep it inline.
- */
-static inline void
-setTempCaseMap(UCaseMap *csm, const char *locale) {
-    if(csm->csp==NULL) {
-        csm->csp=ucase_getSingleton();
-    }
-    if(locale!=NULL && locale[0]==0) {
-        csm->locale[0]=0;
-    } else {
-        ustrcase_setTempCaseMapLocale(csm, locale);
-    }
-}
+/* functions available in the common library (for unistr_case.cpp) */
 
 /* public API functions */
 
@@ -55,39 +42,73 @@ u_strToTitle(UChar *dest, int32_t destCapacity,
              UBreakIterator *titleIter,
              const char *locale,
              UErrorCode *pErrorCode) {
-    UCaseMap csm=UCASEMAP_INITIALIZER;
-    setTempCaseMap(&csm, locale);
+    LocalPointer<BreakIterator> ownedIter;
+    BreakIterator *iter;
     if(titleIter!=NULL) {
-        ubrk_setText(csm.iter=titleIter, src, srcLength, pErrorCode);
+        iter=reinterpret_cast<BreakIterator *>(titleIter);
     } else {
-        csm.iter=ubrk_open(UBRK_WORD, csm.locale, src, srcLength, pErrorCode);
+        iter=BreakIterator::createWordInstance(Locale(locale), *pErrorCode);
+        ownedIter.adoptInstead(iter);
+    }
+    if(U_FAILURE(*pErrorCode)) {
+        return 0;
     }
-    int32_t length=ustrcase_map(
-        &csm,
+    UnicodeString s(srcLength<0, src, srcLength);
+    iter->setText(s);
+    return ustrcase_mapWithOverlap(
+        ustrcase_getCaseLocale(locale), 0, iter,
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalToTitle, pErrorCode);
-    if(titleIter==NULL && csm.iter!=NULL) {
-        ubrk_close(csm.iter);
+        ustrcase_internalToTitle, *pErrorCode);
+}
+
+U_NAMESPACE_BEGIN
+
+int32_t CaseMap::toTitle(
+        const char *locale, uint32_t options, BreakIterator *iter,
+        const UChar *src, int32_t srcLength,
+        UChar *dest, int32_t destCapacity, Edits *edits,
+        UErrorCode &errorCode) {
+    LocalPointer<BreakIterator> ownedIter;
+    if(iter==NULL) {
+        iter=BreakIterator::createWordInstance(Locale(locale), errorCode);
+        ownedIter.adoptInstead(iter);
+    }
+    if(U_FAILURE(errorCode)) {
+        return 0;
     }
-    return length;
+    UnicodeString s(srcLength<0, src, srcLength);
+    iter->setText(s);
+    return ustrcase_map(
+        ustrcase_getCaseLocale(locale), options, iter,
+        dest, destCapacity,
+        src, srcLength,
+        ustrcase_internalToTitle, edits, errorCode);
 }
 
+U_NAMESPACE_END
+
 U_CAPI int32_t U_EXPORT2
 ucasemap_toTitle(UCaseMap *csm,
                  UChar *dest, int32_t destCapacity,
                  const UChar *src, int32_t srcLength,
                  UErrorCode *pErrorCode) {
-    if(csm->iter!=NULL) {
-        ubrk_setText(csm->iter, src, srcLength, pErrorCode);
-    } else {
-        csm->iter=ubrk_open(UBRK_WORD, csm->locale, src, srcLength, pErrorCode);
+    if (U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if (csm->iter == NULL) {
+        csm->iter = BreakIterator::createWordInstance(Locale(csm->locale), *pErrorCode);
+    }
+    if (U_FAILURE(*pErrorCode)) {
+        return 0;
     }
+    UnicodeString s(srcLength<0, src, srcLength);
+    csm->iter->setText(s);
     return ustrcase_map(
-        csm,
+        csm->caseLocale, csm->options, csm->iter,
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalToTitle, pErrorCode);
+        ustrcase_internalToTitle, NULL, *pErrorCode);
 }
 
 #endif  // !UCONFIG_NO_BREAK_ITERATION
index 59a5869..e720549 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ustr_wcs.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -254,7 +254,7 @@ u_strToWCS(wchar_t *dest,
         srcLength = u_strlen(src);
     }
     if(0 < srcLength && srcLength <= destCapacity){
-        u_memcpy(dest, src, srcLength);
+        u_memcpy((UChar *)dest, src, srcLength);
     }
     if(pDestLength){
        *pDestLength = srcLength;
@@ -509,7 +509,7 @@ u_strFromWCS(UChar   *dest,
         srcLength = u_strlen((const UChar *)src);
     }
     if(0 < srcLength && srcLength <= destCapacity){
-        u_memcpy(dest, src, srcLength);
+        u_memcpy(dest, (const UChar *)src, srcLength);
     }
     if(pDestLength){
        *pDestLength = srcLength;
index 8f594ec..b12e7a7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ustrcase.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -22,6 +22,8 @@
 
 #include "unicode/utypes.h"
 #include "unicode/brkiter.h"
+#include "unicode/casemap.h"
+#include "unicode/edits.h"
 #include "unicode/ustring.h"
 #include "unicode/ucasemap.h"
 #include "unicode/ubrk.h"
 #include "unicode/utf16.h"
 #include "cmemory.h"
 #include "ucase.h"
+#include "ucasemap_imp.h"
 #include "ustr_imp.h"
 #include "uassert.h"
 
+U_NAMESPACE_BEGIN
+
+namespace {
+
+int32_t checkOverflowAndEditsError(int32_t destIndex, int32_t destCapacity,
+                                   Edits *edits, UErrorCode &errorCode) {
+    if (U_SUCCESS(errorCode)) {
+        if (destIndex > destCapacity) {
+            errorCode = U_BUFFER_OVERFLOW_ERROR;
+        } else if (edits != NULL) {
+            edits->copyErrorTo(errorCode);
+        }
+    }
+    return destIndex;
+}
+
+}  // namespace
+
+U_NAMESPACE_END
+
 U_NAMESPACE_USE
 
 /* string casing ------------------------------------------------------------ */
@@ -39,21 +62,43 @@ U_NAMESPACE_USE
 /* Appends a full case mapping result, see UCASE_MAX_STRING_LENGTH. */
 static inline int32_t
 appendResult(UChar *dest, int32_t destIndex, int32_t destCapacity,
-             int32_t result, const UChar *s) {
+             int32_t result, const UChar *s,
+             int32_t cpLength, uint32_t options, icu::Edits *edits) {
     UChar32 c;
     int32_t length;
 
     /* decode the result */
     if(result<0) {
         /* (not) original code point */
+        if(edits!=NULL) {
+            edits->addUnchanged(cpLength);
+            if(options & UCASEMAP_OMIT_UNCHANGED_TEXT) {
+                return destIndex;
+            }
+        }
         c=~result;
-        length=U16_LENGTH(c);
-    } else if(result<=UCASE_MAX_STRING_LENGTH) {
-        c=U_SENTINEL;
-        length=result;
+        if(destIndex<destCapacity && c<=0xffff) {  // BMP slightly-fastpath
+            dest[destIndex++]=(UChar)c;
+            return destIndex;
+        }
+        length=cpLength;
     } else {
-        c=result;
-        length=U16_LENGTH(c);
+        if(result<=UCASE_MAX_STRING_LENGTH) {
+            c=U_SENTINEL;
+            length=result;
+        } else if(destIndex<destCapacity && result<=0xffff) {  // BMP slightly-fastpath
+            dest[destIndex++]=(UChar)result;
+            if(edits!=NULL) {
+                edits->addReplace(cpLength, 1);
+            }
+            return destIndex;
+        } else {
+            c=result;
+            length=U16_LENGTH(c);
+        }
+        if(edits!=NULL) {
+            edits->addReplace(cpLength, length);
+        }
     }
     if(length>(INT32_MAX-destIndex)) {
         return -1;  // integer overflow
@@ -99,9 +144,15 @@ appendUChar(UChar *dest, int32_t destIndex, int32_t destCapacity, UChar c) {
 }
 
 static inline int32_t
-appendString(UChar *dest, int32_t destIndex, int32_t destCapacity,
-             const UChar *s, int32_t length) {
+appendUnchanged(UChar *dest, int32_t destIndex, int32_t destCapacity,
+                const UChar *s, int32_t length, uint32_t options, icu::Edits *edits) {
     if(length>0) {
+        if(edits!=NULL) {
+            edits->addUnchanged(length);
+            if(options & UCASEMAP_OMIT_UNCHANGED_TEXT) {
+                return destIndex;
+            }
+        }
         if(length>(INT32_MAX-destIndex)) {
             return -1;  // integer overflow
         }
@@ -150,84 +201,66 @@ utf16_caseContextIterator(void *context, int8_t dir) {
  * context [0..srcLength[ into account.
  */
 static int32_t
-_caseMap(const UCaseMap *csm, UCaseMapFull *map,
+_caseMap(int32_t caseLocale, uint32_t options, UCaseMapFull *map,
          UChar *dest, int32_t destCapacity,
          const UChar *src, UCaseContext *csc,
          int32_t srcStart, int32_t srcLimit,
-         UErrorCode *pErrorCode) {
-    const UChar *s;
-    UChar32 c, c2 = 0;
-    int32_t srcIndex, destIndex;
-    int32_t locCache;
-
-    locCache=csm->locCache;
-
+         icu::Edits *edits,
+         UErrorCode &errorCode) {
     /* case mapping loop */
-    srcIndex=srcStart;
-    destIndex=0;
+    int32_t srcIndex=srcStart;
+    int32_t destIndex=0;
     while(srcIndex<srcLimit) {
-        csc->cpStart=srcIndex;
+        int32_t cpStart;
+        csc->cpStart=cpStart=srcIndex;
+        UChar32 c;
         U16_NEXT(src, srcIndex, srcLimit, c);
         csc->cpLimit=srcIndex;
-        c=map(csm->csp, c, utf16_caseContextIterator, csc, &s, csm->locale, &locCache);
-        if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0xffff : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0xffff)) {
-            /* fast path version of appendResult() for BMP results */
-            dest[destIndex++]=(UChar)c2;
-        } else {
-            destIndex=appendResult(dest, destIndex, destCapacity, c, s);
-            if(destIndex<0) {
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                return 0;
-            }
+        const UChar *s;
+        c=map(c, utf16_caseContextIterator, csc, &s, caseLocale);
+        destIndex = appendResult(dest, destIndex, destCapacity, c, s,
+                                 srcIndex - cpStart, options, edits);
+        if (destIndex < 0) {
+            errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
+            return 0;
         }
     }
 
-    if(destIndex>destCapacity) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
     return destIndex;
 }
 
 #if !UCONFIG_NO_BREAK_ITERATION
 
 U_CFUNC int32_t U_CALLCONV
-ustrcase_internalToTitle(const UCaseMap *csm,
+ustrcase_internalToTitle(int32_t caseLocale, uint32_t options, BreakIterator *iter,
                          UChar *dest, int32_t destCapacity,
                          const UChar *src, int32_t srcLength,
-                         UErrorCode *pErrorCode) {
-    const UChar *s;
-    UChar32 c;
-    int32_t prev, titleStart, titleLimit, idx, destIndex;
-    UBool isFirstIndex;
-
-    if(U_FAILURE(*pErrorCode)) {
+                         icu::Edits *edits,
+                         UErrorCode &errorCode) {
+    if(U_FAILURE(errorCode)) {
         return 0;
     }
 
-    // Use the C++ abstract base class to minimize dependencies.
-    // TODO: Change UCaseMap.iter to store a BreakIterator directly.
-    BreakIterator *bi=reinterpret_cast<BreakIterator *>(csm->iter);
-
     /* set up local variables */
-    int32_t locCache=csm->locCache;
     UCaseContext csc=UCASECONTEXT_INITIALIZER;
     csc.p=(void *)src;
     csc.limit=srcLength;
-    destIndex=0;
-    prev=0;
-    isFirstIndex=TRUE;
+    int32_t destIndex=0;
+    int32_t prev=0;
+    UBool isFirstIndex=TRUE;
 
     /* titlecasing loop */
     while(prev<srcLength) {
         /* find next index where to titlecase */
+        int32_t index;
         if(isFirstIndex) {
             isFirstIndex=FALSE;
-            idx=bi->first();
+            index=iter->first();
         } else {
-            idx=bi->next();
+            index=iter->next();
         }
-        if(idx==UBRK_DONE || idx>srcLength) {
-            idx=srcLength;
+        if(index==UBRK_DONE || index>srcLength) {
+            index=srcLength;
         }
 
         /*
@@ -243,29 +276,32 @@ ustrcase_internalToTitle(const UCaseMap *csm,
          * b) first case letter (titlecase)         [titleStart..titleLimit[
          * c) subsequent characters (lowercase)                 [titleLimit..index[
          */
-        if(prev<idx) {
+        if(prev<index) {
             /* find and copy uncased characters [prev..titleStart[ */
-            titleStart=titleLimit=prev;
-            U16_NEXT(src, titleLimit, idx, c);
-            if((csm->options&U_TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCASE_NONE==ucase_getType(csm->csp, c)) {
+            int32_t titleStart=prev;
+            int32_t titleLimit=prev;
+            UChar32 c;
+            U16_NEXT(src, titleLimit, index, c);
+            if((options&U_TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCASE_NONE==ucase_getType(c)) {
                 /* Adjust the titlecasing index (titleStart) to the next cased character. */
                 for(;;) {
                     titleStart=titleLimit;
-                    if(titleLimit==idx) {
+                    if(titleLimit==index) {
                         /*
                          * only uncased characters in [prev..index[
                          * stop with titleStart==titleLimit==index
                          */
                         break;
                     }
-                    U16_NEXT(src, titleLimit, idx, c);
-                    if(UCASE_NONE!=ucase_getType(csm->csp, c)) {
+                    U16_NEXT(src, titleLimit, index, c);
+                    if(UCASE_NONE!=ucase_getType(c)) {
                         break; /* cased letter at [titleStart..titleLimit[ */
                     }
                 }
-                destIndex=appendString(dest, destIndex, destCapacity, src+prev, titleStart-prev);
+                destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                          src+prev, titleStart-prev, options, edits);
                 if(destIndex<0) {
-                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
             }
@@ -274,48 +310,64 @@ ustrcase_internalToTitle(const UCaseMap *csm,
                 /* titlecase c which is from [titleStart..titleLimit[ */
                 csc.cpStart=titleStart;
                 csc.cpLimit=titleLimit;
-                c=ucase_toFullTitle(csm->csp, c, utf16_caseContextIterator, &csc, &s, csm->locale, &locCache);
-                destIndex=appendResult(dest, destIndex, destCapacity, c, s); 
+                const UChar *s;
+                c=ucase_toFullTitle(c, utf16_caseContextIterator, &csc, &s, caseLocale);
+                destIndex=appendResult(dest, destIndex, destCapacity, c, s,
+                                       titleLimit-titleStart, options, edits);
                 if(destIndex<0) {
-                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
 
                 /* Special case Dutch IJ titlecasing */
-                if (titleStart+1 < idx &&
-                        ucase_getCaseLocale(csm->locale,&locCache) == UCASE_LOC_DUTCH &&
-                        (src[titleStart] == 0x0049 || src[titleStart] == 0x0069) &&
-                        (src[titleStart+1] == 0x004A || src[titleStart+1] == 0x006A)) {
-                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x004A);
-                    if(destIndex<0) {
-                        *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                        return 0;
+                if (titleStart+1 < index &&
+                        caseLocale == UCASE_LOC_DUTCH &&
+                        (src[titleStart] == 0x0049 || src[titleStart] == 0x0069)) {
+                    if (src[titleStart+1] == 0x006A) {
+                        destIndex=appendUChar(dest, destIndex, destCapacity, 0x004A);
+                        if(destIndex<0) {
+                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                            return 0;
+                        }
+                        if(edits!=NULL) {
+                            edits->addReplace(1, 1);
+                        }
+                        titleLimit++;
+                    } else if (src[titleStart+1] == 0x004A) {
+                        // Keep the capital J from getting lowercased.
+                        destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                                  src+titleStart+1, 1, options, edits);
+                        if(destIndex<0) {
+                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                            return 0;
+                        }
+                        titleLimit++;
                     }
-                    titleLimit++;
                 }
 
                 /* lowercase [titleLimit..index[ */
-                if(titleLimit<idx) {
-                    if((csm->options&U_TITLECASE_NO_LOWERCASE)==0) {
+                if(titleLimit<index) {
+                    if((options&U_TITLECASE_NO_LOWERCASE)==0) {
                         /* Normal operation: Lowercase the rest of the word. */
                         destIndex+=
                             _caseMap(
-                                csm, ucase_toFullLower,
+                                caseLocale, options, ucase_toFullLower,
                                 dest+destIndex, destCapacity-destIndex,
                                 src, &csc,
-                                titleLimit, idx,
-                                pErrorCode);
-                        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
-                            *pErrorCode=U_ZERO_ERROR;
+                                titleLimit, index,
+                                edits, errorCode);
+                        if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
+                            errorCode=U_ZERO_ERROR;
                         }
-                        if(U_FAILURE(*pErrorCode)) {
+                        if(U_FAILURE(errorCode)) {
                             return destIndex;
                         }
                     } else {
                         /* Optionally just copy the rest of the word unchanged. */
-                        destIndex=appendString(dest, destIndex, destCapacity, src+titleLimit, idx-titleLimit);
+                        destIndex=appendUnchanged(dest, destIndex, destCapacity,
+                                                  src+titleLimit, index-titleLimit, options, edits);
                         if(destIndex<0) {
-                            *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                             return 0;
                         }
                     }
@@ -323,13 +375,10 @@ ustrcase_internalToTitle(const UCaseMap *csm,
             }
         }
 
-        prev=idx;
+        prev=index;
     }
 
-    if(destIndex>destCapacity) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-    return destIndex;
+    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
 }
 
 #endif  // !UCONFIG_NO_BREAK_ITERATION
@@ -791,11 +840,11 @@ uint32_t getDiacriticData(UChar32 c) {
     }
 }
 
-UBool isFollowedByCasedLetter(const UCaseProps *csp, const UChar *s, int32_t i, int32_t length) {
+UBool isFollowedByCasedLetter(const UChar *s, int32_t i, int32_t length) {
     while (i < length) {
         UChar32 c;
         U16_NEXT(s, i, length, c);
-        int32_t type = ucase_getTypeOrIgnorable(csp, c);
+        int32_t type = ucase_getTypeOrIgnorable(c);
         if ((type & UCASE_IGNORABLE) != 0) {
             // Case-ignorable, continue with the loop.
         } else if (type != UCASE_NONE) {
@@ -813,11 +862,11 @@ UBool isFollowedByCasedLetter(const UCaseProps *csp, const UChar *s, int32_t i,
  * for each character.
  * TODO: Try to re-consolidate one way or another with the non-Greek function.
  */
-int32_t toUpper(const UCaseMap *csm,
+int32_t toUpper(uint32_t options,
                 UChar *dest, int32_t destCapacity,
                 const UChar *src, int32_t srcLength,
-                UErrorCode *pErrorCode) {
-    int32_t locCache = UCASE_LOC_GREEK;
+                Edits *edits,
+                UErrorCode &errorCode) {
     int32_t destIndex=0;
     uint32_t state = 0;
     for (int32_t i = 0; i < srcLength;) {
@@ -825,7 +874,7 @@ int32_t toUpper(const UCaseMap *csm,
         UChar32 c;
         U16_NEXT(src, nextIndex, srcLength, c);
         uint32_t nextState = 0;
-        int32_t type = ucase_getTypeOrIgnorable(csm->csp, c);
+        int32_t type = ucase_getTypeOrIgnorable(c);
         if ((type & UCASE_IGNORABLE) != 0) {
             // c is case-ignorable
             nextState |= (state & AFTER_CASED);
@@ -872,7 +921,7 @@ int32_t toUpper(const UCaseMap *csm,
                     (data & HAS_ACCENT) != 0 &&
                     numYpogegrammeni == 0 &&
                     (state & AFTER_CASED) == 0 &&
-                    !isFollowedByCasedLetter(csm->csp, src, nextIndex, srcLength)) {
+                    !isFollowedByCasedLetter(src, nextIndex, srcLength)) {
                 // Keep disjunctive "or" with (only) a tonos.
                 // We use the same "word boundary" conditions as for the Final_Sigma test.
                 if (i == nextIndex) {
@@ -890,43 +939,67 @@ int32_t toUpper(const UCaseMap *csm,
                     data &= ~HAS_EITHER_DIALYTIKA;
                 }
             }
-            destIndex=appendUChar(dest, destIndex, destCapacity, (UChar)upper);
-            if (destIndex >= 0 && (data & HAS_EITHER_DIALYTIKA) != 0) {
-                destIndex=appendUChar(dest, destIndex, destCapacity, 0x308);  // restore or add a dialytika
-            }
-            if (destIndex >= 0 && addTonos) {
-                destIndex=appendUChar(dest, destIndex, destCapacity, 0x301);
-            }
-            while (destIndex >= 0 && numYpogegrammeni > 0) {
-                destIndex=appendUChar(dest, destIndex, destCapacity, 0x399);
-                --numYpogegrammeni;
-            }
-            if(destIndex<0) {
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                return 0;
+
+            UBool change = TRUE;
+            if (edits != NULL) {
+                // Find out first whether we are changing the text.
+                change = src[i] != upper || numYpogegrammeni > 0;
+                int32_t i2 = i + 1;
+                if ((data & HAS_EITHER_DIALYTIKA) != 0) {
+                    change |= i2 >= nextIndex || src[i2] != 0x308;
+                    ++i2;
+                }
+                if (addTonos) {
+                    change |= i2 >= nextIndex || src[i2] != 0x301;
+                    ++i2;
+                }
+                int32_t oldLength = nextIndex - i;
+                int32_t newLength = (i2 - i) + numYpogegrammeni;
+                change |= oldLength != newLength;
+                if (change) {
+                    if (edits != NULL) {
+                        edits->addReplace(oldLength, newLength);
+                    }
+                } else {
+                    if (edits != NULL) {
+                        edits->addUnchanged(oldLength);
+                    }
+                    // Write unchanged text?
+                    change = (options & UCASEMAP_OMIT_UNCHANGED_TEXT) == 0;
+                }
             }
-        } else {
-            const UChar *s;
-            UChar32 c2 = 0;
-            c=ucase_toFullUpper(csm->csp, c, NULL, NULL, &s, csm->locale, &locCache);
-            if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0xffff : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0xffff)) {
-                /* fast path version of appendResult() for BMP results */
-                dest[destIndex++]=(UChar)c2;
-            } else {
-                destIndex=appendResult(dest, destIndex, destCapacity, c, s);
+
+            if (change) {
+                destIndex=appendUChar(dest, destIndex, destCapacity, (UChar)upper);
+                if (destIndex >= 0 && (data & HAS_EITHER_DIALYTIKA) != 0) {
+                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x308);  // restore or add a dialytika
+                }
+                if (destIndex >= 0 && addTonos) {
+                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x301);
+                }
+                while (destIndex >= 0 && numYpogegrammeni > 0) {
+                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x399);
+                    --numYpogegrammeni;
+                }
                 if(destIndex<0) {
-                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
             }
+        } else {
+            const UChar *s;
+            c=ucase_toFullUpper(c, NULL, NULL, &s, UCASE_LOC_GREEK);
+            destIndex = appendResult(dest, destIndex, destCapacity, c, s,
+                                     nextIndex - i, options, edits);
+            if (destIndex < 0) {
+                errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
+                return 0;
+            }
         }
         i = nextIndex;
         state = nextState;
     }
 
-    if(destIndex>destCapacity) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
     return destIndex;
 }
 
@@ -936,94 +1009,128 @@ U_NAMESPACE_END
 /* functions available in the common library (for unistr_case.cpp) */
 
 U_CFUNC int32_t U_CALLCONV
-ustrcase_internalToLower(const UCaseMap *csm,
+ustrcase_internalToLower(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
                          UChar *dest, int32_t destCapacity,
                          const UChar *src, int32_t srcLength,
-                         UErrorCode *pErrorCode) {
+                         icu::Edits *edits,
+                         UErrorCode &errorCode) {
     UCaseContext csc=UCASECONTEXT_INITIALIZER;
     csc.p=(void *)src;
     csc.limit=srcLength;
-    return _caseMap(
-        csm, ucase_toFullLower,
+    int32_t destIndex = _caseMap(
+        caseLocale, options, ucase_toFullLower,
         dest, destCapacity,
         src, &csc, 0, srcLength,
-        pErrorCode);
+        edits, errorCode);
+    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
 }
 
 U_CFUNC int32_t U_CALLCONV
-ustrcase_internalToUpper(const UCaseMap *csm,
+ustrcase_internalToUpper(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
                          UChar *dest, int32_t destCapacity,
                          const UChar *src, int32_t srcLength,
-                         UErrorCode *pErrorCode) {
-    int32_t locCache = csm->locCache;
-    if (ucase_getCaseLocale(csm->locale, &locCache) == UCASE_LOC_GREEK) {
-        return GreekUpper::toUpper(csm, dest, destCapacity, src, srcLength, pErrorCode);
+                         icu::Edits *edits,
+                         UErrorCode &errorCode) {
+    int32_t destIndex;
+    if (caseLocale == UCASE_LOC_GREEK) {
+        destIndex = GreekUpper::toUpper(options, dest, destCapacity,
+                                        src, srcLength, edits, errorCode);
+    } else {
+        UCaseContext csc=UCASECONTEXT_INITIALIZER;
+        csc.p=(void *)src;
+        csc.limit=srcLength;
+        destIndex = _caseMap(
+            caseLocale, options, ucase_toFullUpper,
+            dest, destCapacity,
+            src, &csc, 0, srcLength,
+            edits, errorCode);
     }
-    UCaseContext csc=UCASECONTEXT_INITIALIZER;
-    csc.p=(void *)src;
-    csc.limit=srcLength;
-    return _caseMap(
-        csm, ucase_toFullUpper,
-        dest, destCapacity,
-        src, &csc, 0, srcLength,
-        pErrorCode);
+    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
 }
 
-static int32_t
-ustr_foldCase(const UCaseProps *csp,
-              UChar *dest, int32_t destCapacity,
-              const UChar *src, int32_t srcLength,
-              uint32_t options,
-              UErrorCode *pErrorCode) {
-    int32_t srcIndex, destIndex;
-
-    const UChar *s;
-    UChar32 c, c2 = 0;
-
+U_CFUNC int32_t U_CALLCONV
+ustrcase_internalFold(int32_t /* caseLocale */, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
+                      UChar *dest, int32_t destCapacity,
+                      const UChar *src, int32_t srcLength,
+                      icu::Edits *edits,
+                      UErrorCode &errorCode) {
     /* case mapping loop */
-    srcIndex=destIndex=0;
-    while(srcIndex<srcLength) {
+    int32_t srcIndex = 0;
+    int32_t destIndex = 0;
+    while (srcIndex < srcLength) {
+        int32_t cpStart = srcIndex;
+        UChar32 c;
         U16_NEXT(src, srcIndex, srcLength, c);
-        c=ucase_toFullFolding(csp, c, &s, options);
-        if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0xffff : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0xffff)) {
-            /* fast path version of appendResult() for BMP results */
-            dest[destIndex++]=(UChar)c2;
-        } else {
-            destIndex=appendResult(dest, destIndex, destCapacity, c, s);
-            if(destIndex<0) {
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                return 0;
-            }
+        const UChar *s;
+        c = ucase_toFullFolding(c, &s, options);
+        destIndex = appendResult(dest, destIndex, destCapacity, c, s,
+                                 srcIndex - cpStart, options, edits);
+        if (destIndex < 0) {
+            errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
+            return 0;
         }
     }
 
-    if(destIndex>destCapacity) {
-        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-    }
-    return destIndex;
-}
-
-U_CFUNC int32_t U_CALLCONV
-ustrcase_internalFold(const UCaseMap *csm,
-                      UChar *dest, int32_t destCapacity,
-                      const UChar *src, int32_t srcLength,
-                      UErrorCode *pErrorCode) {
-    return ustr_foldCase(csm->csp, dest, destCapacity, src, srcLength, csm->options, pErrorCode);
+    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
 }
 
 U_CFUNC int32_t
-ustrcase_map(const UCaseMap *csm,
+ustrcase_map(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
              UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              UStringCaseMapper *stringCaseMapper,
-             UErrorCode *pErrorCode) {
+             icu::Edits *edits,
+             UErrorCode &errorCode) {
+    int32_t destLength;
+
+    /* check argument values */
+    if(U_FAILURE(errorCode)) {
+        return 0;
+    }
+    if( destCapacity<0 ||
+        (dest==NULL && destCapacity>0) ||
+        src==NULL ||
+        srcLength<-1
+    ) {
+        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* get the string length */
+    if(srcLength==-1) {
+        srcLength=u_strlen(src);
+    }
+
+    /* check for overlapping source and destination */
+    if( dest!=NULL &&
+        ((src>=dest && src<(dest+destCapacity)) ||
+         (dest>=src && dest<(src+srcLength)))
+    ) {
+        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    if(edits!=NULL) {
+        edits->reset();
+    }
+    destLength=stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
+                                dest, destCapacity, src, srcLength, edits, errorCode);
+    return u_terminateUChars(dest, destCapacity, destLength, &errorCode);
+}
+
+U_CFUNC int32_t
+ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
+                        UChar *dest, int32_t destCapacity,
+                        const UChar *src, int32_t srcLength,
+                        UStringCaseMapper *stringCaseMapper,
+                        UErrorCode &errorCode) {
     UChar buffer[300];
     UChar *temp;
 
     int32_t destLength;
 
     /* check argument values */
-    if(U_FAILURE(*pErrorCode)) {
+    if(U_FAILURE(errorCode)) {
         return 0;
     }
     if( destCapacity<0 ||
@@ -1031,7 +1138,7 @@ ustrcase_map(const UCaseMap *csm,
         src==NULL ||
         srcLength<-1
     ) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
 
@@ -1053,7 +1160,7 @@ ustrcase_map(const UCaseMap *csm,
             /* allocate a buffer */
             temp=(UChar *)uprv_malloc(destCapacity*U_SIZEOF_UCHAR);
             if(temp==NULL) {
-                *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+                errorCode=U_MEMORY_ALLOCATION_ERROR;
                 return 0;
             }
         }
@@ -1061,21 +1168,19 @@ ustrcase_map(const UCaseMap *csm,
         temp=dest;
     }
 
-    destLength=stringCaseMapper(csm, temp, destCapacity, src, srcLength, pErrorCode);
+    destLength=stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
+                                temp, destCapacity, src, srcLength, NULL, errorCode);
     if(temp!=dest) {
         /* copy the result string to the destination buffer */
-        if(destLength>0) {
-            int32_t copyLength= destLength<=destCapacity ? destLength : destCapacity;
-            if(copyLength>0) {
-                u_memmove(dest, temp, copyLength);
-            }
+        if (U_SUCCESS(errorCode) && 0 < destLength && destLength <= destCapacity) {
+            u_memmove(dest, temp, destLength);
         }
         if(temp!=buffer) {
             uprv_free(temp);
         }
     }
 
-    return u_terminateUChars(dest, destCapacity, destLength, pErrorCode);
+    return u_terminateUChars(dest, destCapacity, destLength, &errorCode);
 }
 
 /* public API functions */
@@ -1085,16 +1190,29 @@ u_strFoldCase(UChar *dest, int32_t destCapacity,
               const UChar *src, int32_t srcLength,
               uint32_t options,
               UErrorCode *pErrorCode) {
-    UCaseMap csm=UCASEMAP_INITIALIZER;
-    csm.csp=ucase_getSingleton();
-    csm.options=options;
+    return ustrcase_mapWithOverlap(
+        UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL
+        dest, destCapacity,
+        src, srcLength,
+        ustrcase_internalFold, *pErrorCode);
+}
+
+U_NAMESPACE_BEGIN
+
+int32_t CaseMap::fold(
+        uint32_t options,
+        const UChar *src, int32_t srcLength,
+        UChar *dest, int32_t destCapacity, Edits *edits,
+        UErrorCode &errorCode) {
     return ustrcase_map(
-        &csm,
+        UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalFold, pErrorCode);
+        ustrcase_internalFold, edits, errorCode);
 }
 
+U_NAMESPACE_END
+
 /* case-insensitive string comparisons -------------------------------------- */
 
 /*
@@ -1134,8 +1252,6 @@ static int32_t _cmpFold(
             UErrorCode *pErrorCode) {
     int32_t cmpRes = 0;
 
-    const UCaseProps *csp;
-
     /* current-level start/limit - s1/s2 as current */
     const UChar *start1, *start2, *limit1, *limit2;
 
@@ -1167,7 +1283,6 @@ static int32_t _cmpFold(
      * assume that at least the option U_COMPARE_IGNORE_CASE is set
      * otherwise this function would have to behave exactly as uprv_strCompare()
      */
-    csp=ucase_getSingleton();
     if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
@@ -1349,7 +1464,7 @@ static int32_t _cmpFold(
          */
 
         if( level1==0 &&
-            (length=ucase_toFullFolding(csp, (UChar32)cp1, &p, options))>=0
+            (length=ucase_toFullFolding((UChar32)cp1, &p, options))>=0
         ) {
             /* cp1 case-folds to the code point "length" or to p[length] */
             if(U_IS_SURROGATE(c1)) {
@@ -1395,7 +1510,7 @@ static int32_t _cmpFold(
         }
 
         if( level2==0 &&
-            (length=ucase_toFullFolding(csp, (UChar32)cp2, &p, options))>=0
+            (length=ucase_toFullFolding((UChar32)cp2, &p, options))>=0
         ) {
             /* cp2 case-folds to the code point "length" or to p[length] */
             if(U_IS_SURROGATE(c2)) {
index 78f4bbd..2ecd24f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ustrcase_locale.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 */
 
 #include "unicode/utypes.h"
+#include "uassert.h"
+#include "unicode/brkiter.h"
+#include "unicode/casemap.h"
 #include "unicode/ucasemap.h"
 #include "unicode/uloc.h"
 #include "unicode/ustring.h"
 #include "ucase.h"
-#include "ustr_imp.h"
+#include "ucasemap_imp.h"
 
-U_CFUNC void
-ustrcase_setTempCaseMapLocale(UCaseMap *csm, const char *locale) {
-    /*
-     * We could call ucasemap_setLocale(), but here we really only care about
-     * the initial language subtag, we need not return the real string via
-     * ucasemap_getLocale(), and we don't care about only getting "x" from
-     * "x-some-thing" etc.
-     *
-     * We ignore locales with a longer-than-3 initial subtag.
-     *
-     * We also do not fill in the locCache because it is rarely used,
-     * and not worth setting unless we reuse it for many case mapping operations.
-     * (That's why UCaseMap was created.)
-     */
-    int i;
-    char c;
-
-    /* the internal functions require locale!=NULL */
-    if(locale==NULL) {
-        // Do not call uprv_getDefaultLocaleID() because that does not see
-        // changes to the default locale via uloc_setDefault().
-        // It would also be inefficient if used frequently because uprv_getDefaultLocaleID()
-        // does not cache the locale ID.
-        //
-        // Unfortunately, uloc_getDefault() has many dependencies.
-        // We only care about a small set of language subtags,
-        // and we do not need the locale ID to be canonicalized.
-        //
-        // Best is to not call case mapping functions with a NULL locale ID.
-        locale=uloc_getDefault();
-    }
-    for(i=0; i<4 && (c=locale[i])!=0 && c!='-' && c!='_'; ++i) {
-        csm->locale[i]=c;
-    }
-    if(i<=3) {
-        csm->locale[i]=0;  /* Up to 3 non-separator characters. */
-    } else {
-        csm->locale[0]=0;  /* Longer-than-3 initial subtag: Ignore. */
-    }
-}
-
-/*
- * Set parameters on an empty UCaseMap, for UCaseMap-less API functions.
- * Do this fast because it is called with every function call.
- */
-static inline void
-setTempCaseMap(UCaseMap *csm, const char *locale) {
-    if(csm->csp==NULL) {
-        csm->csp=ucase_getSingleton();
+U_CFUNC int32_t
+ustrcase_getCaseLocale(const char *locale) {
+    if (locale == NULL) {
+        locale = uloc_getDefault();
     }
-    if(locale!=NULL && locale[0]==0) {
-        csm->locale[0]=0;
+    if (*locale == 0) {
+        return UCASE_LOC_ROOT;
     } else {
-        ustrcase_setTempCaseMapLocale(csm, locale);
+        return ucase_getCaseLocale(locale);
     }
 }
 
@@ -88,13 +46,11 @@ u_strToLower(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
              UErrorCode *pErrorCode) {
-    UCaseMap csm=UCASEMAP_INITIALIZER;
-    setTempCaseMap(&csm, locale);
-    return ustrcase_map(
-        &csm,
+    return ustrcase_mapWithOverlap(
+        ustrcase_getCaseLocale(locale), 0, UCASEMAP_BREAK_ITERATOR_NULL
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalToLower, pErrorCode);
+        ustrcase_internalToLower, *pErrorCode);
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -102,11 +58,37 @@ u_strToUpper(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
              UErrorCode *pErrorCode) {
-    UCaseMap csm=UCASEMAP_INITIALIZER;
-    setTempCaseMap(&csm, locale);
+    return ustrcase_mapWithOverlap(
+        ustrcase_getCaseLocale(locale), 0, UCASEMAP_BREAK_ITERATOR_NULL
+        dest, destCapacity,
+        src, srcLength,
+        ustrcase_internalToUpper, *pErrorCode);
+}
+
+U_NAMESPACE_BEGIN
+
+int32_t CaseMap::toLower(
+        const char *locale, uint32_t options,
+        const UChar *src, int32_t srcLength,
+        UChar *dest, int32_t destCapacity, Edits *edits,
+        UErrorCode &errorCode) {
+    return ustrcase_map(
+        ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
+        dest, destCapacity,
+        src, srcLength,
+        ustrcase_internalToLower, edits, errorCode);
+}
+
+int32_t CaseMap::toUpper(
+        const char *locale, uint32_t options,
+        const UChar *src, int32_t srcLength,
+        UChar *dest, int32_t destCapacity, Edits *edits,
+        UErrorCode &errorCode) {
     return ustrcase_map(
-        &csm,
+        ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalToUpper, pErrorCode);
+        ustrcase_internalToUpper, edits, errorCode);
 }
+
+U_NAMESPACE_END
index df73264..ed23eaa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c893cd1..a82162e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/ustrfmt.c b/source/common/ustrfmt.c
deleted file mode 100644 (file)
index c7805d8..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-**********************************************************************
-*   Copyright (C) 2001-2006, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*/
-
-#include "cstring.h"
-#include "ustrfmt.h"
-
-
-/***
- * Fills in a UChar* string with the radix-based representation of a
- * uint32_t number padded with zeroes to minwidth.  The result
- * will be null terminated if there is room.
- *
- * @param buffer UChar buffer to receive result
- * @param capacity capacity of buffer
- * @param i the unsigned number to be formatted
- * @param radix the radix from 2..36
- * @param minwidth the minimum width.  If the result is narrower than
- *        this, '0's will be added on the left.  Must be <=
- *        capacity.
- * @return the length of the result, not including any terminating
- *        null
- */
-U_CAPI int32_t U_EXPORT2
-uprv_itou (UChar * buffer, int32_t capacity,
-           uint32_t i, uint32_t radix, int32_t minwidth)
-{
-    int32_t length = 0;
-    int digit;
-    int32_t j;
-    UChar temp;
-
-    do{
-        digit = (int)(i % radix);
-        buffer[length++]=(UChar)(digit<=9?(0x0030+digit):(0x0030+digit+7));
-        i=i/radix;
-    } while(i && length<capacity);
-
-    while (length < minwidth){
-        buffer[length++] = (UChar) 0x0030;/*zero padding */
-    }
-    /* null terminate the buffer */
-    if(length<capacity){
-        buffer[length] = (UChar) 0x0000;
-    }
-
-    /* Reverses the string */
-    for (j = 0; j < (length / 2); j++){
-        temp = buffer[(length-1) - j];
-        buffer[(length-1) - j] = buffer[j];
-        buffer[j] = temp;
-    }
-    return length;
-}
index 3cc3d69..53eb055 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index aae7f5c..6450ea2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -19,6 +19,7 @@
 
 #include "unicode/utypes.h"
 #include "unicode/putil.h"
+#include "unicode/uchar.h"
 #include "unicode/ustring.h"
 #include "unicode/utf16.h"
 #include "cstring.h"
index 2867aaa..a468287 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index a89e7a6..52ae7ff 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utext.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -847,9 +847,15 @@ U_CDECL_END
 //------------------------------------------------------------------------------
 
 // Chunk size.
-//     Must be less than 85, because of byte mapping from UChar indexes to native indexes.
-//     Worst case is three native bytes to one UChar.  (Supplemenaries are 4 native bytes
-//     to two UChars.)
+//     Must be less than 42  (256/6), because of byte mapping from UChar indexes to native indexes.
+//     Worst case there are six UTF-8 bytes per UChar.
+//         obsolete 6 byte form fd + 5 trails maps to fffd
+//         obsolete 5 byte form fc + 4 trails maps to fffd
+//         non-shortest 4 byte forms maps to fffd
+//         normal supplementaries map to a pair of utf-16, two utf8 bytes per utf-16 unit
+//     mapToUChars array size must allow for the worst case, 6.
+//     This could be brought down to 4, by treating fd and fc as pure illegal,
+//     rather than obsolete lead bytes. But that is not compatible with the utf-8 access macros.
 //
 enum { UTF8_TEXT_CHUNK_SIZE=32 };
 
@@ -889,7 +895,7 @@ struct UTF8Buf {
                                                      //  Requires two extra slots,
                                                      //    one for a supplementary starting in the last normal position,
                                                      //    and one for an entry for the buffer limit position.
-    uint8_t   mapToUChars[UTF8_TEXT_CHUNK_SIZE*3+6]; // Map native offset from bufNativeStart to
+    uint8_t   mapToUChars[UTF8_TEXT_CHUNK_SIZE*6+6]; // Map native offset from bufNativeStart to
                                                      //   correspoding offset in filled part of buf.
     int32_t   align;
 };
@@ -1032,6 +1038,7 @@ utf8TextAccess(UText *ut, int64_t index, UBool forward) {
             // Requested index is in this buffer.
             u8b = (UTF8Buf *)ut->p;   // the current buffer
             mapIndex = ix - u8b->toUCharsMapStart;
+            U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
             ut->chunkOffset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
             return TRUE;
 
@@ -1298,6 +1305,10 @@ fillReverse:
         // Can only do this if the incoming index is somewhere in the interior of the string.
         //   If index is at the end, there is no character there to look at.
         if (ix != ut->b) {
+            // Note: this function will only move the index back if it is on a trail byte
+            //       and there is a preceding lead byte and the sequence from the lead 
+            //       through this trail could be part of a valid UTF-8 sequence
+            //       Otherwise the index remains unchanged.
             U8_SET_CP_START(s8, 0, ix);
         }
 
@@ -1311,7 +1322,10 @@ fillReverse:
         UChar   *buf = u8b->buf;
         uint8_t *mapToNative = u8b->mapToNative;
         uint8_t *mapToUChars = u8b->mapToUChars;
-        int32_t  toUCharsMapStart = ix - (UTF8_TEXT_CHUNK_SIZE*3 + 1);
+        int32_t  toUCharsMapStart = ix - sizeof(UTF8Buf::mapToUChars) + 1;
+        // Note that toUCharsMapStart can be negative. Happens when the remaining
+        // text from current position to the beginning is less than the buffer size.
+        // + 1 because mapToUChars must have a slot at the end for the bufNativeLimit entry.
         int32_t  destIx = UTF8_TEXT_CHUNK_SIZE+2;   // Start in the overflow region
                                                     //   at end of buffer to leave room
                                                     //   for a surrogate pair at the
@@ -1338,6 +1352,7 @@ fillReverse:
             if (c<0x80) {
                 // Special case ASCII range for speed.
                 buf[destIx] = (UChar)c;
+                U_ASSERT(toUCharsMapStart <= srcIx);
                 mapToUChars[srcIx - toUCharsMapStart] = (uint8_t)destIx;
                 mapToNative[destIx] = (uint8_t)(srcIx - toUCharsMapStart);
             } else {
@@ -1367,6 +1382,7 @@ fillReverse:
                 do {
                     mapToUChars[sIx-- - toUCharsMapStart] = (uint8_t)destIx;
                 } while (sIx >= srcIx);
+                U_ASSERT(toUCharsMapStart <= (srcIx+1));
 
                 // Set native indexing limit to be the current position.
                 //   We are processing a non-ascii, non-native-indexing char now;
@@ -1541,6 +1557,7 @@ utf8TextMapIndexToUTF16(const UText *ut, int64_t index64) {
     U_ASSERT(index>=ut->chunkNativeStart+ut->nativeIndexingLimit);
     U_ASSERT(index<=ut->chunkNativeLimit);
     int32_t mapIndex = index - u8b->toUCharsMapStart;
+    U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
     int32_t offset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
     U_ASSERT(offset>=0 && offset<=ut->chunkLength);
     return offset;
@@ -2225,13 +2242,13 @@ unistrTextCopy(UText *ut,
     }
 
     if(move) {
-        // move: copy to destIndex, then replace original with nothing
+        // move: copy to destIndex, then remove original
         int32_t segLength=limit32-start32;
         us->copy(start32, limit32, destIndex32);
         if(destIndex32<start32) {
             start32+=segLength;
         }
-        us->replace(start32, segLength, NULL, 0);
+        us->remove(start32, segLength);
     } else {
         // copy
         us->copy(start32, limit32, destIndex32);
diff --git a/source/common/utf_impl.c b/source/common/utf_impl.c
deleted file mode 100644 (file)
index c4c8812..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1999-2012, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*   file name:  utf_impl.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 1999sep13
-*   created by: Markus W. Scherer
-*
-*   This file provides implementation functions for macros in the utfXX.h
-*   that would otherwise be too long as macros.
-*/
-
-/* set import/export definitions */
-#ifndef U_UTF8_IMPL
-#   define U_UTF8_IMPL
-#endif
-
-#include "unicode/utypes.h"
-#include "unicode/utf.h"
-#include "unicode/utf8.h"
-#include "unicode/utf_old.h"
-#include "uassert.h"
-
-/*
- * This table could be replaced on many machines by
- * a few lines of assembler code using an
- * "index of first 0-bit from msb" instruction and
- * one or two more integer instructions.
- *
- * For example, on an i386, do something like
- * - MOV AL, leadByte
- * - NOT AL         (8-bit, leave b15..b8==0..0, reverse only b7..b0)
- * - MOV AH, 0
- * - BSR BX, AX     (16-bit)
- * - MOV AX, 6      (result)
- * - JZ finish      (ZF==1 if leadByte==0xff)
- * - SUB AX, BX (result)
- * -finish:
- * (BSR: Bit Scan Reverse, scans for a 1-bit, starting from the MSB)
- *
- * In Unicode, all UTF-8 byte sequences with more than 4 bytes are illegal;
- * lead bytes above 0xf4 are illegal.
- * We keep them in this table for skipping long ISO 10646-UTF-8 sequences.
- */
-U_EXPORT const uint8_t 
-utf8_countTrailBytes[256]={
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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,
-    3, 3, 3, 3, 3,
-    3, 3, 3,    /* illegal in Unicode */
-    4, 4, 4, 4, /* illegal in Unicode */
-    5, 5,       /* illegal in Unicode */
-    0, 0        /* illegal bytes 0xfe and 0xff */
-};
-
-static const UChar32
-utf8_minLegal[4]={ 0, 0x80, 0x800, 0x10000 };
-
-static const UChar32
-utf8_errorValue[6]={
-    UTF8_ERROR_VALUE_1, UTF8_ERROR_VALUE_2, UTF_ERROR_VALUE, 0x10ffff,
-    0x3ffffff, 0x7fffffff
-};
-
-static UChar32
-errorValue(int32_t count, int8_t strict) {
-    if(strict>=0) {
-        return utf8_errorValue[count];
-    } else if(strict==-3) {
-        return 0xfffd;
-    } else {
-        return U_SENTINEL;
-    }
-}
-
-/*
- * Handle the non-inline part of the U8_NEXT() and U8_NEXT_FFFD() macros
- * and their obsolete sibling UTF8_NEXT_CHAR_SAFE().
- *
- * U8_NEXT() supports NUL-terminated strings indicated via length<0.
- *
- * The "strict" parameter controls the error behavior:
- * <0  "Safe" behavior of U8_NEXT():
- *     -1: All illegal byte sequences yield U_SENTINEL=-1.
- *     -2: Same as -1, except for lenient treatment of surrogate code points as legal.
- *         Some implementations use this for roundtripping of
- *         Unicode 16-bit strings that are not well-formed UTF-16, that is, they
- *         contain unpaired surrogates.
- *     -3: All illegal byte sequences yield U+FFFD.
- *  0  Obsolete "safe" behavior of UTF8_NEXT_CHAR_SAFE(..., FALSE):
- *     All illegal byte sequences yield a positive code point such that this
- *     result code point would be encoded with the same number of bytes as
- *     the illegal sequence.
- * >0  Obsolete "strict" behavior of UTF8_NEXT_CHAR_SAFE(..., TRUE):
- *     Same as the obsolete "safe" behavior, but non-characters are also treated
- *     like illegal sequences.
- *
- * Note that a UBool is the same as an int8_t.
- */
-U_CAPI UChar32 U_EXPORT2
-utf8_nextCharSafeBody(const uint8_t *s, int32_t *pi, int32_t length, UChar32 c, UBool strict) {
-    int32_t i=*pi;
-    uint8_t count=U8_COUNT_TRAIL_BYTES(c);
-    U_ASSERT(count <= 5); /* U8_COUNT_TRAIL_BYTES returns value 0...5 */
-    if(i+count<=length || length<0) {
-        uint8_t trail;
-
-        U8_MASK_LEAD_BYTE(c, count);
-        /* support NUL-terminated strings: do not read beyond the first non-trail byte */
-        switch(count) {
-        /* each branch falls through to the next one */
-        case 0:
-            /* count==0 for illegally leading trail bytes and the illegal bytes 0xfe and 0xff */
-        case 5:
-        case 4:
-            /* count>=4 is always illegal: no more than 3 trail bytes in Unicode's UTF-8 */
-            break;
-        case 3:
-            trail=s[i++]-0x80;
-            c=(c<<6)|trail;
-            /* c>=0x110 would result in code point>0x10ffff, outside Unicode */
-            if(c>=0x110 || trail>0x3f) { break; }
-        case 2:
-            trail=s[i++]-0x80;
-            c=(c<<6)|trail;
-            /*
-             * test for a surrogate d800..dfff unless we are lenient:
-             * before the last (c<<6), a surrogate is c=360..37f
-             */
-            if(((c&0xffe0)==0x360 && strict!=-2) || trail>0x3f) { break; }
-        case 1:
-            trail=s[i++]-0x80;
-            c=(c<<6)|trail;
-            if(trail>0x3f) { break; }
-            /* correct sequence - all trail bytes have (b7..b6)==(10) */
-            if(c>=utf8_minLegal[count] &&
-                    /* strict: forbid non-characters like U+fffe */
-                    (strict<=0 || !U_IS_UNICODE_NONCHAR(c))) {
-                *pi=i;
-                return c;
-            }
-        /* no default branch to optimize switch()  - all values are covered */
-        }
-    } else {
-        /* too few bytes left */
-        count=length-i;
-    }
-
-    /* error handling */
-    i=*pi;
-    while(count>0 && U8_IS_TRAIL(s[i])) {
-        ++i;
-        --count;
-    }
-    c=errorValue(i-*pi, strict);
-    *pi=i;
-    return c;
-}
-
-U_CAPI int32_t U_EXPORT2
-utf8_appendCharSafeBody(uint8_t *s, int32_t i, int32_t length, UChar32 c, UBool *pIsError) {
-    if((uint32_t)(c)<=0x7ff) {
-        if((i)+1<(length)) {
-            (s)[(i)++]=(uint8_t)(((c)>>6)|0xc0);
-            (s)[(i)++]=(uint8_t)(((c)&0x3f)|0x80);
-            return i;
-        }
-    } else if((uint32_t)(c)<=0xffff) {
-        /* Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8. */
-        if((i)+2<(length) && !U_IS_SURROGATE(c)) {
-            (s)[(i)++]=(uint8_t)(((c)>>12)|0xe0);
-            (s)[(i)++]=(uint8_t)((((c)>>6)&0x3f)|0x80);
-            (s)[(i)++]=(uint8_t)(((c)&0x3f)|0x80);
-            return i;
-        }
-    } else if((uint32_t)(c)<=0x10ffff) {
-        if((i)+3<(length)) {
-            (s)[(i)++]=(uint8_t)(((c)>>18)|0xf0);
-            (s)[(i)++]=(uint8_t)((((c)>>12)&0x3f)|0x80);
-            (s)[(i)++]=(uint8_t)((((c)>>6)&0x3f)|0x80);
-            (s)[(i)++]=(uint8_t)(((c)&0x3f)|0x80);
-            return i;
-        }
-    }
-    /* c>0x10ffff or not enough space, write an error value */
-    if(pIsError!=NULL) {
-        *pIsError=TRUE;
-    } else {
-        length-=i;
-        if(length>0) {
-            int32_t offset;
-            if(length>3) {
-                length=3;
-            }
-            s+=i;
-            offset=0;
-            c=utf8_errorValue[length-1];
-            UTF8_APPEND_CHAR_UNSAFE(s, offset, c);
-            i=i+offset;
-        }
-    }
-    return i;
-}
-
-U_CAPI UChar32 U_EXPORT2
-utf8_prevCharSafeBody(const uint8_t *s, int32_t start, int32_t *pi, UChar32 c, UBool strict) {
-    int32_t i=*pi;
-    uint8_t b, count=1, shift=6;
-
-    if(!U8_IS_TRAIL(c)) { return errorValue(0, strict); }
-
-    /* extract value bits from the last trail byte */
-    c&=0x3f;
-
-    for(;;) {
-        if(i<=start) {
-            /* no lead byte at all */
-            return errorValue(0, strict);
-        }
-
-        /* read another previous byte */
-        b=s[--i];
-        if((uint8_t)(b-0x80)<0x7e) { /* 0x80<=b<0xfe */
-            if(b&0x40) {
-                /* lead byte, this will always end the loop */
-                uint8_t shouldCount=U8_COUNT_TRAIL_BYTES(b);
-
-                if(count==shouldCount) {
-                    /* set the new position */
-                    *pi=i;
-                    U8_MASK_LEAD_BYTE(b, count);
-                    c|=(UChar32)b<<shift;
-                    if(count>=4 || c>0x10ffff || c<utf8_minLegal[count] || (U_IS_SURROGATE(c) && strict!=-2) || (strict>0 && U_IS_UNICODE_NONCHAR(c))) {
-                        /* illegal sequence or (strict and non-character) */
-                        if(count>=4) {
-                            count=3;
-                        }
-                        c=errorValue(count, strict);
-                    } else {
-                        /* exit with correct c */
-                    }
-                } else {
-                    /* the lead byte does not match the number of trail bytes */
-                    /* only set the position to the lead byte if it would
-                       include the trail byte that we started with */
-                    if(count<shouldCount) {
-                        *pi=i;
-                        c=errorValue(count, strict);
-                    } else {
-                        c=errorValue(0, strict);
-                    }
-                }
-                break;
-            } else if(count<5) {
-                /* trail byte */
-                c|=(UChar32)(b&0x3f)<<shift;
-                ++count;
-                shift+=6;
-            } else {
-                /* more than 5 trail bytes is illegal */
-                c=errorValue(0, strict);
-                break;
-            }
-        } else {
-            /* single-byte character precedes trailing bytes */
-            c=errorValue(0, strict);
-            break;
-        }
-    }
-    return c;
-}
-
-U_CAPI int32_t U_EXPORT2
-utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i) {
-    /* i had been decremented once before the function call */
-    int32_t I=i, Z;
-    uint8_t b;
-
-    /* read at most the 6 bytes s[Z] to s[i], inclusively */
-    if(I-5>start) {
-        Z=I-5;
-    } else {
-        Z=start;
-    }
-
-    /* return I if the sequence starting there is long enough to include i */
-    do {
-        b=s[I];
-        if((uint8_t)(b-0x80)>=0x7e) { /* not 0x80<=b<0xfe */
-            break;
-        } else if(b>=0xc0) {
-            if(U8_COUNT_TRAIL_BYTES(b)>=(i-I)) {
-                return I;
-            } else {
-                break;
-            }
-        }
-    } while(Z<=--I);
-
-    /* return i itself to be consistent with the FWD_1 macro */
-    return i;
-}
index 1b77110..a762cc4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 57f1bb0..e782249 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index a88d581..95a112b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/utrace.c b/source/common/utrace.c
deleted file mode 100644 (file)
index ca4dddf..0000000
+++ /dev/null
@@ -1,490 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*   Copyright (C) 2003-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*******************************************************************************
-*   file name:  utrace.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*/
-
-#define   UTRACE_IMPL
-#include "unicode/utrace.h"
-#include "utracimp.h"
-#include "cstring.h"
-#include "uassert.h"
-#include "ucln_cmn.h"
-
-
-static UTraceEntry     *pTraceEntryFunc = NULL;
-static UTraceExit      *pTraceExitFunc  = NULL;
-static UTraceData      *pTraceDataFunc  = NULL;
-static const void      *gTraceContext   = NULL;
-
-U_EXPORT int32_t
-utrace_level = UTRACE_ERROR;
-
-U_CAPI void U_EXPORT2
-utrace_entry(int32_t fnNumber) {
-    if (pTraceEntryFunc != NULL) {
-        (*pTraceEntryFunc)(gTraceContext, fnNumber);
-    }
-}
-
-
-static const char gExitFmt[]             = "Returns.";
-static const char gExitFmtValue[]        = "Returns %d.";
-static const char gExitFmtStatus[]       = "Returns.  Status = %d.";
-static const char gExitFmtValueStatus[]  = "Returns %d.  Status = %d.";
-static const char gExitFmtPtrStatus[]    = "Returns %d.  Status = %p.";
-
-U_CAPI void U_EXPORT2
-utrace_exit(int32_t fnNumber, int32_t returnType, ...) {
-    if (pTraceExitFunc != NULL) {
-        va_list     args;
-        const char *fmt;
-
-        switch (returnType) {
-        case 0:
-            fmt = gExitFmt;
-            break;
-        case UTRACE_EXITV_I32:
-            fmt = gExitFmtValue;
-            break;
-        case UTRACE_EXITV_STATUS:
-            fmt = gExitFmtStatus;
-            break;
-        case UTRACE_EXITV_I32 | UTRACE_EXITV_STATUS:
-            fmt = gExitFmtValueStatus;
-            break;
-        case UTRACE_EXITV_PTR | UTRACE_EXITV_STATUS:
-            fmt = gExitFmtPtrStatus;
-            break;
-        default:
-            U_ASSERT(FALSE);
-            fmt = gExitFmt;
-        }
-
-        va_start(args, returnType);
-        (*pTraceExitFunc)(gTraceContext, fnNumber, fmt, args);
-        va_end(args);
-    }
-}
-
-U_CAPI void U_EXPORT2 
-utrace_data(int32_t fnNumber, int32_t level, const char *fmt, ...) {
-    if (pTraceDataFunc != NULL) {
-           va_list args;
-           va_start(args, fmt ); 
-           (*pTraceDataFunc)(gTraceContext, fnNumber, level, fmt, args);
-           va_end(args);
-    }
-}
-
-
-static void outputChar(char c, char *outBuf, int32_t *outIx, int32_t capacity, int32_t indent) {
-    int32_t i;
-    /* Check whether a start of line indenting is needed.  Three cases:
-     *   1.  At the start of the first line  (output index == 0).
-     *   2.  At the start of subsequent lines  (preceeding char in buffer == '\n')
-     *   3.  When preflighting buffer len (buffer capacity is exceeded), when
-     *       a \n is output.  Ideally we wouldn't do the indent until the following char
-     *       is received, but that won't work because there's no place to remember that
-     *       the preceding char was \n.  Meaning that we may overstimate the
-     *       buffer size needed.  No harm done.
-     */
-    if (*outIx==0 ||   /* case 1. */
-        (c!='\n' && c!=0 && *outIx < capacity && outBuf[(*outIx)-1]=='\n') ||  /* case 2. */
-        (c=='\n' && *outIx>=capacity))    /* case 3 */
-    {
-        /* At the start of a line.  Indent. */
-        for(i=0; i<indent; i++) {
-            if (*outIx < capacity) {
-                outBuf[*outIx] = ' ';
-            }
-            (*outIx)++;
-        }
-    }
-
-    if (*outIx < capacity) {
-        outBuf[*outIx] = c;
-    }
-    if (c != 0) {
-        /* Nulls only appear as end-of-string terminators.  Move them to the output
-         *  buffer, but do not update the length of the buffer, so that any
-         *  following output will overwrite the null. */
-        (*outIx)++;
-    }
-}
-
-static void outputHexBytes(int64_t val, int32_t charsToOutput,
-                           char *outBuf, int32_t *outIx, int32_t capacity) {
-    static const char gHexChars[] = "0123456789abcdef";
-    int32_t shiftCount;
-    for  (shiftCount=(charsToOutput-1)*4; shiftCount >= 0; shiftCount-=4) {
-        char c = gHexChars[(val >> shiftCount) & 0xf];
-        outputChar(c, outBuf, outIx, capacity, 0);
-    }
-}
-
-/* Output a pointer value in hex.  Work with any size of pointer   */
-static void outputPtrBytes(void *val, char *outBuf, int32_t *outIx, int32_t capacity) {
-    int32_t  i;
-    int32_t  incVal = 1;              /* +1 for big endian, -1 for little endian          */
-    char     *p     = (char *)&val;   /* point to current byte to output in the ptr val  */
-
-#if !U_IS_BIG_ENDIAN
-    /* Little Endian.  Move p to most significant end of the value      */
-    incVal = -1;
-    p += sizeof(void *) - 1;
-#endif
-
-    /* Loop through the bytes of the ptr as it sits in memory, from 
-     * most significant to least significant end                    */
-    for (i=0; i<sizeof(void *); i++) {
-        outputHexBytes(*p, 2, outBuf, outIx, capacity);
-        p += incVal;
-    }
-}
-
-static void outputString(const char *s, char *outBuf, int32_t *outIx, int32_t capacity, int32_t indent) {
-    int32_t i = 0;
-    char    c;
-    if (s==NULL) {
-        s = "*NULL*";
-    }
-    do {
-        c = s[i++];
-        outputChar(c, outBuf, outIx, capacity, indent);
-    } while (c != 0);
-}
-        
-
-
-static void outputUString(const UChar *s, int32_t len, 
-                          char *outBuf, int32_t *outIx, int32_t capacity, int32_t indent) {
-    int32_t i = 0;
-    UChar   c;
-    if (s==NULL) {
-        outputString(NULL, outBuf, outIx, capacity, indent);
-        return;
-    }
-
-    for (i=0; i<len || len==-1; i++) {
-        c = s[i];
-        outputHexBytes(c, 4, outBuf, outIx, capacity);
-        outputChar(' ', outBuf, outIx, capacity, indent);
-        if (len == -1 && c==0) {
-            break;
-        }
-    }
-}
-        
-U_CAPI int32_t U_EXPORT2
-utrace_vformat(char *outBuf, int32_t capacity, int32_t indent, const char *fmt, va_list args) {
-    int32_t   outIx  = 0;
-    int32_t   fmtIx  = 0;
-    char      fmtC;
-    char      c;
-    int32_t   intArg;
-    int64_t   longArg = 0;
-    char      *ptrArg;
-
-    /*   Loop runs once for each character in the format string.
-     */
-    for (;;) {
-        fmtC = fmt[fmtIx++];
-        if (fmtC != '%') {
-            /* Literal character, not part of a %sequence.  Just copy it to the output. */
-            outputChar(fmtC, outBuf, &outIx, capacity, indent);
-            if (fmtC == 0) {
-                /* We hit the null that terminates the format string.
-                 * This is the normal (and only) exit from the loop that
-                 * interprets the format
-                 */
-                break;
-            }
-            continue;
-        }
-
-        /* We encountered a '%'.  Pick up the following format char */
-        fmtC = fmt[fmtIx++];
-
-        switch (fmtC) {
-        case 'c':
-            /* single 8 bit char   */
-            c = (char)va_arg(args, int32_t);
-            outputChar(c, outBuf, &outIx, capacity, indent);
-            break;
-
-        case 's':
-            /* char * string, null terminated.  */
-            ptrArg = va_arg(args, char *);
-            outputString((const char *)ptrArg, outBuf, &outIx, capacity, indent);
-            break;
-
-        case 'S':
-            /* UChar * string, with length, len==-1 for null terminated. */
-            ptrArg = va_arg(args, void *);             /* Ptr    */
-            intArg =(int32_t)va_arg(args, int32_t);    /* Length */
-            outputUString((const UChar *)ptrArg, intArg, outBuf, &outIx, capacity, indent);
-            break;
-
-        case 'b':
-            /*  8 bit int  */
-            intArg = va_arg(args, int);
-            outputHexBytes(intArg, 2, outBuf, &outIx, capacity);
-            break;
-
-        case 'h':
-            /*  16 bit int  */
-            intArg = va_arg(args, int);
-            outputHexBytes(intArg, 4, outBuf, &outIx, capacity);
-            break;
-
-        case 'd':
-            /*  32 bit int  */
-            intArg = va_arg(args, int);
-            outputHexBytes(intArg, 8, outBuf, &outIx, capacity);
-            break;
-
-        case 'l':
-            /*  64 bit long  */
-            longArg = va_arg(args, int64_t);
-            outputHexBytes(longArg, 16, outBuf, &outIx, capacity);
-            break;
-            
-        case 'p':
-            /*  Pointers.   */
-            ptrArg = va_arg(args, void *);
-            outputPtrBytes(ptrArg, outBuf, &outIx, capacity);
-            break;
-
-        case 0:
-            /* Single '%' at end of fmt string.  Output as literal '%'.   
-             * Back up index into format string so that the terminating null will be
-             * re-fetched in the outer loop, causing it to terminate.
-             */
-            outputChar('%', outBuf, &outIx, capacity, indent);
-            fmtIx--;
-            break;
-
-        case 'v':
-            {
-                /* Vector of values, e.g. %vh */
-                char     vectorType;
-                int32_t  vectorLen;
-                const char   *i8Ptr;
-                int16_t  *i16Ptr;
-                int32_t  *i32Ptr;
-                int64_t  *i64Ptr;
-                void     **ptrPtr;
-                int32_t   charsToOutput = 0;
-                int32_t   i;
-                
-                vectorType = fmt[fmtIx];    /* b, h, d, l, p, etc. */
-                if (vectorType != 0) {
-                    fmtIx++;
-                }
-                i8Ptr = (const char *)va_arg(args, void*);
-                i16Ptr = (int16_t *)i8Ptr;
-                i32Ptr = (int32_t *)i8Ptr;
-                i64Ptr = (int64_t *)i8Ptr;
-                ptrPtr = (void **)i8Ptr;
-                vectorLen =(int32_t)va_arg(args, int32_t);
-                if (ptrPtr == NULL) {
-                    outputString("*NULL* ", outBuf, &outIx, capacity, indent);
-                } else {
-                    for (i=0; i<vectorLen || vectorLen==-1; i++) { 
-                        switch (vectorType) {
-                        case 'b':
-                            charsToOutput = 2;
-                            longArg = *i8Ptr++;
-                            break;
-                        case 'h':
-                            charsToOutput = 4;
-                            longArg = *i16Ptr++;
-                            break;
-                        case 'd':
-                            charsToOutput = 8;
-                            longArg = *i32Ptr++;
-                            break;
-                        case 'l':
-                            charsToOutput = 16;
-                            longArg = *i64Ptr++;
-                            break;
-                        case 'p':
-                            charsToOutput = 0;
-                            outputPtrBytes(*ptrPtr, outBuf, &outIx, capacity);
-                            longArg = *ptrPtr==NULL? 0: 1;    /* test for null terminated array. */
-                            ptrPtr++;
-                            break;
-                        case 'c':
-                            charsToOutput = 0;
-                            outputChar(*i8Ptr, outBuf, &outIx, capacity, indent);
-                            longArg = *i8Ptr;    /* for test for null terminated array. */
-                            i8Ptr++;
-                            break;
-                        case 's':
-                            charsToOutput = 0;
-                            outputString(*ptrPtr, outBuf, &outIx, capacity, indent);
-                            outputChar('\n', outBuf, &outIx, capacity, indent);
-                            longArg = *ptrPtr==NULL? 0: 1;   /* for test for null term. array. */
-                            ptrPtr++;
-                            break;
-
-                        case 'S':
-                            charsToOutput = 0;
-                            outputUString((const UChar *)*ptrPtr, -1, outBuf, &outIx, capacity, indent);
-                            outputChar('\n', outBuf, &outIx, capacity, indent);
-                            longArg = *ptrPtr==NULL? 0: 1;   /* for test for null term. array. */
-                            ptrPtr++;
-                            break;
-
-                            
-                        }
-                        if (charsToOutput > 0) {
-                            outputHexBytes(longArg, charsToOutput, outBuf, &outIx, capacity);
-                            outputChar(' ', outBuf, &outIx, capacity, indent);
-                        }
-                        if (vectorLen == -1 && longArg == 0) {
-                            break;
-                        }
-                    }
-                }
-                outputChar('[', outBuf, &outIx, capacity, indent);
-                outputHexBytes(vectorLen, 8, outBuf, &outIx, capacity);
-                outputChar(']', outBuf, &outIx, capacity, indent);
-            }
-            break;
-
-
-        default:
-            /* %. in format string, where . is some character not in the set
-             *    of recognized format chars.  Just output it as if % wasn't there.
-             *    (Covers "%%" outputing a single '%')
-             */
-             outputChar(fmtC, outBuf, &outIx, capacity, indent);
-        }
-    }
-    outputChar(0, outBuf, &outIx, capacity, indent);  /* Make sure that output is null terminated  */
-    return outIx + 1;     /* outIx + 1 because outIx does not increment when outputing final null. */
-}
-
-
-
-
-U_CAPI int32_t U_EXPORT2
-utrace_format(char *outBuf, int32_t capacity,
-                int32_t indent, const char *fmt,  ...) {
-    int32_t retVal;
-    va_list args;
-    va_start(args, fmt ); 
-    retVal = utrace_vformat(outBuf, capacity, indent, fmt, args);
-    va_end(args);
-    return retVal;
-}
-
-
-U_CAPI void U_EXPORT2
-utrace_setFunctions(const void *context,
-                    UTraceEntry *e, UTraceExit *x, UTraceData *d) {
-    pTraceEntryFunc = e;
-    pTraceExitFunc  = x;
-    pTraceDataFunc  = d;
-    gTraceContext   = context;
-}
-
-
-U_CAPI void U_EXPORT2
-utrace_getFunctions(const void **context,
-                    UTraceEntry **e, UTraceExit **x, UTraceData **d) {
-    *e = pTraceEntryFunc;
-    *x = pTraceExitFunc;
-    *d = pTraceDataFunc;
-    *context = gTraceContext;
-}
-
-U_CAPI void U_EXPORT2
-utrace_setLevel(int32_t level) {
-    if (level < UTRACE_OFF) {
-        level = UTRACE_OFF;
-    }
-    if (level > UTRACE_VERBOSE) {
-        level = UTRACE_VERBOSE;
-    }
-    utrace_level = level;
-}
-
-U_CAPI int32_t U_EXPORT2
-utrace_getLevel() {
-    return utrace_level;
-}
-
-
-U_CFUNC UBool 
-utrace_cleanup() {
-    pTraceEntryFunc = NULL;
-    pTraceExitFunc  = NULL;
-    pTraceDataFunc  = NULL;
-    utrace_level    = UTRACE_OFF;
-    gTraceContext   = NULL;
-    return TRUE;
-}
-
-
-static const char * const
-trFnName[] = {
-    "u_init",
-    "u_cleanup",
-    NULL
-};
-
-
-static const char * const
-trConvNames[] = {
-    "ucnv_open",
-    "ucnv_openPackage",
-    "ucnv_openAlgorithmic",
-    "ucnv_clone",
-    "ucnv_close",
-    "ucnv_flushCache",
-    "ucnv_load",
-    "ucnv_unload",
-    NULL
-};
-
-    
-static const char * const
-trCollNames[] = {
-    "ucol_open",
-    "ucol_close",
-    "ucol_strcoll",
-    "ucol_getSortKey",
-    "ucol_getLocale",
-    "ucol_nextSortKeyPart",
-    "ucol_strcollIter",
-    "ucol_openFromShortString",
-    "ucol_strcollUTF8",
-    NULL
-};
-
-                
-U_CAPI const char * U_EXPORT2
-utrace_functionName(int32_t fnNumber) {
-    if(UTRACE_FUNCTION_START <= fnNumber && fnNumber < UTRACE_FUNCTION_LIMIT) {
-        return trFnName[fnNumber];
-    } else if(UTRACE_CONVERSION_START <= fnNumber && fnNumber < UTRACE_CONVERSION_LIMIT) {
-        return trConvNames[fnNumber - UTRACE_CONVERSION_START];
-    } else if(UTRACE_COLLATION_START <= fnNumber && fnNumber < UTRACE_COLLATION_LIMIT){
-        return trCollNames[fnNumber - UTRACE_COLLATION_START];
-    } else {
-        return "[BOGUS Trace Function Number]";
-    }
-}
-
index c1786f5..e8ee53f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utracimp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 
 U_CDECL_BEGIN
 
-/**
- * \var utrace_level
- * Trace level variable. Negative for "off".
- * Use only via UTRACE_ macros.
- * @internal
- */
-#ifdef UTRACE_IMPL
-U_EXPORT int32_t
-#else
-U_CFUNC U_COMMON_API int32_t
-#endif
-utrace_level;
-
-
 /** 
  *   Traced Function Exit return types.  
  *   Flags indicating the number and types of varargs included in a call
index 478560d..ecf9b1c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 17e660b..9c5382c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4bd35a9..cec7224 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie2.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 810bcfc..8e87bf8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie2.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 664051c..d8a3a06 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie2_builder.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4888363..b7dc9d3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie2_impl.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 7bc4f92..f2cff2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uts46.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b39aa0d..c666373 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -24,7 +24,7 @@
 #include <exception>
 using std::exception;
 #endif
-#if !defined(_MSC_VER)
+#if defined(__GLIBCXX__)
 namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
 #endif
 #include <typeinfo>  // for 'typeid' to work
diff --git a/source/common/utypes.c b/source/common/utypes.c
deleted file mode 100644 (file)
index c506dd4..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1997-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-*  FILE NAME : utypes.c (previously putil.c)
-*
-*   Date        Name        Description
-*   10/07/2004  grhoten     split from putil.c
-******************************************************************************
-*/
-
-#include "unicode/utypes.h"
-
-/* u_errorName() ------------------------------------------------------------ */
-
-static const char * const
-_uErrorInfoName[U_ERROR_WARNING_LIMIT-U_ERROR_WARNING_START]={
-    "U_USING_FALLBACK_WARNING",
-    "U_USING_DEFAULT_WARNING",
-    "U_SAFECLONE_ALLOCATED_WARNING",
-    "U_STATE_OLD_WARNING",
-    "U_STRING_NOT_TERMINATED_WARNING",
-    "U_SORT_KEY_TOO_SHORT_WARNING",
-    "U_AMBIGUOUS_ALIAS_WARNING",
-    "U_DIFFERENT_UCA_VERSION",
-    "U_PLUGIN_CHANGED_LEVEL_WARNING",
-};
-
-static const char * const
-_uTransErrorName[U_PARSE_ERROR_LIMIT - U_PARSE_ERROR_START]={
-    "U_BAD_VARIABLE_DEFINITION",
-    "U_MALFORMED_RULE",
-    "U_MALFORMED_SET",
-    "U_MALFORMED_SYMBOL_REFERENCE",
-    "U_MALFORMED_UNICODE_ESCAPE",
-    "U_MALFORMED_VARIABLE_DEFINITION",
-    "U_MALFORMED_VARIABLE_REFERENCE",
-    "U_MISMATCHED_SEGMENT_DELIMITERS",
-    "U_MISPLACED_ANCHOR_START",
-    "U_MISPLACED_CURSOR_OFFSET",
-    "U_MISPLACED_QUANTIFIER",
-    "U_MISSING_OPERATOR",
-    "U_MISSING_SEGMENT_CLOSE",
-    "U_MULTIPLE_ANTE_CONTEXTS",
-    "U_MULTIPLE_CURSORS",
-    "U_MULTIPLE_POST_CONTEXTS",
-    "U_TRAILING_BACKSLASH",
-    "U_UNDEFINED_SEGMENT_REFERENCE",
-    "U_UNDEFINED_VARIABLE",
-    "U_UNQUOTED_SPECIAL",
-    "U_UNTERMINATED_QUOTE",
-    "U_RULE_MASK_ERROR",
-    "U_MISPLACED_COMPOUND_FILTER",
-    "U_MULTIPLE_COMPOUND_FILTERS",
-    "U_INVALID_RBT_SYNTAX",
-    "U_INVALID_PROPERTY_PATTERN",
-    "U_MALFORMED_PRAGMA",
-    "U_UNCLOSED_SEGMENT",
-    "U_ILLEGAL_CHAR_IN_SEGMENT",
-    "U_VARIABLE_RANGE_EXHAUSTED",
-    "U_VARIABLE_RANGE_OVERLAP",
-    "U_ILLEGAL_CHARACTER",
-    "U_INTERNAL_TRANSLITERATOR_ERROR",
-    "U_INVALID_ID",
-    "U_INVALID_FUNCTION"
-};
-
-static const char * const
-_uErrorName[U_STANDARD_ERROR_LIMIT]={
-    "U_ZERO_ERROR",
-
-    "U_ILLEGAL_ARGUMENT_ERROR",
-    "U_MISSING_RESOURCE_ERROR",
-    "U_INVALID_FORMAT_ERROR",
-    "U_FILE_ACCESS_ERROR",
-    "U_INTERNAL_PROGRAM_ERROR",
-    "U_MESSAGE_PARSE_ERROR",
-    "U_MEMORY_ALLOCATION_ERROR",
-    "U_INDEX_OUTOFBOUNDS_ERROR",
-    "U_PARSE_ERROR",
-    "U_INVALID_CHAR_FOUND",
-    "U_TRUNCATED_CHAR_FOUND",
-    "U_ILLEGAL_CHAR_FOUND",
-    "U_INVALID_TABLE_FORMAT",
-    "U_INVALID_TABLE_FILE",
-    "U_BUFFER_OVERFLOW_ERROR",
-    "U_UNSUPPORTED_ERROR",
-    "U_RESOURCE_TYPE_MISMATCH",
-    "U_ILLEGAL_ESCAPE_SEQUENCE",
-    "U_UNSUPPORTED_ESCAPE_SEQUENCE",
-    "U_NO_SPACE_AVAILABLE",
-    "U_CE_NOT_FOUND_ERROR",
-    "U_PRIMARY_TOO_LONG_ERROR",
-    "U_STATE_TOO_OLD_ERROR",
-    "U_TOO_MANY_ALIASES_ERROR",
-    "U_ENUM_OUT_OF_SYNC_ERROR",
-    "U_INVARIANT_CONVERSION_ERROR",
-    "U_INVALID_STATE_ERROR",
-    "U_COLLATOR_VERSION_MISMATCH",
-    "U_USELESS_COLLATOR_ERROR",
-    "U_NO_WRITE_PERMISSION"
-};
-static const char * const
-_uFmtErrorName[U_FMT_PARSE_ERROR_LIMIT - U_FMT_PARSE_ERROR_START] = {
-    "U_UNEXPECTED_TOKEN",
-    "U_MULTIPLE_DECIMAL_SEPARATORS",
-    "U_MULTIPLE_EXPONENTIAL_SYMBOLS",
-    "U_MALFORMED_EXPONENTIAL_PATTERN",
-    "U_MULTIPLE_PERCENT_SYMBOLS",
-    "U_MULTIPLE_PERMILL_SYMBOLS",
-    "U_MULTIPLE_PAD_SPECIFIERS",
-    "U_PATTERN_SYNTAX_ERROR",
-    "U_ILLEGAL_PAD_POSITION",
-    "U_UNMATCHED_BRACES",
-    "U_UNSUPPORTED_PROPERTY",
-    "U_UNSUPPORTED_ATTRIBUTE",
-    "U_ARGUMENT_TYPE_MISMATCH",
-    "U_DUPLICATE_KEYWORD",
-    "U_UNDEFINED_KEYWORD",
-    "U_DEFAULT_KEYWORD_MISSING",
-    "U_DECIMAL_NUMBER_SYNTAX_ERROR",
-    "U_FORMAT_INEXACT_ERROR"
-};
-
-static const char * const
-_uBrkErrorName[U_BRK_ERROR_LIMIT - U_BRK_ERROR_START] = {
-    "U_BRK_INTERNAL_ERROR",
-    "U_BRK_HEX_DIGITS_EXPECTED",
-    "U_BRK_SEMICOLON_EXPECTED",
-    "U_BRK_RULE_SYNTAX",
-    "U_BRK_UNCLOSED_SET",
-    "U_BRK_ASSIGN_ERROR",
-    "U_BRK_VARIABLE_REDFINITION",
-    "U_BRK_MISMATCHED_PAREN",
-    "U_BRK_NEW_LINE_IN_QUOTED_STRING",
-    "U_BRK_UNDEFINED_VARIABLE",
-    "U_BRK_INIT_ERROR",
-    "U_BRK_RULE_EMPTY_SET",
-    "U_BRK_UNRECOGNIZED_OPTION",
-    "U_BRK_MALFORMED_RULE_TAG"
-};
-
-static const char * const
-_uRegexErrorName[U_REGEX_ERROR_LIMIT - U_REGEX_ERROR_START] = {
-    "U_REGEX_INTERNAL_ERROR",
-    "U_REGEX_RULE_SYNTAX",
-    "U_REGEX_INVALID_STATE",
-    "U_REGEX_BAD_ESCAPE_SEQUENCE",
-    "U_REGEX_PROPERTY_SYNTAX",
-    "U_REGEX_UNIMPLEMENTED",
-    "U_REGEX_MISMATCHED_PAREN",
-    "U_REGEX_NUMBER_TOO_BIG",
-    "U_REGEX_BAD_INTERVAL",
-    "U_REGEX_MAX_LT_MIN",
-    "U_REGEX_INVALID_BACK_REF",
-    "U_REGEX_INVALID_FLAG",
-    "U_REGEX_LOOK_BEHIND_LIMIT",
-    "U_REGEX_SET_CONTAINS_STRING",
-    "U_REGEX_OCTAL_TOO_BIG",
-    "U_REGEX_MISSING_CLOSE_BRACKET",
-    "U_REGEX_INVALID_RANGE",
-    "U_REGEX_STACK_OVERFLOW",
-    "U_REGEX_TIME_OUT",
-    "U_REGEX_STOPPED_BY_CALLER",
-    "U_REGEX_PATTERN_TOO_BIG",
-    "U_REGEX_INVALID_CAPTURE_GROUP_NAME"
-};
-
-static const char * const
-_uIDNAErrorName[U_IDNA_ERROR_LIMIT - U_IDNA_ERROR_START] = {
-     "U_STRINGPREP_PROHIBITED_ERROR",
-     "U_STRINGPREP_UNASSIGNED_ERROR",
-     "U_STRINGPREP_CHECK_BIDI_ERROR",
-     "U_IDNA_STD3_ASCII_RULES_ERROR",
-     "U_IDNA_ACE_PREFIX_ERROR",
-     "U_IDNA_VERIFICATION_ERROR",
-     "U_IDNA_LABEL_TOO_LONG_ERROR",
-     "U_IDNA_ZERO_LENGTH_LABEL_ERROR",
-     "U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR"
-};
-
-static const char * const
-_uPluginErrorName[U_PLUGIN_ERROR_LIMIT - U_PLUGIN_ERROR_START] = {
-     "U_PLUGIN_TOO_HIGH",
-     "U_PLUGIN_DIDNT_SET_LEVEL",
-};
-
-U_CAPI const char * U_EXPORT2
-u_errorName(UErrorCode code) {
-    if(U_ZERO_ERROR <= code && code < U_STANDARD_ERROR_LIMIT) {
-        return _uErrorName[code];
-    } else if(U_ERROR_WARNING_START <= code && code < U_ERROR_WARNING_LIMIT) {
-        return _uErrorInfoName[code - U_ERROR_WARNING_START];
-    } else if(U_PARSE_ERROR_START <= code && code < U_PARSE_ERROR_LIMIT){
-        return _uTransErrorName[code - U_PARSE_ERROR_START];
-    } else if(U_FMT_PARSE_ERROR_START <= code && code < U_FMT_PARSE_ERROR_LIMIT){
-        return _uFmtErrorName[code - U_FMT_PARSE_ERROR_START];
-    } else if (U_BRK_ERROR_START <= code  && code < U_BRK_ERROR_LIMIT){
-        return _uBrkErrorName[code - U_BRK_ERROR_START];
-    } else if (U_REGEX_ERROR_START <= code && code < U_REGEX_ERROR_LIMIT) {
-        return _uRegexErrorName[code - U_REGEX_ERROR_START];
-    } else if(U_IDNA_ERROR_START <= code && code < U_IDNA_ERROR_LIMIT) {
-        return _uIDNAErrorName[code - U_IDNA_ERROR_START];
-    } else if(U_PLUGIN_ERROR_START <= code && code < U_PLUGIN_ERROR_LIMIT) {
-        return _uPluginErrorName[code - U_PLUGIN_ERROR_START];
-    } else {
-        return "[BOGUS UErrorCode]";
-    }
-}
-
-/*
- * Hey, Emacs, please set the following:
- *
- * Local Variables:
- * indent-tabs-mode: nil
- * End:
- *
- */
index 863ef78..cf19edf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 6439b4e..5ec6e11 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 41f5fb7..d1ae659 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index e3a0577..9112d9f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b69e193..0815659 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index b78ed87..5571685 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/wintz.c b/source/common/wintz.c
deleted file mode 100644 (file)
index a8696af..0000000
+++ /dev/null
@@ -1,441 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-********************************************************************************
-*   Copyright (C) 2005-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-********************************************************************************
-*
-* File WINTZ.CPP
-*
-********************************************************************************
-*/
-
-#include "unicode/utypes.h"
-
-#if U_PLATFORM_HAS_WIN32_API
-
-#include "wintz.h"
-#include "cmemory.h"
-#include "cstring.h"
-
-#include "unicode/ures.h"
-#include "unicode/ustring.h"
-
-#   define WIN32_LEAN_AND_MEAN
-#   define VC_EXTRALEAN
-#   define NOUSER
-#   define NOSERVICE
-#   define NOIME
-#   define NOMCX
-#include <windows.h>
-
-#define MAX_LENGTH_ID 40
-
-/* The layout of the Tzi value in the registry */
-typedef struct
-{
-    int32_t bias;
-    int32_t standardBias;
-    int32_t daylightBias;
-    SYSTEMTIME standardDate;
-    SYSTEMTIME daylightDate;
-} TZI;
-
-/**
- * Various registry keys and key fragments.
- */
-static const char CURRENT_ZONE_REGKEY[] = "SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation\\";
-/* static const char STANDARD_NAME_REGKEY[] = "StandardName"; Currently unused constant */
-static const char STANDARD_TIME_REGKEY[] = " Standard Time";
-static const char TZI_REGKEY[] = "TZI";
-static const char STD_REGKEY[] = "Std";
-
-/**
- * HKLM subkeys used to probe for the flavor of Windows.  Note that we
- * specifically check for the "GMT" zone subkey; this is present on
- * NT, but on XP has become "GMT Standard Time".  We need to
- * discriminate between these cases.
- */
-static const char* const WIN_TYPE_PROBE_REGKEY[] = {
-    /* WIN_9X_ME_TYPE */
-    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Time Zones",
-
-    /* WIN_NT_TYPE */
-    "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones\\GMT"
-
-    /* otherwise: WIN_2K_XP_TYPE */
-};
-
-/**
- * The time zone root subkeys (under HKLM) for different flavors of
- * Windows.
- */
-static const char* const TZ_REGKEY[] = {
-    /* WIN_9X_ME_TYPE */
-    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Time Zones\\",
-
-    /* WIN_NT_TYPE | WIN_2K_XP_TYPE */
-    "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones\\"
-};
-
-/**
- * Flavor of Windows, from our perspective.  Not a real OS version,
- * but rather the flavor of the layout of the time zone information in
- * the registry.
- */
-enum {
-    WIN_9X_ME_TYPE = 1,
-    WIN_NT_TYPE = 2,
-    WIN_2K_XP_TYPE = 3
-};
-
-static int32_t gWinType = 0;
-
-static int32_t detectWindowsType()
-{
-    int32_t winType;
-    LONG result;
-    HKEY hkey;
-
-    /* Detect the version of windows by trying to open a sequence of
-        probe keys.  We don't use the OS version API because what we
-        really want to know is how the registry is laid out.
-        Specifically, is it 9x/Me or not, and is it "GMT" or "GMT
-        Standard Time". */
-    for (winType = 0; winType < 2; winType++) {
-        result = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
-                              WIN_TYPE_PROBE_REGKEY[winType],
-                              0,
-                              KEY_QUERY_VALUE,
-                              &hkey);
-        RegCloseKey(hkey);
-
-        if (result == ERROR_SUCCESS) {
-            break;
-        }
-    }
-
-    return winType+1; /* +1 to bring it inline with the enum */
-}
-
-static LONG openTZRegKey(HKEY *hkey, const char *winid)
-{
-    char subKeyName[110]; /* TODO: why 96?? */
-    char *name;
-    LONG result;
-
-    /* This isn't thread safe, but it's good enough because the result should be constant per system. */
-    if (gWinType <= 0) {
-        gWinType = detectWindowsType();
-    }
-
-    uprv_strcpy(subKeyName, TZ_REGKEY[(gWinType != WIN_9X_ME_TYPE)]);
-    name = &subKeyName[strlen(subKeyName)];
-    uprv_strcat(subKeyName, winid);
-
-    if (gWinType == WIN_9X_ME_TYPE) {
-        /* Remove " Standard Time" */
-        char *pStd = uprv_strstr(subKeyName, STANDARD_TIME_REGKEY);
-        if (pStd) {
-            *pStd = 0;
-        }
-    }
-
-    result = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
-                            subKeyName,
-                            0,
-                            KEY_QUERY_VALUE,
-                            hkey);
-    return result;
-}
-
-static LONG getTZI(const char *winid, TZI *tzi)
-{
-    DWORD cbData = sizeof(TZI);
-    LONG result;
-    HKEY hkey;
-
-    result = openTZRegKey(&hkey, winid);
-
-    if (result == ERROR_SUCCESS) {
-        result = RegQueryValueExA(hkey,
-                                    TZI_REGKEY,
-                                    NULL,
-                                    NULL,
-                                    (LPBYTE)tzi,
-                                    &cbData);
-
-    }
-
-    RegCloseKey(hkey);
-
-    return result;
-}
-
-static LONG getSTDName(const char *winid, char *regStdName, int32_t length) {
-    DWORD cbData = length;
-    LONG result;
-    HKEY hkey;
-
-    result = openTZRegKey(&hkey, winid);
-
-    if (result == ERROR_SUCCESS) {
-        result = RegQueryValueExA(hkey,
-                                    STD_REGKEY,
-                                    NULL,
-                                    NULL,
-                                    (LPBYTE)regStdName,
-                                    &cbData);
-
-    }
-
-    RegCloseKey(hkey);
-
-    return result;
-}
-
-static LONG getTZKeyName(char* tzKeyName, int32_t length) {
-    HKEY hkey;
-    LONG result = FALSE;
-    DWORD cbData = length;
-
-    if(ERROR_SUCCESS == RegOpenKeyExA(
-        HKEY_LOCAL_MACHINE,
-        CURRENT_ZONE_REGKEY,
-        0, 
-        KEY_QUERY_VALUE,
-        &hkey))
-    {
-         result = RegQueryValueExA(
-             hkey,
-             "TimeZoneKeyName",
-             NULL,
-             NULL,
-             (LPBYTE)tzKeyName,
-             &cbData);
-    }
-
-    return result;
-}
-
-/*
-  This code attempts to detect the Windows time zone, as set in the
-  Windows Date and Time control panel.  It attempts to work on
-  multiple flavors of Windows (9x, Me, NT, 2000, XP) and on localized
-  installs.  It works by directly interrogating the registry and
-  comparing the data there with the data returned by the
-  GetTimeZoneInformation API, along with some other strategies.  The
-  registry contains time zone data under one of two keys (depending on
-  the flavor of Windows):
-
-    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones\
-    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
-
-  Under this key are several subkeys, one for each time zone.  These
-  subkeys are named "Pacific" on Win9x/Me and "Pacific Standard Time"
-  on WinNT/2k/XP.  There are some other wrinkles; see the code for
-  details.  The subkey name is NOT LOCALIZED, allowing us to support
-  localized installs.
-
-  Under the subkey are data values.  We care about:
-
-    Std   Standard time display name, localized
-    TZI   Binary block of data
-
-  The TZI data is of particular interest.  It contains the offset, two
-  more offsets for standard and daylight time, and the start and end
-  rules.  This is the same data returned by the GetTimeZoneInformation
-  API.  The API may modify the data on the way out, so we have to be
-  careful, but essentially we do a binary comparison against the TZI
-  blocks of various registry keys.  When we find a match, we know what
-  time zone Windows is set to.  Since the registry key is not
-  localized, we can then translate the key through a simple table
-  lookup into the corresponding ICU time zone.
-
-  This strategy doesn't always work because there are zones which
-  share an offset and rules, so more than one TZI block will match.
-  For example, both Tokyo and Seoul are at GMT+9 with no DST rules;
-  their TZI blocks are identical.  For these cases, we fall back to a
-  name lookup.  We attempt to match the display name as stored in the
-  registry for the current zone to the display name stored in the
-  registry for various Windows zones.  By comparing the registry data
-  directly we avoid conversion complications.
-
-  Author: Alan Liu
-  Since: ICU 2.6
-  Based on original code by Carl Brown <cbrown@xnetinc.com>
-*/
-
-/**
- * Main Windows time zone detection function.  Returns the Windows
- * time zone, translated to an ICU time zone, or NULL upon failure.
- */
-U_CFUNC const char* U_EXPORT2
-uprv_detectWindowsTimeZone() {
-    UErrorCode status = U_ZERO_ERROR;
-    UResourceBundle* bundle = NULL;
-    char* icuid = NULL;
-    char apiStdName[MAX_LENGTH_ID];
-    char regStdName[MAX_LENGTH_ID];
-    char tmpid[MAX_LENGTH_ID];
-    int32_t len;
-    int id;
-    int errorCode;
-    UChar ISOcodeW[3]; /* 2 letter iso code in UTF-16*/
-    char  ISOcodeA[3]; /* 2 letter iso code in ansi */
-
-    LONG result;
-    TZI tziKey;
-    TZI tziReg;
-    TIME_ZONE_INFORMATION apiTZI;
-
-    BOOL isVistaOrHigher;
-    BOOL tryPreVistaFallback;
-    OSVERSIONINFO osVerInfo;
-
-    /* Obtain TIME_ZONE_INFORMATION from the API, and then convert it
-       to TZI.  We could also interrogate the registry directly; we do
-       this below if needed. */
-    uprv_memset(&apiTZI, 0, sizeof(apiTZI));
-    uprv_memset(&tziKey, 0, sizeof(tziKey));
-    uprv_memset(&tziReg, 0, sizeof(tziReg));
-    GetTimeZoneInformation(&apiTZI);
-    tziKey.bias = apiTZI.Bias;
-    uprv_memcpy((char *)&tziKey.standardDate, (char*)&apiTZI.StandardDate,
-           sizeof(apiTZI.StandardDate));
-    uprv_memcpy((char *)&tziKey.daylightDate, (char*)&apiTZI.DaylightDate,
-           sizeof(apiTZI.DaylightDate));
-
-    /* Convert the wchar_t* standard name to char* */
-    uprv_memset(apiStdName, 0, sizeof(apiStdName));
-    wcstombs(apiStdName, apiTZI.StandardName, MAX_LENGTH_ID);
-
-    tmpid[0] = 0;
-
-    id = GetUserGeoID(GEOCLASS_NATION);
-    errorCode = GetGeoInfoW(id,GEO_ISO2,ISOcodeW,3,0);
-    u_strToUTF8(ISOcodeA, 3, NULL, ISOcodeW, 3, &status);
-
-    bundle = ures_openDirect(NULL, "windowsZones", &status);
-    ures_getByKey(bundle, "mapTimezones", bundle, &status);
-
-    /*
-        Windows Vista+ provides us with a "TimeZoneKeyName" that is not localized
-        and can be used to directly map a name in our bundle. Try to use that first
-        if we're on Vista or higher
-    */
-    uprv_memset(&osVerInfo, 0, sizeof(osVerInfo));
-    osVerInfo.dwOSVersionInfoSize = sizeof(osVerInfo);
-    GetVersionEx(&osVerInfo);
-    isVistaOrHigher = osVerInfo.dwMajorVersion >= 6;   /* actually includes Windows Server 2008 as well, but don't worry about it */
-    tryPreVistaFallback = TRUE;
-    if(isVistaOrHigher) {
-        result = getTZKeyName(regStdName, sizeof(regStdName));
-        if(ERROR_SUCCESS == result) {
-            UResourceBundle* winTZ = ures_getByKey(bundle, regStdName, NULL, &status);
-            if(U_SUCCESS(status)) {
-                const UChar* icuTZ = NULL;
-                if (errorCode != 0) {
-                    icuTZ = ures_getStringByKey(winTZ, ISOcodeA, &len, &status);
-                }
-                if (errorCode==0 || icuTZ==NULL) {
-                    /* fallback to default "001" and reset status */
-                    status = U_ZERO_ERROR;
-                    icuTZ = ures_getStringByKey(winTZ, "001", &len, &status);
-                }
-
-                if(U_SUCCESS(status)) {
-                    int index=0;
-                    while (! (*icuTZ == '\0' || *icuTZ ==' ')) {
-                        tmpid[index++]=(char)(*icuTZ++);  /* safe to assume 'char' is ASCII compatible on windows */
-                    }
-                    tmpid[index]='\0';
-                    tryPreVistaFallback = FALSE;
-                }
-            }
-            ures_close(winTZ);
-        }
-    }
-
-    if(tryPreVistaFallback) {
-
-        /* Note: We get the winid not from static tables but from resource bundle. */
-        while (U_SUCCESS(status) && ures_hasNext(bundle)) {
-            UBool idFound = FALSE;
-            const char* winid;
-            UResourceBundle* winTZ = ures_getNextResource(bundle, NULL, &status);
-            if (U_FAILURE(status)) {
-                break;
-            }
-            winid = ures_getKey(winTZ);
-            result = getTZI(winid, &tziReg);
-
-            if (result == ERROR_SUCCESS) {
-                /* Windows alters the DaylightBias in some situations.
-                   Using the bias and the rules suffices, so overwrite
-                   these unreliable fields. */
-                tziKey.standardBias = tziReg.standardBias;
-                tziKey.daylightBias = tziReg.daylightBias;
-
-                if (uprv_memcmp((char *)&tziKey, (char*)&tziReg, sizeof(tziKey)) == 0) {
-                    const UChar* icuTZ = NULL;
-                    if (errorCode != 0) {
-                        icuTZ = ures_getStringByKey(winTZ, ISOcodeA, &len, &status);
-                    }
-                    if (errorCode==0 || icuTZ==NULL) {
-                        /* fallback to default "001" and reset status */
-                        status = U_ZERO_ERROR;
-                        icuTZ = ures_getStringByKey(winTZ, "001", &len, &status);
-                    }
-
-                    if (U_SUCCESS(status)) {
-                        /* Get the standard name from the registry key to compare with
-                           the one from Windows API call. */
-                        uprv_memset(regStdName, 0, sizeof(regStdName));
-                        result = getSTDName(winid, regStdName, sizeof(regStdName));
-                        if (result == ERROR_SUCCESS) {
-                            if (uprv_strcmp(apiStdName, regStdName) == 0) {
-                                idFound = TRUE;
-                            }
-                        }
-
-                        /* tmpid buffer holds the ICU timezone ID corresponding to the timezone ID from Windows.
-                         * If none is found, tmpid buffer will contain a fallback ID (i.e. the time zone ID matching
-                         * the current time zone information)
-                         */
-                        if (idFound || tmpid[0] == 0) {
-                            /* if icuTZ has more than one city, take only the first (i.e. terminate icuTZ at first space) */
-                            int index=0;
-                            while (! (*icuTZ == '\0' || *icuTZ ==' ')) {
-                                tmpid[index++]=(char)(*icuTZ++);  /* safe to assume 'char' is ASCII compatible on windows */
-                            }
-                            tmpid[index]='\0';
-                        }
-                    }
-                }
-            }
-            ures_close(winTZ);
-            if (idFound) {
-                break;
-            }
-        }
-    }
-
-    /*
-     * Copy the timezone ID to icuid to be returned.
-     */
-    if (tmpid[0] != 0) {
-        len = uprv_strlen(tmpid);
-        icuid = (char*)uprv_calloc(len + 1, sizeof(char));
-        if (icuid != NULL) {
-            uprv_strcpy(icuid, tmpid);
-        }
-    }
-
-    ures_close(bundle);
-    
-    return icuid;
-}
-
-#endif /* U_PLATFORM_HAS_WIN32_API */
index 1d4db87..7be30eb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -16,7 +16,9 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_HAS_WIN32_API
+// This file contains only desktop windows behavior
+// Windows UWP calls Windows::Globalization directly, so this isn't needed there.
+#if U_PLATFORM_USES_ONLY_WIN32_API && (U_PLATFORM_HAS_WINUWP_API == 0)
 
 /**
  * \file 
@@ -31,6 +33,6 @@ U_CDECL_END
 U_CFUNC const char* U_EXPORT2
 uprv_detectWindowsTimeZone();
 
-#endif /* U_PLATFORM_HAS_WIN32_API */
+#endif /* U_PLATFORM_USES_ONLY_WIN32_API && (U_PLATFORM_HAS_WINUWP_API == 0) */
 
 #endif /* __WINTZ */
index 442782b..f7430f6 100644 (file)
@@ -8,6 +8,8 @@
 # This is to be called from ../Makefile.in
 #
 # This will only work if subversion is installed.
+# You must checkout ICU4C at the `/icu`  or `/icu/icu4c` level - not just `…/source`
+# also note that `make dist` does NOT reflect any local modifications - it only does a fresh SVN export.
 
 top_builddir = .
 
@@ -17,13 +19,12 @@ include $(top_builddir)/icudefs.mk
 DISTY_TMP=dist/tmp
 DISTY_ICU=$(DISTY_TMP)/icu
 DISTY_DATA=$(DISTY_ICU)/source/data
-DISTY_RMV=brkitr coll curr lang locales mappings rbnf region translit xml zone
+DISTY_RMV=brkitr coll curr lang locales mappings rbnf region translit xml zone misc unit
 DISTY_RMDIR=$(DISTY_RMV:%=$(DISTY_DATA)/%)
 DISTY_IN=$(DISTY_DATA)/in
 DOCZIP=icu-docs.zip
 
 SVNTOP=$(top_srcdir)/..
-SVNDOT=$(SVNTOP)/.svn
 SVNVER=$(shell svnversion $(SVNTOP) | cut -d: -f1 | tr -cd 'a-zA-Z0-9')
 SVNURL=$(shell svn info $(SVNTOP) | grep '^URL:' | cut -d: -f2-)
 DISTY_VER=$(shell echo $(VERSION) | tr '.' '_' )
@@ -38,17 +39,13 @@ DISTY_DAT=$(firstword $(wildcard data/out/tmp/icudt$(SO_TARGET_VERSION_MAJOR)*.d
 DISTY_FILES_SRC=$(DISTY_FILE_TGZ) $(DISTY_FILE_ZIP)
 DISTY_FILES=$(DISTY_FILES_SRC) $(DISTY_DOC_ZIP)
 
-$(SVNDOT):
-       @echo "ERROR: 'dist' will not work unless the parent of the top_srcdir ( $(SVNTOP) ) is checked out from svn, and svn is installed."
-       false
-
 $(DISTY_FILE_DIR):
        $(MKINSTALLDIRS) $(DISTY_FILE_DIR)
 
 $(DISTY_TMP):
        $(MKINSTALLDIRS) $(DISTY_TMP)
 
-$(DISTY_DOC_ZIP): $(SVNDOT) $(DOCZIP) $(DISTY_FILE_DIR)
+$(DISTY_DOC_ZIP):  $(DOCZIP) $(DISTY_FILE_DIR)
        cp $(DOCZIP) $(DISTY_DOC_ZIP)
 
 $(DISTY_DAT): 
@@ -58,19 +55,22 @@ $(DISTY_DAT):
 $(DOCZIP):
        $(MAKE) -C . srcdir="$(srcdir)" top_srcdir="$(top_srcdir)" builddir=. $@
 
-$(DISTY_FILE_TGZ) $(DISTY_FILE_ZIP) $(DISTY_DATA_ZIP): $(SVNDOT) $(DISTY_DAT) $(DISTY_TMP)
+$(DISTY_FILE_TGZ) $(DISTY_FILE_ZIP) $(DISTY_DATA_ZIP):  $(DISTY_DAT) $(DISTY_TMP)
        @echo "svnversion of $(SVNTOP) is as follows (if this fails, make sure svn is installed..)"
        svnversion $(SVNTOP)
        -$(RMV) $(DISTY_FILE) $(DISTY_TMP)
        $(MKINSTALLDIRS) $(DISTY_TMP)
+       echo exporting $(SVNVER)
        svn export -r $(shell echo $(SVNVER) | tr -d 'a-zA-Z' ) $(SVNURL) "$(DISTY_TMP)/icu"
        ( cd $(DISTY_TMP)/icu/source ; zip -rlq $(DISTY_DATA_ZIP) data )
-       $(RMV) $(DISTY_RMDIR)
        $(MKINSTALLDIRS) $(DISTY_IN)
+       echo DISTY_DAT=$(DISTY_DAT)
        cp $(DISTY_DAT) $(DISTY_IN)
        ( cd $(DISTY_TMP)/icu ; python as_is/bomlist.py > as_is/bomlist.txt || rm -f as_is/bomlist.txt )
-       ( cd $(DISTY_TMP) ; tar cfpz $(DISTY_FILE_TGZ) icu )
        ( cd $(DISTY_TMP) ; zip -rlq $(DISTY_FILE_ZIP) icu )
+       $(RMV) $(DISTY_RMDIR)
+       ( cd $(DISTY_TMP)/icu ; python as_is/bomlist.py > as_is/bomlist.txt || rm -f as_is/bomlist.txt )
+       ( cd $(DISTY_TMP) ; tar cfpz $(DISTY_FILE_TGZ) icu )
        ls -l $(DISTY_FILE)
 
 dist-local: $(DISTY_FILES)
index df53e4e..0f488ba 100644 (file)
@@ -4,6 +4,7 @@
 s%^\([a-zA-Z0-9\._-]*\)[       ]*+=%\1=$(\1) %
 s%^[A-Z]*_SO_TARG*%## &%
 s%^SHARED_OBJECT.*%## &%
+s@^_%.*@## &@
 s%^LD_SONAME.*%## &%
 s%$(\([^\)]*\))%${\1}%g
 s%^    %#M#    %
index e1b4236..1572466 100644 (file)
@@ -13,8 +13,8 @@ GEN_DEPS.cc=  $(CXX) -E -M $(DEFS) $(CPPFLAGS)
 #           This helps in the data library,
 # -qproto assumes all functions are prototyped (for optimization)
 # -qrtti turns on compiler RTTI, required beginning with ICU 4.6
-CFLAGS += -qproto -qroconst
-CXXFLAGS += -qproto -qroconst -qrtti
+CFLAGS += -qproto -qroconst -qlanglvl=extended
+CXXFLAGS += -qproto -qroconst -qrtti -qlanglvl=extended0x
 
 # If you readd this line, you must change the SO value
 #LDFLAGS += -brtl
@@ -111,11 +111,31 @@ $(LIBDIR)/%.a : %.so
 %.o: $(srcdir)/%.c
        $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
 
-%.$(STATIC_O): $(srcdir)/%.cpp
-       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
+
+## C++ compilation rules.
+
+# This causes escapesrc to be built before other ICU targets.
+NEED_ESCAPING=YES
+
+ifneq ($(SKIP_ESCAPING),)
+# no escaping - bootstrap
 %.o: $(srcdir)/%.cpp
        $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
+else
+# convert *.cpp files to _*.cpp with \u / \U escaping
+CLEANFILES += _*.cpp
 
+# the actual escaping
+_%.cpp: $(srcdir)/%.cpp
+       @$(BINDIR)/escapesrc$(EXEEXT) $< $@
+
+# compilation for static obj
+%.$(STATIC_O): _%.cpp
+       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
+# compilation for dynamic obj
+%.o: _%.cpp
+       $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
+endif
 
 ## Dependency rules
 %.d : %.u
index 1cc2d74..c5a3717 100644 (file)
@@ -7,7 +7,7 @@
 
 ## Commands to generate dependency files
 GEN_DEPS.c=    $(CC) -E -MM $(DEFS) $(CPPFLAGS)
-GEN_DEPS.cc=   $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
+GEN_DEPS.cc=   $(CXX) -E -MM -std=c++11 $(DEFS) $(CPPFLAGS)
 
 ## Flags to create/use a static library
 ifneq ($(ENABLE_SHARED),YES)
index 01003ac..4744bb9 100644 (file)
@@ -47,8 +47,9 @@ endif
 # /EHsc enables exception handling
 # /Zc:wchar_t makes wchar_t a native type. Required for C++ ABI compatibility.
 # -D_CRT_SECURE_NO_DEPRECATE is needed to quiet warnings about using standard C functions.
-CFLAGS+=-GF -nologo
-CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t
+# -utf-8 set source file encoding to utf-8.
+CFLAGS+=-GF -nologo -utf-8
+CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t -utf-8
 CPPFLAGS+=-D_CRT_SECURE_NO_DEPRECATE
 DEFS+=-DWIN32 -DCYGWINMSVC
 LDFLAGS+=-nologo
index 0af0c88..dc9d1a1 100644 (file)
@@ -7,7 +7,7 @@
 
 ## Commands to generate dependency files
 GEN_DEPS.c=    $(CC) -E -MM $(DEFS) $(CPPFLAGS)
-GEN_DEPS.cc=   $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
+GEN_DEPS.cc=   $(CXX) -E -MM -std=c++11 $(DEFS) $(CPPFLAGS)
 
 ## Flags to create/use a static library
 ifneq ($(ENABLE_SHARED),YES)
index 6b57c26..05fe514 100644 (file)
@@ -52,8 +52,9 @@ endif
 # -EHsc enables exception handling
 # -Zc:wchar_t makes wchar_t a native type. Required for C++ ABI compatibility.
 # -D_CRT_SECURE_NO_DEPRECATE is needed to quiet warnings about using standard C functions.
-CFLAGS+=-GF -nologo
-CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t
+# -utf-8 set source file encoding to utf-8.
+CFLAGS+=-GF -nologo -utf-8
+CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t -utf-8
 CPPFLAGS+=-D_CRT_SECURE_NO_DEPRECATE
 DEFS+=-DWIN32 -DCYGWINMSVC
 LDFLAGS+=-nologo
index dbc3a3a..9bd3f9b 100644 (file)
@@ -69,7 +69,7 @@ SHAREDLIBCXXFLAGS     = -Wc,expo
 # NOCSECT might be used as an optimization option.
 # -+ means accept any file extension as a C++ file. By default only .C is accepted.
 CFLAGS          += -Wc,DLL,ROS,RENT,'ARCH(7)','LOC(POSIX)',NOANSIALIAS,'LANGLVL(EXTENDED)' $(ICU_IEEE)
-CXXFLAGS        += -Wc,DLL,ROS,RTTI,'ARCH(7)','LOC(POSIX)',NOANSIALIAS,'LANGLVL(EXTENDED)' $(ICU_IEEE) -+
+CXXFLAGS        += -Wc,DLL,ROS,RTTI,'ARCH(7)','LOC(POSIX)',NOANSIALIAS,'LANGLVL(EXTENDED0X)' $(ICU_IEEE) -+
 ARFLAGS         = -cr
 
 # _MSE_PROTOS usually interacts with _XOPEN_SOURCE. It affects some standard
@@ -208,10 +208,27 @@ endif
 %.o: $(srcdir)/%.c
        $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
 
+# This causes escapesrc to be built before other ICU targets.
+NEED_ESCAPING=YES
+
+ifneq ($(SKIP_ESCAPING),)
 %.$(STATIC_O): $(srcdir)/%.cpp
        $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
 %.o: $(srcdir)/%.cpp
        $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
+else
+# convert *.cpp files to _*.cpp with \u / \U escaping
+CLEANFILES += _*.cpp
+
+# the actual escaping
+_%.cpp: $(srcdir)/%.cpp
+       @$(BINDIR)/escapesrc$(EXEEXT) $< $@
+
+%.$(STATIC_O): _%.cpp
+       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
+%.o: _%.cpp
+       $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
+endif
 
 ## Dependency rules
 %.d : %.u
index 469b210..e1d4ccf 100644 (file)
@@ -5,6 +5,10 @@
 ## Copyright (c) 1999-2010, International Business Machines Corporation and
 ## others. All Rights Reserved.
 
+## Flags for ICU 59+
+CXXFLAGS += -std=c++11
+CFLAGS   += -std=c99
+
 ## Flags for position independent code
 SHAREDLIBCFLAGS = -KPIC
 SHAREDLIBCXXFLAGS = -KPIC
@@ -59,17 +63,34 @@ SO=         so
 ## Non-shared intermediate object suffix
 STATIC_O = o
 
+# This causes escapesrc to be built before other ICU targets.
+NEED_ESCAPING=YES
+
 ## Compilation rules
 %.$(STATIC_O): $(srcdir)/%.c
        $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
 %.o: $(srcdir)/%.c
        $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
 
-%.$(STATIC_O): $(srcdir)/%.cpp
-       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
+ifneq ($(SKIP_ESCAPING),)
 %.o: $(srcdir)/%.cpp
        $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
+%.$(STATIC_O): $(srcdir)/%.cpp
+       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
+else
+# convert *.cpp files to _*.cpp with \u / \U escaping
+CLEANFILES += _*.cpp
+
+# the actual escaping
+_%.cpp: $(srcdir)/%.cpp
+       @$(BINDIR)/escapesrc$(EXEEXT) $< $@
 
+# no escaping - bootstrap
+%.$(STATIC_O): _%.cpp
+       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
+%.o: _%.cpp
+       $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
+endif
 
 ## Dependency rules
 %.d : $(srcdir)/%.c
index 29732a1..abcdeb9 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ICU 58.1.
+# Generated by GNU Autoconf 2.69 for ICU 59.1.
 #
 # Report bugs to <http://icu-project.org/bugs>.
 #
@@ -582,8 +582,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='ICU'
 PACKAGE_TARNAME='International Components for Unicode'
-PACKAGE_VERSION='58.1'
-PACKAGE_STRING='ICU 58.1'
+PACKAGE_VERSION='59.1'
+PACKAGE_STRING='ICU 59.1'
 PACKAGE_BUGREPORT='http://icu-project.org/bugs'
 PACKAGE_URL='http://icu-project.org'
 
@@ -674,7 +674,6 @@ GENCCODE_ASSEMBLY
 HAVE_MMAP
 LIB_THREAD
 U_HAVE_ATOMIC
-U_HAVE_STD_STRING
 ENABLE_RPATH
 U_ENABLE_DYLOAD
 U_HAVE_PLUGINS
@@ -682,6 +681,7 @@ PLUGINS_TRUE
 U_ENABLE_TRACING
 U_DISABLE_RENAMING
 AR
+SED
 RANLIB
 U_DEFAULT_SHOW_DRAFT
 UCLN_NO_AUTO_CLEANUP
@@ -1357,7 +1357,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ICU 58.1 to adapt to many kinds of systems.
+\`configure' configures ICU 59.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1423,7 +1423,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ICU 58.1:";;
+     short | recursive ) echo "Configuration of ICU 59.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1559,7 +1559,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ICU configure 58.1
+ICU configure 59.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2251,7 +2251,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ICU $as_me 58.1, which was
+It was created by ICU $as_me 59.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -5561,6 +5561,77 @@ else
 fi
 
 
+# need sed
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+
 # look for 'ar' the proper way
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
@@ -5917,11 +5988,11 @@ $as_echo "no" >&6; }
 fi
 
 if [ "$GXX" = yes ]; then
-    # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++0x,
+    # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++11,
     # and check that the compiler still works.
     if ! echo "$CXXFLAGS" | grep '\-std=' >/dev/null 2>&1; then
         OLD_CXXFLAGS="${CXXFLAGS}"
-        CXXFLAGS="$CXXFLAGS --std=c++0x"
+        CXXFLAGS="$CXXFLAGS -std=c++11"
         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have a C++11 compiler" >&5
 $as_echo_n "checking if we have a C++11 compiler... " >&6; }
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5944,9 +6015,9 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cxx11_okay" >&5
 $as_echo "$cxx11_okay" >&6; }
         if [ $cxx11_okay = yes ]; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Adding CXXFLAGS option --std=c++0x" >&5
-$as_echo "$as_me: Adding CXXFLAGS option --std=c++0x" >&6;}
-            UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} --std=c++0x"
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Adding CXXFLAGS option -std=c++11" >&5
+$as_echo "$as_me: Adding CXXFLAGS option -std=c++11" >&6;}
+            UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -std=c++11"
         else
             CXXFLAGS="$OLD_CXXFLAGS"
         fi
@@ -5958,37 +6029,6 @@ $as_echo "$as_me: Adding CXXFLAGS option --std=c++0x" >&6;}
     fi
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if #include <string> works" >&5
-$as_echo_n "checking if #include <string> works... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string>
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_header_stdstring=yes
-else
-  ac_cv_header_stdstring=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdstring" >&5
-$as_echo "$ac_cv_header_stdstring" >&6; }
-if test $ac_cv_header_stdstring = yes
-then
-       U_HAVE_STD_STRING=1
-else
-        U_HAVE_STD_STRING=0
-        CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STD_STRING=0"
-fi
-
-
-
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if #include <atomic> works" >&5
 $as_echo_n "checking if #include <atomic> works... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7800,7 +7840,7 @@ echo "CXXFLAGS=$CXXFLAGS"
 
 
 # output the Makefiles
-ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile"
+ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile tools/escapesrc/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -8345,7 +8385,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ICU $as_me 58.1, which was
+This file was extended by ICU $as_me 59.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -8399,7 +8439,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-ICU config.status 58.1
+ICU config.status 59.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -8545,6 +8585,7 @@ do
     "tools/pkgdata/Makefile") CONFIG_FILES="$CONFIG_FILES tools/pkgdata/Makefile" ;;
     "tools/tzcode/Makefile") CONFIG_FILES="$CONFIG_FILES tools/tzcode/Makefile" ;;
     "tools/gencfu/Makefile") CONFIG_FILES="$CONFIG_FILES tools/gencfu/Makefile" ;;
+    "tools/escapesrc/Makefile") CONFIG_FILES="$CONFIG_FILES tools/escapesrc/Makefile" ;;
     "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
     "test/compat/Makefile") CONFIG_FILES="$CONFIG_FILES test/compat/Makefile" ;;
     "test/testdata/Makefile") CONFIG_FILES="$CONFIG_FILES test/testdata/Makefile" ;;
index eb62936..bfbf772 100644 (file)
@@ -371,6 +371,9 @@ AC_SUBST(U_DEFAULT_SHOW_DRAFT)
 
 AC_PROG_RANLIB
 
+# need sed
+AC_PROG_SED
+
 # look for 'ar' the proper way
 AC_CHECK_TOOL(AR, ar, false)
 
@@ -492,17 +495,17 @@ else
 fi
 
 if [[ "$GXX" = yes ]]; then
-    # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++0x,
+    # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++11,
     # and check that the compiler still works.
     if ! echo "$CXXFLAGS" | grep '\-std=' >/dev/null 2>&1; then
         OLD_CXXFLAGS="${CXXFLAGS}"
-        CXXFLAGS="$CXXFLAGS --std=c++0x"
+        CXXFLAGS="$CXXFLAGS -std=c++11"
         AC_MSG_CHECKING([[if we have a C++11 compiler]])
         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[cxx11_okay=yes],[cxx11_okay=no])
         AC_MSG_RESULT($cxx11_okay)
         if [[ $cxx11_okay = yes ]]; then
-            AC_MSG_NOTICE([Adding CXXFLAGS option --std=c++0x])
-            UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} --std=c++0x"
+            AC_MSG_NOTICE([Adding CXXFLAGS option -std=c++11])
+            UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -std=c++11"
         else
             CXXFLAGS="$OLD_CXXFLAGS"
         fi
@@ -514,19 +517,6 @@ if [[ "$GXX" = yes ]]; then
     fi
 fi
 
-AC_MSG_CHECKING([[if #include <string> works]])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <string>]], [[]])], [ac_cv_header_stdstring=yes], [ac_cv_header_stdstring=no])
-AC_MSG_RESULT($ac_cv_header_stdstring)
-if test $ac_cv_header_stdstring = yes
-then
-       U_HAVE_STD_STRING=1
-else
-        U_HAVE_STD_STRING=0
-        CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STD_STRING=0"
-fi
-AC_SUBST(U_HAVE_STD_STRING)
-
-
 AC_MSG_CHECKING([[if #include <atomic> works]])
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <atomic>]], [[]])], [ac_cv_header_atomic=yes], [ac_cv_header_atomic=no])
 AC_MSG_RESULT($ac_cv_header_atomic)
@@ -1362,6 +1352,7 @@ AC_CONFIG_FILES([icudefs.mk \
                tools/pkgdata/Makefile \
                tools/tzcode/Makefile \
                tools/gencfu/Makefile \
+               tools/escapesrc/Makefile \
                test/Makefile \
                test/compat/Makefile \
                test/testdata/Makefile \
index b85cbe5..64f5a24 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-BRK_RES_CLDR_VERSION = %version%\r
+BRK_RES_CLDR_VERSION = 31.0.1\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a '%local%' file in this same directory.\r
+# you should consider creating a 'brklocal.mk' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example '%local%' files:\r
+# Example 'brklocal.mk' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
index 92832ef..2167dee 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 root{\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.92"}\r
     boundaries{\r
         grapheme:process(dependency){"char.brk"}\r
         line:process(dependency){"line.brk"}\r
index a8d9c8f..5362960 100644 (file)
@@ -9,7 +9,8 @@
 #   ICU Character Break Rules, also known as Grapheme Cluster Boundaries\r
 #      See Unicode Standard Annex #29.\r
 #      These rules are based on UAX #29 Revision 29 for Unicode Version 9.0\r
-#      plus proposed updates for Emoji 4.0 from https://goo.gl/cluFCn\r
+#      Plus revisions to rule GB 11 from http://unicode.org/cldr/trac/ticket/10088\r
+#      Plus additional characters introduces with Emoji 5, http://www.unicode.org/reports/tr51/proposed.html\r
 \r
 #\r
 #  Character Class Definitions.\r
@@ -35,11 +36,11 @@ $LVT         = [\p{Grapheme_Cluster_Break = LVT}];
 \r
 # Emoji defintions\r
 \r
-$E_Base      = [[\p{Grapheme_Cluster_Break = EB}] \U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$E_Base      = [\p{Grapheme_Cluster_Break = EB}];\r
 $E_Modifier  = [\p{Grapheme_Cluster_Break = EM}];\r
 \r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 $E_Base_GAZ  = [\p{Grapheme_Cluster_Break = EBG}];\r
 $EmojiNRK    = [[\p{Emoji}] - [\p{Grapheme_Cluster_Break = Regional_Indicator}*\u00230-9©®™〰〽]];\r
 \r
@@ -67,7 +68,7 @@ $Prepend [^$Control $CR $LF];
 ($E_Base | $E_Base_GAZ) $Extend* $E_Modifier;\r
 \r
 # GB 11\r
-($Extended_Pict | $EmojiNRK) $ZWJ ($Extended_Pict | $EmojiNRK);\r
+($Extended_Pict | $EmojiNRK) $Extend* $ZWJ ($Extended_Pict | $EmojiNRK);\r
 \r
 # GB 12-13. Keep pairs of regional indicators together\r
 #           Note that hard break '/' rule triggers only if there are three or more initial RIs,\r
@@ -96,7 +97,7 @@ $SpacingMark [^$Control $CR $LF];
 $E_Modifier $Extend* ($E_Base | $E_Base_GAZ);\r
 \r
 # GB 11 Don't break between ZWJ and Glue_After_ZWJ\r
-($Extended_Pict | $EmojiNRK) $ZWJ ($Extended_Pict | $EmojiNRK);\r
+($Extended_Pict | $EmojiNRK) $ZWJ $Extend* ($Extended_Pict | $EmojiNRK);\r
 \r
 # GB 12-13. Going backwards, we must scan through any number of regional indicators as pairs.\r
 #\r
index 254a36b..6e6dbc3 100644 (file)
@@ -38,7 +38,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$EB = [:LineBreak =  EB:];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -72,8 +72,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 01e6b0a..0a0a4c4 100644 (file)
@@ -44,7 +44,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$EB = [:LineBreak =  EB:];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -78,8 +78,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 2b43ac8..32028e7 100644 (file)
@@ -45,7 +45,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$EB = [:LineBreak =  EB:];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -80,8 +80,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 1cb6d36..8f3404d 100644 (file)
@@ -53,7 +53,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$EB = [:LineBreak =  EB:];\r
 $EM = [:LineBreak =  EM:];\r
 $EXX = [\uFF01 \uFF1F];\r
 $EX = [[:LineBreak =  Exclamation:] - $EXX];\r
@@ -91,8 +91,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index d294584..3d75a9c 100644 (file)
@@ -42,7 +42,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$EB = [:LineBreak =  EB:];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -77,8 +77,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index b1d0d74..dd6ed1a 100644 (file)
@@ -42,7 +42,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$EB = [:LineBreak =  EB:];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -76,8 +76,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index d1cb65a..dd202ef 100644 (file)
@@ -44,7 +44,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$EB = [:LineBreak =  EB:];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -79,8 +79,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 0695097..070f946 100644 (file)
@@ -42,7 +42,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$EB = [:LineBreak =  EB:];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -76,8 +76,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index ea483c2..277dc92 100644 (file)
@@ -10,6 +10,7 @@
 #      See Unicode Standard Annex #29.\r
 #      These rules are based on UAX #29 Revision 29 for Unicode Version 9.0\r
 #      with additions for Emoji Sequences from https://goo.gl/cluFCn\r
+#      Plus additional characters introduces with Emoji 5, http://www.unicode.org/reports/tr51/proposed.html\r
 #\r
 # Note:  Updates to word.txt will usually need to be merged into\r
 #        word_POSIX.txt also.\r
@@ -44,11 +45,11 @@ $MidLetter          = [\p{Word_Break = MidLetter}];
 $MidNum             = [\p{Word_Break = MidNum}];\r
 $Numeric            = [\p{Word_Break = Numeric}];\r
 $ExtendNumLet       = [\p{Word_Break = ExtendNumLet}];\r
-$E_Base             = [\p{Word_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$E_Base             = [\p{Word_Break = EB}];\r
 $E_Modifier         = [\p{Word_Break = EM}];\r
 \r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict      = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 $EBG                = [\p{Word_Break = EBG}];\r
 $EmojiNRK           = [[\p{Emoji}] - [\p{Word_Break = Regional_Indicator}\u002a\u00230-9©®™〰〽]];\r
 \r
index 4ca3a20..a44e7b0 100644 (file)
@@ -10,6 +10,7 @@
 #      See Unicode Standard Annex #29.\r
 #      These rules are based on UAX #29 Revision 29 for Unicode Version 9.0\r
 #      with additions for Emoji Sequences from https://goo.gl/cluFCn\r
+#      Plus additional characters introduces with Emoji 5, http://www.unicode.org/reports/tr51/proposed.html\r
 #\r
 # Note:  Updates to word.txt will usually need to be merged into\r
 #        word_POSIX.txt also.\r
@@ -44,11 +45,11 @@ $MidLetter          = [\p{Word_Break = MidLetter} - [\:]];
 $MidNum             = [\p{Word_Break = MidNum} [.]];\r
 $Numeric            = [\p{Word_Break = Numeric}];\r
 $ExtendNumLet       = [\p{Word_Break = ExtendNumLet}];\r
-$E_Base             = [\p{Word_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
+$E_Base             = [\p{Word_Break = EB}];\r
 $E_Modifier         = [\p{Word_Break = EM}];\r
 \r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
-$Extended_Pict      = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
+$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
 $EBG                = [\p{Word_Break = EBG}];\r
 $EmojiNRK           = [[\p{Emoji}] - [\p{Word_Break = Regional_Indicator}\u002a\u00230-9©®™〰〽]];\r
 \r
index df5bb22..ac17ada 100644 (file)
@@ -52,7 +52,7 @@
 #\r
 # ANT_OPTS:      You may want to set:\r
 #\r
-#                -Xmx1024m, to give Java more memory; otherwise it may run out\r
+#                -Xmx3072m, to give Java more memory; otherwise it may run out\r
 #                 of heap.\r
 #\r
 # b) CLDR-related variables\r
 # 1a. Java and ant variables, adjust for your system\r
 \r
 export JAVA_HOME=`/usr/libexec/java_home`\r
-export ANT_OPTS="-Xmx1024m"\r
+export ANT_OPTS="-Xmx3072m"\r
 \r
 # 1b. CLDR variables, adjust for your setup; with cygwin it might be e.g.\r
 # CLDR_DIR=`cygpath -wp /build/cldr`\r
@@ -134,13 +134,12 @@ export CLDR_DIR=$HOME/cldr/trunk
 \r
 # 1c. ICU variables\r
 \r
-export ICU4C_DIR=$HOME/icu/icu/trunk\r
-export ICU4J_ROOT=$HOME/icu/icu4j/trunk\r
+export ICU4C_DIR=$HOME/icu/trunk/icu4c\r
+export ICU4J_ROOT=$HOME/icu/trunk/icu4j\r
 \r
 # 2. Build the CLDR Java tools\r
 \r
 cd $CLDR_DIR/tools/java\r
-#cd $CLDR_DIR/cldr-tools\r
 ant jar\r
 \r
 # 3. Configure ICU4C, build and test without new data first, to verify that\r
@@ -162,7 +161,7 @@ make check 2>&1 | tee /tmp/icu4c-oldData-makeCheck.txt
 \r
 cd $ICU4C_DIR/source/data\r
 ant clean\r
-ant all 2>&1 | tee /tmp/cldrNN-buildLog.txt\r
+ant all 2>&1 | tee /tmp/cldr-newData-buildLog.txt\r
 \r
 # 5. Check which data files have modifications, which have been added or removed\r
 # (if there are no changes, you may not need to proceed further). Make sure the\r
@@ -220,10 +219,12 @@ cd $ICU4J_ROOT
 ant all 2>&1 | tee /tmp/icu4j-oldData-antAll.txt\r
 ant check 2>&1 | tee /tmp/icu4j-oldData-antCheck.txt\r
 \r
-# 12. Now build the new data for ICU4J\r
+# 12. Now build the new data and test data for ICU4J\r
 \r
 cd $ICU4C_DIR/source/data\r
 make icu4j-data-install\r
+cd $ICU4C_DIR/source/test/testdata\r
+make icu4j-data-install\r
 \r
 # 13. Now rebuild ICU4J with the new data and run tests:\r
 # Keep a log so you can investigate the errors.\r
@@ -241,25 +242,24 @@ ant check 2>&1 | tee /tmp/icu4j-newData-antCheck.txt
 \r
 cd $ICU4C_DIR/source\r
 svn status\r
-# add or remove as necessary, then commit\r
+# add or remove as necessary\r
 \r
 cd $ICU4J_ROOT\r
 svn status\r
-# add or remove as necessary, then commit\r
+# add or remove as necessary\r
+\r
+cd $HOME/icu/trunk/\r
+# commit\r
 \r
-# 16. For an official CLDR data integration into ICU, now tag the CLDR, ICU4J,\r
-# and ICU4C sources with an appropriate CLDR milestone (you can check previous\r
+# 16. For an official CLDR data integration into ICU, now tag the CLDR and\r
+# ICU sources with an appropriate CLDR milestone (you can check previous\r
 # tags for format), e.g.:\r
 \r
 svn copy svn+ssh://unicode.org/repos/cldr/trunk \\r
 svn+ssh://unicode.org/repos/cldr/tags/release-NNN \\r
 --parents -m "cldrbug nnnn: tag cldr sources for NNN"\r
 \r
-svn copy svn+ssh://source.icu-project.org/repos/icu/icu4j/trunk \\r
-svn+ssh://source.icu-project.org/repos/icu/icu4j/tags/cldr-NNN \\r
---parents -m 'ticket:mmmm: tag the version used for integrating CLDR NNN'\r
-\r
-svn copy svn+ssh://source.icu-project.org/repos/icu/icu/trunk \\r
-svn+ssh://source.icu-project.org/repos/icu/icu/tags/cldr-NNN \\r
+svn copy svn+ssh://source.icu-project.org/repos/icu/trunk \\r
+svn+ssh://source.icu-project.org/repos/icu/tags/cldr-NNN \\r
 --parents -m 'ticket:mmmm: tag the version used for integrating CLDR NNN'\r
 \r
index 9e27b06..6b31bdf 100644 (file)
@@ -5,7 +5,7 @@ af{
     collations{\r
         standard{\r
             Sequence{"&N<<<ʼn"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 10a6c1a..53cf1a4 100644 (file)
@@ -5,7 +5,7 @@ am{
     collations{\r
         standard{\r
             Sequence{"[reorder Ethi]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 9bded73..4a15774 100644 (file)
@@ -9,7 +9,7 @@ ar{
                 "&ت<<ة<<<ﺔ<<<ﺓ"\r
                 "&ي<<ى<<<ﯨ<<<ﯩ<<<ﻰ<<<ﻯ<<<ﲐ<<<ﱝ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -397,7 +397,7 @@ ar{
                 "‎&ۓ‎=ﮰ‎=ﮱ"\r
                 "‎&ۀ‎=ﮤ‎=ﮥ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
diff --git a/source/data/coll/ars.txt b/source/data/coll/ars.txt
new file mode 100644 (file)
index 0000000..8de1f41
--- /dev/null
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+ars{\r
+    "%%ALIAS"{"ar"}\r
+}\r
index c35246a..1d16299 100644 (file)
@@ -11,7 +11,7 @@ as{
                 "&[before 1]ত<ৎ=ত্\u200D"\r
                 "&হ<ক্ষ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 128fa89..d1e6210 100644 (file)
@@ -9,7 +9,7 @@ az{
                 "[import az-u-co-standard]"\r
                 "[reorder others]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -26,7 +26,7 @@ az{
                 "&H<x<<<X"\r
                 "&Z<w<<<W"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 3613d80..d44a161 100644 (file)
@@ -9,7 +9,7 @@ be{
                 "&Е<ё<<<Ё"\r
                 "&у<ў<<<Ў"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 795f1a6..20bedf3 100644 (file)
@@ -5,7 +5,7 @@ bg{
     collations{\r
         standard{\r
             Sequence{"[reorder Cyrl]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index f8de4d3..8e0075c 100644 (file)
@@ -9,7 +9,7 @@ bn{
                 "[reorder Beng Deva Guru Gujr Orya Taml Telu Knda Mlym Sinh]"\r
                 "&ঔ<ং<ঃ<ঁ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -629,7 +629,7 @@ bn{
                 "&যৌ<<<য়ৌ"\r
                 "&য্<<<য়্"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 6de3f23..fedf54a 100644 (file)
@@ -5,11 +5,11 @@ bs{
     collations{\r
         search{\r
             Sequence{"[import hr-u-co-search]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{"[import hr]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index f066721..c61c022 100644 (file)
@@ -5,7 +5,7 @@ bs_Cyrl{
     collations{\r
         standard{\r
             Sequence{"[import sr]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 119b6ca..ceb4959 100644 (file)
@@ -8,7 +8,7 @@ ca{
                 "[import und-u-co-search]"\r
                 "&L<ŀ=l·<<<Ŀ=L·"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 4fd159b..b16df4a 100644 (file)
@@ -5,7 +5,7 @@ chr{
     collations{\r
         standard{\r
             Sequence{"[reorder Cher]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index c51211b..3f72e4c 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-COLLATION_CLDR_VERSION = %version%\r
+COLLATION_CLDR_VERSION = 31.0.1\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a '%local%' file in this same directory.\r
+# you should consider creating a 'collocal.mk' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example '%local%' files:\r
+# Example 'collocal.mk' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,15 +26,15 @@ COLLATION_CLDR_VERSION = %version%
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-COLLATION_SYNTHETIC_ALIAS = de_.txt de__PHONEBOOK.txt es_.txt es__TRADITIONAL.txt\\r
he_IL.txt id_ID.txt in.txt in_ID.txt iw.txt\\r
- iw_IL.txt mo.txt nb_NO.txt no.txt no_NO.txt\\r
pa_Guru.txt pa_Guru_IN.txt pa_IN.txt ro_MD.txt sh.txt\\r
- sh_BA.txt sh_CS.txt sh_YU.txt sr_BA.txt sr_Cyrl.txt\\r
- sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt sr_Latn_BA.txt sr_Latn_RS.txt\\r
- sr_ME.txt sr_RS.txt zh_CN.txt zh_HK.txt zh_Hans.txt\\r
- zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_HK.txt zh_Hant_MO.txt zh_Hant_TW.txt\\r
- zh_MO.txt zh_SG.txt zh_TW.txt\r
+COLLATION_SYNTHETIC_ALIAS = ars.txt de_.txt de__PHONEBOOK.txt es_.txt\\r
es__TRADITIONAL.txt he_IL.txt id_ID.txt in.txt in_ID.txt\\r
+ iw.txt iw_IL.txt mo.txt nb_NO.txt no.txt\\r
no_NO.txt pa_Guru.txt pa_Guru_IN.txt pa_IN.txt ro_MD.txt\\r
+ sh.txt sh_BA.txt sh_CS.txt sh_YU.txt sr_BA.txt\\r
+ sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt sr_Latn_BA.txt\\r
+ sr_Latn_RS.txt sr_ME.txt sr_RS.txt zh_CN.txt zh_HK.txt\\r
+ zh_Hans.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_HK.txt zh_Hant_MO.txt\\r
+ zh_Hant_TW.txt zh_MO.txt zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
index b2ac7cb..aae0f45 100644 (file)
@@ -11,7 +11,7 @@ cs{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 0005d0b..945f118 100644 (file)
@@ -14,7 +14,7 @@ cy{
                 "&R<rh<<<Rh<<<RH"\r
                 "&T<th<<<Th<<<TH"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 1db23b0..1ccf5f4 100644 (file)
@@ -9,7 +9,7 @@ da{
                 "[import da-u-co-standard]"\r
                 "[caseFirst off]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ da{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<<aa<<<Aa<<<AA"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 3c3b613..33bdb68 100644 (file)
@@ -9,14 +9,14 @@ de{
                 "&OE<<ö<<<Ö"\r
                 "&UE<<ü<<<Ü"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         search{\r
             Sequence{\r
                 "[import und-u-co-search]"\r
                 "[import de-u-co-phonebk]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 12267e4..3078eb8 100644 (file)
@@ -10,7 +10,7 @@ de_AT{
                 "&u<ü<<<Ü"\r
                 "&ss<ß<<<ẞ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 2bf07a9..5c83f37 100644 (file)
@@ -14,7 +14,7 @@ dsb{
                 "&S<š<<<Š<ś<<<Ś"\r
                 "&Z<ž<<<Ž<ź<<<Ź"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 1caab58..345682e 100644 (file)
@@ -17,7 +17,7 @@ ee{
                 "&T<ts<<<Ts<<<TS"\r
                 "&V<ʋ<<<Ʋ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index d98f0cb..81b1b2f 100644 (file)
@@ -8,7 +8,7 @@ el{
                 "[normalization on]"\r
                 "[reorder Grek]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 7bc4f4f..86fb301 100644 (file)
@@ -8,7 +8,7 @@ en_US_POSIX{
                 "&A<*'\u0020'-'/'<*0-'@'<*ABCDEFGHIJKLMNOPQRSTUVWXYZ<*'['-'`'<*abcdefghijklmnopqrstuvwxyz"\r
                 "<*'{'-'\u007F'"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 42167a4..5f08456 100644 (file)
@@ -12,7 +12,7 @@ eo{
                 "&S<ŝ<<<Ŝ"\r
                 "&U<ŭ<<<Ŭ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 2f67225..c38e73e 100644 (file)
@@ -8,11 +8,11 @@ es{
                 "[import und-u-co-search]"\r
                 "&N<ñ<<<Ñ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{"&N<ñ<<<Ñ"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -20,7 +20,7 @@ es{
                 "&C<ch<<<Ch<<<CH"\r
                 "&l<ll<<<Ll<<<LL"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 67da2c4..ac7c883 100644 (file)
@@ -8,7 +8,7 @@ et{
                 "&[before 1]T<š<<<Š<z<<<Z<ž<<<Ž"\r
                 "&[before 1]X<õ<<<Õ<ä<<<Ä<ö<<<Ö<ü<<<Ü"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 963ed67..4ffb69e 100644 (file)
@@ -16,7 +16,7 @@ fa{
                 "&ۏ<ه<<ە<<ہ<<ة<<ۃ<<ۀ<<ھ"\r
                 "&ی<<*ىےيېۑۍێ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 079736b..681e66c 100644 (file)
@@ -5,7 +5,7 @@ fa_AF{
     collations{\r
         standard{\r
             Sequence{"[import ps]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 0843d64..0efee7d 100644 (file)
@@ -8,7 +8,7 @@ fi{
                 "[import und-u-co-search]"\r
                 "[import fi-u-co-trad]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ fi{
                 "&Z\u0335<<ʒ<<<Ʒ"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -31,7 +31,7 @@ fi{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<õ<<<Õ<<œ<<<Œ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 495ba24..cea8c60 100644 (file)
@@ -5,7 +5,7 @@ fil{
     collations{\r
         standard{\r
             Sequence{"&N<ñ<<<Ñ<ng<<<Ng<<<NG"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 941b3db..cbf6fa4 100644 (file)
@@ -8,7 +8,7 @@ fo{
                 "[import und-u-co-search]"\r
                 "[import fo-u-co-standard]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -18,7 +18,7 @@ fo{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<<aa<<<Aa<<<AA"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 8ed0154..308a2e6 100644 (file)
@@ -5,7 +5,7 @@ fr_CA{
     collations{\r
         standard{\r
             Sequence{"[backwards 2]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 92a7fbc..0823a4f 100644 (file)
@@ -5,11 +5,11 @@ gl{
     collations{\r
         search{\r
             Sequence{"[import es-u-co-search]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{"[import es]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index cb4cdb4..2943573 100644 (file)
@@ -9,7 +9,7 @@ gu{
                 "[reorder Gujr Deva Beng Guru Orya Taml Telu Knda Mlym Sinh]"\r
                 "&ૐ<ં<<ઁ<ઃ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 7a558e9..e3778d4 100644 (file)
@@ -12,7 +12,7 @@ ha{
                 "&T<ts<<<Ts<<<TS"\r
                 "&Y<ƴ<<<ʼy<<<''y<<<Ƴ<<<ʼY<<<''Y"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 7753a9f..c23d145 100644 (file)
@@ -8,7 +8,7 @@ haw{
                 "&a<e<<<E<i<<<I<o<<<O<u<<<U"\r
                 "&w<ʻ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index f6adcb0..02999b2 100644 (file)
@@ -11,7 +11,7 @@ he{
                 "‎&״"\r
                 "<<'\u0022'"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ he{
                 "&[before 2]''<<׳"\r
                 "&[before 2]'\u0022'<<״"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index f006704..eb90754 100644 (file)
@@ -9,7 +9,7 @@ hi{
                 "[reorder Deva Beng Guru Gujr Orya Taml Telu Knda Mlym Sinh]"\r
                 "&ॐ<ं<<ँ<ः"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 4dfbc5c..955198f 100644 (file)
@@ -9,7 +9,7 @@ hr{
                 "[import hr-u-co-standard]"\r
                 "[reorder others]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -21,7 +21,7 @@ hr{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 243fc7b..1693dca 100644 (file)
@@ -13,7 +13,7 @@ hsb{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž<ź<<<Ź"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 6bebaef..33678b1 100644 (file)
@@ -44,7 +44,7 @@ hu{
                 "&Zs<<<Zzs/zs"\r
                 "&ZS<<<ZZS/ZS"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 2b969cb..f41d6cb 100644 (file)
@@ -8,7 +8,7 @@ hy{
                 "[reorder Armn]"\r
                 "&ք<և<<<Եւ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index bb46a03..00213ed 100644 (file)
@@ -15,7 +15,7 @@ ig{
                 "&S<sh<<<Sh<<<SH"\r
                 "&U<ụ<<<Ụ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 8505a68..db1fe81 100644 (file)
@@ -8,7 +8,7 @@ is{
                 "[import und-u-co-search]"\r
                 "[import is-u-co-standard]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -21,7 +21,7 @@ is{
                 "&[before 1]z<ý<<<Ý"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ö<<<Ö<<ø<<<Ø<å<<<Å"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index fa2740e..afa8c1b 100644 (file)
@@ -412,21 +412,21 @@ ja{
                 "&「=「"\r
                 "&」=」"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
                 "[import ja-u-co-private-kana]"\r
                 "&[last regular]<*亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         unihan{\r
             Sequence{\r
                 "[import und-u-co-private-unihan]"\r
                 "[import ja-u-co-private-kana]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 33ed5cf..3fd1e38 100644 (file)
@@ -5,7 +5,7 @@ ka{
     collations{\r
         standard{\r
             Sequence{"[reorder Geor]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 96ab7c1..a9c5112 100644 (file)
@@ -10,7 +10,7 @@ kk{
                 "&Ұ<ү<<<Ү"\r
                 "&[before 1]ь<і<<<І"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index d17df2a..8719f6a 100644 (file)
@@ -8,7 +8,7 @@ kl{
                 "[import und-u-co-search]"\r
                 "[import kl-u-co-standard]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -19,7 +19,7 @@ kl{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 1460a4e..91d8f16 100644 (file)
@@ -66,7 +66,7 @@ km{
                 "&ឱ<<<ឲ"\r
                 "&ៅ<ុំ<ំ<ាំ<ះ<ិះ<ុះ<េះ<ោះ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index cb48dea..03511e5 100644 (file)
@@ -9,7 +9,7 @@ kn{
                 "[reorder Knda Deva Beng Guru Gujr Orya Taml Telu Mlym Sinh]"\r
                 "&ಔ<ಂ<ಃ<ೱ<ೲ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -651,7 +651,7 @@ kn{
                 "&ಫೋ<<<ಫ಼ೋ"\r
                 "&ಫೌ<<<ಫ಼ೌ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 1af45d9..7fed405 100644 (file)
@@ -283,7 +283,7 @@ ko{
                 "&ᅩᅣᅵ"\r
                 "=ᆧ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         searchjl{\r
             Sequence{\r
@@ -378,7 +378,7 @@ ko{
                 "&\u1109\u1109=\u110A<<<\u3146"\r
                 "&\u110C\u110C=\u110D<<<\u3149"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -862,14 +862,14 @@ ko{
                 "&희<<*僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲咥唏嘻悕戲暿欷燹爔豨餼"\r
                 "&힐<<*詰犵纈襭頡黠"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         unihan{\r
             Sequence{\r
                 "[import und-u-co-private-unihan]"\r
                 "[reorder Hang Hani]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 7165ad9..47a099b 100644 (file)
@@ -11,7 +11,7 @@ kok{
                 "&ह<ळ"\r
                 "<क्ष"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 3628c40..a7bdfa6 100644 (file)
@@ -8,7 +8,7 @@ ky{
                 "[reorder Cyrl]"\r
                 "&е<ё<<<Ё"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index e47ffa0..004ad9e 100644 (file)
@@ -11,7 +11,7 @@ lkt{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index fb4f7bc..329569f 100644 (file)
@@ -16,14 +16,14 @@ ln{
                 "&S<sh<<<sH<<<Sh<<<SH"\r
                 "&T<ts<<<tS<<<Ts<<<TS"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
                 "&E<ɛ<<<Ɛ"\r
                 "&O<<ɔ<<<Ɔ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index bf8560b..2793e84 100644 (file)
@@ -5,7 +5,7 @@ lo{
     collations{\r
         standard{\r
             Sequence{"[reorder Laoo]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 71d815f..9e4e027 100644 (file)
@@ -16,7 +16,7 @@ lt{
                 "&U<<ų<<<Ų<<ū<<<Ū"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 35c512e..f446e0f 100644 (file)
@@ -15,7 +15,7 @@ lv{
                 "&[before 1]T<š<<<Š"\r
                 "&[before 1]Ʒ<ž<<<Ž"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 4c0b4d5..37fc374 100644 (file)
@@ -10,7 +10,7 @@ mk{
                 "&ԃ<ѓ<<<Ѓ"\r
                 "&ћ<ќ<<<Ќ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index a31fd8a..3dd9d7a 100644 (file)
@@ -17,7 +17,7 @@ ml{
                 "&മ്<<ം"\r
                 "&ന്<<<ൻ്"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index a1467f1..d0cac04 100644 (file)
@@ -5,7 +5,7 @@ mn{
     collations{\r
         standard{\r
             Sequence{"[reorder Cyrl Mong]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index f40720b..0a2ee84 100644 (file)
@@ -12,7 +12,7 @@ mr{
                 "<क्ष"\r
                 "<ज्ञ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 6765408..25a490c 100644 (file)
@@ -12,7 +12,7 @@ mt{
                 "&[before 1]i<ħ<<<Ħ"\r
                 "&[before 1]z<ż<<<Ż"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 0e33ccf..728c47f 100644 (file)
@@ -373,7 +373,7 @@ my{
                 "&ထမင်း=ထ္မင်း"\r
                 "&လက်ဘက်=လ္ဘက်"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index a5805ae..ba78afe 100644 (file)
@@ -8,7 +8,7 @@ nb{
                 "[import und-u-co-search]"\r
                 "[import nb-u-co-standard]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -18,7 +18,7 @@ nb{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<aa<<<Aa<<<AA"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 43a11b1..587e0b4 100644 (file)
@@ -5,7 +5,7 @@ ne{
     collations{\r
         standard{\r
             Sequence{"[reorder Deva]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 72db04e..01d4686 100644 (file)
@@ -5,11 +5,11 @@ nn{
     collations{\r
         search{\r
             Sequence{"[import nb-u-co-search]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{"[import nb-u-co-standard]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 560b8ea..780e5c1 100644 (file)
@@ -8,7 +8,7 @@ om{
                 "&Z<ch<<<Ch<<<CH<dh<<<Dh<<<DH<kh<<<Kh<<<KH<ny<<<Ny<<<NY<ph<<<Ph<<<PH<"\r
                 "sh<<<Sh"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index e4b94ec..8e3edac 100644 (file)
@@ -11,7 +11,7 @@ or{
                 "&ହ<କ୍ଷ"\r
                 "&ଯ<<ୟ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index be2818c..d73b2d2 100644 (file)
@@ -10,7 +10,7 @@ pa{
                 "&ੱ<<ੰ<<ਂ<<ਁ<<਼"\r
                 "&ੜ<੍"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 85297ff..48d42aa 100644 (file)
@@ -14,7 +14,7 @@ pl{
                 "&S<ś<<<Ś"\r
                 "&Z<ź<<<Ź<ż<<<Ż"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index d197824..2848bfc 100644 (file)
@@ -24,7 +24,7 @@ ps{
                 "&ی<<*ىےيېۍ<<یٔ<<<ىٔ<<<ئ"\r
                 "&\u00A0<<\u200C<<\u200D"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 1584857..94d29bb 100644 (file)
@@ -10,7 +10,7 @@ ro{
                 "&S<ş=ș<<<Ş=Ș"\r
                 "&T<ţ=ț<<<Ţ=Ț"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 1dc578e..4565efe 100644 (file)
  */\r
 root{\r
     UCARules:process(uca_rules){"../unidata/UCARules.txt"}\r
-    Version{"2.1.29.77"}\r
+    Version{"2.1.32.70"}\r
     collations{\r
         default{"standard"}\r
         emoji{\r
             Sequence{\r
                 "& [last primary ignorable]<<*🏻🏼🏽🏾🏿"\r
                 "& [last regular]"\r
-                "<*😀😁😂🤣😃😄😅😆😉😊😋😎😍😘😗😙😚☺🙂🤗"\r
-                "<*ð\9f¤\94ð\9f\98\90ð\9f\98\91ð\9f\98¶ð\9f\99\84ð\9f\98\8fð\9f\98£ð\9f\98¥ð\9f\98®ð\9f¤\90ð\9f\98¯ð\9f\98ªð\9f\98«ð\9f\98´ð\9f\98\8cð\9f¤\93😛😜😝🤤😒😓😔😕🙃🤑😲"\r
-                "<*â\98¹ð\9f\99\81ð\9f\98\96ð\9f\98\9eð\9f\98\9fð\9f\98¤ð\9f\98¢ð\9f\98­ð\9f\98¦ð\9f\98§ð\9f\98¨ð\9f\98©ð\9f\98¬ð\9f\98°ð\9f\98±ð\9f\98³ð\9f\98µð\9f\98¡ð\9f\98 "\r
-                "<*ð\9f\98\87ð\9f¤ ð\9f¤¡ð\9f¤¥"\r
-                "<*ð\9f\98·ð\9f¤\92ð\9f¤\95ð\9f¤¢ð\9f¤§"\r
+                "<*😀😁😂🤣😃😄😅😆😉😊😋😎😍😘😗😙😚☺🙂🤗🤩"\r
+                "<*ð\9f¤\94ð\9f¤¨ð\9f\98\90ð\9f\98\91ð\9f\98¶ð\9f\99\84ð\9f\98\8fð\9f\98£ð\9f\98¥ð\9f\98®ð\9f¤\90ð\9f\98¯ð\9f\98ªð\9f\98«ð\9f\98´ð\9f\98\8c😛😜😝🤤😒😓😔😕🙃🤑😲"\r
+                "<*â\98¹ð\9f\99\81ð\9f\98\96ð\9f\98\9eð\9f\98\9fð\9f\98¤ð\9f\98¢ð\9f\98­ð\9f\98¦ð\9f\98§ð\9f\98¨ð\9f\98©ð\9f¤¯ð\9f\98¬ð\9f\98°ð\9f\98±ð\9f\98³ð\9f¤ªð\9f\98µð\9f\98¡ð\9f\98 ð\9f¤¬"\r
+                "<*ð\9f\98·ð\9f¤\92ð\9f¤\95ð\9f¤¢ð\9f¤®ð\9f¤§"\r
+                "<*ð\9f\98\87ð\9f¤ ð\9f¤¡ð\9f¤¥ð\9f¤«ð\9f¤­ð\9f§\90ð\9f¤\93"\r
                 "<*😈👿👹👺💀☠👻👽👾🤖💩"\r
                 "<*😺😸😹😻😼😽🙀😿😾"\r
                 "<*🙈🙉🙊"\r
-                "<*👦👧👨👩👴👵👶👼"\r
-                "<👨‍⚕"\r
-                "<<👨🏻‍⚕"\r
-                "<<👨🏼‍⚕"\r
-                "<<👨🏽‍⚕"\r
-                "<<👨🏾‍⚕"\r
-                "<<👨🏿‍⚕"\r
-                "<👩‍⚕"\r
-                "<<👩🏻‍⚕"\r
-                "<<👩🏼‍⚕"\r
-                "<<👩🏽‍⚕"\r
-                "<<👩🏾‍⚕"\r
-                "<<👩🏿‍⚕"\r
-                "<👨‍🎓"\r
-                "<<👨🏻‍🎓"\r
-                "<<👨🏼‍🎓"\r
-                "<<👨🏽‍🎓"\r
-                "<<👨🏾‍🎓"\r
-                "<<👨🏿‍🎓"\r
-                "<👩‍🎓"\r
-                "<<👩🏻‍🎓"\r
-                "<<👩🏼‍🎓"\r
-                "<<👩🏽‍🎓"\r
-                "<<👩🏾‍🎓"\r
-                "<<👩🏿‍🎓"\r
-                "<👨‍🏫"\r
-                "<<👨🏻‍🏫"\r
-                "<<👨🏼‍🏫"\r
-                "<<👨🏽‍🏫"\r
-                "<<👨🏾‍🏫"\r
-                "<<👨🏿‍🏫"\r
-                "<👩‍🏫"\r
-                "<<👩🏻‍🏫"\r
-                "<<👩🏼‍🏫"\r
-                "<<👩🏽‍🏫"\r
-                "<<👩🏾‍🏫"\r
-                "<<👩🏿‍🏫"\r
-                "<👨‍⚖"\r
-                "<<👨🏻‍⚖"\r
-                "<<👨🏼‍⚖"\r
-                "<<👨🏽‍⚖"\r
-                "<<👨🏾‍⚖"\r
-                "<<👨🏿‍⚖"\r
-                "<👩‍⚖"\r
-                "<<👩🏻‍⚖"\r
-                "<<👩🏼‍⚖"\r
-                "<<👩🏽‍⚖"\r
-                "<<👩🏾‍⚖"\r
-                "<<👩🏿‍⚖"\r
-                "<👨‍🌾"\r
-                "<<👨🏻‍🌾"\r
-                "<<👨🏼‍🌾"\r
-                "<<👨🏽‍🌾"\r
-                "<<👨🏾‍🌾"\r
-                "<<👨🏿‍🌾"\r
-                "<👩‍🌾"\r
-                "<<👩🏻‍🌾"\r
-                "<<👩🏼‍🌾"\r
-                "<<👩🏽‍🌾"\r
-                "<<👩🏾‍🌾"\r
-                "<<👩🏿‍🌾"\r
-                "<👨‍🍳"\r
-                "<<👨🏻‍🍳"\r
-                "<<👨🏼‍🍳"\r
-                "<<👨🏽‍🍳"\r
-                "<<👨🏾‍🍳"\r
-                "<<👨🏿‍🍳"\r
-                "<👩‍🍳"\r
-                "<<👩🏻‍🍳"\r
-                "<<👩🏼‍🍳"\r
-                "<<👩🏽‍🍳"\r
-                "<<👩🏾‍🍳"\r
-                "<<👩🏿‍🍳"\r
-                "<👨‍🔧"\r
-                "<<👨🏻‍🔧"\r
-                "<<👨🏼‍🔧"\r
-                "<<👨🏽‍🔧"\r
-                "<<👨🏾‍🔧"\r
-                "<<👨🏿‍🔧"\r
-                "<👩‍🔧"\r
-                "<<👩🏻‍🔧"\r
-                "<<👩🏼‍🔧"\r
-                "<<👩🏽‍🔧"\r
-                "<<👩🏾‍🔧"\r
-                "<<👩🏿‍🔧"\r
-                "<👨‍🏭"\r
-                "<<👨🏻‍🏭"\r
-                "<<👨🏼‍🏭"\r
-                "<<👨🏽‍🏭"\r
-                "<<👨🏾‍🏭"\r
-                "<<👨🏿‍🏭"\r
-                "<👩‍🏭"\r
-                "<<👩🏻‍🏭"\r
-                "<<👩🏼‍🏭"\r
-                "<<👩🏽‍🏭"\r
-                "<<👩🏾‍🏭"\r
-                "<<👩🏿‍🏭"\r
-                "<👨‍💼"\r
-                "<<👨🏻‍💼"\r
-                "<<👨🏼‍💼"\r
-                "<<👨🏽‍💼"\r
-                "<<👨🏾‍💼"\r
-                "<<👨🏿‍💼"\r
-                "<👩‍💼"\r
-                "<<👩🏻‍💼"\r
-                "<<👩🏼‍💼"\r
-                "<<👩🏽‍💼"\r
-                "<<👩🏾‍💼"\r
-                "<<👩🏿‍💼"\r
-                "<👨‍🔬"\r
-                "<<👨🏻‍🔬"\r
-                "<<👨🏼‍🔬"\r
-                "<<👨🏽‍🔬"\r
-                "<<👨🏾‍🔬"\r
-                "<<👨🏿‍🔬"\r
-                "<👩‍🔬"\r
-                "<<👩🏻‍🔬"\r
-                "<<👩🏼‍🔬"\r
-                "<<👩🏽‍🔬"\r
-                "<<👩🏾‍🔬"\r
-                "<<👩🏿‍🔬"\r
-                "<👨‍💻"\r
-                "<<👨🏻‍💻"\r
-                "<<👨🏼‍💻"\r
-                "<<👨🏽‍💻"\r
-                "<<👨🏾‍💻"\r
-                "<<👨🏿‍💻"\r
-                "<👩‍💻"\r
-                "<<👩🏻‍💻"\r
-                "<<👩🏼‍💻"\r
-                "<<👩🏽‍💻"\r
-                "<<👩🏾‍💻"\r
-                "<<👩🏿‍💻"\r
-                "<👨‍🎤"\r
-                "<<👨🏻‍🎤"\r
-                "<<👨🏼‍🎤"\r
-                "<<👨🏽‍🎤"\r
-                "<<👨🏾‍🎤"\r
-                "<<👨🏿‍🎤"\r
-                "<👩‍🎤"\r
-                "<<👩🏻‍🎤"\r
-                "<<👩🏼‍🎤"\r
-                "<<👩🏽‍🎤"\r
-                "<<👩🏾‍🎤"\r
-                "<<👩🏿‍🎤"\r
-                "<👨‍🎨"\r
-                "<<👨🏻‍🎨"\r
-                "<<👨🏼‍🎨"\r
-                "<<👨🏽‍🎨"\r
-                "<<👨🏾‍🎨"\r
-                "<<👨🏿‍🎨"\r
-                "<👩‍🎨"\r
-                "<<👩🏻‍🎨"\r
-                "<<👩🏼‍🎨"\r
-                "<<👩🏽‍🎨"\r
-                "<<👩🏾‍🎨"\r
-                "<<👩🏿‍🎨"\r
-                "<👨‍✈"\r
-                "<<👨🏻‍✈"\r
-                "<<👨🏼‍✈"\r
-                "<<👨🏽‍✈"\r
-                "<<👨🏾‍✈"\r
-                "<<👨🏿‍✈"\r
-                "<👩‍✈"\r
-                "<<👩🏻‍✈"\r
-                "<<👩🏼‍✈"\r
-                "<<👩🏽‍✈"\r
-                "<<👩🏾‍✈"\r
-                "<<👩🏿‍✈"\r
-                "<👨‍🚀"\r
-                "<<👨🏻‍🚀"\r
-                "<<👨🏼‍🚀"\r
-                "<<👨🏽‍🚀"\r
-                "<<👨🏾‍🚀"\r
-                "<<👨🏿‍🚀"\r
-                "<👩‍🚀"\r
-                "<<👩🏻‍🚀"\r
-                "<<👩🏼‍🚀"\r
-                "<<👩🏽‍🚀"\r
-                "<<👩🏾‍🚀"\r
-                "<<👩🏿‍🚀"\r
-                "<👨‍🚒"\r
-                "<<👨🏻‍🚒"\r
-                "<<👨🏼‍🚒"\r
-                "<<👨🏽‍🚒"\r
-                "<<👨🏾‍🚒"\r
-                "<<👨🏿‍🚒"\r
-                "<👩‍🚒"\r
-                "<<👩🏻‍🚒"\r
-                "<<👩🏼‍🚒"\r
-                "<<👩🏽‍🚒"\r
-                "<<👩🏾‍🚒"\r
-                "<<👩🏿‍🚒"\r
+                "<*👶🧒👦👧🧑👨👩🧓👴👵"\r
+                "< 🧑‍⚕ << 🧑🏻‍⚕ << 🧑🏼‍⚕ << 🧑🏽‍⚕ << 🧑🏾‍⚕ << 🧑🏿‍⚕"\r
+                "< 👨‍⚕ << 👨🏻‍⚕ << 👨🏼‍⚕ << 👨🏽‍⚕ << 👨🏾‍⚕ << 👨🏿‍⚕"\r
+                "< 👩‍⚕ << 👩🏻‍⚕ << 👩🏼‍⚕ << 👩🏽‍⚕ << 👩🏾‍⚕ << 👩🏿‍⚕"\r
+                "< 🧑‍🎓 << 🧑🏻‍🎓 << 🧑🏼‍🎓 << 🧑🏽‍🎓 << 🧑🏾‍🎓 << 🧑🏿‍🎓"\r
+                "< 👨‍🎓 << 👨🏻‍🎓 << 👨🏼‍🎓 << 👨🏽‍🎓 << 👨🏾‍🎓 << 👨🏿‍🎓"\r
+                "< 👩‍🎓 << 👩🏻‍🎓 << 👩🏼‍🎓 << 👩🏽‍🎓 << 👩🏾‍🎓 << 👩🏿‍🎓"\r
+                "< 🧑‍🏫 << 🧑🏻‍🏫 << 🧑🏼‍🏫 << 🧑🏽‍🏫 << 🧑🏾‍🏫 << 🧑🏿‍🏫"\r
+                "< 👨‍🏫 << 👨🏻‍🏫 << 👨🏼‍🏫 << 👨🏽‍🏫 << 👨🏾‍🏫 << 👨🏿‍🏫"\r
+                "< 👩‍🏫 << 👩🏻‍🏫 << 👩🏼‍🏫 << 👩🏽‍🏫 << 👩🏾‍🏫 << 👩🏿‍🏫"\r
+                "< 🧑‍⚖ << 🧑🏻‍⚖ << 🧑🏼‍⚖ << 🧑🏽‍⚖ << 🧑🏾‍⚖ << 🧑🏿‍⚖"\r
+                "< 👨‍⚖ << 👨🏻‍⚖ << 👨🏼‍⚖ << 👨🏽‍⚖ << 👨🏾‍⚖ << 👨🏿‍⚖"\r
+                "< 👩‍⚖ << 👩🏻‍⚖ << 👩🏼‍⚖ << 👩🏽‍⚖ << 👩🏾‍⚖ << 👩🏿‍⚖"\r
+                "< 🧑‍🌾 << 🧑🏻‍🌾 << 🧑🏼‍🌾 << 🧑🏽‍🌾 << 🧑🏾‍🌾 << 🧑🏿‍🌾"\r
+                "< 👨‍🌾 << 👨🏻‍🌾 << 👨🏼‍🌾 << 👨🏽‍🌾 << 👨🏾‍🌾 << 👨🏿‍🌾"\r
+                "< 👩‍🌾 << 👩🏻‍🌾 << 👩🏼‍🌾 << 👩🏽‍🌾 << 👩🏾‍🌾 << 👩🏿‍🌾"\r
+                "< 🧑‍🍳 << 🧑🏻‍🍳 << 🧑🏼‍🍳 << 🧑🏽‍🍳 << 🧑🏾‍🍳 << 🧑🏿‍🍳"\r
+                "< 👨‍🍳 << 👨🏻‍🍳 << 👨🏼‍🍳 << 👨🏽‍🍳 << 👨🏾‍🍳 << 👨🏿‍🍳"\r
+                "< 👩‍🍳 << 👩🏻‍🍳 << 👩🏼‍🍳 << 👩🏽‍🍳 << 👩🏾‍🍳 << 👩🏿‍🍳"\r
+                "< 🧑‍🔧 << 🧑🏻‍🔧 << 🧑🏼‍🔧 << 🧑🏽‍🔧 << 🧑🏾‍🔧 << 🧑🏿‍🔧"\r
+                "< 👨‍🔧 << 👨🏻‍🔧 << 👨🏼‍🔧 << 👨🏽‍🔧 << 👨🏾‍🔧 << 👨🏿‍🔧"\r
+                "< 👩‍🔧 << 👩🏻‍🔧 << 👩🏼‍🔧 << 👩🏽‍🔧 << 👩🏾‍🔧 << 👩🏿‍🔧"\r
+                "< 🧑‍🏭 << 🧑🏻‍🏭 << 🧑🏼‍🏭 << 🧑🏽‍🏭 << 🧑🏾‍🏭 << 🧑🏿‍🏭"\r
+                "< 👨‍🏭 << 👨🏻‍🏭 << 👨🏼‍🏭 << 👨🏽‍🏭 << 👨🏾‍🏭 << 👨🏿‍🏭"\r
+                "< 👩‍🏭 << 👩🏻‍🏭 << 👩🏼‍🏭 << 👩🏽‍🏭 << 👩🏾‍🏭 << 👩🏿‍🏭"\r
+                "< 🧑‍💼 << 🧑🏻‍💼 << 🧑🏼‍💼 << 🧑🏽‍💼 << 🧑🏾‍💼 << 🧑🏿‍💼"\r
+                "< 👨‍💼 << 👨🏻‍💼 << 👨🏼‍💼 << 👨🏽‍💼 << 👨🏾‍💼 << 👨🏿‍💼"\r
+                "< 👩‍💼 << 👩🏻‍💼 << 👩🏼‍💼 << 👩🏽‍💼 << 👩🏾‍💼 << 👩🏿‍💼"\r
+                "< 🧑‍🔬 << 🧑🏻‍🔬 << 🧑🏼‍🔬 << 🧑🏽‍🔬 << 🧑🏾‍🔬 << 🧑🏿‍🔬"\r
+                "< 👨‍🔬 << 👨🏻‍🔬 << 👨🏼‍🔬 << 👨🏽‍🔬 << 👨🏾‍🔬 << 👨🏿‍🔬"\r
+                "< 👩‍🔬 << 👩🏻‍🔬 << 👩🏼‍🔬 << 👩🏽‍🔬 << 👩🏾‍🔬 << 👩🏿‍🔬"\r
+                "< 🧑‍💻 << 🧑🏻‍💻 << 🧑🏼‍💻 << 🧑🏽‍💻 << 🧑🏾‍💻 << 🧑🏿‍💻"\r
+                "< 👨‍💻 << 👨🏻‍💻 << 👨🏼‍💻 << 👨🏽‍💻 << 👨🏾‍💻 << 👨🏿‍💻"\r
+                "< 👩‍💻 << 👩🏻‍💻 << 👩🏼‍💻 << 👩🏽‍💻 << 👩🏾‍💻 << 👩🏿‍💻"\r
+                "< 🧑‍🎤 << 🧑🏻‍🎤 << 🧑🏼‍🎤 << 🧑🏽‍🎤 << 🧑🏾‍🎤 << 🧑🏿‍🎤"\r
+                "< 👨‍🎤 << 👨🏻‍🎤 << 👨🏼‍🎤 << 👨🏽‍🎤 << 👨🏾‍🎤 << 👨🏿‍🎤"\r
+                "< 👩‍🎤 << 👩🏻‍🎤 << 👩🏼‍🎤 << 👩🏽‍🎤 << 👩🏾‍🎤 << 👩🏿‍🎤"\r
+                "< 🧑‍🎨 << 🧑🏻‍🎨 << 🧑🏼‍🎨 << 🧑🏽‍🎨 << 🧑🏾‍🎨 << 🧑🏿‍🎨"\r
+                "< 👨‍🎨 << 👨🏻‍🎨 << 👨🏼‍🎨 << 👨🏽‍🎨 << 👨🏾‍🎨 << 👨🏿‍🎨"\r
+                "< 👩‍🎨 << 👩🏻‍🎨 << 👩🏼‍🎨 << 👩🏽‍🎨 << 👩🏾‍🎨 << 👩🏿‍🎨"\r
+                "< 🧑‍✈ << 🧑🏻‍✈ << 🧑🏼‍✈ << 🧑🏽‍✈ << 🧑🏾‍✈ << 🧑🏿‍✈"\r
+                "< 👨‍✈ << 👨🏻‍✈ << 👨🏼‍✈ << 👨🏽‍✈ << 👨🏾‍✈ << 👨🏿‍✈"\r
+                "< 👩‍✈ << 👩🏻‍✈ << 👩🏼‍✈ << 👩🏽‍✈ << 👩🏾‍✈ << 👩🏿‍✈"\r
+                "< 🧑‍🚀 << 🧑🏻‍🚀 << 🧑🏼‍🚀 << 🧑🏽‍🚀 << 🧑🏾‍🚀 << 🧑🏿‍🚀"\r
+                "< 👨‍🚀 << 👨🏻‍🚀 << 👨🏼‍🚀 << 👨🏽‍🚀 << 👨🏾‍🚀 << 👨🏿‍🚀"\r
+                "< 👩‍🚀 << 👩🏻‍🚀 << 👩🏼‍🚀 << 👩🏽‍🚀 << 👩🏾‍🚀 << 👩🏿‍🚀"\r
+                "< 🧑‍🚒 << 🧑🏻‍🚒 << 🧑🏼‍🚒 << 🧑🏽‍🚒 << 🧑🏾‍🚒 << 🧑🏿‍🚒"\r
+                "< 👨‍🚒 << 👨🏻‍🚒 << 👨🏼‍🚒 << 👨🏽‍🚒 << 👨🏾‍🚒 << 👨🏿‍🚒"\r
+                "< 👩‍🚒 << 👩🏻‍🚒 << 👩🏼‍🚒 << 👩🏽‍🚒 << 👩🏾‍🚒 << 👩🏿‍🚒"\r
                 "<*👮"\r
-                "<👮‍♂"\r
-                "<<👮🏻‍♂"\r
-                "<<👮🏼‍♂"\r
-                "<<👮🏽‍♂"\r
-                "<<👮🏾‍♂"\r
-                "<<👮🏿‍♂"\r
-                "<👮‍♀"\r
-                "<<👮🏻‍♀"\r
-                "<<👮🏼‍♀"\r
-                "<<👮🏽‍♀"\r
-                "<<👮🏾‍♀"\r
-                "<<👮🏿‍♀"\r
+                "< 👮‍♂ << 👮🏻‍♂ << 👮🏼‍♂ << 👮🏽‍♂ << 👮🏾‍♂ << 👮🏿‍♂"\r
+                "< 👮‍♀ << 👮🏻‍♀ << 👮🏼‍♀ << 👮🏽‍♀ << 👮🏾‍♀ << 👮🏿‍♀"\r
                 "<*🕵"\r
-                "<🕵‍♂ = 🕵️‍♂"\r
-                "<<🕵🏻‍♂"\r
-                "<<🕵🏼‍♂"\r
-                "<<🕵🏽‍♂"\r
-                "<<🕵🏾‍♂"\r
-                "<<🕵🏿‍♂"\r
-                "<🕵‍♀ = 🕵️‍♀"\r
-                "<<🕵🏻‍♀"\r
-                "<<🕵🏼‍♀"\r
-                "<<🕵🏽‍♀"\r
-                "<<🕵🏾‍♀"\r
-                "<<🕵🏿‍♀"\r
+                "< 🕵‍♂ = 🕵️‍♂ << 🕵🏻‍♂ << 🕵🏼‍♂ << 🕵🏽‍♂ << 🕵🏾‍♂ << 🕵🏿‍♂"\r
+                "< 🕵‍♀ = 🕵️‍♀ << 🕵🏻‍♀ << 🕵🏼‍♀ << 🕵🏽‍♀ << 🕵🏾‍♀ << 🕵🏿‍♀"\r
                 "<*💂"\r
-                "<💂‍♂"\r
-                "<<💂🏻‍♂"\r
-                "<<💂🏼‍♂"\r
-                "<<💂🏽‍♂"\r
-                "<<💂🏾‍♂"\r
-                "<<💂🏿‍♂"\r
-                "<💂‍♀"\r
-                "<<💂🏻‍♀"\r
-                "<<💂🏼‍♀"\r
-                "<<💂🏽‍♀"\r
-                "<<💂🏾‍♀"\r
-                "<<💂🏿‍♀"\r
+                "< 💂‍♂ << 💂🏻‍♂ << 💂🏼‍♂ << 💂🏽‍♂ << 💂🏾‍♂ << 💂🏿‍♂"\r
+                "< 💂‍♀ << 💂🏻‍♀ << 💂🏼‍♀ << 💂🏽‍♀ << 💂🏾‍♀ << 💂🏿‍♀"\r
                 "<*👷"\r
-                "<👷‍♂"\r
-                "<<👷🏻‍♂"\r
-                "<<👷🏼‍♂"\r
-                "<<👷🏽‍♂"\r
-                "<<👷🏾‍♂"\r
-                "<<👷🏿‍♂"\r
-                "<👷‍♀"\r
-                "<<👷🏻‍♀"\r
-                "<<👷🏼‍♀"\r
-                "<<👷🏽‍♀"\r
-                "<<👷🏾‍♀"\r
-                "<<👷🏿‍♀"\r
-                "<*👳"\r
-                "<👳‍♂"\r
-                "<<👳🏻‍♂"\r
-                "<<👳🏼‍♂"\r
-                "<<👳🏽‍♂"\r
-                "<<👳🏾‍♂"\r
-                "<<👳🏿‍♂"\r
-                "<👳‍♀"\r
-                "<<👳🏻‍♀"\r
-                "<<👳🏼‍♀"\r
-                "<<👳🏽‍♀"\r
-                "<<👳🏾‍♀"\r
-                "<<👳🏿‍♀"\r
-                "<*👱"\r
-                "<👱‍♂"\r
-                "<<👱🏻‍♂"\r
-                "<<👱🏼‍♂"\r
-                "<<👱🏽‍♂"\r
-                "<<👱🏾‍♂"\r
-                "<<👱🏿‍♂"\r
-                "<👱‍♀"\r
-                "<<👱🏻‍♀"\r
-                "<<👱🏼‍♀"\r
-                "<<👱🏽‍♀"\r
-                "<<👱🏾‍♀"\r
-                "<<👱🏿‍♀"\r
-                "<*🎅🤶👸🤴👰🤵🤰👲"\r
+                "< 👷‍♂ << 👷🏻‍♂ << 👷🏼‍♂ << 👷🏽‍♂ << 👷🏾‍♂ << 👷🏿‍♂"\r
+                "< 👷‍♀ << 👷🏻‍♀ << 👷🏼‍♀ << 👷🏽‍♀ << 👷🏾‍♀ << 👷🏿‍♀"\r
+                "<*🤴👸👳"\r
+                "< 👳‍♂ << 👳🏻‍♂ << 👳🏼‍♂ << 👳🏽‍♂ << 👳🏾‍♂ << 👳🏿‍♂"\r
+                "< 👳‍♀ << 👳🏻‍♀ << 👳🏼‍♀ << 👳🏽‍♀ << 👳🏾‍♀ << 👳🏿‍♀"\r
+                "<*👲🧕🧔👱"\r
+                "< 👱‍♂ << 👱🏻‍♂ << 👱🏼‍♂ << 👱🏽‍♂ << 👱🏾‍♂ << 👱🏿‍♂"\r
+                "< 👱‍♀ << 👱🏻‍♀ << 👱🏼‍♀ << 👱🏽‍♀ << 👱🏾‍♀ << 👱🏿‍♀"\r
+                "<*🤵👰🤰🤱👼🎅🤶🧙"\r
+                "< 🧙‍♀ << 🧙🏻‍♀ << 🧙🏼‍♀ << 🧙🏽‍♀ << 🧙🏾‍♀ << 🧙🏿‍♀"\r
+                "< 🧙‍♂ << 🧙🏻‍♂ << 🧙🏼‍♂ << 🧙🏽‍♂ << 🧙🏾‍♂ << 🧙🏿‍♂"\r
+                "<*🧚"\r
+                "< 🧚‍♀ << 🧚🏻‍♀ << 🧚🏼‍♀ << 🧚🏽‍♀ << 🧚🏾‍♀ << 🧚🏿‍♀"\r
+                "< 🧚‍♂ << 🧚🏻‍♂ << 🧚🏼‍♂ << 🧚🏽‍♂ << 🧚🏾‍♂ << 🧚🏿‍♂"\r
+                "<*🧛"\r
+                "< 🧛‍♀ << 🧛🏻‍♀ << 🧛🏼‍♀ << 🧛🏽‍♀ << 🧛🏾‍♀ << 🧛🏿‍♀"\r
+                "< 🧛‍♂ << 🧛🏻‍♂ << 🧛🏼‍♂ << 🧛🏽‍♂ << 🧛🏾‍♂ << 🧛🏿‍♂"\r
+                "<*🧜"\r
+                "< 🧜‍♀ << 🧜🏻‍♀ << 🧜🏼‍♀ << 🧜🏽‍♀ << 🧜🏾‍♀ << 🧜🏿‍♀"\r
+                "< 🧜‍♂ << 🧜🏻‍♂ << 🧜🏼‍♂ << 🧜🏽‍♂ << 🧜🏾‍♂ << 🧜🏿‍♂"\r
+                "<*🧝"\r
+                "< 🧝‍♀ << 🧝🏻‍♀ << 🧝🏼‍♀ << 🧝🏽‍♀ << 🧝🏾‍♀ << 🧝🏿‍♀"\r
+                "< 🧝‍♂ << 🧝🏻‍♂ << 🧝🏼‍♂ << 🧝🏽‍♂ << 🧝🏾‍♂ << 🧝🏿‍♂"\r
+                "<*🧞"\r
+                "< 🧞‍♀"\r
+                "< 🧞‍♂"\r
+                "<*🧟"\r
+                "< 🧟‍♀"\r
+                "< 🧟‍♂"\r
                 "<*🙍"\r
-                "<🙍‍♂"\r
-                "<<🙍🏻‍♂"\r
-                "<<🙍🏼‍♂"\r
-                "<<🙍🏽‍♂"\r
-                "<<🙍🏾‍♂"\r
-                "<<🙍🏿‍♂"\r
-                "<🙍‍♀"\r
-                "<<🙍🏻‍♀"\r
-                "<<🙍🏼‍♀"\r
-                "<<🙍🏽‍♀"\r
-                "<<🙍🏾‍♀"\r
-                "<<🙍🏿‍♀"\r
+                "< 🙍‍♂ << 🙍🏻‍♂ << 🙍🏼‍♂ << 🙍🏽‍♂ << 🙍🏾‍♂ << 🙍🏿‍♂"\r
+                "< 🙍‍♀ << 🙍🏻‍♀ << 🙍🏼‍♀ << 🙍🏽‍♀ << 🙍🏾‍♀ << 🙍🏿‍♀"\r
                 "<*🙎"\r
-                "<🙎‍♂"\r
-                "<<🙎🏻‍♂"\r
-                "<<🙎🏼‍♂"\r
-                "<<🙎🏽‍♂"\r
-                "<<🙎🏾‍♂"\r
-                "<<🙎🏿‍♂"\r
-                "<🙎‍♀"\r
-                "<<🙎🏻‍♀"\r
-                "<<🙎🏼‍♀"\r
-                "<<🙎🏽‍♀"\r
-                "<<🙎🏾‍♀"\r
-                "<<🙎🏿‍♀"\r
+                "< 🙎‍♂ << 🙎🏻‍♂ << 🙎🏼‍♂ << 🙎🏽‍♂ << 🙎🏾‍♂ << 🙎🏿‍♂"\r
+                "< 🙎‍♀ << 🙎🏻‍♀ << 🙎🏼‍♀ << 🙎🏽‍♀ << 🙎🏾‍♀ << 🙎🏿‍♀"\r
                 "<*🙅"\r
-                "<🙅‍♂"\r
-                "<<🙅🏻‍♂"\r
-                "<<🙅🏼‍♂"\r
-                "<<🙅🏽‍♂"\r
-                "<<🙅🏾‍♂"\r
-                "<<🙅🏿‍♂"\r
-                "<🙅‍♀"\r
-                "<<🙅🏻‍♀"\r
-                "<<🙅🏼‍♀"\r
-                "<<🙅🏽‍♀"\r
-                "<<🙅🏾‍♀"\r
-                "<<🙅🏿‍♀"\r
+                "< 🙅‍♂ << 🙅🏻‍♂ << 🙅🏼‍♂ << 🙅🏽‍♂ << 🙅🏾‍♂ << 🙅🏿‍♂"\r
+                "< 🙅‍♀ << 🙅🏻‍♀ << 🙅🏼‍♀ << 🙅🏽‍♀ << 🙅🏾‍♀ << 🙅🏿‍♀"\r
                 "<*🙆"\r
-                "<🙆‍♂"\r
-                "<<🙆🏻‍♂"\r
-                "<<🙆🏼‍♂"\r
-                "<<🙆🏽‍♂"\r
-                "<<🙆🏾‍♂"\r
-                "<<🙆🏿‍♂"\r
-                "<🙆‍♀"\r
-                "<<🙆🏻‍♀"\r
-                "<<🙆🏼‍♀"\r
-                "<<🙆🏽‍♀"\r
-                "<<🙆🏾‍♀"\r
-                "<<🙆🏿‍♀"\r
+                "< 🙆‍♂ << 🙆🏻‍♂ << 🙆🏼‍♂ << 🙆🏽‍♂ << 🙆🏾‍♂ << 🙆🏿‍♂"\r
+                "< 🙆‍♀ << 🙆🏻‍♀ << 🙆🏼‍♀ << 🙆🏽‍♀ << 🙆🏾‍♀ << 🙆🏿‍♀"\r
                 "<*💁"\r
-                "<💁‍♂"\r
-                "<<💁🏻‍♂"\r
-                "<<💁🏼‍♂"\r
-                "<<💁🏽‍♂"\r
-                "<<💁🏾‍♂"\r
-                "<<💁🏿‍♂"\r
-                "<💁‍♀"\r
-                "<<💁🏻‍♀"\r
-                "<<💁🏼‍♀"\r
-                "<<💁🏽‍♀"\r
-                "<<💁🏾‍♀"\r
-                "<<💁🏿‍♀"\r
+                "< 💁‍♂ << 💁🏻‍♂ << 💁🏼‍♂ << 💁🏽‍♂ << 💁🏾‍♂ << 💁🏿‍♂"\r
+                "< 💁‍♀ << 💁🏻‍♀ << 💁🏼‍♀ << 💁🏽‍♀ << 💁🏾‍♀ << 💁🏿‍♀"\r
                 "<*🙋"\r
-                "<🙋‍♂"\r
-                "<<🙋🏻‍♂"\r
-                "<<🙋🏼‍♂"\r
-                "<<🙋🏽‍♂"\r
-                "<<🙋🏾‍♂"\r
-                "<<🙋🏿‍♂"\r
-                "<🙋‍♀"\r
-                "<<🙋🏻‍♀"\r
-                "<<🙋🏼‍♀"\r
-                "<<🙋🏽‍♀"\r
-                "<<🙋🏾‍♀"\r
-                "<<🙋🏿‍♀"\r
+                "< 🙋‍♂ << 🙋🏻‍♂ << 🙋🏼‍♂ << 🙋🏽‍♂ << 🙋🏾‍♂ << 🙋🏿‍♂"\r
+                "< 🙋‍♀ << 🙋🏻‍♀ << 🙋🏼‍♀ << 🙋🏽‍♀ << 🙋🏾‍♀ << 🙋🏿‍♀"\r
                 "<*🙇"\r
-                "<🙇‍♂"\r
-                "<<🙇🏻‍♂"\r
-                "<<🙇🏼‍♂"\r
-                "<<🙇🏽‍♂"\r
-                "<<🙇🏾‍♂"\r
-                "<<🙇🏿‍♂"\r
-                "<🙇‍♀"\r
-                "<<🙇🏻‍♀"\r
-                "<<🙇🏼‍♀"\r
-                "<<🙇🏽‍♀"\r
-                "<<🙇🏾‍♀"\r
-                "<<🙇🏿‍♀"\r
+                "< 🙇‍♂ << 🙇🏻‍♂ << 🙇🏼‍♂ << 🙇🏽‍♂ << 🙇🏾‍♂ << 🙇🏿‍♂"\r
+                "< 🙇‍♀ << 🙇🏻‍♀ << 🙇🏼‍♀ << 🙇🏽‍♀ << 🙇🏾‍♀ << 🙇🏿‍♀"\r
                 "<*🤦"\r
-                "<🤦‍♂"\r
-                "<<🤦🏻‍♂"\r
-                "<<🤦🏼‍♂"\r
-                "<<🤦🏽‍♂"\r
-                "<<🤦🏾‍♂"\r
-                "<<🤦🏿‍♂"\r
-                "<🤦‍♀"\r
-                "<<🤦🏻‍♀"\r
-                "<<🤦🏼‍♀"\r
-                "<<🤦🏽‍♀"\r
-                "<<🤦🏾‍♀"\r
-                "<<🤦🏿‍♀"\r
+                "< 🤦‍♂ << 🤦🏻‍♂ << 🤦🏼‍♂ << 🤦🏽‍♂ << 🤦🏾‍♂ << 🤦🏿‍♂"\r
+                "< 🤦‍♀ << 🤦🏻‍♀ << 🤦🏼‍♀ << 🤦🏽‍♀ << 🤦🏾‍♀ << 🤦🏿‍♀"\r
                 "<*🤷"\r
-                "<🤷‍♂"\r
-                "<<🤷🏻‍♂"\r
-                "<<🤷🏼‍♂"\r
-                "<<🤷🏽‍♂"\r
-                "<<🤷🏾‍♂"\r
-                "<<🤷🏿‍♂"\r
-                "<🤷‍♀"\r
-                "<<🤷🏻‍♀"\r
-                "<<🤷🏼‍♀"\r
-                "<<🤷🏽‍♀"\r
-                "<<🤷🏾‍♀"\r
-                "<<🤷🏿‍♀"\r
+                "< 🤷‍♂ << 🤷🏻‍♂ << 🤷🏼‍♂ << 🤷🏽‍♂ << 🤷🏾‍♂ << 🤷🏿‍♂"\r
+                "< 🤷‍♀ << 🤷🏻‍♀ << 🤷🏼‍♀ << 🤷🏽‍♀ << 🤷🏾‍♀ << 🤷🏿‍♀"\r
                 "<*💆"\r
-                "<💆‍♂"\r
-                "<<💆🏻‍♂"\r
-                "<<💆🏼‍♂"\r
-                "<<💆🏽‍♂"\r
-                "<<💆🏾‍♂"\r
-                "<<💆🏿‍♂"\r
-                "<💆‍♀"\r
-                "<<💆🏻‍♀"\r
-                "<<💆🏼‍♀"\r
-                "<<💆🏽‍♀"\r
-                "<<💆🏾‍♀"\r
-                "<<💆🏿‍♀"\r
+                "< 💆‍♂ << 💆🏻‍♂ << 💆🏼‍♂ << 💆🏽‍♂ << 💆🏾‍♂ << 💆🏿‍♂"\r
+                "< 💆‍♀ << 💆🏻‍♀ << 💆🏼‍♀ << 💆🏽‍♀ << 💆🏾‍♀ << 💆🏿‍♀"\r
                 "<*💇"\r
-                "<💇‍♂"\r
-                "<<💇🏻‍♂"\r
-                "<<💇🏼‍♂"\r
-                "<<💇🏽‍♂"\r
-                "<<💇🏾‍♂"\r
-                "<<💇🏿‍♂"\r
-                "<💇‍♀"\r
-                "<<💇🏻‍♀"\r
-                "<<💇🏼‍♀"\r
-                "<<💇🏽‍♀"\r
-                "<<💇🏾‍♀"\r
-                "<<💇🏿‍♀"\r
+                "< 💇‍♂ << 💇🏻‍♂ << 💇🏼‍♂ << 💇🏽‍♂ << 💇🏾‍♂ << 💇🏿‍♂"\r
+                "< 💇‍♀ << 💇🏻‍♀ << 💇🏼‍♀ << 💇🏽‍♀ << 💇🏾‍♀ << 💇🏿‍♀"\r
                 "<*🚶"\r
-                "<🚶‍♂"\r
-                "<<🚶🏻‍♂"\r
-                "<<🚶🏼‍♂"\r
-                "<<🚶🏽‍♂"\r
-                "<<🚶🏾‍♂"\r
-                "<<🚶🏿‍♂"\r
-                "<🚶‍♀"\r
-                "<<🚶🏻‍♀"\r
-                "<<🚶🏼‍♀"\r
-                "<<🚶🏽‍♀"\r
-                "<<🚶🏾‍♀"\r
-                "<<🚶🏿‍♀"\r
+                "< 🚶‍♂ << 🚶🏻‍♂ << 🚶🏼‍♂ << 🚶🏽‍♂ << 🚶🏾‍♂ << 🚶🏿‍♂"\r
+                "< 🚶‍♀ << 🚶🏻‍♀ << 🚶🏼‍♀ << 🚶🏽‍♀ << 🚶🏾‍♀ << 🚶🏿‍♀"\r
                 "<*🏃"\r
-                "<🏃‍♂"\r
-                "<<🏃🏻‍♂"\r
-                "<<🏃🏼‍♂"\r
-                "<<🏃🏽‍♂"\r
-                "<<🏃🏾‍♂"\r
-                "<<🏃🏿‍♂"\r
-                "<🏃‍♀"\r
-                "<<🏃🏻‍♀"\r
-                "<<🏃🏼‍♀"\r
-                "<<🏃🏽‍♀"\r
-                "<<🏃🏾‍♀"\r
-                "<<🏃🏿‍♀"\r
+                "< 🏃‍♂ << 🏃🏻‍♂ << 🏃🏼‍♂ << 🏃🏽‍♂ << 🏃🏾‍♂ << 🏃🏿‍♂"\r
+                "< 🏃‍♀ << 🏃🏻‍♀ << 🏃🏼‍♀ << 🏃🏽‍♀ << 🏃🏾‍♀ << 🏃🏿‍♀"\r
                 "<*💃🕺👯"\r
-                "<👯‍♂"\r
-                "<<👯🏻‍♂"\r
-                "<<👯🏼‍♂"\r
-                "<<👯🏽‍♂"\r
-                "<<👯🏾‍♂"\r
-                "<<👯🏿‍♂"\r
-                "<👯‍♀"\r
-                "<<👯🏻‍♀"\r
-                "<<👯🏼‍♀"\r
-                "<<👯🏽‍♀"\r
-                "<<👯🏾‍♀"\r
-                "<<👯🏿‍♀"\r
-                "<*🕴🗣👤👥"\r
+                "< 👯‍♂"\r
+                "< 👯‍♀"\r
+                "<*🧖"\r
+                "< 🧖‍♀ << 🧖🏻‍♀ << 🧖🏼‍♀ << 🧖🏽‍♀ << 🧖🏾‍♀ << 🧖🏿‍♀"\r
+                "< 🧖‍♂ << 🧖🏻‍♂ << 🧖🏼‍♂ << 🧖🏽‍♂ << 🧖🏾‍♂ << 🧖🏿‍♂"\r
+                "<*🧗"\r
+                "< 🧗‍♀ << 🧗🏻‍♀ << 🧗🏼‍♀ << 🧗🏽‍♀ << 🧗🏾‍♀ << 🧗🏿‍♀"\r
+                "< 🧗‍♂ << 🧗🏻‍♂ << 🧗🏼‍♂ << 🧗🏽‍♂ << 🧗🏾‍♂ << 🧗🏿‍♂"\r
+                "<*🧘"\r
+                "< 🧘‍♀ << 🧘🏻‍♀ << 🧘🏼‍♀ << 🧘🏽‍♀ << 🧘🏾‍♀ << 🧘🏿‍♀"\r
+                "< 🧘‍♂ << 🧘🏻‍♂ << 🧘🏼‍♂ << 🧘🏽‍♂ << 🧘🏾‍♂ << 🧘🏿‍♂"\r
+                "<*🛀🛌🕴🗣👤👥"\r
                 "<*🤺🏇⛷🏂🏌"\r
-                "<🏌‍♂ = 🏌️‍♂"\r
-                "<<🏌🏻‍♂"\r
-                "<<🏌🏼‍♂"\r
-                "<<🏌🏽‍♂"\r
-                "<<🏌🏾‍♂"\r
-                "<<🏌🏿‍♂"\r
-                "<🏌‍♀ = 🏌️‍♀"\r
-                "<<🏌🏻‍♀"\r
-                "<<🏌🏼‍♀"\r
-                "<<🏌🏽‍♀"\r
-                "<<🏌🏾‍♀"\r
-                "<<🏌🏿‍♀"\r
+                "< 🏌‍♂ = 🏌️‍♂ << 🏌🏻‍♂ << 🏌🏼‍♂ << 🏌🏽‍♂ << 🏌🏾‍♂ << 🏌🏿‍♂"\r
+                "< 🏌‍♀ = 🏌️‍♀ << 🏌🏻‍♀ << 🏌🏼‍♀ << 🏌🏽‍♀ << 🏌🏾‍♀ << 🏌🏿‍♀"\r
                 "<*🏄"\r
-                "<🏄‍♂"\r
-                "<<🏄🏻‍♂"\r
-                "<<🏄🏼‍♂"\r
-                "<<🏄🏽‍♂"\r
-                "<<🏄🏾‍♂"\r
-                "<<🏄🏿‍♂"\r
-                "<🏄‍♀"\r
-                "<<🏄🏻‍♀"\r
-                "<<🏄🏼‍♀"\r
-                "<<🏄🏽‍♀"\r
-                "<<🏄🏾‍♀"\r
-                "<<🏄🏿‍♀"\r
+                "< 🏄‍♂ << 🏄🏻‍♂ << 🏄🏼‍♂ << 🏄🏽‍♂ << 🏄🏾‍♂ << 🏄🏿‍♂"\r
+                "< 🏄‍♀ << 🏄🏻‍♀ << 🏄🏼‍♀ << 🏄🏽‍♀ << 🏄🏾‍♀ << 🏄🏿‍♀"\r
                 "<*🚣"\r
-                "<🚣‍♂"\r
-                "<<🚣🏻‍♂"\r
-                "<<🚣🏼‍♂"\r
-                "<<🚣🏽‍♂"\r
-                "<<🚣🏾‍♂"\r
-                "<<🚣🏿‍♂"\r
-                "<🚣‍♀"\r
-                "<<🚣🏻‍♀"\r
-                "<<🚣🏼‍♀"\r
-                "<<🚣🏽‍♀"\r
-                "<<🚣🏾‍♀"\r
-                "<<🚣🏿‍♀"\r
+                "< 🚣‍♂ << 🚣🏻‍♂ << 🚣🏼‍♂ << 🚣🏽‍♂ << 🚣🏾‍♂ << 🚣🏿‍♂"\r
+                "< 🚣‍♀ << 🚣🏻‍♀ << 🚣🏼‍♀ << 🚣🏽‍♀ << 🚣🏾‍♀ << 🚣🏿‍♀"\r
                 "<*🏊"\r
-                "<🏊‍♂"\r
-                "<<🏊🏻‍♂"\r
-                "<<🏊🏼‍♂"\r
-                "<<🏊🏽‍♂"\r
-                "<<🏊🏾‍♂"\r
-                "<<🏊🏿‍♂"\r
-                "<🏊‍♀"\r
-                "<<🏊🏻‍♀"\r
-                "<<🏊🏼‍♀"\r
-                "<<🏊🏽‍♀"\r
-                "<<🏊🏾‍♀"\r
-                "<<🏊🏿‍♀"\r
+                "< 🏊‍♂ << 🏊🏻‍♂ << 🏊🏼‍♂ << 🏊🏽‍♂ << 🏊🏾‍♂ << 🏊🏿‍♂"\r
+                "< 🏊‍♀ << 🏊🏻‍♀ << 🏊🏼‍♀ << 🏊🏽‍♀ << 🏊🏾‍♀ << 🏊🏿‍♀"\r
                 "<*⛹"\r
-                "<⛹‍♂ = ⛹️‍♂"\r
-                "<<⛹🏻‍♂"\r
-                "<<⛹🏼‍♂"\r
-                "<<⛹🏽‍♂"\r
-                "<<⛹🏾‍♂"\r
-                "<<⛹🏿‍♂"\r
-                "<⛹‍♀ = ⛹️‍♀"\r
-                "<<⛹🏻‍♀"\r
-                "<<⛹🏼‍♀"\r
-                "<<⛹🏽‍♀"\r
-                "<<⛹🏾‍♀"\r
-                "<<⛹🏿‍♀"\r
+                "< ⛹‍♂ = ⛹️‍♂ << ⛹🏻‍♂ << ⛹🏼‍♂ << ⛹🏽‍♂ << ⛹🏾‍♂ << ⛹🏿‍♂"\r
+                "< ⛹‍♀ = ⛹️‍♀ << ⛹🏻‍♀ << ⛹🏼‍♀ << ⛹🏽‍♀ << ⛹🏾‍♀ << ⛹🏿‍♀"\r
                 "<*🏋"\r
-                "<🏋‍♂ = 🏋️‍♂"\r
-                "<<🏋🏻‍♂"\r
-                "<<🏋🏼‍♂"\r
-                "<<🏋🏽‍♂"\r
-                "<<🏋🏾‍♂"\r
-                "<<🏋🏿‍♂"\r
-                "<🏋‍♀ = 🏋️‍♀"\r
-                "<<🏋🏻‍♀"\r
-                "<<🏋🏼‍♀"\r
-                "<<🏋🏽‍♀"\r
-                "<<🏋🏾‍♀"\r
-                "<<🏋🏿‍♀"\r
+                "< 🏋‍♂ = 🏋️‍♂ << 🏋🏻‍♂ << 🏋🏼‍♂ << 🏋🏽‍♂ << 🏋🏾‍♂ << 🏋🏿‍♂"\r
+                "< 🏋‍♀ = 🏋️‍♀ << 🏋🏻‍♀ << 🏋🏼‍♀ << 🏋🏽‍♀ << 🏋🏾‍♀ << 🏋🏿‍♀"\r
                 "<*🚴"\r
-                "<🚴‍♂"\r
-                "<<🚴🏻‍♂"\r
-                "<<🚴🏼‍♂"\r
-                "<<🚴🏽‍♂"\r
-                "<<🚴🏾‍♂"\r
-                "<<🚴🏿‍♂"\r
-                "<🚴‍♀"\r
-                "<<🚴🏻‍♀"\r
-                "<<🚴🏼‍♀"\r
-                "<<🚴🏽‍♀"\r
-                "<<🚴🏾‍♀"\r
-                "<<🚴🏿‍♀"\r
+                "< 🚴‍♂ << 🚴🏻‍♂ << 🚴🏼‍♂ << 🚴🏽‍♂ << 🚴🏾‍♂ << 🚴🏿‍♂"\r
+                "< 🚴‍♀ << 🚴🏻‍♀ << 🚴🏼‍♀ << 🚴🏽‍♀ << 🚴🏾‍♀ << 🚴🏿‍♀"\r
                 "<*🚵"\r
-                "<🚵‍♂"\r
-                "<<🚵🏻‍♂"\r
-                "<<🚵🏼‍♂"\r
-                "<<🚵🏽‍♂"\r
-                "<<🚵🏾‍♂"\r
-                "<<🚵🏿‍♂"\r
-                "<🚵‍♀"\r
-                "<<🚵🏻‍♀"\r
-                "<<🚵🏼‍♀"\r
-                "<<🚵🏽‍♀"\r
-                "<<🚵🏾‍♀"\r
-                "<<🚵🏿‍♀"\r
+                "< 🚵‍♂ << 🚵🏻‍♂ << 🚵🏼‍♂ << 🚵🏽‍♂ << 🚵🏾‍♂ << 🚵🏿‍♂"\r
+                "< 🚵‍♀ << 🚵🏻‍♀ << 🚵🏼‍♀ << 🚵🏽‍♀ << 🚵🏾‍♀ << 🚵🏿‍♀"\r
                 "<*🏎🏍🤸"\r
-                "<🤸‍♂"\r
-                "<<🤸🏻‍♂"\r
-                "<<🤸🏼‍♂"\r
-                "<<🤸🏽‍♂"\r
-                "<<🤸🏾‍♂"\r
-                "<<🤸🏿‍♂"\r
-                "<🤸‍♀"\r
-                "<<🤸🏻‍♀"\r
-                "<<🤸🏼‍♀"\r
-                "<<🤸🏽‍♀"\r
-                "<<🤸🏾‍♀"\r
-                "<<🤸🏿‍♀"\r
+                "< 🤸‍♂ << 🤸🏻‍♂ << 🤸🏼‍♂ << 🤸🏽‍♂ << 🤸🏾‍♂ << 🤸🏿‍♂"\r
+                "< 🤸‍♀ << 🤸🏻‍♀ << 🤸🏼‍♀ << 🤸🏽‍♀ << 🤸🏾‍♀ << 🤸🏿‍♀"\r
                 "<*🤼"\r
-                "<🤼‍♂"\r
-                "<<🤼🏻‍♂"\r
-                "<<🤼🏼‍♂"\r
-                "<<🤼🏽‍♂"\r
-                "<<🤼🏾‍♂"\r
-                "<<🤼🏿‍♂"\r
-                "<🤼‍♀"\r
-                "<<🤼🏻‍♀"\r
-                "<<🤼🏼‍♀"\r
-                "<<🤼🏽‍♀"\r
-                "<<🤼🏾‍♀"\r
-                "<<🤼🏿‍♀"\r
+                "< 🤼‍♂"\r
+                "< 🤼‍♀"\r
                 "<*🤽"\r
-                "<🤽‍♂"\r
-                "<<🤽🏻‍♂"\r
-                "<<🤽🏼‍♂"\r
-                "<<🤽🏽‍♂"\r
-                "<<🤽🏾‍♂"\r
-                "<<🤽🏿‍♂"\r
-                "<🤽‍♀"\r
-                "<<🤽🏻‍♀"\r
-                "<<🤽🏼‍♀"\r
-                "<<🤽🏽‍♀"\r
-                "<<🤽🏾‍♀"\r
-                "<<🤽🏿‍♀"\r
+                "< 🤽‍♂ << 🤽🏻‍♂ << 🤽🏼‍♂ << 🤽🏽‍♂ << 🤽🏾‍♂ << 🤽🏿‍♂"\r
+                "< 🤽‍♀ << 🤽🏻‍♀ << 🤽🏼‍♀ << 🤽🏽‍♀ << 🤽🏾‍♀ << 🤽🏿‍♀"\r
                 "<*🤾"\r
-                "<🤾‍♂"\r
-                "<<🤾🏻‍♂"\r
-                "<<🤾🏼‍♂"\r
-                "<<🤾🏽‍♂"\r
-                "<<🤾🏾‍♂"\r
-                "<<🤾🏿‍♂"\r
-                "<🤾‍♀"\r
-                "<<🤾🏻‍♀"\r
-                "<<🤾🏼‍♀"\r
-                "<<🤾🏽‍♀"\r
-                "<<🤾🏾‍♀"\r
-                "<<🤾🏿‍♀"\r
+                "< 🤾‍♂ << 🤾🏻‍♂ << 🤾🏼‍♂ << 🤾🏽‍♂ << 🤾🏾‍♂ << 🤾🏿‍♂"\r
+                "< 🤾‍♀ << 🤾🏻‍♀ << 🤾🏼‍♀ << 🤾🏽‍♀ << 🤾🏾‍♀ << 🤾🏿‍♀"\r
                 "<*🤹"\r
-                "<🤹‍♂"\r
-                "<<🤹🏻‍♂"\r
-                "<<🤹🏼‍♂"\r
-                "<<🤹🏽‍♂"\r
-                "<<🤹🏾‍♂"\r
-                "<<🤹🏿‍♂"\r
-                "<🤹‍♀"\r
-                "<<🤹🏻‍♀"\r
-                "<<🤹🏼‍♀"\r
-                "<<🤹🏽‍♀"\r
-                "<<🤹🏾‍♀"\r
-                "<<🤹🏿‍♀"\r
+                "< 🤹‍♂ << 🤹🏻‍♂ << 🤹🏼‍♂ << 🤹🏽‍♂ << 🤹🏾‍♂ << 🤹🏿‍♂"\r
+                "< 🤹‍♀ << 🤹🏻‍♀ << 🤹🏼‍♀ << 🤹🏽‍♀ << 🤹🏾‍♀ << 🤹🏿‍♀"\r
                 "<*👫👬👭💏"\r
-                "<👩‍❤‍💋‍👨 = 👩‍❤️‍💋‍👨"\r
-                "<👨‍❤‍💋‍👨 = 👨‍❤️‍💋‍👨"\r
-                "<👩‍❤‍💋‍👩 = 👩‍❤️‍💋‍👩"\r
+                "< 👩‍❤‍💋‍👨 = 👩‍❤️‍💋‍👨"\r
+                "< 👨‍❤‍💋‍👨 = 👨‍❤️‍💋‍👨"\r
+                "< 👩‍❤‍💋‍👩 = 👩‍❤️‍💋‍👩"\r
                 "<*💑"\r
-                "<👩‍❤‍👨 = 👩‍❤️‍👨"\r
-                "<👨‍❤‍👨 = 👨‍❤️‍👨"\r
-                "<👩‍❤‍👩 = 👩‍❤️‍👩"\r
+                "< 👩‍❤‍👨 = 👩‍❤️‍👨"\r
+                "< 👨‍❤‍👨 = 👨‍❤️‍👨"\r
+                "< 👩‍❤‍👩 = 👩‍❤️‍👩"\r
                 "<*👪"\r
-                "<👨‍👩‍👦"\r
-                "<👨‍👩‍👧"\r
-                "<👨‍👩‍👧‍👦"\r
-                "<👨‍👩‍👦‍👦"\r
-                "<👨‍👩‍👧‍👧"\r
-                "<👨‍👨‍👦"\r
-                "<👨‍👨‍👧"\r
-                "<👨‍👨‍👧‍👦"\r
-                "<👨‍👨‍👦‍👦"\r
-                "<👨‍👨‍👧‍👧"\r
-                "<👩‍👩‍👦"\r
-                "<👩‍👩‍👧"\r
-                "<👩‍👩‍👧‍👦"\r
-                "<👩‍👩‍👦‍👦"\r
-                "<👩‍👩‍👧‍👧"\r
-                "<👨‍👦"\r
-                "<👨‍👦‍👦"\r
-                "<👨‍👧"\r
-                "<👨‍👧‍👦"\r
-                "<👨‍👧‍👧"\r
-                "<👩‍👦"\r
-                "<👩‍👦‍👦"\r
-                "<👩‍👧"\r
-                "<👩‍👧‍👦"\r
-                "<👩‍👧‍👧"\r
-                "<*ð\9f\92ªð\9f¤³ð\9f\91\88ð\9f\91\89â\98\9dð\9f\91\86ð\9f\96\95ð\9f\91\87â\9c\8cð\9f¤\9eð\9f\96\96ð\9f¤\98ð\9f¤\99ð\9f\96\90â\9c\8bð\9f\91\8cð\9f\91\8dð\9f\91\8eâ\9c\8að\9f\91\8að\9f¤\9bð\9f¤\9cð\9f¤\9að\9f\91\8bð\9f\91\8fâ\9c\8dð\9f\91\90ð\9f\99\8c🙏🤝💅👂👃👣👀👁"\r
-                "<👁‍🗨 = 👁️‍🗨"\r
-                "<*👅👄"\r
-                "<*💋💘❤💓💔💕💖💗💙💚💛💜🖤💝💞💟❣💌💤💢💣💥💦💨💫💬🗨🗯💭🕳"\r
-                "<*ð\9f\91\93ð\9f\95¶ð\9f\91\94ð\9f\91\95ð\9f\91\96ð\9f\91\97ð\9f\91\98ð\9f\91\99ð\9f\91\9að\9f\91\9bð\9f\91\9cð\9f\91\9dð\9f\9b\8dð\9f\8e\92ð\9f\91\9eð\9f\91\9fð\9f\91 ð\9f\91¡ð\9f\91¢ð\9f\91\91ð\9f\91\92ð\9f\8e©ð\9f\8e\93⛑📿💄💍💎"\r
-                "<*ð\9f\90µð\9f\90\92ð\9f¦\8dð\9f\90¶ð\9f\90\95ð\9f\90©ð\9f\90ºð\9f¦\8að\9f\90±ð\9f\90\88ð\9f¦\81ð\9f\90¯ð\9f\90\85ð\9f\90\86ð\9f\90´ð\9f\90\8eð\9f¦\8cð\9f¦\84ð\9f\90®ð\9f\90\82ð\9f\90\83ð\9f\90\84ð\9f\90·ð\9f\90\96ð\9f\90\97ð\9f\90½ð\9f\90\8fð\9f\90\91ð\9f\90\90ð\9f\90ªð\9f\90«ð\9f\90\98ð\9f¦\8fð\9f\90­ð\9f\90\81ð\9f\90\80ð\9f\90¹ð\9f\90°ð\9f\90\87ð\9f\90¿🦇🐻🐨🐼🐾"\r
+                "< 👨‍👩‍👦"\r
+                "< 👨‍👩‍👧"\r
+                "< 👨‍👩‍👧‍👦"\r
+                "< 👨‍👩‍👦‍👦"\r
+                "< 👨‍👩‍👧‍👧"\r
+                "< 👨‍👨‍👦"\r
+                "< 👨‍👨‍👧"\r
+                "< 👨‍👨‍👧‍👦"\r
+                "< 👨‍👨‍👦‍👦"\r
+                "< 👨‍👨‍👧‍👧"\r
+                "< 👩‍👩‍👦"\r
+                "< 👩‍👩‍👧"\r
+                "< 👩‍👩‍👧‍👦"\r
+                "< 👩‍👩‍👦‍👦"\r
+                "< 👩‍👩‍👧‍👧"\r
+                "< 👨‍👦"\r
+                "< 👨‍👦‍👦"\r
+                "< 👨‍👧"\r
+                "< 👨‍👧‍👦"\r
+                "< 👨‍👧‍👧"\r
+                "< 👩‍👦"\r
+                "< 👩‍👦‍👦"\r
+                "< 👩‍👧"\r
+                "< 👩‍👧‍👦"\r
+                "< 👩‍👧‍👧"\r
+                "<*ð\9f¤³ð\9f\92ªð\9f\91\88ð\9f\91\89â\98\9dð\9f\91\86ð\9f\96\95ð\9f\91\87â\9c\8cð\9f¤\9eð\9f\96\96ð\9f¤\98ð\9f¤\99ð\9f\96\90â\9c\8bð\9f\91\8cð\9f\91\8dð\9f\91\8eâ\9c\8að\9f\91\8að\9f¤\9bð\9f¤\9cð\9f¤\9að\9f\91\8bð\9f¤\9fâ\9c\8dð\9f\91\8fð\9f\91\90ð\9f\99\8cð\9f¤²🙏🤝💅👂👃👣👀👁"\r
+                "< 👁‍🗨 = 👁️‍🗨"\r
+                "<*ð\9f§ ð\9f\91\85ð\9f\91\84"\r
+                "<*ð\9f\92\8bð\9f\92\98â\9d¤ð\9f\92\93ð\9f\92\94ð\9f\92\95ð\9f\92\96ð\9f\92\97ð\9f\92\99ð\9f\92\9að\9f\92\9bð\9f§¡ð\9f\92\9cð\9f\96¤ð\9f\92\9dð\9f\92\9eð\9f\92\9fâ\9d£ð\9f\92\8cð\9f\92¤ð\9f\92¢ð\9f\92£ð\9f\92¥ð\9f\92¦ð\9f\92¨ð\9f\92«ð\9f\92¬ð\9f\97¨ð\9f\97¯ð\9f\92­ð\9f\95³"\r
+                "<*ð\9f\91\93ð\9f\95¶ð\9f\91\94ð\9f\91\95ð\9f\91\96ð\9f§£ð\9f§¤ð\9f§¥ð\9f§¦ð\9f\91\97ð\9f\91\98ð\9f\91\99ð\9f\91\9að\9f\91\9bð\9f\91\9cð\9f\91\9dð\9f\9b\8dð\9f\8e\92ð\9f\91\9eð\9f\91\9fð\9f\91 ð\9f\91¡ð\9f\91¢ð\9f\91\91ð\9f\91\92ð\9f\8e©ð\9f\8e\93ð\9f§¢⛑📿💄💍💎"\r
+                "<*ð\9f\90µð\9f\90\92ð\9f¦\8dð\9f\90¶ð\9f\90\95ð\9f\90©ð\9f\90ºð\9f¦\8að\9f\90±ð\9f\90\88ð\9f¦\81ð\9f\90¯ð\9f\90\85ð\9f\90\86ð\9f\90´ð\9f\90\8eð\9f¦\84ð\9f¦\93ð\9f¦\8cð\9f\90®ð\9f\90\82ð\9f\90\83ð\9f\90\84ð\9f\90·ð\9f\90\96ð\9f\90\97ð\9f\90½ð\9f\90\8fð\9f\90\91ð\9f\90\90ð\9f\90ªð\9f\90«ð\9f¦\92ð\9f\90\98ð\9f¦\8fð\9f\90­ð\9f\90\81ð\9f\90\80ð\9f\90¹ð\9f\90°ð\9f\90\87ð\9f\90¿ð\9f¦\94🦇🐻🐨🐼🐾"\r
                 "<*🦃🐔🐓🐣🐤🐥🐦🐧🕊🦅🦆🦉"\r
                 "<*🐸"\r
-                "<*🐊🐢🦎🐍🐲🐉"\r
+                "<*🐊🐢🦎🐍🐲🐉🦕🦖"\r
                 "<*🐳🐋🐬🐟🐠🐡🦈🐙🐚🦀🦐🦑"\r
-                "<*ð\9f¦\8bð\9f\90\8cð\9f\90\9bð\9f\90\9cð\9f\90\9dð\9f\90\9e🕷🕸🦂"\r
+                "<*ð\9f\90\8cð\9f¦\8bð\9f\90\9bð\9f\90\9cð\9f\90\9dð\9f\90\9eð\9f¦\97🕷🕸🦂"\r
                 "<*💐🌸💮🏵🌹🥀🌺🌻🌼🌷"\r
                 "<*🌱🌲🌳🌴🌵🌾🌿☘🍀🍁🍂🍃"\r
-                "<*🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🥝🍅"\r
-                "<*🥑🍆🥔🥕🌽🌶🥒🍄🥜🌰"\r
-                "<*ð\9f\8d\9eð\9f¥\90ð\9f¥\96ð\9f¥\9eð\9f§\80ð\9f\8d\96ð\9f\8d\97ð\9f¥\93ð\9f\8d\94ð\9f\8d\9fð\9f\8d\95ð\9f\8c­ð\9f\8c®ð\9f\8c¯ð\9f¥\99ð\9f¥\9að\9f\8d³ð\9f¥\98ð\9f\8d²ð\9f¥\97ð\9f\8d¿"\r
-                "<*🍱🍘🍙🍚🍛🍜🍝🍠🍢🍣🍤🍥🍡"\r
-                "<*🍦🍧🍨🍩🍪🎂🍰🍫🍬🍭🍮🍯"\r
-                "<*🍼🥛☕🍵🍶🍾🍷🍸🍹🍺🍻🥂🥃"\r
-                "<*🍽🍴🥄🔪🏺"\r
+                "<*🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🥝🍅🥥"\r
+                "<*ð\9f¥\91ð\9f\8d\86ð\9f¥\94ð\9f¥\95ð\9f\8c½ð\9f\8c¶ð\9f¥\92ð\9f¥¦ð\9f\8d\84ð\9f¥\9cð\9f\8c°"\r
+                "<*ð\9f\8d\9eð\9f¥\90ð\9f¥\96ð\9f¥¨ð\9f¥\9eð\9f§\80ð\9f\8d\96ð\9f\8d\97ð\9f¥©ð\9f¥\93ð\9f\8d\94ð\9f\8d\9fð\9f\8d\95ð\9f\8c­ð\9f¥ªð\9f\8c®ð\9f\8c¯ð\9f¥\99ð\9f¥\9að\9f\8d³ð\9f¥\98ð\9f\8d²ð\9f¥£ð\9f¥\97ð\9f\8d¿ð\9f¥«"\r
+                "<*🍱🍘🍙🍚🍛🍜🍝🍠🍢🍣🍤🍥🍡🥟🥠🥡"\r
+                "<*ð\9f\8d¦ð\9f\8d§ð\9f\8d¨ð\9f\8d©ð\9f\8dªð\9f\8e\82ð\9f\8d°ð\9f¥§ð\9f\8d«ð\9f\8d¬ð\9f\8d­ð\9f\8d®ð\9f\8d¯"\r
+                "<*🍼🥛☕🍵🍶🍾🍷🍸🍹🍺🍻🥂🥃🥤"\r
+                "<*ð\9f¥¢ð\9f\8d½ð\9f\8d´ð\9f¥\84ð\9f\94ªð\9f\8fº"\r
                 "<*🌍🌎🌏🌐🗺🗾"\r
                 "<*🏔⛰🌋🗻🏕🏖🏜🏝🏞"\r
                 "<*🏟🏛🏗🏘🏙🏚🏠🏡🏢🏣🏤🏥🏦🏨🏩🏪🏫🏬🏭🏯🏰💒🗼🗽"\r
@@ -705,13 +260,13 @@ root{
                 "<*⛲⛺🌁🌃🌄🌅🌆🌇🌉♨🌌🎠🎡🎢💈🎪🎭🖼🎨🎰"\r
                 "<*🚂🚃🚄🚅🚆🚇🚈🚉🚊🚝🚞🚋🚌🚍🚎🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚲🛴🛵🚏🛣🛤⛽🚨🚥🚦🚧🛑"\r
                 "<*⚓⛵🛶🚤🛳⛴🛥🚢"\r
-                "<*â\9c\88ð\9f\9b©ð\9f\9b«ð\9f\9b¬ð\9f\92ºð\9f\9a\81ð\9f\9a\9fð\9f\9a ð\9f\9a¡ð\9f\9a\80ð\9f\9b°"\r
-                "<*ð\9f\9b\8eð\9f\9aªð\9f\9b\8cð\9f\9b\8fð\9f\9b\8bð\9f\9a½ð\9f\9a¿ð\9f\9b\80🛁"\r
+                "<*â\9c\88ð\9f\9b©ð\9f\9b«ð\9f\9b¬ð\9f\92ºð\9f\9a\81ð\9f\9a\9fð\9f\9a ð\9f\9a¡ð\9f\9b°ð\9f\9a\80ð\9f\9b¸"\r
+                "<*ð\9f\9b\8eð\9f\9aªð\9f\9b\8fð\9f\9b\8bð\9f\9a½ð\9f\9a¿🛁"\r
                 "<*⌛⏳⌚⏰⏱⏲🕰🕛🕧🕐🕜🕑🕝🕒🕞🕓🕟🕔🕠🕕🕡🕖🕢🕗🕣🕘🕤🕙🕥🕚🕦"\r
                 "<*🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌡☀🌝🌞⭐🌟🌠☁⛅⛈🌤🌥🌦🌧🌨🌩🌪🌫🌬🌀🌈🌂☂☔⛱⚡❄☃⛄☄🔥💧🌊"\r
                 "<*🎃🎄🎆🎇✨🎈🎉🎊🎋🎍🎎🎏🎐🎑🎀🎁🎗🎟🎫"\r
                 "<*🎖🏆🏅🥇🥈🥉"\r
-                "<*⚽⚾🏀🏐🏈🏉🎾🎱🎳🏏🏑🏒🏓🏸🥊🥋🥅🎯⛳⛸🎣🎽🎿"\r
+                "<*⚽⚾🏀🏐🏈🏉🎾🎱🎳🏏🏑🏒🏓🏸🥊🥋🥅🎯⛳⛸🎣🎽🎿🛷🥌"\r
                 "<*🎮🕹🎲♠♥♦♣🃏🀄🎴"\r
                 "<*🔇🔈🔉🔊📢📣📯🔔🔕"\r
                 "<*🎼🎵🎶🎙🎚🎛🎤🎧📻"\r
@@ -734,27 +289,30 @@ root{
                 "<*🛐⚛🕉✡☸☯✝☦☪☮🕎🔯"\r
                 "<*♈♉♊♋♌♍♎♏♐♑♒♓⛎"\r
                 "<*🔀🔁🔂▶⏩⏭⏯◀⏪⏮🔼⏫🔽⏬⏸⏹⏺⏏🎦🔅🔆📶📳📴"\r
-                "<*â\99»ð\9f\93\9bâ\9a\9cð\9f\94°ð\9f\94±â­\95â\9c\85â\98\91â\9c\94â\9c\96â\9d\8câ\9d\8eâ\9e\95â\99\80â\99\82â\9a\95â\9e\96â\9e\97â\9e°â\9e¿ã\80½â\9c³â\9c´â\9d\87â\80¼â\81\89â\9d\93â\9d\94â\9d\95â\9d\97ã\80°Â©Â®â\84¢"\r
-                "<'#⃣' = '#️⃣'"\r
-                "<'*⃣' = '*️⃣'"\r
-                "<0⃣ = 0️⃣"\r
-                "<1⃣ = 1️⃣"\r
-                "<2⃣ = 2️⃣"\r
-                "<3⃣ = 3️⃣"\r
-                "<4⃣ = 4️⃣"\r
-                "<5⃣ = 5️⃣"\r
-                "<6⃣ = 6️⃣"\r
-                "<7⃣ = 7️⃣"\r
-                "<8⃣ = 8️⃣"\r
-                "<9⃣ = 9️⃣"\r
+                "<*â\99\80â\99\82â\9a\95â\99»â\9a\9cð\9f\94±ð\9f\93\9bð\9f\94°â­\95â\9c\85â\98\91â\9c\94â\9c\96â\9d\8câ\9d\8eâ\9e\95â\9e\96â\9e\97â\9e°â\9e¿ã\80½â\9c³â\9c´â\9d\87â\80¼â\81\89â\9d\93â\9d\94â\9d\95â\9d\97ã\80°Â©Â®â\84¢"\r
+                "< '#⃣' = '#️⃣'"\r
+                "< '*⃣' = '*️⃣'"\r
+                "< 0⃣ = 0️⃣"\r
+                "< 1⃣ = 1️⃣"\r
+                "< 2⃣ = 2️⃣"\r
+                "< 3⃣ = 3️⃣"\r
+                "< 4⃣ = 4️⃣"\r
+                "< 5⃣ = 5️⃣"\r
+                "< 6⃣ = 6️⃣"\r
+                "< 7⃣ = 7️⃣"\r
+                "< 8⃣ = 8️⃣"\r
+                "< 9⃣ = 9️⃣"\r
                 "<*🔟"\r
                 "<*💯🔠🔡🔢🔣🔤🅰🆎🅱🆑🆒🆓ℹ🆔Ⓜ🆕🆖🅾🆗🅿🆘🆙🆚🈁🈂🈷🈶🈯🉐🈹🈚🈲🉑🈸🈴🈳㊗㊙🈺🈵"\r
                 "<*▪▫◻◼◽◾⬛⬜🔶🔷🔸🔹🔺🔻💠🔘🔲🔳⚪⚫🔴🔵"\r
                 "<*🏁🚩🎌🏴🏳"\r
-                "<🏳‍🌈 = 🏳️‍🌈"\r
+                "< 🏳‍🌈 = 🏳️‍🌈"\r
                 "<*🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿"\r
+                "< 🏴󠁧󠁢󠁥󠁮󠁧󠁿"\r
+                "< 🏴󠁧󠁢󠁳󠁣󠁴󠁿"\r
+                "< 🏴󠁧󠁢󠁷󠁬󠁳󠁿"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         eor{\r
             Sequence{\r
@@ -1294,7 +852,7 @@ root{
                 "&ք"\r
                 "<և"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         private-unihan{\r
             Sequence{\r
@@ -1537,7 +1095,7 @@ root{
                 "&龟=\uFDD0龟"\r
                 "&龠=\uFDD0龠"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         search{\r
             Sequence{\r
@@ -1654,11 +1212,11 @@ root{
                 "&ᅮᅵ"\r
                 "=ᅱ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{""}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
     depends:process(dependency){"ucadata.icu"}\r
index 64e2bdb..af57fe3 100644 (file)
@@ -5,7 +5,7 @@ ru{
     collations{\r
         standard{\r
             Sequence{"[reorder Cyrl]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 5024719..da5c505 100644 (file)
@@ -8,7 +8,7 @@ se{
                 "[import und-u-co-search]"\r
                 "[import se-u-co-standard]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -53,7 +53,7 @@ se{
                 "<<<Ô<<ǫ"\r
                 "<<<Ǫ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 5e54c30..7f088e6 100644 (file)
@@ -10,7 +10,7 @@ si{
                 "&ඖ<ං<ඃ"\r
                 "&ජ්ඤ<<ඥ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -19,7 +19,7 @@ si{
                 "&ඖ<ං<ඃ"\r
                 "&ඥ<ඤ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 0df2d7d..2ca411e 100644 (file)
@@ -21,7 +21,7 @@ sk{
                 "&Y<ý<<<Ý"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -33,7 +33,7 @@ sk{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 72113d1..8e805cc 100644 (file)
@@ -10,7 +10,7 @@ sl{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 6be8431..4004791 100644 (file)
@@ -8,7 +8,7 @@ smn{
                 "[import und-u-co-search]"\r
                 "[import smn-u-co-standard]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -19,7 +19,7 @@ smn{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž<æ<<<Æ<ø<<<Ø<å<<<Å<ã<<<Ã<ä<<<Ä<á<<<Á<ö<<<Ö"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 0818ced..fb78086 100644 (file)
@@ -17,7 +17,7 @@ sq{
                 "&[before 1]Y<xh<<<Xh<<<XH"\r
                 "&[before 1]Ʒ<zh<<<Zh<<<ZH"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index f9ed91a..703c437 100644 (file)
@@ -8,7 +8,7 @@ sr{
                 "[reorder Cyrl]"\r
                 "[suppressContractions [Ии]]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 27ee707..114fc4c 100644 (file)
@@ -5,11 +5,11 @@ sr_Latn{
     collations{\r
         search{\r
             Sequence{"[import hr-u-co-search]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{"[import hr]"}\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index bd008cd..2e697c7 100644 (file)
@@ -12,14 +12,14 @@ sv{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         search{\r
             Sequence{\r
                 "[import und-u-co-search]"\r
                 "[import sv-u-co-standard]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -30,7 +30,7 @@ sv{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index c7e47ba..1b390c9 100644 (file)
@@ -34,7 +34,7 @@ ta{
                 "&[before 1]ஹ<ஹ்"\r
                 "&[before 1]க்ஷ<க்ஷ்"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 09e7e2b..84b13ec 100644 (file)
@@ -9,7 +9,7 @@ te{
                 "[reorder Telu Deva Beng Guru Gujr Orya Taml Knda Mlym Sinh]"\r
                 "&ఔ<ఁ<ం<ః"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 354dadf..f15616b 100644 (file)
@@ -17,7 +17,7 @@ th{
                 "&ๅํ<<<ํๅ"\r
                 "&ไ<ฺ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 2879b10..27295fb 100644 (file)
@@ -13,7 +13,7 @@ to{
                 "&o<<ó<<<Ó<<ō<<<Ō"\r
                 "&u<<ú<<<Ú<<ū<<<Ū"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 61c457c..13f46d8 100644 (file)
@@ -8,7 +8,7 @@ tr{
                 "[import und-u-co-search]"\r
                 "[import tr-u-co-standard]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ tr{
                 "&S<ş<<<Ş"\r
                 "&U<ü<<<Ü"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index d678d9e..8817b57 100644 (file)
@@ -10,7 +10,7 @@ ug{
                 "&ك<گ<ڭ<ل"\r
                 "&ھ<و<ۇ<ۆ<ۈ<ۋ<ې<ى<ي"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 5347617..b513817 100644 (file)
@@ -9,7 +9,7 @@ uk{
                 "&Г<ґ<<<Ґ"\r
                 "&ꙇ<ї<<<\uA676<<<Ї"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index ed8e8d4..27d6a93 100644 (file)
@@ -12,7 +12,7 @@ ur{
                 "<<\u0651<<\u0658<<\u0653"\r
                 "&[last tertiary ignorable]<<<\u0610<<<\u0611<<<\u0613<<<\u0612<<<\u0614"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 85de6d8..50438a5 100644 (file)
@@ -10,7 +10,7 @@ uz{
                 "<sh<<<Sh<<<SH"\r
                 "<ch<<<Ch<<<CH"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index e07496f..5a2e486 100644 (file)
@@ -13,7 +13,7 @@ vi{
                 "&o<ô<<<Ô<ơ<<<Ơ"\r
                 "&u<ư<<<Ư"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -32,7 +32,7 @@ vi{
                 "&T<th<<<Th<<<TH<tr<<<Tr<<<TR"\r
                 "&u<ư<<<Ư"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 2fbae6b..40b6ceb 100644 (file)
@@ -11,7 +11,7 @@ yi{
                 "‎&״"\r
                 "<<'\u0022'"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -28,7 +28,7 @@ yi{
                 "&ש<שׂ"\r
                 "&[before 1]ת<תּ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index df47887..e4359ff 100644 (file)
@@ -11,7 +11,7 @@ yo{
                 "&O<ọ<<<Ọ"\r
                 "&S<ṣ<<<Ṣ"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index 9e176f6..839e481 100644 (file)
@@ -9,7 +9,7 @@ zh{
                 "[reorder Latn Hani Bopo]"\r
                 "&[last regular]<*兙兛兞兝兡兣嗧瓩糎一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲乂乜凵匚厂万丌乇亍囗屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         default{"pinyin"}\r
         gb2312han{\r
@@ -18,7 +18,7 @@ zh{
                 "[reorder Latn Hani]"\r
                 "&[last regular]<*啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         pinyin{\r
             Sequence{\r
@@ -1888,7 +1888,7 @@ zh{
                 "&弞<沈阳/阳"\r
                 "&銺<藏文/文"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         private-pinyin{\r
             Sequence{\r
@@ -1902,7 +1902,7 @@ zh{
                 "&[before 2]u<<ū<<<Ū<<ú<<<Ú<<ǔ<<<Ǔ<<ù<<<Ù"\r
                 "&U<<ǖ<<<Ǖ<<ǘ<<<Ǘ<<ǚ<<<Ǚ<<ǜ<<<Ǜ<<ü<<<Ü"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         stroke{\r
             Sequence{\r
@@ -2604,7 +2604,7 @@ zh{
                 "&龟<<<⻳"\r
                 "&龠<<<⿕"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         unihan{\r
             Sequence{\r
@@ -2612,7 +2612,7 @@ zh{
                 "[import zh-u-co-private-pinyin]"\r
                 "[reorder Hani Bopo]"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
         zhuyin{\r
             Sequence{\r
@@ -4638,7 +4638,7 @@ zh{
                 "&龟<<<⻳"\r
                 "&龠<<<⿕"\r
             }\r
-            Version{"30.0.3"}\r
+            Version{"31.0.1"}\r
         }\r
     }\r
 }\r
index c728de6..50a114d 100644 (file)
@@ -452,7 +452,7 @@ af{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruaanse nuwe sol",\r
+            "Peruaanse sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1197,8 +1197,8 @@ af{
             other{"Panamese balboa"}\r
         }\r
         PEN{\r
-            one{"Peruaanse nuwe sol"}\r
-            other{"Peruaanse nuwe sol"}\r
+            one{"Peruaanse sol"}\r
+            other{"Peruaanse sol"}\r
         }\r
         PGK{\r
             one{"Papoea-Nieu-Guinese kina"}\r
@@ -1405,5 +1405,5 @@ af{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 5174048..7f8c9bd 100644 (file)
@@ -7,5 +7,5 @@ af_NA{
             "Namibiese dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d478f74..3c8bb57 100644 (file)
@@ -223,5 +223,5 @@ agq{
             "Dɔlà è Zìmbagbɛ̀",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 43dc3b8..71cc0c3 100644 (file)
@@ -223,5 +223,5 @@ ak{
             "Zimbabwe Dɔla",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 75a050d..0966a4a 100644 (file)
@@ -440,7 +440,7 @@ am{
         }\r
         PEN{\r
             "PEN",\r
-            "á\8b¨á\8d\94á\88©á\89ªá\8b« á\8a\91á\8a¤á\89® á\88¶á\88\8d",\r
+            "የፔሩቪያ ሶል",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1185,8 +1185,8 @@ am{
             other{"ፓናማኒአን ባልቦአ"}\r
         }\r
         PEN{\r
-            one{"á\8b¨á\8d\94á\88©á\89ªá\8b« á\8a\91á\8a¤á\89® á\88¶á\88\8d"}\r
-            other{"á\8b¨á\8d\94á\88©á\89ªá\8b« á\8a\91á\8a¤á\89® á\88¶á\88\8d"}\r
+            one{"የፔሩቪያ ሶል"}\r
+            other{"የፔሩቪያ ሶል"}\r
         }\r
         PGK{\r
             one{"የፓፕዋ ኒው ጊኒ ኪና"}\r
@@ -1397,5 +1397,5 @@ am{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 93f0b6e..f2938aa 100644 (file)
@@ -648,7 +648,7 @@ ar{
         }\r
         PEN{\r
             "PEN",\r
-            "سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88",\r
+            "سول البيرو",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1981,12 +1981,12 @@ ar{
             zero{"بالبوا بنمي"}\r
         }\r
         PEN{\r
-            few{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
-            many{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
-            one{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
-            other{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
-            two{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
-            zero{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
+            few{"سول البيرو"}\r
+            many{"سول البيرو"}\r
+            one{"سول البيرو"}\r
+            other{"سول البيرو"}\r
+            two{"سول البيرو"}\r
+            zero{"سول البيرو"}\r
         }\r
         PGK{\r
             few{"كينا بابوا غينيا الجديدة"}\r
@@ -2405,5 +2405,5 @@ ar{
         two{"{0} {1}"}\r
         zero{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.86"}\r
 }\r
index fd1e89c..294ad5e 100644 (file)
@@ -4,5 +4,5 @@ ar_AE{
     Currencies%narrow{\r
         BND{"$"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2d771f9..53241ee 100644 (file)
@@ -7,5 +7,5 @@ ar_DJ{
             "فرنك جيبوتي",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6ed177f..435a54d 100644 (file)
@@ -7,5 +7,5 @@ ar_ER{
             "ناكفا أريتري",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0dcf349..53ec815 100644 (file)
@@ -7,5 +7,5 @@ ar_LB{
             "جنيه سوداني",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/curr/ar_SA.txt b/source/data/curr/ar_SA.txt
new file mode 100644 (file)
index 0000000..00baa1f
--- /dev/null
@@ -0,0 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+/**\r
+ * generated alias target\r
+ */\r
+ar_SA{\r
+    ___{""}\r
+}\r
index 64ceba2..e9ab189 100644 (file)
@@ -7,5 +7,5 @@ ar_SO{
             "شلن صومالي",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38d6bda..c23e2ba 100644 (file)
@@ -11,5 +11,5 @@ ar_SS{
             "جنيه جنوب السودان",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/curr/ars.txt b/source/data/curr/ars.txt
new file mode 100644 (file)
index 0000000..9bb22b9
--- /dev/null
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+ars{\r
+    "%%ALIAS"{"ar_SA"}\r
+}\r
index b73ce92..6b8c1a8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 as{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2b02fb7..7c5886b 100644 (file)
@@ -227,5 +227,5 @@ asa{
             "dola ya Dhimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 945bf5f..46753ff 100644 (file)
@@ -780,7 +780,7 @@ ast{
         }\r
         PEN{\r
             "PEN",\r
-            "sol nuevu peruanu",\r
+            "Sol peruanu",\r
         }\r
         PES{\r
             "PES",\r
@@ -2076,8 +2076,8 @@ ast{
             other{"intis peruanos"}\r
         }\r
         PEN{\r
-            one{"sol nuevu peruanu"}\r
-            other{"soles nuevos peruanos"}\r
+            one{"sol peruanu"}\r
+            other{"soles peruanos"}\r
         }\r
         PES{\r
             one{"sol peruanu (1863–1965)"}\r
@@ -2496,5 +2496,5 @@ ast{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index c7dd2b6..975c4f8 100644 (file)
@@ -704,11 +704,11 @@ az{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru Nuevo Solu",\r
+            "Peru Solu",\r
         }\r
         PES{\r
             "PES",\r
-            "Peru Solu",\r
+            "Peru Solu (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1865,13 +1865,13 @@ az{
             other{"Peru inti"}\r
         }\r
         PEN{\r
-            one{"Peru Nuevo solu"}\r
-            other{"Peru Nuevo solu"}\r
-        }\r
-        PES{\r
             one{"Peru solu"}\r
             other{"Peru solu"}\r
         }\r
+        PES{\r
+            one{"Peru solu (1863–1965)"}\r
+            other{"Peru solu (1863–1965)"}\r
+        }\r
         PGK{\r
             one{"Papua Yeni Qvineya kinası"}\r
             other{"Papua Yeni Qvineya kinası"}\r
@@ -2229,5 +2229,5 @@ az{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 087b336..0218992 100644 (file)
@@ -11,5 +11,5 @@ az_Cyrl{
     Currencies%variant{\r
         AZN{"ман."}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 4ce2adb..4c0b75a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a80b696..761767e 100644 (file)
@@ -227,5 +227,5 @@ bas{
             "Dɔ̀lâr sìmbàbwê",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4bc913b..d284974 100644 (file)
@@ -424,7 +424,7 @@ be{
         }\r
         PEN{\r
             "PEN",\r
-            "перуанскі новы соль",\r
+            "перуанскі соль",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1358,10 +1358,10 @@ be{
             other{"панамскага бальбоа"}\r
         }\r
         PEN{\r
-            few{"перуанскія новыя солі"}\r
-            many{"перуанскіх новых соляў"}\r
-            one{"перуанскі новы соль"}\r
-            other{"перуанскага новага соля"}\r
+            few{"перуанскія солі"}\r
+            many{"перуанскіх соляў"}\r
+            one{"перуанскі соль"}\r
+            other{"перуанскага соля"}\r
         }\r
         PGK{\r
             few{"кіна"}\r
@@ -1670,5 +1670,5 @@ be{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.66"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 0ed0154..0c1ba7a 100644 (file)
@@ -7,5 +7,5 @@ bem{
             "ZMW",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7d3fe36..2d925f0 100644 (file)
@@ -223,5 +223,5 @@ bez{
             "Lupila lwa Huzimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2e7f639..b273a7e 100644 (file)
@@ -688,11 +688,11 @@ bg{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуански нов сол",\r
+            "Перуански сол",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуански сол",\r
+            "Перуански сол (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1771,8 +1771,8 @@ bg{
             other{"панамски балбоа"}\r
         }\r
         PEN{\r
-            one{"перуански нов сол"}\r
-            other{"перуански нови сола"}\r
+            one{"перуански сол"}\r
+            other{"перуански сола"}\r
         }\r
         PES{\r
             one{"перуански сол (1863–1965)"}\r
@@ -2095,5 +2095,5 @@ bg{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.33.75"}\r
 }\r
index 5c0e4d4..0faeccf 100644 (file)
@@ -227,5 +227,5 @@ bm{
             "zimbabuwe Dolar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8cbb519..da2b3bc 100644 (file)
@@ -708,11 +708,11 @@ bn{
         }\r
         PEN{\r
             "PEN",\r
-            "পেরুভিয়ান সোল নুয়েভো",\r
+            "পেরুভিয়ান সোল",\r
         }\r
         PES{\r
             "PES",\r
-            "পেরুভিয়ান সোল",\r
+            "পেরুভিয়ান সোল (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1612,8 +1612,12 @@ bn{
             other{"পানামা বেলবোয়া"}\r
         }\r
         PEN{\r
-            one{"পেরুভিয়ান সোল নুয়েভো"}\r
-            other{"পেরুভিয়ান সোল নুয়েভো"}\r
+            one{"পেরুভিয়ান সোল"}\r
+            other{"পেরুভিয়ান সোল"}\r
+        }\r
+        PES{\r
+            one{"পেরুভিয়ান সোল (1863–1965)"}\r
+            other{"পেরুভিয়ান সোল (1863–1965)"}\r
         }\r
         PGK{\r
             one{"পাপুয়া নিউ গিনিয়ান কিনা"}\r
@@ -1816,5 +1820,5 @@ bn{
             other{"জাম্বিয়ান কওয়াচা"}\r
         }\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
 }\r
index af29f2d..978e8f6 100644 (file)
@@ -19,5 +19,5 @@ bo{
             "མ་རྟོགས་པའི་ནུས་མེད་དངུལ་ལོར",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 902d4f3..866f7c5 100644 (file)
@@ -7,5 +7,5 @@ bo_IN{
             "ཡུ་ཨན་",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b58a9e5..3f29fc4 100644 (file)
@@ -780,7 +780,7 @@ br{
         }\r
         PEN{\r
             "PEN",\r
-            "nuevo sol Perou",\r
+            "sol Perou",\r
         }\r
         PES{\r
             "PES",\r
@@ -2475,11 +2475,11 @@ br{
             two{"valboa Panamá"}\r
         }\r
         PEN{\r
-            few{"nuevo sol Perou"}\r
-            many{"nuevo sol Perou"}\r
-            one{"nuevo sol Perou"}\r
-            other{"nuevo sol Perou"}\r
-            two{"nuevo sol Perou"}\r
+            few{"sol Perou"}\r
+            many{"sol Perou"}\r
+            one{"sol Perou"}\r
+            other{"sol Perou"}\r
+            two{"sol Perou"}\r
         }\r
         PES{\r
             few{"sol Perou (1863–1965)"}\r
@@ -3105,5 +3105,5 @@ br{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index a26b134..74374fe 100644 (file)
@@ -704,11 +704,11 @@ brx{
         }\r
         PEN{\r
             "PEN",\r
-            "पà¥\87रà¥\81वाà¤\88 à¤¨à¤¯à¤¾ à¤¸à¥\8bल",\r
+            "पेरुवाई सोल",\r
         }\r
         PES{\r
             "PES",\r
-            "पेरुवाई सोल",\r
+            "पेरुवाई सोल (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1075,5 +1075,5 @@ brx{
             "ज़ीम्बाबवेई डॉलर",\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 9fdfa83..055ae63 100644 (file)
@@ -740,7 +740,7 @@ bs{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruanski novi sol",\r
+            "Peruanski sol",\r
         }\r
         PES{\r
             "PES",\r
@@ -2163,9 +2163,9 @@ bs{
             other{"peruanska inta"}\r
         }\r
         PEN{\r
-            few{"peruanska nova sola"}\r
-            one{"peruanski novi sol"}\r
-            other{"peruanskih novih sola"}\r
+            few{"peruanska sola"}\r
+            one{"peruanski sol"}\r
+            other{"peruanskih sola"}\r
         }\r
         PES{\r
             few{"peruanska sola (1863–1965)"}\r
@@ -2673,5 +2673,5 @@ bs{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index bf3ec0a..addd240 100644 (file)
@@ -717,11 +717,11 @@ bs_Cyrl{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуански нуево сол",\r
+            "Перуански сол",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуански сол",\r
+            "Перуански сол (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2004,15 +2004,15 @@ bs_Cyrl{
             other{"перувијских интија"}\r
         }\r
         PEN{\r
-            few{"перуанска нуево сола"}\r
-            one{"перуански нуево сол"}\r
-            other{"перуанских нуево сола"}\r
-        }\r
-        PES{\r
             few{"перуанска сола"}\r
             one{"перуански сол"}\r
             other{"перуанских сола"}\r
         }\r
+        PES{\r
+            few{"перуанска сола (1863–1965)"}\r
+            one{"перуански сол (1863–1965)"}\r
+            other{"перуанских сола (1863–1965)"}\r
+        }\r
         PGK{\r
             few{"папуа ново гвинејска долара"}\r
             one{"папуа ново гвинејски долар"}\r
@@ -2494,5 +2494,5 @@ bs_Cyrl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.72"}\r
 }\r
index 20b4126..972dc01 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index efeaa89..a17441e 100644 (file)
@@ -777,11 +777,11 @@ ca{
         }\r
         PEN{\r
             "PEN",\r
-            "nou sol peruà",\r
+            "sol peruà",\r
         }\r
         PES{\r
             "PES",\r
-            "sol peruà",\r
+            "sol peruà (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2057,13 +2057,13 @@ ca{
             other{"intis peruans"}\r
         }\r
         PEN{\r
-            one{"nou sol peruà"}\r
-            other{"nous sols peruans"}\r
-        }\r
-        PES{\r
             one{"sol peruà"}\r
             other{"sols peruans"}\r
         }\r
+        PES{\r
+            one{"sol peruà (1863–1965)"}\r
+            other{"sols peruans (1863–1965)"}\r
+        }\r
         PGK{\r
             one{"kina de Papua Nova Guinea"}\r
             other{"kines de Papua Nova Guinea"}\r
@@ -2469,5 +2469,5 @@ ca{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 196a270..474ef88 100644 (file)
@@ -7,5 +7,5 @@ ca_FR{
             "franc francès",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4fb41d1..bd679e2 100644 (file)
@@ -424,7 +424,7 @@ ce{
         }\r
         PEN{\r
             "PEN",\r
-            "Перун керла соль",\r
+            "Перун соль",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1146,8 +1146,8 @@ ce{
             other{"Панаман бальбоаш"}\r
         }\r
         PEN{\r
-            one{"Перун керла соль"}\r
-            other{"Перун керла солаш"}\r
+            one{"Перун соль"}\r
+            other{"Перун солаш"}\r
         }\r
         PGK{\r
             one{"Папуа — Керла Гвинейн кина"}\r
@@ -1354,5 +1354,5 @@ ce{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 7d17075..372efa3 100644 (file)
@@ -223,5 +223,5 @@ cgg{
             "Doora ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3bfb26a..d2ecad7 100644 (file)
@@ -1355,5 +1355,5 @@ chr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
 }\r
index f0d8d1f..77d82e3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb{\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 567e957..b81266c 100644 (file)
@@ -776,7 +776,7 @@ cs{
         }\r
         PEN{\r
             "PEN",\r
-            "peruánský nový sol",\r
+            "peruánský sol",\r
         }\r
         PES{\r
             "PES",\r
@@ -2441,10 +2441,10 @@ cs{
             other{"peruánských inti"}\r
         }\r
         PEN{\r
-            few{"peruánské nové soly"}\r
-            many{"peruánského nového solu"}\r
-            one{"peruánský nový sol"}\r
-            other{"peruánských nových solů"}\r
+            few{"peruánské soly"}\r
+            many{"peruánského solu"}\r
+            one{"peruánský sol"}\r
+            other{"peruánských solů"}\r
         }\r
         PES{\r
             few{"peruánské soly (1863–1965)"}\r
@@ -3053,5 +3053,5 @@ cs{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index f528e7a..e0b1213 100644 (file)
@@ -728,7 +728,7 @@ cy{
         }\r
         PEN{\r
             "PEN",\r
-            "Nuevo Sol Periw",\r
+            "Sol Periw",\r
         }\r
         PES{\r
             "PES",\r
@@ -2424,12 +2424,12 @@ cy{
             zero{"inti Periw"}\r
         }\r
         PEN{\r
-            few{"nuevo sol Periw"}\r
-            many{"nuevo sol Periw"}\r
-            one{"nuevo sol Periw"}\r
-            other{"nuevo sol Periw"}\r
-            two{"nuevo sol Periw"}\r
-            zero{"nuevo sol Periw"}\r
+            few{"sol Periw"}\r
+            many{"sol Periw"}\r
+            one{"sol Periw"}\r
+            other{"sol Periw"}\r
+            two{"sol Periw"}\r
+            zero{"sol Periw"}\r
         }\r
         PES{\r
             few{"sol Periw (1863–1965)"}\r
@@ -3032,5 +3032,5 @@ cy{
         two{"{0} {1}"}\r
         zero{"{0} {1}"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 1268ac3..a974828 100644 (file)
@@ -688,15 +688,15 @@ da{
         }\r
         PEI{\r
             "PEI",\r
-            "Peruviansk inti",\r
+            "peruviansk inti",\r
         }\r
         PEN{\r
             "PEN",\r
-            "peruviansk nuevo sol",\r
+            "peruviansk sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruviansk sol (1863–1965)",\r
+            "peruviansk sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1861,16 +1861,16 @@ da{
             other{"panamanske balboa"}\r
         }\r
         PEI{\r
-            one{"Peruviansk inti"}\r
-            other{"Peruvianske inti"}\r
+            one{"peruviansk inti"}\r
+            other{"peruvianske inti"}\r
         }\r
         PEN{\r
-            one{"peruviansk nuevo sol"}\r
-            other{"peruvianske nuevos soles"}\r
+            one{"peruviansk sol"}\r
+            other{"peruvianske soles"}\r
         }\r
         PES{\r
-            one{"Peruviansk sol (1863–1965)"}\r
-            other{"Peruvianske sol (1863–1965)"}\r
+            one{"peruviansk sol (1863–1965)"}\r
+            other{"peruvianske sol (1863–1965)"}\r
         }\r
         PGK{\r
             one{"papuansk kina"}\r
@@ -2217,5 +2217,5 @@ da{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 1a11973..7bdb437 100644 (file)
@@ -223,5 +223,5 @@ dav{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4cbaa6d..a9267cd 100644 (file)
@@ -2495,5 +2495,5 @@ de{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index c47d2b0..10c3b31 100644 (file)
@@ -21,5 +21,5 @@ de_CH{
             other{"Weissrussische Rubel (2000–2016)"}\r
         }\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b19ad50..668065c 100644 (file)
@@ -7,5 +7,5 @@ de_LI{
             "Euro",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7f1631f..16715da 100644 (file)
@@ -12,5 +12,5 @@ de_LU{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b9162a1..77b7183 100644 (file)
@@ -227,5 +227,5 @@ dje{
             "Zimbabwe Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bbfb45c..b46b5b2 100644 (file)
@@ -532,7 +532,7 @@ dsb{
         }\r
         PEN{\r
             "PEN",\r
-            "peruski nowy sol",\r
+            "peruski sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1536,10 +1536,10 @@ dsb{
             two{"panamaskej balboa"}\r
         }\r
         PEN{\r
-            few{"peruske nowe sole"}\r
-            one{"peruski nowy sol"}\r
-            other{"peruskich nowych solow"}\r
-            two{"peruskej nowej sola"}\r
+            few{"peruske sole"}\r
+            one{"peruski sol"}\r
+            other{"peruskich solow"}\r
+            two{"peruskej sola"}\r
         }\r
         PGK{\r
             few{"papua-neuguinejske kiny"}\r
@@ -1854,5 +1854,5 @@ dsb{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 05959ba..ddd9f57 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dua{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0c85db0..fd302c8 100644 (file)
@@ -119,5 +119,5 @@ dyo{
             "seefa yati BCEAO",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5e862ed..b5c41eb 100644 (file)
@@ -303,5 +303,5 @@ dz{
             "སཱའུཐ་ ཨཕ་རི་ཀ་གི་དངུལ་ རཱནད",\r
         }\r
     }\r
-    Version{"2.1.29.61"}\r
+    Version{"2.1.31.34"}\r
 }\r
index 9f6e4dd..117c560 100644 (file)
@@ -223,5 +223,5 @@ ebu{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b211972..25a9570 100644 (file)
@@ -748,11 +748,11 @@ ee{
         }\r
         PEN{\r
             "PEN",\r
-            "peruga nuevo sol",\r
+            "peruga sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruga nuevo sol (1863–1965)",\r
+            "peruga sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1923,12 +1923,12 @@ ee{
             other{"peruga inti"}\r
         }\r
         PEN{\r
-            one{"peruga nuevo sol"}\r
-            other{"peruga nuevo sol"}\r
+            one{"peruga sol"}\r
+            other{"peruga sol"}\r
         }\r
         PES{\r
-            one{"peruga nuevo sol (1863–1965)"}\r
-            other{"peruga nuevo sol (1863–1965)"}\r
+            one{"peruga sol (1863–1965)"}\r
+            other{"peruga sol (1863–1965)"}\r
         }\r
         PGK{\r
             one{"papua new giniga kina"}\r
@@ -2331,5 +2331,5 @@ ee{
         one{"{1} {0}"}\r
         other{"{1} {0}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 76aab5e..a994c04 100644 (file)
@@ -705,11 +705,11 @@ el{
         }\r
         PEN{\r
             "PEN",\r
-            "Î\9dέο Î£Î¿Î» Î ÎµÏ\81οÏ\8d",\r
+            "Σολ Περού",\r
         }\r
         PES{\r
             "PES",\r
-            "Σολ Περού",\r
+            "Σολ Περού (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1861,12 +1861,12 @@ el{
             other{"ίντι Περού"}\r
         }\r
         PEN{\r
-            one{"νέο σολ Περού"}\r
-            other{"νέα Î£Î¿Î» Î ÎµÏ\81οÏ\8d"}\r
+            one{"σολ Περού"}\r
+            other{"Σολ Περού"}\r
         }\r
         PES{\r
-            one{"σολ Περού"}\r
-            other{"σολ Περού"}\r
+            one{"σολ Περού (1863–1965)"}\r
+            other{"σολ Περού (1863–1965)"}\r
         }\r
         PGK{\r
             one{"κίνα Παπούας Νέας Γουινέας"}\r
@@ -2233,5 +2233,5 @@ el{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 0030ae0..da96daa 100644 (file)
@@ -308,7 +308,7 @@ en{
         }\r
         CZK{\r
             "CZK",\r
-            "Czech Republic Koruna",\r
+            "Czech Koruna",\r
         }\r
         DDM{\r
             "DDM",\r
@@ -1501,8 +1501,8 @@ en{
             other{"Cypriot pounds"}\r
         }\r
         CZK{\r
-            one{"Czech Republic koruna"}\r
-            other{"Czech Republic korunas"}\r
+            one{"Czech koruna"}\r
+            other{"Czech korunas"}\r
         }\r
         DDM{\r
             one{"East German mark"}\r
@@ -2393,5 +2393,5 @@ en{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.59"}\r
 }\r
index c4b0c9e..e6b67eb 100644 (file)
@@ -69,5 +69,5 @@ en_001{
             other{"Tajikistani roubles"}\r
         }\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e902e0a..7f3f704 100644 (file)
@@ -13,5 +13,5 @@ en_150{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fd34e39..0d10d9a 100644 (file)
@@ -8,5 +8,5 @@ en_AG{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f48a52f..c92e1fa 100644 (file)
@@ -8,5 +8,5 @@ en_AI{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b4edb3f..09171c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9d4d5c5..20920d0 100644 (file)
@@ -200,5 +200,5 @@ en_AU{
             other{"Samoan talas"}\r
         }\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.62"}\r
 }\r
index c3dbe09..338180b 100644 (file)
@@ -8,5 +8,5 @@ en_BB{
             "Barbadian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c967ad1..7065545 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5330b71..48e9892 100644 (file)
@@ -7,5 +7,5 @@ en_BI{
             "Burundian Franc",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 40bc027..a700b64 100644 (file)
@@ -8,5 +8,5 @@ en_BM{
             "Bermudan Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3421c52..71da5b4 100644 (file)
@@ -8,5 +8,5 @@ en_BS{
             "Bahamian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 261289e..db7face 100644 (file)
@@ -8,5 +8,5 @@ en_BW{
             "Botswanan Pula",\r
         }\r
     }\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1746e55..f776d1e 100644 (file)
@@ -8,5 +8,5 @@ en_BZ{
             "Belize Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 878978e..c6f5f29 100644 (file)
@@ -14,5 +14,5 @@ en_CA{
             other{"Israeli new sheqels"}\r
         }\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7eebf48..d5a9e5d 100644 (file)
@@ -8,5 +8,5 @@ en_CC{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d055587..4f2d948 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f8d7ecd..526cd70 100644 (file)
@@ -8,5 +8,5 @@ en_CK{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0ae421..5aacc7b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e5e9d95..bd09b6d 100644 (file)
@@ -8,5 +8,5 @@ en_CX{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 81d8657..46da087 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a91a9c4..5d2d71a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index af3ee11..3d758dd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5a9bd9f..ccd40c9 100644 (file)
@@ -8,5 +8,5 @@ en_DK{
             "Danish Krone",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1411787..39aef87 100644 (file)
@@ -8,5 +8,5 @@ en_DM{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d0479ac..77949ac 100644 (file)
@@ -8,5 +8,5 @@ en_ER{
             "Eritrean Nakfa",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 12aebe3..f699cc1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b3ca6b8..1fbdccc 100644 (file)
@@ -8,5 +8,5 @@ en_FJ{
             "Fijian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a0dbf27..0e518be 100644 (file)
@@ -12,5 +12,5 @@ en_FK{
             "British Pound",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 78ffc47..eab91ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d57d893..6a57c80 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.24"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 11fd184..c11e18c 100644 (file)
@@ -8,5 +8,5 @@ en_GD{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ba69385..602db61 100644 (file)
@@ -14,5 +14,5 @@ en_GG{
             other{"UK pounds"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e7434b2..d6f700a 100644 (file)
@@ -8,5 +8,5 @@ en_GH{
             "Ghanaian Cedi",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4671a01..47475c7 100644 (file)
@@ -12,5 +12,5 @@ en_GI{
             "Gibraltar Pound",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e10fb03..aefcdc8 100644 (file)
@@ -8,5 +8,5 @@ en_GM{
             "Gambian Dalasi",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f939e99..5e9190d 100644 (file)
@@ -8,5 +8,5 @@ en_GY{
             "Guyanaese Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7c42f22..4a04a10 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index acfab3f..18bb2f3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1500279..76bee45 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9cfc107..f7a089d 100644 (file)
@@ -14,5 +14,5 @@ en_IM{
             other{"UK pounds"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1c73a40..0ae302f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 73736a0..2b8ba3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ef29a3a..1d0587c 100644 (file)
@@ -14,5 +14,5 @@ en_JE{
             other{"UK pounds"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2b02c35..a377865 100644 (file)
@@ -8,5 +8,5 @@ en_JM{
             "Jamaican Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c9e4e58..737e4b2 100644 (file)
@@ -8,5 +8,5 @@ en_KE{
             "Kenyan Shilling",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ca55d28..cbb82b2 100644 (file)
@@ -8,5 +8,5 @@ en_KI{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3687a92..b0c6ab9 100644 (file)
@@ -8,5 +8,5 @@ en_KN{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5f2e087..32875f9 100644 (file)
@@ -8,5 +8,5 @@ en_KY{
             "Cayman Islands Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 80e2970..15a482f 100644 (file)
@@ -8,5 +8,5 @@ en_LC{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4c328d0..bba2d7b 100644 (file)
@@ -8,5 +8,5 @@ en_LR{
             "Liberian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ef2e445..7e13bca 100644 (file)
@@ -8,5 +8,5 @@ en_LS{
             "South African Rand",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 35f2701..7132cbd 100644 (file)
@@ -8,5 +8,5 @@ en_MG{
             "Malagasy Ariary",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2246430..b57ad0d 100644 (file)
@@ -8,5 +8,5 @@ en_MO{
             "Macanese Pataca",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0180adf..af0df1f 100644 (file)
@@ -8,5 +8,5 @@ en_MS{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 42c2de5..7dee04e 100644 (file)
@@ -8,5 +8,5 @@ en_MT{
             "British Pound",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4e54f6e..9183a07 100644 (file)
@@ -8,5 +8,5 @@ en_MU{
             "Mauritian Rupee",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cfa7324..e5f5d6e 100644 (file)
@@ -8,5 +8,5 @@ en_MW{
             "Malawian Kwacha",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e061b9c..1f42611 100644 (file)
@@ -8,5 +8,5 @@ en_MY{
             "Malaysian Ringgit",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dc500f8..9c09ad6 100644 (file)
@@ -8,5 +8,5 @@ en_NA{
             "Namibian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4032750..0354665 100644 (file)
@@ -8,5 +8,5 @@ en_NF{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8df4a66..708edd6 100644 (file)
@@ -8,5 +8,5 @@ en_NG{
             "Nigerian Naira",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 21bbdc9..9d0d0cd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d1cac31..4a8d731 100644 (file)
@@ -8,5 +8,5 @@ en_NR{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8804d59..852e226 100644 (file)
@@ -8,5 +8,5 @@ en_NU{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7217259..05752b7 100644 (file)
@@ -8,5 +8,5 @@ en_NZ{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 14d8fb8..4248db9 100644 (file)
@@ -8,5 +8,5 @@ en_PG{
             "Papua New Guinean Kina",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 54a3d13..8e0939d 100644 (file)
@@ -8,5 +8,5 @@ en_PH{
             "Philippine Peso",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d6e574c..426a67b 100644 (file)
@@ -8,5 +8,5 @@ en_PK{
             "Pakistani Rupee",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c44d01f..eb3b036 100644 (file)
@@ -8,5 +8,5 @@ en_PN{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0af3d13..30541dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9038cf3..baee0e1 100644 (file)
@@ -8,5 +8,5 @@ en_RW{
             "Rwandan Franc",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f796d25..f0b3d68 100644 (file)
@@ -8,5 +8,5 @@ en_SB{
             "Solomon Islands Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6c88ac5..95dccc3 100644 (file)
@@ -8,5 +8,5 @@ en_SC{
             "Seychellois Rupee",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6206b27..87a33e2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3f9e032..5fb0e8b 100644 (file)
@@ -8,5 +8,5 @@ en_SE{
             "Swedish Krona",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7fe7320..59612d6 100644 (file)
@@ -8,5 +8,5 @@ en_SG{
             "Singapore Dollar",\r
         }\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ace4eae..0d5b103 100644 (file)
@@ -12,5 +12,5 @@ en_SH{
             "St. Helena Pound",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fedf1c0..a259492 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f6db8b8..2f85b93 100644 (file)
@@ -8,5 +8,5 @@ en_SL{
             "Sierra Leonean Leone",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 04cdeef..e6ce7a7 100644 (file)
@@ -12,5 +12,5 @@ en_SS{
             "South Sudanese Pound",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2c62c8d..05b4580 100644 (file)
@@ -8,5 +8,5 @@ en_SX{
             "Netherlands Antillean Guilder",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 66df7d4..8d4b873 100644 (file)
@@ -8,5 +8,5 @@ en_SZ{
             "Swazi Lilangeni",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eaabbe1..852eb0f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a97fe8d..d54759a 100644 (file)
@@ -8,5 +8,5 @@ en_TK{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a2d6a01..35c561e 100644 (file)
@@ -8,5 +8,5 @@ en_TO{
             "Tongan Paʻanga",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ea2d7b5..273a7c9 100644 (file)
@@ -8,5 +8,5 @@ en_TT{
             "Trinidad & Tobago Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 740638d..7296e5c 100644 (file)
@@ -8,5 +8,5 @@ en_TV{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 45913a3..71ccf96 100644 (file)
@@ -8,5 +8,5 @@ en_TZ{
             "Tanzanian Shilling",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1f90802..06e3946 100644 (file)
@@ -8,5 +8,5 @@ en_UG{
             "Ugandan Shilling",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5959580..e84d9f5 100644 (file)
@@ -8,5 +8,5 @@ en_VC{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6a295b..ba6619b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index efdb0ae..2fe5232 100644 (file)
@@ -8,5 +8,5 @@ en_VU{
             "Vanuatu Vatu",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 923004a..c3b96f4 100644 (file)
@@ -8,5 +8,5 @@ en_WS{
             "Samoan Tala",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9e5760f..097cdd6 100644 (file)
@@ -8,5 +8,5 @@ en_ZA{
             "South African Rand",\r
         }\r
     }\r
-    Version{"2.1.27.64"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6a1113d..e84000e 100644 (file)
@@ -8,5 +8,5 @@ en_ZM{
             "Zambian Kwacha",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e725848..bb5dbed 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1e6bc3f..663d25a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0efb933..a46ad4e 100644 (file)
@@ -708,7 +708,7 @@ es{
         }\r
         PEN{\r
             "PEN",\r
-            "nuevo sol peruano",\r
+            "sol peruano",\r
         }\r
         PES{\r
             "PES",\r
@@ -1853,8 +1853,8 @@ es{
             other{"intis peruanos"}\r
         }\r
         PEN{\r
-            one{"nuevo sol peruano"}\r
-            other{"nuevos soles peruanos"}\r
+            one{"sol peruano"}\r
+            other{"soles peruanos"}\r
         }\r
         PES{\r
             one{"sol peruano (1863–1965)"}\r
@@ -2189,5 +2189,5 @@ es{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.80"}\r
+    Version{"2.1.32.59"}\r
 }\r
index b040e6b..beba07e 100644 (file)
@@ -45,5 +45,5 @@ es_419{
             other{"(moneda desconocida)"}\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f450ca5..cc7e1b9 100644 (file)
@@ -15,5 +15,5 @@ es_AR{
     Currencies%variant{\r
         GEL{"GEL"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3f0fe1b..909bde8 100644 (file)
@@ -8,5 +8,5 @@ es_BO{
             "boliviano",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 70eb456..7d86e7f 100644 (file)
@@ -8,5 +8,5 @@ es_BR{
             "real brasileño",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/curr/es_BZ.txt b/source/data/curr/es_BZ.txt
new file mode 100644 (file)
index 0000000..284c50a
--- /dev/null
@@ -0,0 +1,12 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+es_BZ{\r
+    %%Parent{"es_419"}\r
+    Currencies{\r
+        BZD{\r
+            "$",\r
+            "dólar beliceño",\r
+        }\r
+    }\r
+    Version{"2.1.32.37"}\r
+}\r
index fc0d25e..6fed4f0 100644 (file)
@@ -12,5 +12,5 @@ es_CL{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6f1102d..b9f54b9 100644 (file)
@@ -12,5 +12,5 @@ es_CO{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f06d913..a928b27 100644 (file)
@@ -8,5 +8,5 @@ es_CR{
             "colón costarricense",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d03f40e..18c5b70 100644 (file)
@@ -12,5 +12,5 @@ es_CU{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6ace7ef..f5a6ec5 100644 (file)
@@ -12,5 +12,5 @@ es_DO{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e50308c..e0632c6 100644 (file)
@@ -8,5 +8,5 @@ es_EC{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7068aa4..5c0abf2 100644 (file)
@@ -7,5 +7,5 @@ es_GQ{
             "franco CFA BEAC",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 933e463..0665107 100644 (file)
@@ -18,5 +18,5 @@ es_GT{
         one{"{1} {0}"}\r
         other{"{1} {0}"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3f2ff4e..0f0a261 100644 (file)
@@ -8,5 +8,5 @@ es_HN{
             "lempira hondureño",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2b3bfd4..6401542 100644 (file)
@@ -441,5 +441,5 @@ es_MX{
             other{"kwachas zambianos"}\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a4630d1..2f9f32c 100644 (file)
@@ -8,5 +8,5 @@ es_NI{
             "córdoba nicaragüense",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 098ba7f..8da4228 100644 (file)
@@ -8,5 +8,5 @@ es_PA{
             "balboa panameño",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cf9ad79..2dc0bfa 100644 (file)
@@ -5,8 +5,8 @@ es_PE{
     Currencies{\r
         PEN{\r
             "S/",\r
-            "nuevo sol peruano",\r
+            "sol peruano",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ca5e21e..a19010a 100644 (file)
@@ -7,5 +7,5 @@ es_PH{
             "peso filipino",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index db35509..2acfee1 100644 (file)
@@ -8,5 +8,5 @@ es_PR{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ac95396..7abfbf1 100644 (file)
@@ -8,5 +8,5 @@ es_PY{
             "guaraní paraguayo",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26bfc68..84fbab7 100644 (file)
@@ -8,5 +8,5 @@ es_SV{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 92b3c30..435b52a 100644 (file)
@@ -15,5 +15,5 @@ es_US{
     Currencies%narrow{\r
         RON{"lei"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.74"}\r
 }\r
index fe837ee..e811437 100644 (file)
@@ -12,5 +12,5 @@ es_UY{
             "peso uruguayo",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2e834fe..477bd3c 100644 (file)
@@ -11,5 +11,5 @@ es_VE{
     Currencies%narrow{\r
         VEF{"Bs."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cdaf692..97c4ec2 100644 (file)
@@ -705,7 +705,7 @@ et{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruu uus soll",\r
+            "Peruu soll",\r
         }\r
         PES{\r
             "PES",\r
@@ -1814,8 +1814,8 @@ et{
             other{"Panama balboad"}\r
         }\r
         PEN{\r
-            one{"Peruu uus soll"}\r
-            other{"Peruu uut solli"}\r
+            one{"Peruu soll"}\r
+            other{"Peruu solli"}\r
         }\r
         PES{\r
             one{"Peruu soll (1863–1965)"}\r
@@ -2150,5 +2150,5 @@ et{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 0b541f3..768704d 100644 (file)
@@ -445,7 +445,7 @@ eu{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruko sol berria",\r
+            "Peruko sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1180,8 +1180,8 @@ eu{
             other{"Panamako balboa"}\r
         }\r
         PEN{\r
-            one{"Peruko sol berri"}\r
-            other{"Peruko sol berri"}\r
+            one{"Peruko sol"}\r
+            other{"Peruko sol"}\r
         }\r
         PGK{\r
             one{"Papua Ginea Berriko kina"}\r
@@ -1388,5 +1388,5 @@ eu{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
 }\r
index f8864e0..2e7d330 100644 (file)
@@ -227,5 +227,5 @@ ewo{
             "Dolár yá Zimbabwé",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7021109..bbeefc2 100644 (file)
@@ -1637,5 +1637,5 @@ fa{
             other{"کواچای زامبیا"}\r
         }\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 75e6993..8ecc696 100644 (file)
@@ -63,5 +63,5 @@ fa_AF{
             "دالر امریکا",\r
         }\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a7881b7..e030826 100644 (file)
@@ -223,5 +223,5 @@ ff{
             "Dolaar Simbaabuwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6e36029..8272c61 100644 (file)
@@ -7,5 +7,5 @@ ff_GN{
             "GNF",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8b576e4..9e0ba74 100644 (file)
@@ -7,5 +7,5 @@ ff_MR{
             "Ugiyya Muritani",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b9f883e..e23021e 100644 (file)
@@ -780,7 +780,7 @@ fi{
         }\r
         PEN{\r
             "PEN",\r
-            "Perun uusi sol",\r
+            "Perun sol",\r
         }\r
         PES{\r
             "PES",\r
@@ -2073,8 +2073,8 @@ fi{
             other{"Perun intiä"}\r
         }\r
         PEN{\r
-            one{"Perun uusi sol"}\r
-            other{"Perun uutta solia"}\r
+            one{"Perun sol"}\r
+            other{"Perun solia"}\r
         }\r
         PES{\r
             one{"Perun sol (1863–1965)"}\r
@@ -2493,5 +2493,5 @@ fi{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.88"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 89f1171..67cfbdc 100644 (file)
@@ -448,7 +448,7 @@ fil{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruvian Nuevo Sol",\r
+            "Peruvian Sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1196,8 +1196,8 @@ fil{
             other{"Balboas ng Panama"}\r
         }\r
         PEN{\r
-            one{"Peruvian nuevo sol"}\r
-            other{"Peruvian nuevos soles"}\r
+            one{"Peruvian sol"}\r
+            other{"Peruvian soles"}\r
         }\r
         PGK{\r
             one{"Papua New Guinean kina"}\r
@@ -1404,5 +1404,5 @@ fil{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 3d3aef4..2cc6c54 100644 (file)
@@ -424,7 +424,7 @@ fo{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru nuevo sol",\r
+            "Peru sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1163,8 +1163,8 @@ fo{
             other{"Panama balboa"}\r
         }\r
         PEN{\r
-            one{"Peru nuevo sol"}\r
-            other{"Peru nuevo sol"}\r
+            one{"Peru sol"}\r
+            other{"Peru sol"}\r
         }\r
         PGK{\r
             one{"Papua Nýguinea kina"}\r
@@ -1387,5 +1387,5 @@ fo{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 08202db..dba1e64 100644 (file)
@@ -7,5 +7,5 @@ fo_DK{
             "donsk króna",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e215b07..5fcb778 100644 (file)
@@ -712,11 +712,11 @@ fr{
         }\r
         PEN{\r
             "PEN",\r
-            "nouveau sol péruvien",\r
+            "sol péruvien",\r
         }\r
         PES{\r
             "PES",\r
-            "sol péruvien",\r
+            "sol péruvien (1863–1985)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1921,8 +1921,8 @@ fr{
             other{"intis péruviens"}\r
         }\r
         PEN{\r
-            one{"nouveau sol péruvien"}\r
-            other{"nouveaux sols péruviens"}\r
+            one{"sol péruvien"}\r
+            other{"sols péruviens"}\r
         }\r
         PES{\r
             one{"sol péruvien (1863–1985)"}\r
@@ -2321,5 +2321,5 @@ fr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 63470cd..35b99de 100644 (file)
@@ -7,5 +7,5 @@ fr_BI{
             "franc burundais",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5f4a4af..0ea7177 100644 (file)
@@ -166,5 +166,5 @@ fr_CA{
             other{"(devise inconnue)"}\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b3fc029..071897c 100644 (file)
@@ -7,5 +7,5 @@ fr_CD{
             "franc congolais",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6bd429..55bfc29 100644 (file)
@@ -7,5 +7,5 @@ fr_DJ{
             "franc djiboutien",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b46ccd1..a0af163 100644 (file)
@@ -7,5 +7,5 @@ fr_DZ{
             "dinar algérien",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d36e781..8f3969d 100644 (file)
@@ -7,5 +7,5 @@ fr_GN{
             "franc guinéen",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 20b5299..d091e9b 100644 (file)
@@ -7,5 +7,5 @@ fr_HT{
             "gourde haïtienne",\r
         }\r
     }\r
-    Version{"2.1.27.63"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 559e575..dccae96 100644 (file)
@@ -7,5 +7,5 @@ fr_KM{
             "franc comorien",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fd12c2e..c5d994d 100644 (file)
@@ -11,5 +11,5 @@ fr_LU{
             "franc luxembourgeois",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6d7fd17..db05262 100644 (file)
@@ -7,5 +7,5 @@ fr_MG{
             "ariary malgache",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 607e583..062186a 100644 (file)
@@ -7,5 +7,5 @@ fr_MR{
             "ouguiya mauritanien",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e410dd1..87e3da7 100644 (file)
@@ -7,5 +7,5 @@ fr_MU{
             "roupie mauricienne",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 46be556..2fdf2d8 100644 (file)
@@ -7,5 +7,5 @@ fr_RW{
             "franc rwandais",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1f4d3de..f93b920 100644 (file)
@@ -7,5 +7,5 @@ fr_SC{
             "roupie des Seychelles",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8a7d0da..3b67083 100644 (file)
@@ -7,5 +7,5 @@ fr_SY{
             "livre syrienne",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 504382d..6572218 100644 (file)
@@ -7,5 +7,5 @@ fr_TN{
             "dinar tunisien",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 928e0d4..ef54b61 100644 (file)
@@ -7,5 +7,5 @@ fr_VU{
             "vatu vanuatuan",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 97b696f..598df45 100644 (file)
@@ -377,5 +377,5 @@ fur{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6183240..7243136 100644 (file)
@@ -760,11 +760,11 @@ fy{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruaanske nieuwe sol",\r
+            "Peruaanske sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruaanske sol",\r
+            "Peruaanske sol (1863–1985)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1933,13 +1933,13 @@ fy{
             other{"Peruaanske inti"}\r
         }\r
         PEN{\r
-            one{"Peruaanske nieuwe sol"}\r
-            other{"Peruaanske nieuwe sol"}\r
-        }\r
-        PES{\r
             one{"Peruaanske sol"}\r
             other{"Peruaanske sol"}\r
         }\r
+        PES{\r
+            one{"Peruaanske sol (1863–1985)"}\r
+            other{"Peruaanske sol (1863–1985)"}\r
+        }\r
         PGK{\r
             one{"Papuaanske kina"}\r
             other{"Papuaanske kina"}\r
@@ -2353,5 +2353,5 @@ fy{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.86"}\r
 }\r
index bced997..2fa363d 100644 (file)
@@ -740,7 +740,7 @@ ga{
         }\r
         PEN{\r
             "PEN",\r
-            "Nuevo Sol Pheiriú",\r
+            "Sol Pheiriú",\r
         }\r
         PES{\r
             "PES",\r
@@ -2192,11 +2192,11 @@ ga{
             two{"bhalboa Phanama"}\r
         }\r
         PEN{\r
-            few{"nuevo sol Pheiriú"}\r
-            many{"nuevo sol Pheiriú"}\r
-            one{"nuevo sol Pheiriú"}\r
-            other{"nuevo sol Pheiriú"}\r
-            two{"nuevo sol Pheiriú"}\r
+            few{"sol Pheiriú"}\r
+            many{"sol Pheiriú"}\r
+            one{"sol Pheiriú"}\r
+            other{"sol Pheiriú"}\r
+            two{"sol Pheiriú"}\r
         }\r
         PES{\r
             few{"shol Pheiriú (1863–1965)"}\r
@@ -2675,5 +2675,5 @@ ga{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 85fcd5e..59ecc98 100644 (file)
@@ -780,7 +780,7 @@ gd{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol ùr Pearùthach",\r
+            "Sol Pearùthach",\r
         }\r
         PES{\r
             "PES",\r
@@ -2462,10 +2462,10 @@ gd{
             two{"inti Pearùthach"}\r
         }\r
         PEN{\r
-            few{"sol ùra Pearùthach"}\r
-            one{"sol ùr Pearùthach"}\r
-            other{"sol ùr Pearùthach"}\r
-            two{"shol ùr Pearùthach"}\r
+            few{"sol Pearùthach"}\r
+            one{"sol Pearùthach"}\r
+            other{"sol Pearùthach"}\r
+            two{"shol Pearùthach"}\r
         }\r
         PES{\r
             few{"sol Pearùthach (1863–1965)"}\r
@@ -3092,5 +3092,5 @@ gd{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 13426c9..6065f2e 100644 (file)
@@ -1432,6 +1432,10 @@ gl{
             one{"sol peruano"}\r
             other{"soles peruanos"}\r
         }\r
+        PES{\r
+            one{"sol peruano (1863–1965)"}\r
+            other{"soles peruanos (1863–1965)"}\r
+        }\r
         PGK{\r
             one{"kina de Papúa-Nova Guinea"}\r
             other{"kinas de Papúa-Nova Guinea"}\r
@@ -1653,5 +1657,5 @@ gl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 47a7498..ea01626 100644 (file)
@@ -704,11 +704,11 @@ gsw{
         }\r
         PEN{\r
             "PEN",\r
-            "Nöie Sol",\r
+            "Sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Sol",\r
+            "Sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1757,13 +1757,13 @@ gsw{
             other{"Peruanischi Inti"}\r
         }\r
         PEN{\r
-            one{"Nöie Sol"}\r
-            other{"Nöii Sol"}\r
-        }\r
-        PES{\r
             one{"Sol"}\r
             other{"Sol"}\r
         }\r
+        PES{\r
+            one{"Sol (1863–1965)"}\r
+            other{"Sol (1863–1965)"}\r
+        }\r
         PGK{\r
             one{"Kina"}\r
             other{"Kina"}\r
@@ -2137,5 +2137,5 @@ gsw{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 8b1c9f5..8c9da09 100644 (file)
@@ -436,7 +436,7 @@ gu{
         }\r
         PEN{\r
             "PEN",\r
-            "પà«\87રà«\81વિયન àª¨à«\8dયà«\81વà«\8b àª¸à«\8bલ",\r
+            "પેરુવિયન સોલ",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1172,8 +1172,8 @@ gu{
             other{"પનામેનિયન બાલ્બોઆ"}\r
         }\r
         PEN{\r
-            one{"પà«\87રà«\81વિયન àª¨à«\8dયà«\81વà«\8b àª¸à«\8bલ"}\r
-            other{"પà«\87રà«\81વિયન àª¨à«\8dયà«\81વà«\8b àª¸à«\8bલ"}\r
+            one{"પેરુવિયન સોલ"}\r
+            other{"પેરુવિયન સોલ"}\r
         }\r
         PGK{\r
             one{"પાપુઆ ન્યૂ ગિનીયન કિના"}\r
@@ -1380,5 +1380,5 @@ gu{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index e92aff1..e95e307 100644 (file)
@@ -223,5 +223,5 @@ guz{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a1fd188..e2d77bb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gv{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
 }\r
index f6b7691..a77f8cb 100644 (file)
@@ -223,5 +223,5 @@ ha{
             "Dalar zimbabuwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 84d225c..8153857 100644 (file)
@@ -7,5 +7,5 @@ ha_GH{
             "GHS",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 693d231..725fbe9 100644 (file)
@@ -11,5 +11,5 @@ haw{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0b8c6be..13b33a0 100644 (file)
@@ -576,7 +576,7 @@ he{
         }\r
         PEN{\r
             "PEN",\r
-            "סול פרואני חדש",\r
+            "סול פרואני",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1639,10 +1639,10 @@ he{
             two{"בלבואה פנמי"}\r
         }\r
         PEN{\r
-            many{"סול פרואני חדש"}\r
-            one{"סול פרואני חדש"}\r
-            other{"סול פרואני חדש"}\r
-            two{"סול פרואני חדש"}\r
+            many{"סול פרואני"}\r
+            one{"סול פרואני"}\r
+            other{"סול פרואני"}\r
+            two{"סול פרואני"}\r
         }\r
         PGK{\r
             many{"קינה של פפואה גינאה החדשה"}\r
@@ -1957,5 +1957,5 @@ he{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.27"}\r
+    Version{"2.1.32.59"}\r
 }\r
index fe0f7a0..4a8d946 100644 (file)
@@ -472,7 +472,7 @@ hi{
         }\r
         PEN{\r
             "PEN",\r
-            "पà¥\87रà¥\82वियन à¤¨à¥\81à¤\8fवà¥\8b à¤¸à¥\8bल",\r
+            "पेरूवियन सोल",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1255,8 +1255,8 @@ hi{
             other{"पनामेनियन बैल्बोआ"}\r
         }\r
         PEN{\r
-            one{"पà¥\87रà¥\82वियन à¤¨à¥\81à¤\8fवà¥\8b à¤¸à¥\8bल"}\r
-            other{"पà¥\87रà¥\82वियन à¤¨à¥\81à¤\8fवà¥\8b à¤¸à¥\8bल"}\r
+            one{"पेरूवियन सोल"}\r
+            other{"पेरूवियन सोल"}\r
         }\r
         PGK{\r
             one{"पापुआ न्यू गिनीयन किना"}\r
@@ -1463,5 +1463,5 @@ hi{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index d9c1ccb..1611493 100644 (file)
@@ -780,11 +780,11 @@ hr{
         }\r
         PEN{\r
             "PEN",\r
-            "peruanski novi sol",\r
+            "peruanski sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruanski sol",\r
+            "peruanski sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2258,15 +2258,15 @@ hr{
             other{"peruanskih inti"}\r
         }\r
         PEN{\r
-            few{"peruanska nova sola"}\r
-            one{"peruanski novi sol"}\r
-            other{"peruanskih novih sola"}\r
-        }\r
-        PES{\r
             few{"peruanska sola"}\r
             one{"peruanski sol"}\r
             other{"peruanskih sola"}\r
         }\r
+        PES{\r
+            few{"peruanska sola (1863–1965)"}\r
+            one{"peruanski sol (1863–1965)"}\r
+            other{"peruanskih sola (1863–1965)"}\r
+        }\r
         PGK{\r
             few{"kine Papue Nove Gvineje"}\r
             one{"kina Papue Nove Gvineje"}\r
@@ -2783,5 +2783,5 @@ hr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 668ad31..04970ac 100644 (file)
@@ -7,5 +7,5 @@ hr_BA{
             "konvertibilna marka",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a4618fd..1cd2b60 100644 (file)
@@ -532,7 +532,7 @@ hsb{
         }\r
         PEN{\r
             "PEN",\r
-            "peruski nowy sol",\r
+            "peruski sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1536,10 +1536,10 @@ hsb{
             two{"panamaskej balbowaj"}\r
         }\r
         PEN{\r
-            few{"peruske nowe sole"}\r
-            one{"peruski nowy sol"}\r
-            other{"peruskich nowych solow"}\r
-            two{"peruskej nowej solej"}\r
+            few{"peruske sole"}\r
+            one{"peruski sol"}\r
+            other{"peruskich solow"}\r
+            two{"peruskej solej"}\r
         }\r
         PGK{\r
             few{"papua-nowoginejske kiny"}\r
@@ -1854,5 +1854,5 @@ hsb{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index ce64460..9276be3 100644 (file)
@@ -704,15 +704,15 @@ hu{
         }\r
         PEI{\r
             "PEI",\r
-            "Perui inti",\r
+            "perui inti",\r
         }\r
         PEN{\r
             "PEN",\r
-            "perui sol nuevo",\r
+            "perui sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Perui sol",\r
+            "perui sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1724,8 +1724,8 @@ hu{
             other{"panamai balboa"}\r
         }\r
         PEN{\r
-            one{"perui sol nuevo"}\r
-            other{"perui sol nuevo"}\r
+            one{"perui sol"}\r
+            other{"perui sol"}\r
         }\r
         PGK{\r
             one{"pápua új-guineai kina"}\r
@@ -2012,5 +2012,5 @@ hu{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 9e6beb5..46364d9 100644 (file)
@@ -432,7 +432,7 @@ hy{
         }\r
         PEN{\r
             "PEN",\r
-            "Õ\8aÕ¥Ö\80Õ¸Ö\82Õ« Õ¶Õ¸Ö\80 Õ½Õ¸Õ¬",\r
+            "Պերուի սոլ",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1168,8 +1168,8 @@ hy{
             other{"պանամական բալբոա"}\r
         }\r
         PEN{\r
-            one{"Õ\8aÕ¥Ö\80Õ¸Ö\82Õ« Õ¶Õ¸Ö\80 Õ½Õ¸Õ¬"}\r
-            other{"Õ\8aÕ¥Ö\80Õ¸Ö\82Õ« Õ¶Õ¸Ö\80 Õ½Õ¸Õ¬"}\r
+            one{"Պերուի սոլ"}\r
+            other{"Պերուի սոլ"}\r
         }\r
         PGK{\r
             one{"Պապուա Նոր Գվինեայի կինա"}\r
@@ -1380,5 +1380,5 @@ hy{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 7e0d5eb..a664eff 100644 (file)
@@ -772,7 +772,7 @@ id{
         }\r
         PEN{\r
             "PEN",\r
-            "Nuevo Sol Peru",\r
+            "Sol Peru",\r
         }\r
         PES{\r
             "PES",\r
@@ -1690,7 +1690,7 @@ id{
             other{"Balboa Panama"}\r
         }\r
         PEN{\r
-            other{"Nuevo Sol Peru"}\r
+            other{"Sol Peru"}\r
         }\r
         PES{\r
             other{"Sol Peru (1863–1965)"}\r
@@ -1906,5 +1906,5 @@ id{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 6c28358..2d4eaf4 100644 (file)
@@ -14,5 +14,5 @@ ig{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 42ebf00..c572516 100644 (file)
@@ -14,5 +14,5 @@ ii{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1545526..7541b17 100644 (file)
@@ -1600,5 +1600,5 @@ is{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.65"}\r
+    Version{"2.1.32.59"}\r
 }\r
index f1cfbf1..6389db7 100644 (file)
@@ -697,11 +697,11 @@ it{
         }\r
         PEN{\r
             "PEN",\r
-            "nuovo sol peruviano",\r
+            "sol peruviano",\r
         }\r
         PES{\r
             "PES",\r
-            "sol peruviano",\r
+            "sol peruviano (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1622,8 +1622,8 @@ it{
             other{"balboa panamensi"}\r
         }\r
         PEN{\r
-            one{"nuovo sol peruviano"}\r
-            other{"nuovi sol peruviani"}\r
+            one{"sol peruviano"}\r
+            other{"sol peruviani"}\r
         }\r
         PGK{\r
             one{"kina papuana"}\r
@@ -1846,5 +1846,5 @@ it{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
 }\r
index 0d57df4..f051318 100644 (file)
@@ -780,7 +780,7 @@ ja{
         }\r
         PEN{\r
             "PEN",\r
-            "ペルー ソル",\r
+            "ペルー ソル",\r
         }\r
         PES{\r
             "PES",\r
@@ -1879,7 +1879,7 @@ ja{
             other{"ペルー インティ"}\r
         }\r
         PEN{\r
-            other{"ペルー ソル"}\r
+            other{"ペルー ソル"}\r
         }\r
         PES{\r
             other{"ペルー ソル (1863–1965)"}\r
@@ -2194,5 +2194,5 @@ ja{
     CurrencyUnitPatterns{\r
         other{"{0}{1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 802dfbf..209b4cc 100644 (file)
@@ -23,5 +23,5 @@ jgo{
             "ntɛ-ŋkáp yi pɛ́ ká kɛ́ jínɛ",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ed71325..090e400 100644 (file)
@@ -227,5 +227,5 @@ jmc{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2ef1cf8..9d820e4 100644 (file)
@@ -640,11 +640,11 @@ ka{
         }\r
         PEN{\r
             "PEN",\r
-            "á\83\9eá\83\94á\83 á\83£á\83¡ á\83\90á\83®á\83\90á\83\9aá\83\98 á\83¡á\83\9dá\83\9aá\83\98",\r
+            "პერუს სოლი",\r
         }\r
         PES{\r
             "PES",\r
-            "პერუს სოლი",\r
+            "პერუს სოლი (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1504,8 +1504,8 @@ ka{
             other{"პანამური ბალბოა"}\r
         }\r
         PEN{\r
-            one{"á\83\9eá\83\94á\83 á\83£á\83¡ á\83\90á\83®á\83\90á\83\9aá\83\98 á\83¡á\83\9dá\83\9aá\83\98"}\r
-            other{"á\83\9eá\83\94á\83 á\83£á\83¡ á\83\90á\83®á\83\90á\83\9aá\83\98 á\83¡á\83\9dá\83\9aá\83\98"}\r
+            one{"პერუს სოლი"}\r
+            other{"პერუს სოლი"}\r
         }\r
         PGK{\r
             one{"პაპუა-ახალი გვინეის კინა"}\r
@@ -1716,5 +1716,5 @@ ka{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 1a5f4d0..21d06e0 100644 (file)
@@ -223,5 +223,5 @@ kab{
             "Adular Azimbabwi",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b986719..1399904 100644 (file)
@@ -223,5 +223,5 @@ kam{
             "Ndola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 07b8d0c..7adf0c1 100644 (file)
@@ -227,5 +227,5 @@ kde{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 644168f..58a818e 100644 (file)
@@ -743,5 +743,5 @@ kea{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.46"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 7c4a4b8..68e7ede 100644 (file)
@@ -227,5 +227,5 @@ khq{
             "Zimbabwe Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9298e3a..c47905b 100644 (file)
@@ -223,5 +223,5 @@ ki{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9d80799..8aafc07 100644 (file)
@@ -432,7 +432,7 @@ kk{
         }\r
         PEN{\r
             "PEN",\r
-            "Перу жаңа солі",\r
+            "Перу солі",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1163,8 +1163,8 @@ kk{
             other{"Панама бальбоасы"}\r
         }\r
         PEN{\r
-            one{"Перу жаңа солі"}\r
-            other{"Перу жаңа солі"}\r
+            one{"Перу солі"}\r
+            other{"Перу солі"}\r
         }\r
         PGK{\r
             one{"Папуа - Жаңа Гвинея кинасы"}\r
@@ -1371,5 +1371,5 @@ kk{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index d3033db..d006838 100644 (file)
@@ -7,5 +7,5 @@ kkj{
             "Franc CFA",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c6d0fd6..9d8eb6b 100644 (file)
@@ -17,5 +17,5 @@ kl{
             other{"euro"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
 }\r
index 72bbba4..42a54fc 100644 (file)
@@ -223,5 +223,5 @@ kln{
             "Dolaitab ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 66ea00d..2428662 100644 (file)
@@ -1214,5 +1214,5 @@ km{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.74"}\r
 }\r
index f469145..095c471 100644 (file)
@@ -436,7 +436,7 @@ kn{
         }\r
         PEN{\r
             "PEN",\r
-            "ಪà³\86ರà³\81ವಿಯನà³\8d à²¨à³\81ಯà³\86ವà³\8a à²¸à³\8aಲà³\8d",\r
+            "ಪೆರುವಿಯನ್ ಸೊಲ್",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1172,8 +1172,8 @@ kn{
             other{"ಪನಾಮಾನಿಯನ್ ಬಲ್ಬೋವಾಗಳು"}\r
         }\r
         PEN{\r
-            one{"ಪà³\86ರà³\81ವಿಯನà³\8d à²¨à³\81ಯà³\86ವà³\8a à²¸à³\8aಲà³\8d"}\r
-            other{"ಪà³\86ರà³\81ವಿಯನà³\8d à²¨à³\81ಯà³\86ವà³\8a à²¸à³\8aಲà³\8dâ\80\8dà²\97ಳà³\81"}\r
+            one{"ಪೆರುವಿಯನ್ ಸೊಲ್"}\r
+            other{"ಪೆರುವಿಯನ್ ಸೊಲ್‍ಗಳು"}\r
         }\r
         PGK{\r
             one{"ಪಪುವಾ ನ್ಯೂ ಗಿನಿಯನ್ ಕಿನಾ"}\r
@@ -1380,5 +1380,5 @@ kn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 69f097c..9866083 100644 (file)
@@ -752,11 +752,11 @@ ko{
         }\r
         PEN{\r
             "PEN",\r
-            "페루 누에보 솔",\r
+            "페루 솔",\r
         }\r
         PES{\r
             "PES",\r
-            "페루 솔",\r
+            "페루 솔 (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1578,7 +1578,7 @@ ko{
             other{"파나마 발보아"}\r
         }\r
         PEN{\r
-            other{"페루 누에보 솔"}\r
+            other{"페루 솔"}\r
         }\r
         PGK{\r
             other{"파푸아뉴기니 키나"}\r
@@ -1734,5 +1734,5 @@ ko{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 6befe25..f7965b0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kok{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3cb5263..4662432 100644 (file)
@@ -644,11 +644,11 @@ ks{
         }\r
         PEN{\r
             "PEN",\r
-            "پٔریوٗوِیَن نیوٗاوز سولٕز",\r
+            "پٔریوٗوِیَن سولٕز",\r
         }\r
         PES{\r
             "PES",\r
-            "پٔریوٗوِیَن سول",\r
+            "پٔریوٗوِیَن سول (۱۸۶۳–۱۹۶۵)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1011,5 +1011,5 @@ ks{
             "زِمبابِیُک ڈالَر",\r
         }\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
 }\r
index a0c3dc4..6fb04bb 100644 (file)
@@ -227,5 +227,5 @@ ksb{
             "dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ac41b1f..30e861e 100644 (file)
@@ -223,5 +223,5 @@ ksf{
             "mɔni mǝ á zimbabwɛ́",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a6632ee..3c48e20 100644 (file)
@@ -448,7 +448,7 @@ ksh{
         }\r
         PEN{\r
             "PEN",\r
-            "perruaanesche Nuevo Sol",\r
+            "perruaanesche Sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -895,5 +895,5 @@ ksh{
         other{"{0} {1}"}\r
         zero{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index f38a919..30cb7bd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kw{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 45e1fbb..e75b4d4 100644 (file)
@@ -432,7 +432,7 @@ ky{
         }\r
         PEN{\r
             "PEN",\r
-            "перу нуэво солу",\r
+            "перу солу",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1165,8 +1165,8 @@ ky{
             other{"панама балбоасы"}\r
         }\r
         PEN{\r
-            one{"перу нуэво солу"}\r
-            other{"перу нуэво солу"}\r
+            one{"перу солу"}\r
+            other{"перу солу"}\r
         }\r
         PGK{\r
             one{"Папуа Жаӊы Гвинея кинасы"}\r
@@ -1373,5 +1373,5 @@ ky{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index d7ac3e7..5a65378 100644 (file)
@@ -223,5 +223,5 @@ lag{
             "Dóola ya Simbáabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5cd7cf9..9ea5a42 100644 (file)
@@ -708,11 +708,11 @@ lb{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruaneschen Neie Sol",\r
+            "Peruaneschen Sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruanesche Sol (1863–1965)",\r
+            "Peruaneschen Sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1825,11 +1825,11 @@ lb{
             other{"Peruanesch Inti"}\r
         }\r
         PEN{\r
-            one{"Peruaneschen Neie Sol"}\r
-            other{"Peruanesch Nei Soles"}\r
+            one{"Peruaneschen Sol"}\r
+            other{"Peruanesch Soles"}\r
         }\r
         PES{\r
-            one{"Peruanesche Sol (1863–1965)"}\r
+            one{"Peruaneschen Sol (1863–1965)"}\r
             other{"Peruanesch Soles (1863–1965)"}\r
         }\r
         PGK{\r
@@ -2225,5 +2225,5 @@ lb{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 2a8d5f9..f16da89 100644 (file)
@@ -227,5 +227,5 @@ lg{
             "Doola ey’eZimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 610c379..5c58cf0 100644 (file)
@@ -7,5 +7,5 @@ lkt{
             "USD",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b00a59b..04e1715 100644 (file)
@@ -227,5 +227,5 @@ ln{
             "Dolarɛ ya Zimbabwɛ",\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 56da86b..3b5af67 100644 (file)
@@ -7,5 +7,5 @@ ln_AO{
             "Kwanza ya Angóla",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cec2b56..32f440a 100644 (file)
@@ -760,7 +760,7 @@ lo{
         }\r
         PEN{\r
             "PEN",\r
-            "à»\80àº\9bâ\80\8bຣູâ\80\8bວຽàº\99 àº\99ູâ\80\8bà»\82ວ à»\82àº\8aâ\80\8bລà»\8c",\r
+            "ເປ​ຣູ​ວຽນ ໂຊ​ລ໌",\r
         }\r
         PES{\r
             "PES",\r
@@ -1589,7 +1589,7 @@ lo{
             other{"ພານາມານຽນ ບອນບົວ"}\r
         }\r
         PEN{\r
-            other{"à»\80àº\9bâ\80\8bຣູâ\80\8bວຽàº\99 àº\99ູâ\80\8bà»\82ວ à»\82àº\8aâ\80\8bລà»\8c"}\r
+            other{"ເປ​ຣູ​ວຽນ ໂຊ​ລ໌"}\r
         }\r
         PGK{\r
             other{"ປາ​ປົວ ນິວ ກິ​ນຽນ ກິ​ນາ"}\r
@@ -1745,5 +1745,5 @@ lo{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index a1805e0..0845619 100644 (file)
@@ -78,5 +78,5 @@ lrc{
             other{"پیل نادیار"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5e42a04..2f0dea4 100644 (file)
@@ -780,7 +780,7 @@ lt{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru naujasis solis",\r
+            "Peru solis",\r
         }\r
         PES{\r
             "PES",\r
@@ -2462,10 +2462,10 @@ lt{
             other{"Peru intis"}\r
         }\r
         PEN{\r
-            few{"Peru naujieji soliai"}\r
-            many{"Peru naujojo solio"}\r
-            one{"Peru naujasis solis"}\r
-            other{"Peru naujųjų solių"}\r
+            few{"Peru soliai"}\r
+            many{"Peru solio"}\r
+            one{"Peru solis"}\r
+            other{"Peru solių"}\r
         }\r
         PES{\r
             few{"Peru soliai (1863–1965)"}\r
@@ -3086,5 +3086,5 @@ lt{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 9fd49a9..47e8fe8 100644 (file)
@@ -227,5 +227,5 @@ lu{
             "Ndola wa Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 067a580..6a6bd0f 100644 (file)
@@ -223,5 +223,5 @@ luo{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1768f18..a15c0f9 100644 (file)
@@ -223,5 +223,5 @@ luy{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 53b36dd..725e90f 100644 (file)
@@ -312,7 +312,7 @@ lv{
         }\r
         ISK{\r
             "ISK",\r
-            "Īslandes krona",\r
+            "Islandes krona",\r
         }\r
         ITL{\r
             "ITL",\r
@@ -520,7 +520,7 @@ lv{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru jaunais sols",\r
+            "Peru sols",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1259,9 +1259,9 @@ lv{
             zero{"Irānas riāli"}\r
         }\r
         ISK{\r
-            one{"Īslandes krona"}\r
-            other{"Īslandes kronas"}\r
-            zero{"Īslandes kronas"}\r
+            one{"Islandes krona"}\r
+            other{"Islandes kronas"}\r
+            zero{"Islandes kronas"}\r
         }\r
         JMD{\r
             one{"Jamaikas dolārs"}\r
@@ -1474,9 +1474,9 @@ lv{
             zero{"Panamas balboa"}\r
         }\r
         PEN{\r
-            one{"Peru jaunais sols"}\r
-            other{"Peru jaunie soli"}\r
-            zero{"Peru jaunie soli"}\r
+            one{"Peru sols"}\r
+            other{"Peru soli"}\r
+            zero{"Peru soli"}\r
         }\r
         PGK{\r
             one{"Papua-Jaungvinejas kina"}\r
@@ -1784,5 +1784,5 @@ lv{
         other{"{0} {1}"}\r
         zero{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 3910d0d..64bd1d3 100644 (file)
@@ -223,5 +223,5 @@ mas{
             "Iropiyianí e Simbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 44a8180..275f665 100644 (file)
@@ -7,5 +7,5 @@ mas_TZ{
             "Iropiyianí e Tanzania",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 49526a3..d5fedc7 100644 (file)
@@ -223,5 +223,5 @@ mer{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38260a1..5e88281 100644 (file)
@@ -227,5 +227,5 @@ mfe{
             "dolar zimbawe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 583a552..b938d14 100644 (file)
@@ -231,5 +231,5 @@ mg{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 404a9dd..09317cf 100644 (file)
@@ -7,5 +7,5 @@ mgh{
             "MZN",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 27ad453..8abbbc0 100644 (file)
@@ -15,5 +15,5 @@ mgo{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 153e9d4..8a82933 100644 (file)
@@ -584,11 +584,11 @@ mk{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуански нов сол",\r
+            "Перуански сол",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуански сол",\r
+            "Перуански сол (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1436,8 +1436,8 @@ mk{
             other{"Панамска балбоа"}\r
         }\r
         PEN{\r
-            one{"Перуански нов сол"}\r
-            other{"Перуански нов сол"}\r
+            one{"Перуански сол"}\r
+            other{"Перуански сол"}\r
         }\r
         PGK{\r
             one{"Папуа новогвинејска кина"}\r
@@ -1656,5 +1656,5 @@ mk{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 2c3d0f0..aed191b 100644 (file)
@@ -708,11 +708,11 @@ ml{
         }\r
         PEN{\r
             "PEN",\r
-            "à´ªàµ\86à´±àµ\81വിയൻ à´¨àµ\8dà´¯àµ\82à´µàµ\8b à´¸àµ\8bൾ",\r
+            "പെറുവിയൻ സോൾ",\r
         }\r
         PES{\r
             "PES",\r
-            "പെറൂവിയൻ സോൾ",\r
+            "പെറൂവിയൻ സോൾ (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1872,12 +1872,12 @@ ml{
             other{"പെറൂവിയൻ ഇൻറിസ്"}\r
         }\r
         PEN{\r
-            one{"à´ªàµ\86à´±àµ\81വിയൻ à´¨àµ\8dà´¯àµ\82à´µàµ\8b à´¸àµ\8bൾ"}\r
-            other{"à´ªàµ\86à´±àµ\81വിയൻ à´¨àµ\8dà´¯àµ\82à´µàµ\8b à´¸àµ\8bൾ"}\r
+            one{"പെറുവിയൻ സോൾ"}\r
+            other{"പെറുവിയൻ സോൾ"}\r
         }\r
         PES{\r
-            one{"പെറൂവിയൻ സോൾ"}\r
-            other{"പെറൂവിയൻ സോൾസ്"}\r
+            one{"പെറൂവിയൻ സോൾ (1863–1965)"}\r
+            other{"പെറൂവിയൻ സോൾസ് (1863–1965)"}\r
         }\r
         PGK{\r
             one{"പാപ്പുവ ന്യൂ ഗിനിയൻ കിന"}\r
@@ -2212,5 +2212,5 @@ ml{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index c51444c..3b49bce 100644 (file)
@@ -432,7 +432,7 @@ mn{
         }\r
         PEN{\r
             "PEN",\r
-            "перугийн невосоль",\r
+            "перугийн соль",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1168,8 +1168,8 @@ mn{
             other{"панамын бальбоа"}\r
         }\r
         PEN{\r
-            one{"перугийн невосоль"}\r
-            other{"перугийн невосоль"}\r
+            one{"перугийн соль"}\r
+            other{"перугийн соль"}\r
         }\r
         PGK{\r
             one{"папуа-шинэ гвинейн кина"}\r
@@ -1380,5 +1380,5 @@ mn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index c6931fd..e119156 100644 (file)
@@ -436,7 +436,7 @@ mr{
         }\r
         PEN{\r
             "PEN",\r
-            "पà¥\87रà¥\81वियन à¤¨à¥\81à¤\87वà¥\8dहà¥\8b à¤¸à¥\8bल",\r
+            "पेरुवियन सोल",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1172,8 +1172,8 @@ mr{
             other{"पनामा बाल्बोआज"}\r
         }\r
         PEN{\r
-            one{"पà¥\87रà¥\81वियन à¤¨à¥\81à¤\87वà¥\8dहà¥\8b à¤¸à¥\8bल"}\r
-            other{"पà¥\87रà¥\81वियन à¤¨à¥\81à¤\87वà¥\8dहà¥\8b à¤¸à¥\8bलà¥\8dस"}\r
+            one{"पेरुवियन सोल"}\r
+            other{"पेरुवियन सोल्स"}\r
         }\r
         PGK{\r
             one{"पापुआ न्यू गिनीयन किना"}\r
@@ -1376,5 +1376,5 @@ mr{
             other{"झांबियन क्वाचास"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 54835da..2f8910a 100644 (file)
@@ -436,7 +436,7 @@ ms{
         }\r
         PEN{\r
             "PEN",\r
-            "Nuevo Sol Peru",\r
+            "Sol Peru",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1065,7 +1065,7 @@ ms{
             other{"Balboa Panama"}\r
         }\r
         PEN{\r
-            other{"Nuevo Sol Peru"}\r
+            other{"Sol Peru"}\r
         }\r
         PGK{\r
             other{"Kina Papua New Guinea"}\r
@@ -1221,5 +1221,5 @@ ms{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 7fddbfd..2445e4a 100644 (file)
@@ -7,5 +7,5 @@ ms_BN{
             "Dolar Brunei",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fd5ac19..c50d23d 100644 (file)
@@ -7,5 +7,5 @@ ms_SG{
             "Dolar Singapura",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0cd148d..f024291 100644 (file)
@@ -1581,5 +1581,5 @@ mt{
             other{"ZMW"}\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 839533b..1c36163 100644 (file)
@@ -227,5 +227,5 @@ mua{
             "Solai Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 69ab0b6..a3a28d8 100644 (file)
@@ -472,7 +472,7 @@ my{
         }\r
         PEN{\r
             "PEN",\r
-            "á\80\95á\80®á\80\9bá\80°á\80¸ á\80\94á\80°á\80¡á\80®á\80\97á\80­á\80¯á\80\86á\80­á\80¯á\80¸á\80\9cá\80º",\r
+            "ပီရူး ဆိုးလ်",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1148,7 +1148,7 @@ my{
             other{"ပနားမား ဘလ်ဘိုးအာ"}\r
         }\r
         PEN{\r
-            other{"á\80\95á\80®á\80\9bá\80°á\80¸ á\80\94á\80°á\80¡á\80®á\80\97á\80­á\80¯á\80\86á\80­á\80¯á\80¸á\80\9cá\80º"}\r
+            other{"ပီရူး ဆိုးလ်"}\r
         }\r
         PGK{\r
             other{"ပါပူအာ နယူးဂီနီ ခီးနာ"}\r
@@ -1301,5 +1301,5 @@ my{
             other{"ဇင်ဘာဘွေခွါးချာ"}\r
         }\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.33.28"}\r
 }\r
index d77dff9..662f232 100644 (file)
@@ -412,7 +412,7 @@ mzn{
         }\r
         PEN{\r
             "PEN",\r
-            "پروی ِنوئوو سول",\r
+            "پروی ِسول",\r
         }\r
         PHP{\r
             "PHP",\r
@@ -988,7 +988,7 @@ mzn{
             other{"پانامای بالبوا"}\r
         }\r
         PEN{\r
-            other{"پروی ِنوئوو سول"}\r
+            other{"پروی ِسول"}\r
         }\r
         PHP{\r
             other{"فیلیپین ِپزو"}\r
@@ -1120,5 +1120,5 @@ mzn{
             other{"زامبیای ِکواچا"}\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 13652c2..ce8f599 100644 (file)
@@ -227,5 +227,5 @@ naq{
             "Zimbabwe Dollari",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e561d7a..d468ba2 100644 (file)
@@ -776,15 +776,15 @@ nb{
         }\r
         PEI{\r
             "PEI",\r
-            "peruvianske inti",\r
+            "peruanske inti",\r
         }\r
         PEN{\r
             "PEN",\r
-            "peruanske nuevo sol",\r
+            "peruanske sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruvianske sol (1863–1965)",\r
+            "peruanske sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2063,16 +2063,16 @@ nb{
             other{"panamanske balboa"}\r
         }\r
         PEI{\r
-            one{"peruviansk inti"}\r
-            other{"peruvianske inti"}\r
+            one{"peruansk inti"}\r
+            other{"peruanske inti"}\r
         }\r
         PEN{\r
-            one{"peruansk nuevo sol"}\r
-            other{"peruanske nuevo sol"}\r
+            one{"peruansk sol"}\r
+            other{"peruanske sol"}\r
         }\r
         PES{\r
-            one{"peruviansk sol (1863–1965)"}\r
-            other{"peruvianske sol (1863–1965)"}\r
+            one{"peruansk sol (1863–1965)"}\r
+            other{"peruanske sol (1863–1965)"}\r
         }\r
         PGK{\r
             one{"papuansk kina"}\r
@@ -2483,5 +2483,5 @@ nb{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 54b8618..3abf330 100644 (file)
@@ -227,5 +227,5 @@ nd{
             "Dola yase Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e395563..7874b05 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.28.71"}\r
+    Version{"2.1.31.33"}\r
 }\r
index efea0c1..ed99d4b 100644 (file)
@@ -436,7 +436,7 @@ ne{
         }\r
         PEN{\r
             "PEN",\r
-            "पà¥\87रà¥\82भियालà¥\80 à¤¨à¥\8dयà¥\82भà¥\8b à¤¸à¥\8bल",\r
+            "पेरूभियाली सोल",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1173,8 +1173,8 @@ ne{
             other{"पानामानियाली बाल्बोआ"}\r
         }\r
         PEN{\r
-            one{"पà¥\87रà¥\82भियालà¥\80 à¤¨à¥\8dयà¥\82भà¥\8b à¤¸à¥\8bल"}\r
-            other{"पà¥\87रà¥\82भियालà¥\80 à¤¨à¥\8dयà¥\82भà¥\8b à¤¸à¥\8bल"}\r
+            one{"पेरूभियाली सोल"}\r
+            other{"पेरूभियाली सोल"}\r
         }\r
         PGK{\r
             one{"पपुआ न्यू गिनियाली किना"}\r
@@ -1381,5 +1381,5 @@ ne{
             other{"जाम्बियाली क्वाचा"}\r
         }\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 452e370..2d180a4 100644 (file)
@@ -780,11 +780,11 @@ nl{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruaanse nieuwe sol",\r
+            "Peruaanse sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruaanse sol",\r
+            "Peruaanse sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2074,13 +2074,13 @@ nl{
             other{"Peruaanse inti"}\r
         }\r
         PEN{\r
-            one{"Peruaanse nieuwe sol"}\r
-            other{"Peruaanse nieuwe sol"}\r
-        }\r
-        PES{\r
             one{"Peruaanse sol"}\r
             other{"Peruaanse sol"}\r
         }\r
+        PES{\r
+            one{"Peruaanse sol (1863–1965)"}\r
+            other{"Peruaanse sol (1863–1965)"}\r
+        }\r
         PGK{\r
             one{"Papoea-Nieuw-Guinese kina"}\r
             other{"Papoea-Nieuw-Guinese kina"}\r
@@ -2494,5 +2494,5 @@ nl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 2f71923..9a72fae 100644 (file)
@@ -7,5 +7,5 @@ nl_AW{
             "Arubaanse gulden",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 37931bb..aff2a9d 100644 (file)
@@ -7,5 +7,5 @@ nl_BQ{
             "Amerikaanse dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 41300fe..10378da 100644 (file)
@@ -7,5 +7,5 @@ nl_CW{
             "Nederlands-Antilliaanse gulden",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 43d112e..d9cc4d2 100644 (file)
@@ -7,5 +7,5 @@ nl_SR{
             "Surinaamse dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 544b032..e7e4a79 100644 (file)
@@ -7,5 +7,5 @@ nl_SX{
             "Nederlands-Antilliaanse gulden",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index efd8572..2880d92 100644 (file)
@@ -227,5 +227,5 @@ nmg{
             "Dɔ́llɔ Zimbabwǝ (1980–2008)",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c82303f..90fff98 100644 (file)
@@ -704,11 +704,11 @@ nn{
         }\r
         PEN{\r
             "PEN",\r
-            "peruansk nuevo sol",\r
+            "peruansk sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruansk sol",\r
+            "peruansk sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1577,13 +1577,13 @@ nn{
             other{"peruanske inti"}\r
         }\r
         PEN{\r
-            one{"peruansk nuevo sol"}\r
-            other{"peruanske nuevo sol"}\r
-        }\r
-        PES{\r
             one{"peruansk sol"}\r
             other{"peruanske sol"}\r
         }\r
+        PES{\r
+            one{"peruansk sol (1863–1965)"}\r
+            other{"peruanske sol (1863–1965)"}\r
+        }\r
         PGK{\r
             one{"papuansk kina"}\r
             other{"papuanske kina"}\r
@@ -1921,5 +1921,5 @@ nn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 671aaf2..df6977b 100644 (file)
@@ -7,5 +7,5 @@ nnh{
             "feláŋ CFA",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 838d1b2..e7b13c9 100644 (file)
@@ -11,5 +11,5 @@ nus{
             "SSP",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d4618f6..e158161 100644 (file)
@@ -227,5 +227,5 @@ nyn{
             "Doora ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 575e615..35f8be0 100644 (file)
@@ -43,5 +43,5 @@ om{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6f65ec3..ca09e9f 100644 (file)
@@ -7,5 +7,5 @@ om_KE{
             "KES",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dfc4e59..f19d02a 100644 (file)
@@ -7,5 +7,5 @@ or{
             "ଟଙକା",\r
         }\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ae1a733..f2f4d72 100644 (file)
@@ -65,5 +65,5 @@ os{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3e69fba..3f80b21 100644 (file)
@@ -11,5 +11,5 @@ os_RU{
             "Сом",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5d27aa3..9b9f494 100644 (file)
@@ -496,7 +496,7 @@ pa{
         }\r
         PEN{\r
             "PEN",\r
-            "ਪà©\87ਰà©\82ਵà©\80à¨\85ਨ à¨¨à¨¿à¨\8aਵà©\8b à¨¸à©\8bਲ",\r
+            "ਪੇਰੂਵੀਅਨ ਸੋਲ",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1341,8 +1341,8 @@ pa{
             other{"ਪਨਾਮੇਨੀਅਨ ਬਾਲਬੋਆ"}\r
         }\r
         PEN{\r
-            one{"ਪà©\87ਰà©\82ਵà©\80à¨\85ਨ à¨¨à¨¿à¨\8aਵà©\8b à¨¸à©\8bਲ"}\r
-            other{"ਪà©\87ਰà©\82ਵà©\80à¨\85ਨ à¨¨à¨¿à¨\8aਵà©\8b à¨¸à©\8bਲ"}\r
+            one{"ਪੇਰੂਵੀਅਨ ਸੋਲ"}\r
+            other{"ਪੇਰੂਵੀਅਨ ਸੋਲ"}\r
         }\r
         PGK{\r
             one{"ਪਾਪੂਆ ਨਿਊ ਗਿਨੀਆਈ ਕੀਨਾ"}\r
@@ -1581,5 +1581,5 @@ pa{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 892f270..ae8583d 100644 (file)
@@ -16,5 +16,5 @@ pa_Arab{
             "روپئیہ",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dca680f..dc1602d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4ae7a85..c2a8123 100644 (file)
@@ -684,11 +684,11 @@ pl{
         }\r
         PEN{\r
             "PEN",\r
-            "nowy sol peruwiański",\r
+            "sol peruwiański",\r
         }\r
         PES{\r
             "PES",\r
-            "sol peruwiański",\r
+            "sol peruwiański (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1900,10 +1900,16 @@ pl{
             other{"balboa panamskiego"}\r
         }\r
         PEN{\r
-            few{"nowe sole peruwiańskie"}\r
-            many{"nowych soli peruwiańskich"}\r
-            one{"nowy sol peruwiański"}\r
-            other{"nowego sola peruwiańskiego"}\r
+            few{"sole peruwiańskie"}\r
+            many{"soli peruwiańskich"}\r
+            one{"sol peruwiański"}\r
+            other{"sola peruwiańskiego"}\r
+        }\r
+        PES{\r
+            few{"sole peruwiańskie (1863–1965)"}\r
+            many{"soli peruwiańskich (1863–1965)"}\r
+            one{"sol peruwiański (1863–1965)"}\r
+            other{"sola peruwiańskiego (1863–1965)"}\r
         }\r
         PGK{\r
             few{"kina papuaskie"}\r
@@ -2284,5 +2290,5 @@ pl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index bb6c429..b41e218 100644 (file)
Binary files a/source/data/curr/pool.res and b/source/data/curr/pool.res differ
index de6240a..12b8218 100644 (file)
@@ -13,5 +13,5 @@ ps{
             other{"افغانۍ"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index afc20d1..f97b858 100644 (file)
@@ -776,7 +776,7 @@ pt{
         }\r
         PEN{\r
             "PEN",\r
-            "Novo sol peruano",\r
+            "Sol peruano",\r
         }\r
         PES{\r
             "PES",\r
@@ -2057,12 +2057,12 @@ pt{
             other{"Intis peruanos"}\r
         }\r
         PEN{\r
-            one{"Novo sol peruano"}\r
-            other{"Novos sóis peruanos"}\r
+            one{"Sol peruano"}\r
+            other{"Sóis peruanos"}\r
         }\r
         PES{\r
-            one{"Sol peruano"}\r
-            other{"Soles peruanos"}\r
+            one{"Sol peruano (1863–1965)"}\r
+            other{"Sóis peruanos (1863–1965)"}\r
         }\r
         PGK{\r
             one{"Kina papuásia"}\r
@@ -2469,5 +2469,5 @@ pt{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 3f975e2..2c946f4 100644 (file)
@@ -8,5 +8,5 @@ pt_AO{
             "Kwanza angolano",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a4226b1..4ee7339 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1f64578..c0ed7e6 100644 (file)
@@ -17,5 +17,5 @@ pt_CV{
             "Escudo português",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fd432f9..0f6e235 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 75c5d9d..f4cd124 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 034f337..e2797cb 100644 (file)
@@ -8,5 +8,5 @@ pt_LU{
             "Franco luxemburguês",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a780c66..6838025 100644 (file)
@@ -8,5 +8,5 @@ pt_MO{
             "Pataca de Macau",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fff4f81..b8f9c6e 100644 (file)
@@ -8,5 +8,5 @@ pt_MZ{
             "Metical de Moçambique",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c15c9a9..2e4b99c 100644 (file)
@@ -542,8 +542,12 @@ pt_PT{
             other{"Balboas do Panamá"}\r
         }\r
         PEN{\r
-            one{"Novo sol peruano"}\r
-            other{"Novos soles peruanos"}\r
+            one{"Sol peruano"}\r
+            other{"Soles peruanos"}\r
+        }\r
+        PES{\r
+            one{"Sol peruano (1863–1965)"}\r
+            other{"Soles peruanos (1863–1965)"}\r
         }\r
         PGK{\r
             one{"Kina da Papua-Nova Guiné"}\r
@@ -642,5 +646,5 @@ pt_PT{
             other{"Kwachas zambianos (1968–2012)"}\r
         }\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 1541451..c86713d 100644 (file)
@@ -8,5 +8,5 @@ pt_ST{
             "Dobra de São Tomé e Príncipe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bbbc3d..b8cb201 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 189cff9..6ddce9f 100644 (file)
@@ -10,5 +10,5 @@ qu{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 29f500b..2069c14 100644 (file)
@@ -11,5 +11,5 @@ qu_BO{
             "PEN",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 783f165..8e6e49e 100644 (file)
@@ -11,5 +11,5 @@ qu_EC{
             "USD",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f72b113..6a80049 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-CURR_CLDR_VERSION = %version%\r
+CURR_CLDR_VERSION = 31.0.1\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a '%local%' file in this same directory.\r
+# you should consider creating a 'reslocal.mk' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example '%local%' files:\r
+# Example 'reslocal.mk' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,19 +26,20 @@ CURR_CLDR_VERSION = %version%
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-CURR_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
- en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
- in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
- ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
- no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
- pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
- shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_BA.txt\\r
- sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt sr_Cyrl_YU.txt sr_Latn_BA.txt\\r
- sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt sr_Latn_YU.txt sr_ME.txt\\r
- sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt th_TH_TRADITIONAL.txt\\r
- tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt uz_Latn_UZ.txt\\r
- uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt zh_HK.txt\\r
- zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt zh_SG.txt zh_TW.txt\r
+CURR_SYNTHETIC_ALIAS = ar_SA.txt ars.txt az_AZ.txt az_Latn_AZ.txt\\r
+ bs_BA.txt bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt\\r
+ he_IL.txt id_ID.txt in.txt in_ID.txt iw.txt\\r
+ iw_IL.txt ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt\\r
+ nn_NO.txt no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt\\r
+ pa_Guru_IN.txt pa_IN.txt pa_PK.txt sh.txt sh_BA.txt\\r
+ sh_CS.txt sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt\\r
+ sr_CS.txt sr_Cyrl_BA.txt sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt\\r
+ sr_Cyrl_YU.txt sr_Latn_BA.txt sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt\\r
+ sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt\\r
+ th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
+ uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt\\r
+ zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt\\r
+ zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -77,56 +78,56 @@ CURR_SOURCE = af.txt af_NA.txt agq.txt ak.txt\
  en_TO.txt en_TT.txt en_TV.txt en_TZ.txt en_UG.txt\\r
  en_VC.txt en_VG.txt en_VU.txt en_WS.txt en_ZA.txt\\r
  en_ZM.txt en_ZW.txt eo.txt es.txt es_419.txt\\r
- es_AR.txt es_BO.txt es_BR.txt es_CL.txt es_CO.txt\\r
- es_CR.txt es_CU.txt es_DO.txt es_EC.txt es_GQ.txt\\r
- es_GT.txt es_HN.txt es_MX.txt es_NI.txt es_PA.txt\\r
- es_PE.txt es_PH.txt es_PR.txt es_PY.txt es_SV.txt\\r
- es_US.txt es_UY.txt es_VE.txt et.txt eu.txt\\r
- ewo.txt fa.txt fa_AF.txt ff.txt ff_GN.txt\\r
- ff_MR.txt fi.txt fil.txt fo.txt fo_DK.txt\\r
- fr.txt fr_BI.txt fr_CA.txt fr_CD.txt fr_DJ.txt\\r
- fr_DZ.txt fr_GN.txt fr_HT.txt fr_KM.txt fr_LU.txt\\r
- fr_MG.txt fr_MR.txt fr_MU.txt fr_RW.txt fr_SC.txt\\r
- fr_SY.txt fr_TN.txt fr_VU.txt fur.txt fy.txt\\r
ga.txt gd.txt gl.txt gsw.txt gu.txt\\r
- guz.txt gv.txt ha.txt ha_GH.txt haw.txt\\r
- he.txt hi.txt hr.txt hr_BA.txt hsb.txt\\r
- hu.txt hy.txt id.txt ig.txt ii.txt\\r
- is.txt it.txt ja.txt jgo.txt jmc.txt\\r
ka.txt kab.txt kam.txt kde.txt kea.txt\\r
- khq.txt ki.txt kk.txt kkj.txt kl.txt\\r
- kln.txt km.txt kn.txt ko.txt kok.txt\\r
- ks.txt ksb.txt ksf.txt ksh.txt kw.txt\\r
- ky.txt lag.txt lb.txt lg.txt lkt.txt\\r
- ln.txt ln_AO.txt lo.txt lrc.txt lt.txt\\r
- lu.txt luo.txt luy.txt lv.txt mas.txt\\r
- mas_TZ.txt mer.txt mfe.txt mg.txt mgh.txt\\r
- mgo.txt mk.txt ml.txt mn.txt mr.txt\\r
- ms.txt ms_BN.txt ms_SG.txt mt.txt mua.txt\\r
- my.txt mzn.txt naq.txt nb.txt nd.txt\\r
- nds.txt ne.txt nl.txt nl_AW.txt nl_BQ.txt\\r
- nl_CW.txt nl_SR.txt nl_SX.txt nmg.txt nn.txt\\r
- nnh.txt nus.txt nyn.txt om.txt om_KE.txt\\r
- or.txt os.txt os_RU.txt pa.txt pa_Arab.txt\\r
- pa_Guru.txt pl.txt ps.txt pt.txt pt_AO.txt\\r
- pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt\\r
- pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\\r
qu.txt qu_BO.txt qu_EC.txt rm.txt rn.txt\\r
- ro.txt ro_MD.txt rof.txt ru.txt ru_BY.txt\\r
- ru_KG.txt ru_KZ.txt ru_MD.txt rw.txt rwk.txt\\r
sah.txt saq.txt sbp.txt se.txt se_SE.txt\\r
- seh.txt ses.txt sg.txt shi.txt shi_Latn.txt\\r
- shi_Tfng.txt si.txt sk.txt sl.txt smn.txt\\r
- sn.txt so.txt so_DJ.txt so_ET.txt so_KE.txt\\r
- sq.txt sq_MK.txt sr.txt sr_Cyrl.txt sr_Latn.txt\\r
- sv.txt sw.txt sw_CD.txt sw_UG.txt ta.txt\\r
- ta_LK.txt ta_MY.txt ta_SG.txt te.txt teo.txt\\r
- teo_KE.txt th.txt ti.txt ti_ER.txt to.txt\\r
- tr.txt twq.txt tzm.txt ug.txt uk.txt\\r
- ur.txt ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt\\r
- uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt vi.txt\\r
- vun.txt wae.txt xog.txt yav.txt yi.txt\\r
- yo.txt yo_BJ.txt yue.txt zgh.txt zh.txt\\r
- zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt zh_Hant.txt\\r
- zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_AR.txt es_BO.txt es_BR.txt es_BZ.txt es_CL.txt\\r
+ es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EC.txt\\r
+ es_GQ.txt es_GT.txt es_HN.txt es_MX.txt es_NI.txt\\r
+ es_PA.txt es_PE.txt es_PH.txt es_PR.txt es_PY.txt\\r
+ es_SV.txt es_US.txt es_UY.txt es_VE.txt et.txt\\r
+ eu.txt ewo.txt fa.txt fa_AF.txt ff.txt\\r
+ ff_GN.txt ff_MR.txt fi.txt fil.txt fo.txt\\r
+ fo_DK.txt fr.txt fr_BI.txt fr_CA.txt fr_CD.txt\\r
+ fr_DJ.txt fr_DZ.txt fr_GN.txt fr_HT.txt fr_KM.txt\\r
+ fr_LU.txt fr_MG.txt fr_MR.txt fr_MU.txt fr_RW.txt\\r
+ fr_SC.txt fr_SY.txt fr_TN.txt fr_VU.txt fur.txt\\r
fy.txt ga.txt gd.txt gl.txt gsw.txt\\r
+ gu.txt guz.txt gv.txt ha.txt ha_GH.txt\\r
+ haw.txt he.txt hi.txt hr.txt hr_BA.txt\\r
+ hsb.txt hu.txt hy.txt id.txt ig.txt\\r
+ ii.txt is.txt it.txt ja.txt jgo.txt\\r
jmc.txt ka.txt kab.txt kam.txt kde.txt\\r
+ kea.txt khq.txt ki.txt kk.txt kkj.txt\\r
+ kl.txt kln.txt km.txt kn.txt ko.txt\\r
+ kok.txt ks.txt ksb.txt ksf.txt ksh.txt\\r
+ kw.txt ky.txt lag.txt lb.txt lg.txt\\r
+ lkt.txt ln.txt ln_AO.txt lo.txt lrc.txt\\r
+ lt.txt lu.txt luo.txt luy.txt lv.txt\\r
+ mas.txt mas_TZ.txt mer.txt mfe.txt mg.txt\\r
+ mgh.txt mgo.txt mk.txt ml.txt mn.txt\\r
+ mr.txt ms.txt ms_BN.txt ms_SG.txt mt.txt\\r
+ mua.txt my.txt mzn.txt naq.txt nb.txt\\r
+ nd.txt nds.txt ne.txt nl.txt nl_AW.txt\\r
+ nl_BQ.txt nl_CW.txt nl_SR.txt nl_SX.txt nmg.txt\\r
+ nn.txt nnh.txt nus.txt nyn.txt om.txt\\r
+ om_KE.txt or.txt os.txt os_RU.txt pa.txt\\r
+ pa_Arab.txt pa_Guru.txt pl.txt ps.txt pt.txt\\r
+ pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt\\r
+ pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\\r
pt_TL.txt qu.txt qu_BO.txt qu_EC.txt rm.txt\\r
+ rn.txt ro.txt ro_MD.txt rof.txt ru.txt\\r
+ ru_BY.txt ru_KG.txt ru_KZ.txt ru_MD.txt rw.txt\\r
rwk.txt sah.txt saq.txt sbp.txt se.txt\\r
+ se_SE.txt seh.txt ses.txt sg.txt shi.txt\\r
+ shi_Latn.txt shi_Tfng.txt si.txt sk.txt sl.txt\\r
+ smn.txt sn.txt so.txt so_DJ.txt so_ET.txt\\r
+ so_KE.txt sq.txt sq_MK.txt sr.txt sr_Cyrl.txt\\r
+ sr_Latn.txt sv.txt sw.txt sw_CD.txt sw_UG.txt\\r
+ ta.txt ta_LK.txt ta_MY.txt ta_SG.txt te.txt\\r
+ teo.txt teo_KE.txt th.txt ti.txt ti_ER.txt\\r
+ to.txt tr.txt twq.txt tzm.txt ug.txt\\r
+ uk.txt ur.txt ur_IN.txt uz.txt uz_Arab.txt\\r
+ uz_Cyrl.txt uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt\\r
+ vi.txt vun.txt wae.txt xog.txt yav.txt\\r
+ yi.txt yo.txt yo_BJ.txt yue.txt zgh.txt\\r
+ zh.txt zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt\\r
+ zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index 543989d..edc6643 100644 (file)
@@ -772,11 +772,11 @@ rm{
         }\r
         PEN{\r
             "PEN",\r
-            "nov sol peruan",\r
+            "sol peruan",\r
         }\r
         PES{\r
             "PES",\r
-            "sol peruan",\r
+            "sol peruan (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1265,5 +1265,5 @@ rm{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 44b5681..16e5f24 100644 (file)
@@ -215,5 +215,5 @@ rn{
             "Idolari ryo muri Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b55633a..96d6975 100644 (file)
@@ -616,7 +616,7 @@ ro{
         }\r
         PEN{\r
             "PEN",\r
-            "sol nou peruvian",\r
+            "sol peruvian",\r
         }\r
         PES{\r
             "PES",\r
@@ -1788,14 +1788,14 @@ ro{
             other{"balboa panameze"}\r
         }\r
         PEN{\r
-            few{"soli noi peruvieni"}\r
-            one{"sol nou peruvian"}\r
-            other{"soli noi peruvieni"}\r
+            few{"soli peruvieni"}\r
+            one{"sol peruvian"}\r
+            other{"soli peruvieni"}\r
         }\r
         PES{\r
-            few{"soli Peru (1863–1965)"}\r
+            few{"soli peruvieni (1863–1965)"}\r
             one{"sol peruvian (1863–1965)"}\r
-            other{"soli Peru (1863–1965)"}\r
+            other{"soli peruvieni (1863–1965)"}\r
         }\r
         PGK{\r
             few{"kina din Papua-Noua Guinee"}\r
@@ -2188,5 +2188,5 @@ ro{
         one{"{0} {1}"}\r
         other{"{0} de {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
 }\r
index 269bfe4..d1d4189 100644 (file)
@@ -7,5 +7,5 @@ ro_MD{
             "leu moldovenesc",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fb6b93c..4492bf0 100644 (file)
@@ -223,5 +223,5 @@ rof{
             "heleri sa Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f1360f2..5a9b2bb 100644 (file)
@@ -192,7 +192,7 @@ root{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.30.58"}\r
+    Version{"2.1.32.59"}\r
     currencySpacing{\r
         afterCurrency{\r
             currencyMatch{"[:^S:]"}\r
index 9a8a1ad..2cb72e3 100644 (file)
@@ -708,11 +708,11 @@ ru{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуанский новый соль",\r
+            "Перуанский соль",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуанский соль",\r
+            "Перуанский соль (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1866,10 +1866,16 @@ ru{
             other{"панамского бальбоа"}\r
         }\r
         PEN{\r
-            few{"перуанских новых соля"}\r
-            many{"перуанских новый солей"}\r
-            one{"перуанский новый соль"}\r
-            other{"перуанского нового соля"}\r
+            few{"перуанских соля"}\r
+            many{"перуанских солей"}\r
+            one{"перуанский соль"}\r
+            other{"перуанского соля"}\r
+        }\r
+        PES{\r
+            few{"перуанских соля (1863–1965)"}\r
+            many{"перуанских солей (1863–1965)"}\r
+            one{"перуанский соль (1863–1965)"}\r
+            other{"перуанского соля (1863–1965)"}\r
         }\r
         PGK{\r
             few{"кины Папуа – Новой Гвинеи"}\r
@@ -2190,5 +2196,5 @@ ru{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 9d355ec..bffedb8 100644 (file)
@@ -14,5 +14,5 @@ ru_BY{
     Currencies%narrow{\r
         BYN{"Br"}\r
     }\r
-    Version{"2.1.30.5"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 71c00d4..e565412 100644 (file)
@@ -7,5 +7,5 @@ ru_KG{
             "Киргизский сом",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5fa9f76..945fb55 100644 (file)
@@ -7,5 +7,5 @@ ru_KZ{
             "Казахский тенге",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cb29694..6bfb075 100644 (file)
@@ -7,5 +7,5 @@ ru_MD{
             "Молдавский лей",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6c829f1..2234237 100644 (file)
@@ -10,5 +10,5 @@ rw{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6944090..01315b5 100644 (file)
@@ -227,5 +227,5 @@ rwk{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d7f201a..6c21980 100644 (file)
@@ -25,5 +25,5 @@ sah{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.87"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0ddaa1e..2e392d2 100644 (file)
@@ -223,5 +223,5 @@ saq{
             "Dola eel Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 12f1f94..1cbf234 100644 (file)
@@ -223,5 +223,5 @@ sbp{
             "Ihela ya Simbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 63d8e51..5b4dfb1 100644 (file)
@@ -73,5 +73,5 @@ se{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6efc762..20c9078 100644 (file)
@@ -11,5 +11,5 @@ se_SE{
             "ruoŧŧa kruvdno",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 505058c..5eab8f2 100644 (file)
@@ -231,5 +231,5 @@ seh{
             "Dólar do Zimbábue",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 21c1632..f9eaadc 100644 (file)
@@ -227,5 +227,5 @@ ses{
             "Zimbabwe Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c3d6c07..8324604 100644 (file)
@@ -223,5 +223,5 @@ sg{
             "dolära tî Zimbäbwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 140f0ef..2a7b250 100644 (file)
@@ -227,5 +227,5 @@ shi{
             "ⴰⴷⵓⵍⴰⵔ ⵏ ⵣⵉⵎⴱⴰⴱⵡⵉ",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a247e7f..988d7fa 100644 (file)
@@ -228,5 +228,5 @@ shi_Latn{
             "adular n zimbabwi",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 22785f4..2db194b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c037c76..ba5e2a2 100644 (file)
@@ -432,7 +432,7 @@ si{
         }\r
         PEN{\r
             "PEN",\r
-            "පà·\9aරà·\94 à¶±à·\92යà·\94à·\80à·\9d à·\83à·\9cලà·\8a",\r
+            "පේරු සොල්",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1165,8 +1165,8 @@ si{
             other{"පැනමා බැල්බෝ"}\r
         }\r
         PEN{\r
-            one{"පà·\9aරà·\94 à¶±à·\92යà·\94à·\80à·\9d à·\83à·\9cලà·\8a"}\r
-            other{"පà·\9aරà·\94 à¶±à·\92යà·\94à·\80à·\9d à·\83à·\9cලà·\8a"}\r
+            one{"පේරු සොල්"}\r
+            other{"පේරු සොල්"}\r
         }\r
         PGK{\r
             one{"පැපුවා නිව් ගිනියානු කිනා"}\r
@@ -1373,5 +1373,5 @@ si{
         one{"{1}{0}"}\r
         other{"{1}{0}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.28"}\r
 }\r
index d0a33c1..7d39431 100644 (file)
@@ -672,11 +672,11 @@ sk{
         }\r
         PEN{\r
             "PEN",\r
-            "peruánsky nový sol",\r
+            "peruánsky sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruvský sol",\r
+            "peruánsky sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1816,10 +1816,16 @@ sk{
             other{"panamských balboí"}\r
         }\r
         PEN{\r
-            few{"peruánske nové soly"}\r
-            many{"peruánskeho nového sola"}\r
-            one{"peruánsky nový sol"}\r
-            other{"peruánskych nových solov"}\r
+            few{"peruánske soly"}\r
+            many{"peruánskeho sola"}\r
+            one{"peruánsky sol"}\r
+            other{"peruánskych solov"}\r
+        }\r
+        PES{\r
+            few{"peruánske soly (1863–1965)"}\r
+            many{"peruánskeho sola (1863–1965)"}\r
+            one{"peruánsky sol (1863–1965)"}\r
+            other{"peruánskych solov (1863–1965)"}\r
         }\r
         PGK{\r
             few{"papuánske kiny"}\r
@@ -2188,5 +2194,5 @@ sk{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index f074357..2a30139 100644 (file)
@@ -708,11 +708,11 @@ sl{
         }\r
         PEN{\r
             "PEN",\r
-            "perujski novi sol",\r
+            "perujski sol",\r
         }\r
         PES{\r
             "PES",\r
-            "perujski sol",\r
+            "perujski sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1838,10 +1838,16 @@ sl{
             two{"panamski balboi"}\r
         }\r
         PEN{\r
-            few{"perujski novi soli"}\r
-            one{"perujski novi sol"}\r
-            other{"perujskih novih solov"}\r
-            two{"perujska nova sola"}\r
+            few{"perujski soli"}\r
+            one{"perujski sol"}\r
+            other{"perujskih solov"}\r
+            two{"perujska sola"}\r
+        }\r
+        PES{\r
+            few{"perujski soli (1863–1965)"}\r
+            one{"perujski sol (1863–1965)"}\r
+            other{"perujskih solov (1863–1965)"}\r
+            two{"perujska sola (1863–1965)"}\r
         }\r
         PGK{\r
             few{"kine Papue Nove Gvineje"}\r
@@ -2150,5 +2156,5 @@ sl{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index ac9ab96..6ea24da 100644 (file)
@@ -40,5 +40,5 @@ smn{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eefacae..03127e8 100644 (file)
@@ -231,5 +231,5 @@ sn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b777b39..d62d507 100644 (file)
@@ -35,5 +35,5 @@ so{
             "Lacag aan la qoon ama aan saxnayn",\r
         }\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.33.76"}\r
 }\r
index 873313b..8b18362 100644 (file)
@@ -7,5 +7,5 @@ so_DJ{
             "Faran Jabbuuti",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e4ad12a..87c7c4a 100644 (file)
@@ -7,5 +7,5 @@ so_ET{
             "Birta Itoobbiya",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b488e87..20a5f43 100644 (file)
@@ -7,5 +7,5 @@ so_KE{
             "KES",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 32474fa..a69e210 100644 (file)
@@ -432,7 +432,7 @@ sq{
         }\r
         PEN{\r
             "PEN",\r
-            "Sola nuevo-peruane",\r
+            "Sola peruane",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1069,8 +1069,8 @@ sq{
             other{"balboa panameze"}\r
         }\r
         PEN{\r
-            one{"solë nuevo-peruane"}\r
-            other{"sola nuevo-peruane"}\r
+            one{"solë peruane"}\r
+            other{"sola peruane"}\r
         }\r
         PGK{\r
             one{"kinë e Papua-Guineas së Re"}\r
@@ -1277,5 +1277,5 @@ sq{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 092031f..f5039be 100644 (file)
@@ -7,5 +7,5 @@ sq_MK{
             "Denari maqedonas",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ffc033b..25a6141 100644 (file)
@@ -716,11 +716,11 @@ sr{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуански нови сол",\r
+            "Перуански сол",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуански сол",\r
+            "Перуански сол (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2110,15 +2110,15 @@ sr{
             other{"перувијских интија"}\r
         }\r
         PEN{\r
-            few{"перуанска нова сола"}\r
-            one{"перуански нови сол"}\r
-            other{"перуанских нових сола"}\r
-        }\r
-        PES{\r
             few{"перуанска сола"}\r
             one{"перуански сол"}\r
             other{"перуанских сола"}\r
         }\r
+        PES{\r
+            few{"перуанска сола (1863–1965)"}\r
+            one{"перуански сол (1863–1965)"}\r
+            other{"перуанских сола (1863–1965)"}\r
+        }\r
         PGK{\r
             few{"папуанскe кинe"}\r
             one{"папуанска кина"}\r
@@ -2620,5 +2620,5 @@ sr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.73"}\r
 }\r
index 0b50a55..2e18268 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03e0485..58aeaa0 100644 (file)
@@ -717,11 +717,11 @@ sr_Latn{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruanski novi sol",\r
+            "Peruanski sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruanski sol",\r
+            "Peruanski sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2111,15 +2111,15 @@ sr_Latn{
             other{"peruvijskih intija"}\r
         }\r
         PEN{\r
-            few{"peruanska nova sola"}\r
-            one{"peruanski novi sol"}\r
-            other{"peruanskih novih sola"}\r
-        }\r
-        PES{\r
             few{"peruanska sola"}\r
             one{"peruanski sol"}\r
             other{"peruanskih sola"}\r
         }\r
+        PES{\r
+            few{"peruanska sola (1863–1965)"}\r
+            one{"peruanski sol (1863–1965)"}\r
+            other{"peruanskih sola (1863–1965)"}\r
+        }\r
         PGK{\r
             few{"papuanske kine"}\r
             one{"papuanska kina"}\r
@@ -2621,5 +2621,5 @@ sr_Latn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.32.73"}\r
 }\r
index e3db197..daade2f 100644 (file)
@@ -780,7 +780,7 @@ sv{
         }\r
         PEN{\r
             "PEN",\r
-            "peruansk nuevo sol",\r
+            "peruansk sol",\r
         }\r
         PES{\r
             "PES",\r
@@ -2074,8 +2074,8 @@ sv{
             other{"peruanska intier"}\r
         }\r
         PEN{\r
-            one{"peruansk nuevo sol"}\r
-            other{"peruanska nuevo sol"}\r
+            one{"peruansk sol"}\r
+            other{"peruanska sol"}\r
         }\r
         PES{\r
             one{"peruansk sol (1863–1965)"}\r
@@ -2494,5 +2494,5 @@ sv{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 1206509..72733a5 100644 (file)
@@ -448,7 +448,7 @@ sw{
         }\r
         PEN{\r
             "PEN",\r
-            "Nuevo Sol ya Peru",\r
+            "Sol ya Peru",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1196,8 +1196,8 @@ sw{
             other{"Balboa za Panama"}\r
         }\r
         PEN{\r
-            one{"Nuevo Sol ya Peru"}\r
-            other{"Nuevo Sol za Peru"}\r
+            one{"Sol ya Peru"}\r
+            other{"Sol za Peru"}\r
         }\r
         PGK{\r
             one{"Kina ya Papua New Guinea"}\r
@@ -1408,5 +1408,5 @@ sw{
         one{"{1} {0}"}\r
         other{"{1} {0}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.73"}\r
 }\r
index f48a6ac..4788450 100644 (file)
@@ -39,5 +39,5 @@ sw_CD{
             "Faranga CFA BCEAO",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8a0cddc..64f7fd3 100644 (file)
@@ -7,5 +7,5 @@ sw_UG{
             "Shilingi ya Uganda",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b38c868..b6669d1 100644 (file)
@@ -1380,5 +1380,5 @@ ta{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.4"}\r
 }\r
index d9761fc..ec2c52e 100644 (file)
@@ -7,5 +7,5 @@ ta_LK{
             "இலங்கை ரூபாய்",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index df27001..8181993 100644 (file)
@@ -11,5 +11,5 @@ ta_MY{
             "சிங்கப்பூர் டாலர்",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 208a1bb..016265c 100644 (file)
@@ -15,5 +15,5 @@ ta_SG{
             "அமெரிக்க டாலர்",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a9cb4f2..0fbedc4 100644 (file)
@@ -436,7 +436,7 @@ te{
         }\r
         PEN{\r
             "PEN",\r
-            "à°ªà±\86à°°à±\81వియనà±\8d à°¨à±\8dà°¯à±\82à°µà±\8b à°¸à±\8bà°²à±\8d",\r
+            "పెరువియన్ సోల్",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1173,8 +1173,8 @@ te{
             other{"పనామనియన్ బల్బోవాలు"}\r
         }\r
         PEN{\r
-            one{"à°ªà±\86à°°à±\81వియనà±\8d à°¨à±\8dà°¯à±\82à°µà±\8b à°¸à±\8bà°²à±\8d"}\r
-            other{"à°ªà±\86à°°à±\81వియనà±\8d à°¨à±\8dà°¯à±\82à°µà±\8b à°¸à±\8bà°²à±\8dâ\80\8cà°²à±\81"}\r
+            one{"పెరువియన్ సోల్"}\r
+            other{"పెరువియన్ సోల్‌లు"}\r
         }\r
         PGK{\r
             one{"పప్యూ న్యూ గ్యినియన్ కినా"}\r
@@ -1381,5 +1381,5 @@ te{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 207bf51..13e1af3 100644 (file)
@@ -223,5 +223,5 @@ teo{
             "Edola lok’Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 365e307..074c930 100644 (file)
@@ -7,5 +7,5 @@ teo_KE{
             "Ango’otol lok’ Kenya",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b357476..dcf70f1 100644 (file)
@@ -760,11 +760,11 @@ th{
         }\r
         PEN{\r
             "PEN",\r
-            "à¸\99ูà¹\82วà¸\8bอลà¹\80à¸\9bรู",\r
+            "ซอลเปรู",\r
         }\r
         PES{\r
             "PES",\r
-            "ซอลเปรู",\r
+            "ซอลเปรู (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1596,7 +1596,10 @@ th{
             other{"บัลบัวปานามา"}\r
         }\r
         PEN{\r
-            other{"นูโวซอลเปรู"}\r
+            other{"ซอลเปรู"}\r
+        }\r
+        PES{\r
+            other{"ซอลเปรู(1863–1965)"}\r
         }\r
         PGK{\r
             other{"กีนาปาปัวนิวกินี"}\r
@@ -1758,5 +1761,5 @@ th{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index b54eade..f616316 100644 (file)
@@ -43,5 +43,5 @@ ti{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ba0d60a..2d8a116 100644 (file)
@@ -7,5 +7,5 @@ ti_ER{
             "ERN",\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5c768d1..5e88b2c 100644 (file)
@@ -71,5 +71,5 @@ to{
     CurrencyUnitPatterns{\r
         other{"{1} {0}"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 4a0be85..3e5a8f5 100644 (file)
@@ -780,11 +780,11 @@ tr{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru Nuevo Solü",\r
+            "Peru Solü",\r
         }\r
         PES{\r
             "PES",\r
-            "Peru Solu",\r
+            "Peru Solü (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2024,12 +2024,12 @@ tr{
             other{"Peru İnti"}\r
         }\r
         PEN{\r
-            one{"Peru nuevo solü"}\r
-            other{"Peru nuevo solü"}\r
+            one{"Peru solü"}\r
+            other{"Peru solü"}\r
         }\r
         PES{\r
-            one{"Peru Solu"}\r
-            other{"Peru Solu"}\r
+            one{"Peru Solü (1863–1965)"}\r
+            other{"Peru Solü (1863–1965)"}\r
         }\r
         PGK{\r
             one{"Papua Yeni Gine kinası"}\r
@@ -2368,5 +2368,5 @@ tr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 11d544e..b8f361d 100644 (file)
@@ -227,5 +227,5 @@ twq{
             "Zimbabwe Dollar",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 29ec30c..48d881a 100644 (file)
@@ -227,5 +227,5 @@ tzm{
             "Ḍular Uzimbabwi",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 67faeff..560455c 100644 (file)
@@ -780,7 +780,7 @@ ug{
         }\r
         PEN{\r
             "PEN",\r
-            "پېرۇ يېڭى سولى",\r
+            "پېرۇ سولى",\r
         }\r
         PES{\r
             "PES",\r
@@ -1973,8 +1973,8 @@ ug{
             other{"پېرۇ ئىنتىسى"}\r
         }\r
         PEN{\r
-            one{"پېرۇ يېڭى سولى"}\r
-            other{"پېرۇ يېڭى سولى"}\r
+            one{"پېرۇ سولى"}\r
+            other{"پېرۇ سولى"}\r
         }\r
         PES{\r
             one{"پېرۇ سولى (1863–1965)"}\r
@@ -2393,5 +2393,5 @@ ug{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 65eda2b..8e274e0 100644 (file)
@@ -708,11 +708,11 @@ uk{
         }\r
         PEN{\r
             "PEN",\r
-            "перуанський новий сол",\r
+            "перуанський сол",\r
         }\r
         PES{\r
             "PES",\r
-            "перуанський сол",\r
+            "перуанський сол (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1907,10 +1907,16 @@ uk{
             other{"панамського бальбоа"}\r
         }\r
         PEN{\r
-            few{"перуанські нові соли"}\r
-            many{"перуанських нових солів"}\r
-            one{"перуанський новий сол"}\r
-            other{"перуанського нового сола"}\r
+            few{"перуанські соли"}\r
+            many{"перуанських солів"}\r
+            one{"перуанський сол"}\r
+            other{"перуанського сола"}\r
+        }\r
+        PES{\r
+            few{"перуанські соли (1863–1965)"}\r
+            many{"перуанських солів (1863–1965)"}\r
+            one{"перуанський сол (1863–1965)"}\r
+            other{"перуанського сола (1863–1965)"}\r
         }\r
         PGK{\r
             few{"кіни Папуа Нової Гвінеї"}\r
@@ -2267,5 +2273,5 @@ uk{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.38"}\r
+    Version{"2.1.32.60"}\r
 }\r
index 957efd6..9949dad 100644 (file)
@@ -444,7 +444,7 @@ ur{
         }\r
         PEN{\r
             "PEN",\r
-            "پیروین نیووسول",\r
+            "پیرو نیووسول",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1192,8 +1192,8 @@ ur{
             other{"پنامہ کا بالبوآ"}\r
         }\r
         PEN{\r
-            one{"پیروین نیووسول"}\r
-            other{"پیروین نیووسول"}\r
+            one{"پیرو نیووسول"}\r
+            other{"پیرو نیووسول"}\r
         }\r
         PGK{\r
             one{"پاپوآ نیو گنی کا کینا"}\r
@@ -1400,5 +1400,5 @@ ur{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 31807d5..918da35 100644 (file)
@@ -77,5 +77,5 @@ ur_IN{
             other{"ساموآئی ٹالا"}\r
         }\r
     }\r
-    Version{"2.1.27.79"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f5de1f7..dde6744 100644 (file)
@@ -432,7 +432,7 @@ uz{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru yangi soli",\r
+            "Peru soli",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1164,8 +1164,8 @@ uz{
             other{"Panama balboasi"}\r
         }\r
         PEN{\r
-            one{"Peru yangi soli"}\r
-            other{"Peru yangi soli"}\r
+            one{"Peru soli"}\r
+            other{"Peru soli"}\r
         }\r
         PGK{\r
             one{"Papua – Yangi Gvineya kinasi"}\r
@@ -1372,5 +1372,5 @@ uz{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.60"}\r
 }\r
index 8debd4b..dfbd277 100644 (file)
@@ -8,5 +8,5 @@ uz_Arab{
             "افغانی",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dcb6c40..acaea6c 100644 (file)
@@ -165,7 +165,7 @@ uz_Cyrl{
         }\r
         PEN{\r
             "PEN",\r
-            "Перу нуево сол",\r
+            "Перу сол",\r
         }\r
         PYG{\r
             "PYG",\r
@@ -370,8 +370,8 @@ uz_Cyrl{
             other{"Панама бальбоаси"}\r
         }\r
         PEN{\r
-            one{"Перу нуево сол"}\r
-            other{"Перу нуево сол"}\r
+            one{"Перу сол"}\r
+            other{"Перу сол"}\r
         }\r
         PYG{\r
             one{"Парагвай гуарани"}\r
@@ -414,5 +414,5 @@ uz_Cyrl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.86"}\r
 }\r
index bdf99c4..fdd810c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a7290d2..bc4148d 100644 (file)
@@ -215,5 +215,5 @@ vai{
             "ꔽꕓꖜꔃ ꕜꕞ",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 592a810..daf641d 100644 (file)
@@ -220,5 +220,5 @@ vai_Latn{
             "Zimbhabhuwe Dala",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38872b5..e66f0f3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f61191f..a7bd284 100644 (file)
@@ -760,7 +760,7 @@ vi{
         }\r
         PEN{\r
             "PEN",\r
-            "Nuevo Sol Peru",\r
+            "Sol Peru",\r
         }\r
         PES{\r
             "PES",\r
@@ -1589,7 +1589,7 @@ vi{
             other{"Balboa Panama"}\r
         }\r
         PEN{\r
-            other{"Nuevo Sol Peru"}\r
+            other{"Sol Peru"}\r
         }\r
         PGK{\r
             other{"Kina Papua New Guinean"}\r
@@ -1748,5 +1748,5 @@ vi{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index e256f59..fa96613 100644 (file)
@@ -227,5 +227,5 @@ vun{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a70a92d..4c12ecb 100644 (file)
@@ -81,5 +81,5 @@ wae{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7f0e3c4..e554eb0 100644 (file)
@@ -223,5 +223,5 @@ xog{
             "Doola ey’eZimbabwe",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 363a376..f70156a 100644 (file)
@@ -95,5 +95,5 @@ yav{
             "́faláŋɛ u kɔmɔ́ɔl",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 062fb94..69f2889 100644 (file)
@@ -105,5 +105,5 @@ yi{
             other{"אומבאַוואוסטע וואַלוטע"}\r
         }\r
     }\r
-    Version{"2.1.27.97"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 93f4ac3..a8568da 100644 (file)
@@ -230,5 +230,5 @@ yo{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8048304..2fe8191 100644 (file)
@@ -215,5 +215,5 @@ yo_BJ{
             "Dɔla ti Orílɛ́ède Siibabuwe",\r
         }\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9c78c3f..bec0d5a 100644 (file)
@@ -780,7 +780,7 @@ yue{
         }\r
         PEN{\r
             "PEN",\r
-            "秘魯太陽幣",\r
+            "秘魯太陽幣",\r
         }\r
         PES{\r
             "PES",\r
@@ -1878,7 +1878,7 @@ yue{
             other{"祕魯因蒂"}\r
         }\r
         PEN{\r
-            other{"秘魯太陽幣"}\r
+            other{"秘魯太陽幣"}\r
         }\r
         PES{\r
             other{"秘魯索爾 (1863–1965)"}\r
@@ -2193,5 +2193,5 @@ yue{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 2ea1d08..ba6af71 100644 (file)
@@ -234,5 +234,5 @@ zgh{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9ac5b5c..b7c765f 100644 (file)
@@ -776,7 +776,7 @@ zh{
         }\r
         PEN{\r
             "PEN",\r
-            "秘鲁索尔",\r
+            "秘鲁索尔",\r
         }\r
         PES{\r
             "PES",\r
@@ -1854,7 +1854,7 @@ zh{
             other{"秘鲁印第"}\r
         }\r
         PEN{\r
-            other{"秘鲁索尔"}\r
+            other{"秘鲁索尔"}\r
         }\r
         PES{\r
             other{"秘鲁索尔 (1863–1965)"}\r
@@ -2118,5 +2118,5 @@ zh{
     CurrencyUnitPatterns{\r
         other{"{0}{1}"}\r
     }\r
-    Version{"2.1.29.84"}\r
+    Version{"2.1.33.94"}\r
 }\r
index c64cac5..1e311fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38eebfa..8aa4615 100644 (file)
@@ -29,5 +29,5 @@ zh_Hans_HK{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7f0bdd4..eee6306 100644 (file)
@@ -29,5 +29,5 @@ zh_Hans_MO{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8b1d0eb..fa8c23a 100644 (file)
@@ -29,5 +29,5 @@ zh_Hans_SG{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 92e4b7b..4a74765 100644 (file)
@@ -781,11 +781,11 @@ zh_Hant{
         }\r
         PEN{\r
             "PEN",\r
-            "秘魯太陽幣",\r
+            "秘魯太陽幣",\r
         }\r
         PES{\r
             "PES",\r
-            "秘魯索爾 (1863–1965)",\r
+            "秘魯太陽幣 (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1878,10 +1878,10 @@ zh_Hant{
             other{"祕魯因蒂"}\r
         }\r
         PEN{\r
-            other{"秘魯太陽幣"}\r
+            other{"秘魯太陽幣"}\r
         }\r
         PES{\r
-            other{"秘魯索爾 (1863–1965)"}\r
+            other{"秘魯太陽幣 (1863–1965)"}\r
         }\r
         PGK{\r
             other{"巴布亞紐幾內亞基那"}\r
@@ -2193,5 +2193,5 @@ zh_Hant{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.94"}\r
 }\r
index 91ee224..c689ef0 100644 (file)
@@ -449,5 +449,5 @@ zh_Hant_HK{
             other{"贊比亞克瓦查"}\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f2c880d..9430aa4 100644 (file)
@@ -8,5 +8,5 @@ zh_Hant_MO{
             "澳門元",\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index aaf5a2f..21d8d59 100644 (file)
@@ -1372,5 +1372,5 @@ zu{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 2f47c19..aee3c4d 100644 (file)
@@ -9,6 +9,7 @@
 */\r
 -->\r
 <deprecates>\r
+       <alias from="ars" to="ar"/>\r
        <alias from="de__PHONEBOOK" to="de"  rbpath="/collations/default" value="phonebook"/>\r
        <alias from="es__TRADITIONAL" to="es" rbpath="/collations/default" value="traditional"/>\r
        <alias from="in" to="id" />\r
index a2c216c..4ffded9 100644 (file)
@@ -49,6 +49,7 @@
                <include locales="ar_TD"/>\r
                <include locales="ar_TN"/>\r
                <include locales="ar_YE"/>\r
+               <include locales="ars"/>\r
                <include locales="as"/>\r
                <include locales="as_IN"/>\r
                <include locales="asa"/>\r
                <include locales="es_AR"/>\r
                <include locales="es_BO"/>\r
                <include locales="es_BR"/>\r
+               <include locales="es_BZ"/>\r
                <include locales="es_CL"/>\r
                <include locales="es_CO"/>\r
                <include locales="es_CR"/>\r
                <include locales="it_CH"/>\r
                <include locales="it_IT"/>\r
                <include locales="it_SM"/>\r
+               <include locales="it_VA"/>\r
                <include locales="iw"/>\r
                <include locales="iw_IL"/>\r
                <include locales="ja"/>\r
index cfd7b1b..a919330 100644 (file)
@@ -9,6 +9,7 @@
 */\r
 -->\r
 <deprecates>\r
+    <alias from="ars" to="ar_SA"/>\r
     <alias from="az_AZ" to="az_Latn_AZ"/>\r
     <alias from="bs_BA" to="bs_Latn_BA" />\r
     <alias from="en_NH" to="en_VU"/>\r
index 1b1907f..1a6cee2 100644 (file)
@@ -9,6 +9,7 @@
 */\r
 -->\r
 <deprecates>\r
+   <alias from="ars" to="ar" />\r
    <alias from="es_DO" to="es_419" />\r
    <alias from="es_GT" to="es_419" />\r
    <alias from="es_HN" to="es_419" />\r
index 6e5774c..8cd7c55 100644 (file)
Binary files a/source/data/in/ubidi.icu and b/source/data/in/ubidi.icu differ
index 9e3ce0e..3a986d9 100644 (file)
Binary files a/source/data/in/uprops.icu and b/source/data/in/uprops.icu differ
index 4882b79..e35ccd9 100644 (file)
@@ -618,7 +618,7 @@ af{
             vaii{"Vai-syfers"}\r
         }\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} – Alle"}\r
         category-list{"{0}: {1}"}\r
index 6a24066..aaabc5b 100644 (file)
@@ -48,5 +48,5 @@ agq{
         zh{"Chàenê"}\r
         zu{"Zulù"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d9088c6..85f721f 100644 (file)
@@ -47,5 +47,5 @@ ak{
         zh{"Kyaena kasa"}\r
         zu{"Zulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ede4237..2182e89 100644 (file)
@@ -688,7 +688,7 @@ am{
             vaii{"የቫይ አሃዞች"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — ሁሉም"}\r
         category-list{"{0}: {1}"}\r
index 4a5d25c..0662d80 100644 (file)
@@ -849,7 +849,7 @@ ar{
         VALENCIA{"بلنسية"}\r
         WADEGILE{"المندرين باللاتينية - ويد–جيلز"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.86"}\r
     characterLabelPattern{\r
         all{"{0} - الكل"}\r
         category-list{"{0}: {1}"}\r
index 102a250..ccdddda 100644 (file)
@@ -4,5 +4,5 @@ ar_EG{
     Languages{\r
         da{"الدنماركية"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b83cdb5..79356aa 100644 (file)
@@ -12,5 +12,5 @@ ar_LY{
         sw_CD{"السواحيلية الكونغولية"}\r
         ti{"التيغرينية"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cf85227..9fe79da 100644 (file)
@@ -13,5 +13,5 @@ ar_SA{
         sw_CD{"السواحيلية الكونغولية"}\r
         ti{"التيغرينية"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/lang/ars.txt b/source/data/lang/ars.txt
new file mode 100644 (file)
index 0000000..9bb22b9
--- /dev/null
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+ars{\r
+    "%%ALIAS"{"ar_SA"}\r
+}\r
index af2f9bf..931c55a 100644 (file)
@@ -33,5 +33,5 @@ as{
             traditional{"পৰম্পৰাগতভাবে শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 78f6499..cedcb4b 100644 (file)
@@ -48,5 +48,5 @@ asa{
         zh{"Kichina"}\r
         zu{"Kidhulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3b5ddb5..034d2fa 100644 (file)
@@ -1077,7 +1077,7 @@ ast{
         VALLADER{"VALLADER"}\r
         WADEGILE{"romanización de Wade-Giles"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — too"}\r
         compatibility{"{0} — compatibilidá"}\r
index baa3a06..316adcf 100644 (file)
@@ -743,7 +743,7 @@ az{
             tibt{"Tibet Rəqəmləri"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Bütün"}\r
         category-list{"{0}: {1}"}\r
index 913822c..48da152 100644 (file)
@@ -399,7 +399,7 @@ az_Cyrl{
     Scripts{\r
         Cyrl{"Кирил"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.74"}\r
     codePatterns{\r
         language{"Дил: {0}"}\r
         script{"Скрипт: {0}"}\r
index 4ce2adb..4c0b75a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 015cccc..12f5bc9 100644 (file)
@@ -48,5 +48,5 @@ bas{
         zh{"Hɔp u kinà"}\r
         zu{"Hɔp u zulù"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8d3648c..2c8ecda 100644 (file)
@@ -565,7 +565,7 @@ be{
             tibt{"тыбецкія лічбы"}\r
         }\r
     }\r
-    Version{"2.1.29.66"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — Усё"}\r
         category-list{"{0}: {1}"}\r
index 7b52bdb..9f11ce7 100644 (file)
@@ -48,5 +48,5 @@ bem{
         zh{"Ichi Chainisi"}\r
         zu{"Ichi Zulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 135a6cc..2911e12 100644 (file)
@@ -48,5 +48,5 @@ bez{
         zh{"Hichina"}\r
         zu{"Hizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index acb1692..54dce57 100644 (file)
@@ -828,7 +828,7 @@ bg{
         VALENCIA{"Валенсиански"}\r
         WADEGILE{"Уейд-Джайлс романизация"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.33.75"}\r
     characterLabelPattern{\r
         all{"{0} – всички"}\r
         category-list{"{0}: {1}"}\r
index 18560fb..49574b9 100644 (file)
@@ -48,5 +48,5 @@ bm{
         zh{"siniwakan"}\r
         zu{"zulukan"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4eab759..786e767 100644 (file)
@@ -826,7 +826,7 @@ bn{
             vaii{"ভাই সংখ্যা"}\r
         }\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — সমস্ত"}\r
         category-list{"{0}: {1}"}\r
index 2d87ff5..c9111aa 100644 (file)
@@ -4,5 +4,5 @@ bn_IN{
     Languages{\r
         ksh{"কোলোনিয়ান"}\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a0c7bd0..946d4bf 100644 (file)
@@ -21,5 +21,5 @@ bo{
         Tibt{"བོད་ཡིག་"}\r
         Zxxx{"སྙན་བརྒྱུད། ཡིག་རིགས་སུ་མ་བཀོད་པའི་ཟིན་ཐོ།"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ce2e4d8..7926a6f 100644 (file)
@@ -732,7 +732,7 @@ br{
         VALLADER{"rannyezh romañchek Vallader"}\r
         WADEGILE{"romanekadur Wade-Giles"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"{0}"}\r
         script{"{0}"}\r
index 243dc91..0022238 100644 (file)
@@ -609,7 +609,7 @@ brx{
         SOLBA{"श्टोलविज़्ज़ा या सोलबीका डायलेक्ट"}\r
         TARASK{"तारास्कीएवीचा वर्तनी"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         script{"देवनागरी: {0}"}\r
         territory{"क्षेत्र:भारत {0}"}\r
index e90cfea..0644438 100644 (file)
@@ -788,7 +788,7 @@ bs{
         TARASK{"Taraskijevica ortografija"}\r
         VALENCIA{"Valencijski"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — sve"}\r
         category-list{"{0}: {1}"}\r
index cd1c718..ca08547 100644 (file)
@@ -702,7 +702,7 @@ bs_Cyrl{
         TARASK{"Тараскијевичка ортографија"}\r
         VALENCIA{"Валенцијска"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.72"}\r
     codePatterns{\r
         language{"{0}"}\r
         script{"{0}"}\r
index 20b4126..972dc01 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f326170..9778547 100644 (file)
@@ -994,7 +994,7 @@ ca{
         VALLADER{"baix engiadinès"}\r
         WADEGILE{"romanització Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — tot"}\r
         category-list{"{0}: {1}"}\r
index cbca919..33c3cce 100644 (file)
@@ -295,7 +295,7 @@ ce{
             persian{"гӀажарийн"}\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"Мотт: {0}"}\r
         script{"Скрипт: {0}"}\r
index 2bea37c..fea3e5c 100644 (file)
@@ -48,5 +48,5 @@ cgg{
         zh{"Oruchaina"}\r
         zu{"Oruzuru"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 689089d..1fdda6c 100644 (file)
@@ -537,7 +537,7 @@ chr{
             tibt{"ᏘᏇᏔᏂ ᏗᏎᏍᏗ"}\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
     characterLabelPattern{\r
         all{"{0} — ᏂᎦᏓ"}\r
         compatibility{"{0} — ᎤᏠᏯᏉᏗᏙᎵᎩ"}\r
index 3d4e1f1..35b18d4 100644 (file)
@@ -137,5 +137,5 @@ ckb{
         Thaa{"تانە"}\r
         Thai{"تایلەندی"}\r
     }\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9e8acc7..929ff9c 100644 (file)
@@ -957,7 +957,7 @@ cs{
         SCOTLAND{"angličtina (Skotsko)"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} – vše"}\r
         category-list{"{0}: {1}"}\r
index 74438d1..ef331d6 100644 (file)
@@ -732,7 +732,7 @@ cy{
         VAIDIKA{"VAIDIKA"}\r
         VALLADER{"VALLADER"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — Popeth"}\r
         category-list{"{0}: {1}"}\r
index b0341bb..3d2812b 100644 (file)
@@ -953,7 +953,7 @@ da{
         VALLADER{"vallader"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — alle"}\r
         category-list{"{0}: {1}"}\r
index 170f3f9..d85c264 100644 (file)
@@ -48,5 +48,5 @@ dav{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dbe073a..6acd606 100644 (file)
@@ -1016,7 +1016,7 @@ de{
         VALENCIA{"Valencianisch"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Alle"}\r
         category-list{"{0}: {1}"}\r
index 00da72d..fedf4f5 100644 (file)
@@ -16,5 +16,5 @@ de_AT{
         sh{"Serbokroatisch"}\r
         szl{"Schlesisch"}\r
     }\r
-    Version{"2.1.28.73"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f92ff03..94f3f8f 100644 (file)
@@ -34,5 +34,5 @@ de_CH{
             ussystem{"US Mass-System"}\r
         }\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 40b0880..1b16c8b 100644 (file)
@@ -4,5 +4,5 @@ de_LU{
     Languages{\r
         be{"Belarussisch"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 186bfb3..86096ce 100644 (file)
@@ -48,5 +48,5 @@ dje{
         zh{"Sinuwa senni"}\r
         zu{"Zulu senni"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8a24ada..5741651 100644 (file)
@@ -378,7 +378,7 @@ dsb{
             tibt{"tibetske cyfry"}\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"Rěc: {0}"}\r
         script{"Pismo: {0}"}\r
index e6ba227..dc04c73 100644 (file)
@@ -4,5 +4,5 @@ dua{
     Languages{\r
         dua{"duálá"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ae9ee38..2e1ac86 100644 (file)
@@ -48,5 +48,5 @@ dyo{
         zh{"sinua"}\r
         zu{"sulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9210f84..c8a2dc8 100644 (file)
@@ -234,7 +234,7 @@ dz{
             tibt{"ང་བཅས་ཀྱི་ཨང་ཡིག"}\r
         }\r
     }\r
-    Version{"2.1.29.61"}\r
+    Version{"2.1.31.34"}\r
     codePatterns{\r
         language{"ཁ་སྐད་: {0}"}\r
         script{"ཡིག་གཟུགས་: {0}"}\r
index 7b96351..1a78def 100644 (file)
@@ -48,5 +48,5 @@ ebu{
         zh{"Kĩchina"}\r
         zu{"Kĩzulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f0b002b..4e0cc7a 100644 (file)
@@ -299,7 +299,7 @@ ee{
             tibt{"tibet digitwo"}\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"gbegbɔgblɔ {0}"}\r
         script{"gbeŋɔŋlɔ {0}"}\r
index 9efa836..61bdf6a 100644 (file)
@@ -876,7 +876,7 @@ el{
         VALENCIA{"Βαλενθιανά"}\r
         WADEGILE{"Εκλατινισμένα Γουάντ-Γκιλς"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Όλα"}\r
         category-list{"{0}: {1}"}\r
index 99fbe2d..dc364ea 100644 (file)
@@ -17,6 +17,7 @@ en{
         d0{"Transform Destination"}\r
         em{"Emoji Presentation Style"}\r
         fw{"First day of week"}\r
+        h0{"Mixed-in Language"}\r
         hc{"Hour Cycle (12 vs 24)"}\r
         i0{"Input Method"}\r
         k0{"Keyboard"}\r
@@ -934,8 +935,12 @@ en{
             zhuyin{"Zhuyin Sort Order"}\r
         }\r
         d0{\r
+            accents{"To Accented Characters From ASCII Sequence"}\r
             ascii{"To ASCII"}\r
+            casefold{"To Casefolded"}\r
             charname{"To Unicode Character Names"}\r
+            fcc{"To Unicode FCC"}\r
+            fcd{"To Unicode FCD"}\r
             fwidth{"To Fullwidth"}\r
             hex{"To Hexadecimal Codes"}\r
             hwidth{"To Halfwidth"}\r
@@ -945,6 +950,9 @@ en{
             nfkc{"To Unicode NFKC"}\r
             nfkd{"To Unicode NFKD"}\r
             npinyin{"To Pinyin With Numeric Tones"}\r
+            null{"No Change"}\r
+            publish{"To Publishing Characters From ASCII"}\r
+            remove{"To Empty String"}\r
             title{"To Titlecase"}\r
             upper{"To Uppercase"}\r
         }\r
@@ -962,12 +970,52 @@ en{
             tue{"First Day of Week Is Tuesday"}\r
             wed{"First Day of Week Is Wednesday"}\r
         }\r
+        h0{\r
+            hybrid{"Hybrid Language"}\r
+        }\r
         hc{\r
             h11{"12 Hour System (0–11)"}\r
             h12{"12 Hour System (1–12)"}\r
             h23{"24 Hour System (0–23)"}\r
             h24{"24 Hour System (1–24)"}\r
         }\r
+        i0{\r
+            handwrit{"Handwriting Input Method"}\r
+            pinyin{"Pinyin Input Method"}\r
+            und{"Unspecified Input Method"}\r
+            wubi{"Wubi Input Method"}\r
+        }\r
+        k0{\r
+            101key{"101-Key Keyboard"}\r
+            102key{"102-Key Keyboard"}\r
+            600dpi{"600 dpi Keyboard"}\r
+            768dpi{"768 dpi Keyboard"}\r
+            android{"Android Keyboard"}\r
+            azerty{"AZERTY-Based Keyboard"}\r
+            chromeos{"ChromeOS Keyboard"}\r
+            colemak{"Colemak Keyboard"}\r
+            dvorak{"Dvorak Keyboard"}\r
+            dvorakl{"Dvorak Left-Handed Keyboard"}\r
+            dvorakr{"Dvorak Right-Handed Keyboard"}\r
+            el220{"Greek 220 Keyboard"}\r
+            el319{"Greek 319 Keyboard"}\r
+            extended{"Keyboard With Many Extra Characters"}\r
+            googlevk{"Google Virtual Keyboard"}\r
+            isiri{"Persian ISIRI Keyboard"}\r
+            legacy{"Legacy Keyboard"}\r
+            lt1205{"Lithuanian LST 1205 Keyboard"}\r
+            lt1582{"Lithuanian LST 1582 Keyboard"}\r
+            nutaaq{"Inuktitut Nutaaq Keyboard"}\r
+            osx{"macOS Keyboard"}\r
+            patta{"Thai Pattachote Keyboard"}\r
+            qwerty{"QWERTY-Based Keyboard"}\r
+            qwertz{"QWERTZ-Based Keyboard"}\r
+            ta99{"Tamil 99 Keyboard"}\r
+            und{"Unspecified Keyboard"}\r
+            var{"Keyboard Variant"}\r
+            viqr{"Vietnamese VIQR Keyboard"}\r
+            windows{"Windows Keyboard"}\r
+        }\r
         kr{\r
             currency{"Currency"}\r
             digit{"Digits"}\r
@@ -992,8 +1040,17 @@ en{
             normal{"Normal Line Breaks For Words"}\r
         }\r
         m0{\r
-            bgn{"BGN"}\r
-            ungegn{"UNGEGN"}\r
+            alaloc{"US ALA-LOC Transliteration"}\r
+            bgn{"US BGN Transliteration"}\r
+            buckwalt{"Buckwalter Arabic Transliteration"}\r
+            din{"German DIN Transliteration"}\r
+            gost{"CIS GOST Transliteration"}\r
+            iso{"ISO Transliteration"}\r
+            mcst{"Korean MCST Transliteration"}\r
+            mns{"Mongolian National Standard Transliteration"}\r
+            prprname{"Personal Name Transliteration Variant"}\r
+            satts{"Standard Arabic Technical Transliteration"}\r
+            ungegn{"UN GEGN Transliteration"}\r
         }\r
         ms{\r
             metric{"Metric System"}\r
@@ -1082,10 +1139,21 @@ en{
             vaii{"Vai Digits"}\r
             wara{"Warang Citi Digits"}\r
         }\r
+        s0{\r
+            accents{"From Accented Characters To ASCII Sequence"}\r
+            ascii{"From ASCII"}\r
+            hex{"From Hexadecimal Codes"}\r
+            npinyin{"From Pinyin With Numeric Tones"}\r
+            publish{"From Publishing Punctuation To ASCII"}\r
+            zawgyi{"From Zawgyi Myanmar Encoding"}\r
+        }\r
         ss{\r
             none{"Sentence Breaks Without Abbreviation Handling"}\r
             standard{"Suppress Sentence Breaks After Standard Abbreviations"}\r
         }\r
+        t0{\r
+            und{"Unspecified Machine Translation"}\r
+        }\r
         va{\r
             posix{"POSIX Compliant Locale"}\r
         }\r
@@ -1152,7 +1220,7 @@ en{
         VALENCIA{"Valencian"}\r
         WADEGILE{"Wade-Giles Romanization"}\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — all"}\r
         category-list{"{0}: {1}"}\r
index 3fba1a0..864c6e5 100644 (file)
@@ -10,5 +10,5 @@ en_001{
             yes{"Sort Unicode Normalised"}\r
         }\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 249596a..78561e0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_150{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 93d0c87..8a0d454 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d55549d..07cb4ef 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b4edb3f..09171c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0e8a773..33fb77f 100644 (file)
@@ -12,5 +12,5 @@ en_AU{
             ethiopic{"Ethiopian Calendar"}\r
         }\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.62"}\r
 }\r
index 7083244..84a0efd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c967ad1..7065545 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 17ad945..a3b9186 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03e7849..95e82b5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d4c98cf..a73b7bc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 13545f6..5891076 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 095353c..2fe08f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a2871e2..a54c911 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d055587..4f2d948 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bd2eba..f59d92a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0ae421..5aacc7b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a5c8744..8c9c483 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 81d8657..46da087 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a91a9c4..5d2d71a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index af3ee11..3d758dd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 55574ee..5a92d6b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DK{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4eaa7dc..b548583 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 228a8a8..7fd2c9a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 12aebe3..f699cc1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c439098..86f8e9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 21a12bc..5df30b2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 78ffc47..eab91ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d57d893..6a57c80 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.24"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ab0594c..7921b24 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8474cce..c0d3839 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 33fc5d4..b66f585 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 46d28cd..5fe0d68 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0d4e60..1a05f40 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dec9373..f7397d6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7c42f22..4a04a10 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index acfab3f..18bb2f3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1500279..76bee45 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5e5329..e66ecc0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bc2a255..0b82dc0 100644 (file)
@@ -16,5 +16,5 @@ en_IN{
             orya{"Oriya Digits"}\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 73736a0..2b8ba3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f31e9bf..c47ce4e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 67edbc7..d812c18 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26213f7..b11b581 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3f8c7e1..899b1ea 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f755a2f..35fb03c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e26f444..bd356e9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7abb21b..bfd0689 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 07b6a83..3fc63c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5123bd..b723857 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9eafad7..f967e69 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0b1b6a5..f6dfb6a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index df8f657..a027fc6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 23b6896..8464a2e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bb0cc54..890b025 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 58ee57a..873b8e1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 064aa6e..b36d9ba 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26854fe..5f0af42 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0a360ca..358d626 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5038494..745a114 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 21bbdc9..9d0d0cd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 039e457..165856c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eb82604..266914a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2c73397..99e896c 100644 (file)
@@ -5,5 +5,5 @@ en_NZ{
     Languages{\r
         mi{"Māori"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c1792a4..6aa4d92 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0ca66f9..080d0e6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ccbdf7f..fef2013 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5bf94f0..4094568 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0af3d13..30541dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7bb21c0..76b4d89 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cb507b5..e2de69a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 699d679..77c65fa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6206b27..87a33e2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d7fa572..31f586b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 66e6ec7..5250ec4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 968da99..cf6ab49 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fedf1c0..a259492 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4005802..3e61485 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 002988b..2b3a430 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9862443..ec1778f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 47c792d..cc8b6f1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eaabbe1..852eb0f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 797d773..020c31b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f1697f5..d27b6ec 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 599a8fe..21b8b30 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a2c5021..4ebd07d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c0c2960..5e30f2b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3b6c1e4..eaac010 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index de17869..12317cf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6a295b..ba6619b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2cecbf4..12b8824 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a3f70e3..8c90fd7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d528625..0461373 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.64"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 05bb346..19ed0d0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e725848..bb5dbed 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7a8faf8..82693f7 100644 (file)
@@ -156,5 +156,5 @@ eo{
         zu{"zulua"}\r
         zxx{"nelingvaĵo"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cafd3ff..5609b2e 100644 (file)
@@ -845,7 +845,7 @@ es{
         VALENCIA{"Valenciano"}\r
         WADEGILE{"Romanización Wade-Giles"}\r
     }\r
-    Version{"2.1.28.80"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Todo"}\r
         category-list{"{0}: {1}"}\r
index 324950d..87b9468 100644 (file)
@@ -50,7 +50,7 @@ es_419{
             uksystem{"sistema inglés"}\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     characterLabelPattern{\r
         enclosed{"{0} — Adjunto"}\r
         extended{"{0} — Extendido"}\r
index 0847712..f8b0bb3 100644 (file)
@@ -18,5 +18,5 @@ es_AR{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c3cfa2f..94a9aa0 100644 (file)
@@ -18,5 +18,5 @@ es_BO{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2f5e37a..e68498b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/lang/es_BZ.txt b/source/data/lang/es_BZ.txt
new file mode 100644 (file)
index 0000000..aa10911
--- /dev/null
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+es_BZ{\r
+    %%Parent{"es_419"}\r
+    Version{"2.1.32.37"}\r
+}\r
index 194fd96..ed469a2 100644 (file)
@@ -23,5 +23,5 @@ es_CL{
             phonebook{"orden de directorio telefónico"}\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2fe1ed1..84181c1 100644 (file)
@@ -18,5 +18,5 @@ es_CO{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ee6f9c0..3e108b8 100644 (file)
@@ -18,5 +18,5 @@ es_CR{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 791d7f5..66f010e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 825fa94..2f0c761 100644 (file)
@@ -18,5 +18,5 @@ es_DO{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f634c98..440f31c 100644 (file)
@@ -18,5 +18,5 @@ es_EC{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cb79018..8807e3a 100644 (file)
@@ -18,5 +18,5 @@ es_GT{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 040acdd..e5774b0 100644 (file)
@@ -18,5 +18,5 @@ es_HN{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index aa9ae7e..0a1c9b1 100644 (file)
@@ -87,5 +87,5 @@ es_MX{
             tibt{"Dígitos en tibetano"}\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 65de27d..9c8fada 100644 (file)
@@ -18,5 +18,5 @@ es_NI{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ea7c239..1856f3d 100644 (file)
@@ -18,5 +18,5 @@ es_PA{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 60f56bb..1e64516 100644 (file)
@@ -18,5 +18,5 @@ es_PE{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9ca3fa9..ea43a9f 100644 (file)
@@ -11,5 +11,5 @@ es_PR{
         ss{"siswati"}\r
         wo{"wolof"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1b3f446..d9cccdc 100644 (file)
@@ -18,5 +18,5 @@ es_PY{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index aa6bc4b..61df978 100644 (file)
@@ -11,5 +11,5 @@ es_SV{
         ss{"siswati"}\r
         wo{"wolof"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c5de946..65c2f2a 100644 (file)
@@ -46,5 +46,5 @@ es_US{
             laoo{"números en lao"}\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 2344e94..38b881e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_UY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 18b8145..9fee6ec 100644 (file)
@@ -18,5 +18,5 @@ es_VE{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5ea108c..f813615 100644 (file)
@@ -1011,7 +1011,7 @@ et{
         VALENCIA{"valentsia"}\r
         WADEGILE{"Wade’i-Gilesi latinisatsioon"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Kõik"}\r
         category-list{"{0}: {1}"}\r
index 98069cc..69a2e0a 100644 (file)
@@ -628,7 +628,7 @@ eu{
         SCOTLAND{"ESKOZIAR INGELESA"}\r
         VALENCIA{"VALENTZIERA"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Guztiak"}\r
         category-list{"{0}: {1}"}\r
index 2749c96..8b8678f 100644 (file)
@@ -48,5 +48,5 @@ ewo{
         zh{"Ǹkɔ́bɔ tsainís"}\r
         zu{"ǹkɔ́bɔ zulú"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 85c2b73..b292072 100644 (file)
@@ -851,7 +851,7 @@ fa{
         SAAHO{"ساهویی"}\r
         SCOTLAND{"انگلیسی معیار اسکاتلند"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — همه"}\r
         category-list{"{0}: {1}"}\r
index 8a5199e..5d2411e 100644 (file)
@@ -32,5 +32,5 @@ fa_AF{
     Scripts{\r
         Mong{"مغلی"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7b472dd..d93f363 100644 (file)
@@ -48,5 +48,5 @@ ff{
         zh{"Sinuwaare"}\r
         zu{"Suluŋkoore"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9dec409..680e7be 100644 (file)
@@ -1106,7 +1106,7 @@ fi{
     Variants%secondary{\r
         FONUPA{"suomalais-ugrilainen tarkekirjoitus"}\r
     }\r
-    Version{"2.1.29.88"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} – Kaikki"}\r
         category-list{"{0}: {1}"}\r
index a3b9df8..089bd4f 100644 (file)
@@ -630,7 +630,7 @@ fil{
         PINYIN{"Pinyin Romanization"}\r
         WADEGILE{"Wade-Giles Romanization"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — Lahat"}\r
         category-list{"{0}: {1}"}\r
index 2529c58..18d9ed8 100644 (file)
@@ -550,7 +550,7 @@ fo{
         POLYTON{"polytonísk"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — Alt"}\r
         compatibility{"{0} — Sambæri"}\r
index 9d3cf9f..036b86f 100644 (file)
@@ -962,7 +962,7 @@ fr{
         VALENCIA{"valencien"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — tout"}\r
         category-list{"{0}: {1}"}\r
index 90ceb2f..68f47b6 100644 (file)
@@ -13,5 +13,5 @@ fr_BE{
         smn{"same d’Inari"}\r
         sms{"same skolt"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index df38990..dd578b3 100644 (file)
@@ -88,5 +88,5 @@ fr_CA{
             taml{"chiffres tamouls traditionnels"}\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f82100e..29fa168 100644 (file)
@@ -6,5 +6,5 @@ fr_CH{
         pdc{"allemand de Pennsylvanie"}\r
         sdh{"kurde méridional"}\r
     }\r
-    Version{"2.1.27.96"}\r
+    Version{"2.1.32.48"}\r
 }\r
index 21f09a0..244d062 100644 (file)
@@ -299,7 +299,7 @@ fur{
         SOLBA{"dialet di Stolvize"}\r
         VALENCIA{"valenzian"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         language{"Lenghe: {0}"}\r
         script{"Scriture: {0}"}\r
index 0b02b1d..4ff9554 100644 (file)
@@ -886,7 +886,7 @@ fy{
         VALLADER{"Vallader"}\r
         WADEGILE{"Wade-Giles-romanisering"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"Taal: {0}"}\r
         script{"Skrift: {0}"}\r
index 07b3c5d..b119bb4 100644 (file)
@@ -529,7 +529,7 @@ ga{
         VALENCIA{"Vaileinsis"}\r
         WADEGILE{"Rómhánú Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — Uile"}\r
         category-list{"{0}: {1}:"}\r
index 8774695..65e3c3c 100644 (file)
@@ -879,7 +879,7 @@ gd{
     Variants{\r
         SCOTLAND{"Beurla Bhun-Tomhasach na h-Alba"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"Cànan: {0}"}\r
         script{"Litreadh: {0}"}\r
index c2c360d..51e9030 100644 (file)
@@ -626,7 +626,7 @@ gl{
             vaii{"Díxitos Vai"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} (todo)"}\r
         category-list{"{0}: {1}"}\r
index dfd17fc..ed97483 100644 (file)
@@ -619,7 +619,7 @@ gsw{
         SOLBA{"Solbica-Mundart"}\r
         TARASK{"Taraskievica-Rächtschriibig"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
     codePatterns{\r
         language{"Schpraach: {0}"}\r
         script{"Schrift: {0}"}\r
index 0d2a972..8f85f54 100644 (file)
@@ -843,7 +843,7 @@ gu{
         PINYIN{"પિનયિન રોમનાઇઝેશન"}\r
         WADEGILE{"વેડ-ગિલ્સ રોમનાઇઝેશન"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — તમામ"}\r
         category-list{"{0}: {1}"}\r
index 34d677f..b047423 100644 (file)
@@ -48,5 +48,5 @@ guz{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0ae1a35..172a72d 100644 (file)
@@ -4,5 +4,5 @@ gv{
     Languages{\r
         gv{"Gaelg"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
 }\r
index 509c4fd..e3f7ca6 100644 (file)
@@ -47,5 +47,5 @@ ha{
         zh{"Harshen Sin"}\r
         zu{"Harshen Zulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4a48d6d..6fce2ae 100644 (file)
@@ -40,5 +40,5 @@ haw{
         zh_Hans{"Pākē Hoʻomaʻalahi ʻia"}\r
         zh_Hant{"Pākē Kuʻuna"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 651a811..33766b8 100644 (file)
@@ -772,7 +772,7 @@ he{
         POSIX{"מחשב"}\r
         SCOTLAND{"אנגלית סקוטית סטנדרטית"}\r
     }\r
-    Version{"2.1.29.27"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} - הכל"}\r
         category-list{"{0}: {1}"}\r
index 3df7052..15a025d 100644 (file)
@@ -828,7 +828,7 @@ hi{
         POSIX{"कम्प्यूटर"}\r
         REVISED{"संशोधित वर्तनी"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} - सभी"}\r
         category-list{"{0}: {1}"}\r
index 9817e18..ce47399 100644 (file)
@@ -910,7 +910,7 @@ hr{
         VALENCIA{"valencijski"}\r
         WADEGILE{"Wade-Giles romanizacija"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Sve"}\r
         category-list{"{0}: {1}"}\r
index 32e9ae8..8312b9f 100644 (file)
@@ -378,7 +378,7 @@ hsb{
             tibt{"tibetske cyfry"}\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"rěč: {0}"}\r
         script{"pismo: {0}"}\r
index a9dfbcb..55bd55f 100644 (file)
@@ -350,7 +350,7 @@ hu{
         nan{"min nan kínai"}\r
         nap{"nápolyi"}\r
         naq{"nama"}\r
-        nb{"norvég (bokmál)"}\r
+        nb{"norvég (bokmÃ¥l)"}\r
         nd{"északi ndebele"}\r
         nds{"alsónémet"}\r
         nds_NL{"alsószász"}\r
@@ -362,7 +362,7 @@ hu{
         nl{"holland"}\r
         nl_BE{"flamand"}\r
         nmg{"ngumba"}\r
-        nn{"norvég (nynrosk)"}\r
+        nn{"norvég (nynorsk)"}\r
         nnh{"ngiemboon"}\r
         no{"norvég"}\r
         nog{"nogaj"}\r
@@ -894,7 +894,7 @@ hu{
         VALLADER{"Vallader"}\r
         WADEGILE{"Wade-Giles átírás"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Összes"}\r
         category-list{"{0}: {1}"}\r
index baf1da9..6707624 100644 (file)
@@ -613,7 +613,7 @@ hy{
         AREVELA{"արևելահայերեն"}\r
         AREVMDA{"արեւմտահայերէն"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — բոլորը"}\r
         category-list{"{0}՝ {1}"}\r
index 99ed20d..d33c491 100644 (file)
@@ -959,7 +959,7 @@ id{
         VALLADER{"VALLADER"}\r
         WADEGILE{"Wade-Giles Latin"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Semua"}\r
         category-list{"{0}: {1}"}\r
index 84ee62c..103383f 100644 (file)
@@ -47,5 +47,5 @@ ig{
         zh{"Mandarịịnị"}\r
         zu{"Zulu"}\r
     }\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b34c22c..4545132 100644 (file)
@@ -33,7 +33,7 @@ ii{
             islamic{"ꑳꌦꇂꑍꉖ"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         language{"ꅇꉙ: {0}"}\r
         script{"ꇇꁱ: {0}"}\r
index bd87520..f164c31 100644 (file)
@@ -732,7 +732,7 @@ is{
             vaii{"Vai-tölustafir"}\r
         }\r
     }\r
-    Version{"2.1.29.65"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — allt"}\r
         category-list{"{0}: {1}"}\r
index 257694b..8e373d1 100644 (file)
@@ -1017,7 +1017,7 @@ it{
         VALENCIA{"valenziano"}\r
         WADEGILE{"romanizzazione Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
     characterLabelPattern{\r
         all{"{0} — Tutto"}\r
         category-list{"{0}: {1}"}\r
index 6a7970d..9a6ed6a 100644 (file)
@@ -1044,7 +1044,7 @@ ja{
         VALLADER{"ヴァラダー"}\r
         WADEGILE{"ウェード式ローマ字表記法"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — すべて"}\r
         category-list{"{0}: {1}"}\r
index 7f9fd85..0625f60 100644 (file)
@@ -28,5 +28,5 @@ jgo{
             latn{"pɛnɔ́mba"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 34517c7..42bdfae 100644 (file)
@@ -48,5 +48,5 @@ jmc{
         zh{"Kyichina"}\r
         zu{"Kyizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f882471..5557e17 100644 (file)
@@ -734,7 +734,7 @@ ka{
             tibt{"ტიბეტური ციფრები"}\r
         }\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — ყველა"}\r
         category-list{"{0}: {1}"}\r
index 2ea46e7..590ec1b 100644 (file)
@@ -48,5 +48,5 @@ kab{
         zh{"Tacinwat, Tamundarint"}\r
         zu{"Tazulut"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 61b0674..1d1833e 100644 (file)
@@ -48,5 +48,5 @@ kam{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 74a9350..7792f5f 100644 (file)
@@ -48,5 +48,5 @@ kde{
         zh{"Chichina"}\r
         zu{"Chizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cb2bbcd..e0186dc 100644 (file)
@@ -249,7 +249,7 @@ kea{
             latn{"Númerus Arábikus"}\r
         }\r
     }\r
-    Version{"2.1.27.46"}\r
+    Version{"2.1.31.74"}\r
     codePatterns{\r
         language{"Lingua: {0}"}\r
         script{"Skrita: {0}"}\r
index 3d0d45b..1468248 100644 (file)
@@ -48,5 +48,5 @@ khq{
         zh{"Sinuwa senni, Mandareŋ"}\r
         zu{"Julu senni"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bee774f..c19c4b6 100644 (file)
@@ -48,5 +48,5 @@ ki{
         zh{"Kĩcaina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b7b86f2..dec7b90 100644 (file)
@@ -532,7 +532,7 @@ kk{
             tibt{"Тибет сандары"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — барлығы"}\r
         category-list{"{0}: {1}"}\r
index 32975b1..62e0927 100644 (file)
@@ -6,5 +6,5 @@ kkj{
         fr{"numbu buy"}\r
         kkj{"kakɔ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e7ce2a0..079eef8 100644 (file)
@@ -4,7 +4,7 @@ kl{
     Languages{\r
         kl{"kalaallisut"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
     localeDisplayPattern{\r
         keyTypePattern{"{0}: {1}"}\r
         pattern{"{0} ({1})"}\r
index f017055..0d0bdff 100644 (file)
@@ -48,5 +48,5 @@ kln{
         zh{"kutitab China"}\r
         zu{"kutitab Zulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ce07b50..586ff46 100644 (file)
@@ -534,7 +534,7 @@ km{
             tibt{"លេខទីបេ"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.74"}\r
     characterLabelPattern{\r
         all{"{0} — ទាំងអស់"}\r
         category-list{"{0}: {1}"}\r
index 0219501..19c9f50 100644 (file)
@@ -827,7 +827,7 @@ kn{
             vaii{"ವಾಯ್ ಅಂಕೆಗಳು"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — ಎಲ್ಲ"}\r
         category-list{"{0}: {1}"}\r
index 65476af..c1328cf 100644 (file)
@@ -913,7 +913,7 @@ ko{
         VAIDIKA{"바이디카"}\r
         VALLADER{"발라더"}\r
     }\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — 모두"}\r
         category-list{"{0}: {1}"}\r
index e4cf3d0..945f2ba 100644 (file)
@@ -142,5 +142,5 @@ kok{
         zh{"चीनीस्"}\r
         zu{"जुलू"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 021b17c..ead282b 100644 (file)
@@ -609,7 +609,7 @@ ks{
         SOLBA{"ثٹولوِزا/سولبِکا بوٗلۍ"}\r
         TARASK{"تاراسکیٖوِکا علمہ ہِجاِ"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"زَبان: {0}"}\r
         script{"رَسم الخط: {0}"}\r
index 96ca831..295eaae 100644 (file)
@@ -48,5 +48,5 @@ ksb{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7efd77d..738d38a 100644 (file)
@@ -48,5 +48,5 @@ ksf{
         zh{"ricinɔá"}\r
         zu{"rizúlu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9c67ad3..eb49c1d 100644 (file)
@@ -512,7 +512,7 @@ ksh{
         VALENCIA{"valenzijaanesche Dijaläk"}\r
         WADEGILE{"lateijnesche Ömschreff noh Wade-Giles"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"de Schprohch afjekööz met „{0}“"}\r
         script{"de Schreff afjekööz met „{0}“"}\r
index c2710bb..591b24a 100644 (file)
@@ -4,5 +4,5 @@ kw{
     Languages{\r
         kw{"kernewek"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8a74bc6..42fb0ce 100644 (file)
@@ -539,7 +539,7 @@ ky{
             tibt{"Тибет сандары"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — Баары"}\r
         category-list{"{0}: {1}"}\r
index 2cfd3ab..46785ea 100644 (file)
@@ -48,5 +48,5 @@ lag{
         zh{"Kɨchíina"}\r
         zu{"Kɨzúulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6a49580..6e5ce74 100644 (file)
@@ -875,7 +875,7 @@ lb{
         VALENCIA{"Valencianesch"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"Sprooch: {0}"}\r
         script{"Schrëft: {0}"}\r
index 67ffffc..8fcb47e 100644 (file)
@@ -48,5 +48,5 @@ lg{
         zh{"Lucayina"}\r
         zu{"Luzzulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f6a9db2..4e8ca5c 100644 (file)
@@ -152,5 +152,5 @@ lkt{
         zu{"Zulu Iyápi"}\r
         zza{"Zaza Iyápi"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 287829d..7540954 100644 (file)
@@ -48,5 +48,5 @@ ln{
         zh{"lisinwa"}\r
         zu{"zulu"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 30b23f8..3bc0a5c 100644 (file)
@@ -874,7 +874,7 @@ lo{
         VALLADER{"ວັລລາເດີ"}\r
         WADEGILE{"ການຖອດອັກສອນແບບເວດ-ໄຈລ໌"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — ທັງໝົດ"}\r
         category-list{"{0}: {1}"}\r
index 969a1eb..30d8527 100644 (file)
@@ -296,7 +296,7 @@ lrc{
             latn{"عأدأدیا لاتین"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         language{"{0}"}\r
         script{"{0}"}\r
index a2970e7..269be67 100644 (file)
@@ -1020,7 +1020,7 @@ lt{
         VALENCIA{"Valenciečiai"}\r
         WADEGILE{"Wade-Giles Romanization"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} – visi"}\r
         category-list{"{0}: {1}"}\r
index f538395..107a143 100644 (file)
@@ -46,5 +46,5 @@ lu{
         zh{"shinɛ"}\r
         zu{"Nzulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 925eb57..3119467 100644 (file)
@@ -48,5 +48,5 @@ luo{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d06f793..137740f 100644 (file)
@@ -48,5 +48,5 @@ luy{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6cb2347..b3c343e 100644 (file)
@@ -225,7 +225,7 @@ lv{
         ilo{"iloku"}\r
         inh{"ingušu"}\r
         io{"ido"}\r
-        is{"īslandiešu"}\r
+        is{"islandiešu"}\r
         it{"itāļu"}\r
         iu{"inuītu"}\r
         ja{"japāņu"}\r
@@ -803,7 +803,7 @@ lv{
         VALENCIA{"valensiešu"}\r
         WADEGILE{"Veida-Džailza romanizācija"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — visas"}\r
         category-list{"{0}: {1}"}\r
index fb5774c..8273bb5 100644 (file)
@@ -48,5 +48,5 @@ mas{
         zh{"nkʉtʉ́k ɔ́ɔ̄ lchina"}\r
         zu{"nkʉtʉ́k ɔ́ɔ̄ lzulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dea26ee..b766409 100644 (file)
@@ -48,5 +48,5 @@ mer{
         zh{"Kĩchina"}\r
         zu{"Kĩzulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f76c1b9..c8d1628 100644 (file)
@@ -48,5 +48,5 @@ mfe{
         zh{"sinwa, mandarin"}\r
         zu{"zoulou"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f8c2ac3..4eed500 100644 (file)
@@ -48,5 +48,5 @@ mg{
         zh{"Sinoa, Mandarin"}\r
         zu{"Zolò"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 72f26c0..6a9fef2 100644 (file)
@@ -47,5 +47,5 @@ mgh{
         zh{"Ichina"}\r
         zu{"Izulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 480de37..4ca3c45 100644 (file)
@@ -18,7 +18,7 @@ mgo{
             latn{"inu"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         language{"{0}"}\r
         script{"{0}"}\r
index b4eaaab..cbe5779 100644 (file)
@@ -889,7 +889,7 @@ mk{
         PINYIN{"Пинјин романизација"}\r
         WADEGILE{"Вејд-Џајлс романизација"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} - Сите"}\r
         category-list{"{0}: {1}"}\r
index 4bde30f..b8bf0ad 100644 (file)
@@ -853,7 +853,7 @@ ml{
         POSIX{"കമ്പ്യൂട്ടർ"}\r
         REVISED{"പരിഷ്ക്കരിച്ച ലിപി"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — എല്ലാം"}\r
         category-list{"{0}: {1}"}\r
index d3cb4fc..c45b053 100644 (file)
@@ -542,7 +542,7 @@ mn{
             tibt{"төвд тоо"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} - Бүгд"}\r
         category-list{"{0}: {1}"}\r
index 553ecba..281b22b 100644 (file)
@@ -830,7 +830,7 @@ mr{
         PINYIN{"पिनयिन रोमनायझेशन"}\r
         WADEGILE{"वादे-गिलेस रोमनायझेशन"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — सर्व"}\r
         category-list{"{0}: {1}"}\r
index 8550dec..e1508c0 100644 (file)
@@ -667,7 +667,7 @@ ms{
             vaii{"Digit Vai"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Semua"}\r
         category-list{"{0}: {1}"}\r
index 56f42fa..3af346c 100644 (file)
@@ -473,7 +473,7 @@ mt{
         uk{"Ukren"}\r
         umb{"Umbundu"}\r
         und{"Lingwa Mhix Magħrufa"}\r
-        ur{"ur"}\r
+        ur{"Urdu"}\r
         uz{"Uzbek"}\r
         vai{"Vai"}\r
         ve{"Venda"}\r
@@ -559,7 +559,7 @@ mt{
     Variants{\r
         REVISED{"Ortografija Irriveda"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
     codePatterns{\r
         language{"Lingwa: {0}"}\r
         script{"Skript: {0}"}\r
index 8dbcd0f..7e422b9 100644 (file)
@@ -48,5 +48,5 @@ mua{
         zh{"zah Syiŋ"}\r
         zu{"Zulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3aa6329..53073f6 100644 (file)
@@ -580,7 +580,7 @@ my{
         REVISED{"ပြန်လည်စီစစ်ထားသော ရေးထုံး"}\r
         SCOTLAND{"စကော့ စံ အင်္ဂလိပ်"}\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.33.28"}\r
     characterLabelPattern{\r
         all{"{0} — အားလုံး"}\r
         category-list{"{0} − {1}"}\r
index 6f316ce..9f96b2d 100644 (file)
@@ -265,7 +265,7 @@ mzn{
         Hans{"ساده‌بَیی هان"}\r
         Hant{"استاندارد ِسنتی هانت"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"زوون: {0}"}\r
         script{"اسکریپت: {0}"}\r
index 9b5ee6e..cefef59 100644 (file)
@@ -48,5 +48,5 @@ naq{
         zh{"Chineesǁî gowab, Mandarinni"}\r
         zu{"Zulub"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d3ad534..b124d99 100644 (file)
@@ -1095,7 +1095,7 @@ nb{
         VALLADER{"vallader"}\r
         WADEGILE{"Wade-Giles-romanisering"}\r
     }\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} – alt"}\r
         category-list{"{0}: {1}"}\r
index cbca4e5..f98a8e0 100644 (file)
@@ -48,5 +48,5 @@ nd{
         zh{"isi-China"}\r
         zu{"isi-Zulu"}\r
     }\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e395563..7874b05 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.28.71"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b58c9ac..2cd85e5 100644 (file)
@@ -795,7 +795,7 @@ ne{
         AREVELA{"पूर्वी आर्मेनियाली"}\r
         POSIX{"कम्प्युटर"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0}-सबै"}\r
         category-list{"{0}: {1}"}\r
index c15ba79..872aa8a 100644 (file)
@@ -1099,7 +1099,7 @@ nl{
         VALLADER{"Vallader"}\r
         WADEGILE{"Wade-Giles-romanisering"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — alle"}\r
         category-list{"{0}: {1}"}\r
index 6f89598..aa3ca89 100644 (file)
@@ -47,5 +47,5 @@ nmg{
         zh{"Kiɛl bó chinois"}\r
         zu{"Zulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 45fe4d6..1e5cde0 100644 (file)
@@ -690,7 +690,7 @@ nn{
         TARASK{"taraskievica-ortografi"}\r
         VALENCIA{"valensisk dialekt"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"Språk: {0}"}\r
         script{"Skrift: {0}"}\r
index 89368aa..801d262 100644 (file)
@@ -24,5 +24,5 @@ nnh{
         yav{"Shwóŋò pʉa shÿó Mbafìa"}\r
         ybb{"Shwóŋò Tsaŋ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 850b8df..3a38aba 100644 (file)
@@ -48,5 +48,5 @@ nus{
         zh{"Thok cayna"}\r
         zu{"Thok dhuluni"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 29f3d82..ba7e0d0 100644 (file)
@@ -48,5 +48,5 @@ nyn{
         zh{"Oruchaina"}\r
         zu{"Oruzuru"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5ae0565..151e920 100644 (file)
@@ -92,5 +92,5 @@ om{
     Scripts{\r
         Latn{"Latin"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 14991e8..c9ec27b 100644 (file)
@@ -574,5 +574,5 @@ or{
         Zyyy{"ସାଧାରଣ"}\r
         Zzzz{"ଅଞ୍ଜାତ କିମ୍ବା ଅବୈଧ ସ୍କ୍ରୀପ୍ଟ"}\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bcef82..1aba015 100644 (file)
@@ -96,7 +96,7 @@ os{
             latn{"Нырыккон цифрӕтӕ"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         language{"Ӕвзаг: {0}"}\r
         script{"Скрипт: {0}"}\r
index 5e1ea06..12184f1 100644 (file)
@@ -552,7 +552,7 @@ pa{
             tibt{"ਤਿੱਬਤੀ ਅੰਕ"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — ਸਭ"}\r
         category-list{"{0}: {1}"}\r
index 8815c28..cd32e77 100644 (file)
@@ -9,5 +9,5 @@ pa_Arab{
         Arab{"عربی"}\r
         Guru{"گُرمُکھی"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dca680f..dc1602d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bac53c8..8a1af58 100644 (file)
@@ -963,7 +963,7 @@ pl{
         VALENCIA{"walencki"}\r
         WADEGILE{"latynizacja Wade’a i Gilesa"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — wszystko"}\r
         category-list{"{0}: {1}"}\r
index bf8a5da..61fc525 100644 (file)
Binary files a/source/data/lang/pool.res and b/source/data/lang/pool.res differ
index d19a2df..8d664fa 100644 (file)
@@ -46,5 +46,5 @@ ps{
     Scripts{\r
         Arab{"عربي"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d13955f..ce9feba 100644 (file)
@@ -874,7 +874,7 @@ pt{
         VALENCIA{"valenciano"}\r
         WADEGILE{"romanização Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Tudo"}\r
         category-list{"{0}: {1}"}\r
index 2e783ef..a385088 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_AO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a4226b1..4ee7339 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 829f400..ed8f313 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fd432f9..0f6e235 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 75c5d9d..f4cd124 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5eca2f..b5a1669 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c47efaa..d30b2ff 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9878c5a..060a5fc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 360cd5d..5ac80c7 100644 (file)
@@ -217,7 +217,7 @@ pt_PT{
         MONOTON{"monotónico"}\r
         POLYTON{"politónico"}\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} – tudo"}\r
         compatibility{"{0} – compatibilidade"}\r
index fcc981b..e3f0965 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bbbc3d..b8cb201 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7bbfcf7..d2e5f44 100644 (file)
@@ -134,5 +134,5 @@ qu{
     Variants{\r
         VALENCIA{"Valenciano Simi"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b725f4c..dcb1e07 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-LANG_CLDR_VERSION = %version%\r
+LANG_CLDR_VERSION = 31.0.1\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a '%local%' file in this same directory.\r
+# you should consider creating a 'reslocal.mk' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example '%local%' files:\r
+# Example 'reslocal.mk' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,19 +26,19 @@ LANG_CLDR_VERSION = %version%
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-LANG_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
- in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
- ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
- no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
- pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
- shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt\\r
- sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt sr_Latn_YU.txt\\r
- sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt\\r
- th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt\\r
- uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt\\r
- zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt zh_MO.txt\\r
- zh_SG.txt zh_TW.txt\r
+LANG_SYNTHETIC_ALIAS = ars.txt az_AZ.txt az_Latn_AZ.txt bs_BA.txt\\r
bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt he_IL.txt\\r
+ id_ID.txt in.txt in_ID.txt iw.txt iw_IL.txt\\r
+ ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt\\r
+ no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt\\r
+ pa_IN.txt pa_PK.txt sh.txt sh_BA.txt sh_CS.txt\\r
+ sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt\\r
+ sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt\\r
+ sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt\\r
+ th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
+ uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt\\r
+ zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt\\r
+ zh_MO.txt zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -76,47 +76,47 @@ LANG_SOURCE = af.txt agq.txt ak.txt am.txt\
  en_TT.txt en_TV.txt en_TZ.txt en_UG.txt en_VC.txt\\r
  en_VG.txt en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt\\r
  en_ZW.txt eo.txt es.txt es_419.txt es_AR.txt\\r
- es_BO.txt es_BR.txt es_CL.txt es_CO.txt es_CR.txt\\r
- es_CU.txt es_DO.txt es_EC.txt es_GT.txt es_HN.txt\\r
- es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PR.txt\\r
- es_PY.txt es_SV.txt es_US.txt es_UY.txt es_VE.txt\\r
- et.txt eu.txt ewo.txt fa.txt fa_AF.txt\\r
- ff.txt fi.txt fil.txt fo.txt fr.txt\\r
- fr_BE.txt fr_CA.txt fr_CH.txt fur.txt fy.txt\\r
ga.txt gd.txt gl.txt gsw.txt gu.txt\\r
- guz.txt gv.txt ha.txt haw.txt he.txt\\r
- hi.txt hr.txt hsb.txt hu.txt hy.txt\\r
id.txt ig.txt ii.txt is.txt it.txt\\r
ja.txt jgo.txt jmc.txt ka.txt kab.txt\\r
- kam.txt kde.txt kea.txt khq.txt ki.txt\\r
- kk.txt kkj.txt kl.txt kln.txt km.txt\\r
- kn.txt ko.txt kok.txt ks.txt ksb.txt\\r
- ksf.txt ksh.txt kw.txt ky.txt lag.txt\\r
- lb.txt lg.txt lkt.txt ln.txt lo.txt\\r
- lrc.txt lt.txt lu.txt luo.txt luy.txt\\r
- lv.txt mas.txt mer.txt mfe.txt mg.txt\\r
- mgh.txt mgo.txt mk.txt ml.txt mn.txt\\r
- mr.txt ms.txt mt.txt mua.txt my.txt\\r
- mzn.txt naq.txt nb.txt nd.txt nds.txt\\r
- ne.txt nl.txt nmg.txt nn.txt nnh.txt\\r
- nus.txt nyn.txt om.txt or.txt os.txt\\r
pa.txt pa_Arab.txt pa_Guru.txt pl.txt ps.txt\\r
- pt.txt pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt\\r
- pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt\\r
- pt_ST.txt pt_TL.txt qu.txt rm.txt rn.txt\\r
- ro.txt ro_MD.txt rof.txt ru.txt rw.txt\\r
- rwk.txt sah.txt saq.txt sbp.txt se.txt\\r
- se_FI.txt seh.txt ses.txt sg.txt shi.txt\\r
- shi_Latn.txt shi_Tfng.txt si.txt sk.txt sl.txt\\r
- smn.txt sn.txt so.txt sq.txt sr.txt\\r
- sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt sr_Latn.txt\\r
- sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt sv_FI.txt\\r
- sw.txt sw_CD.txt sw_KE.txt ta.txt te.txt\\r
- teo.txt th.txt ti.txt to.txt tr.txt\\r
- twq.txt tzm.txt ug.txt uk.txt ur.txt\\r
- ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt\\r
vai.txt vai_Latn.txt vai_Vaii.txt vi.txt vun.txt\\r
wae.txt xog.txt yav.txt yi.txt yo.txt\\r
- yo_BJ.txt yue.txt zgh.txt zh.txt zh_Hans.txt\\r
- zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_BO.txt es_BR.txt es_BZ.txt es_CL.txt es_CO.txt\\r
+ es_CR.txt es_CU.txt es_DO.txt es_EC.txt es_GT.txt\\r
+ es_HN.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\\r
+ es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\\r
+ es_VE.txt et.txt eu.txt ewo.txt fa.txt\\r
+ fa_AF.txt ff.txt fi.txt fil.txt fo.txt\\r
+ fr.txt fr_BE.txt fr_CA.txt fr_CH.txt fur.txt\\r
fy.txt ga.txt gd.txt gl.txt gsw.txt\\r
+ gu.txt guz.txt gv.txt ha.txt haw.txt\\r
+ he.txt hi.txt hr.txt hsb.txt hu.txt\\r
hy.txt id.txt ig.txt ii.txt is.txt\\r
it.txt ja.txt jgo.txt jmc.txt ka.txt\\r
+ kab.txt kam.txt kde.txt kea.txt khq.txt\\r
+ ki.txt kk.txt kkj.txt kl.txt kln.txt\\r
+ km.txt kn.txt ko.txt kok.txt ks.txt\\r
+ ksb.txt ksf.txt ksh.txt kw.txt ky.txt\\r
+ lag.txt lb.txt lg.txt lkt.txt ln.txt\\r
+ lo.txt lrc.txt lt.txt lu.txt luo.txt\\r
+ luy.txt lv.txt mas.txt mer.txt mfe.txt\\r
+ mg.txt mgh.txt mgo.txt mk.txt ml.txt\\r
+ mn.txt mr.txt ms.txt mt.txt mua.txt\\r
+ my.txt mzn.txt naq.txt nb.txt nd.txt\\r
+ nds.txt ne.txt nl.txt nmg.txt nn.txt\\r
+ nnh.txt nus.txt nyn.txt om.txt or.txt\\r
os.txt pa.txt pa_Arab.txt pa_Guru.txt pl.txt\\r
+ ps.txt pt.txt pt_AO.txt pt_CH.txt pt_CV.txt\\r
+ pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt\\r
+ pt_PT.txt pt_ST.txt pt_TL.txt qu.txt rm.txt\\r
+ rn.txt ro.txt ro_MD.txt rof.txt ru.txt\\r
+ rw.txt rwk.txt sah.txt saq.txt sbp.txt\\r
+ se.txt se_FI.txt seh.txt ses.txt sg.txt\\r
+ shi.txt shi_Latn.txt shi_Tfng.txt si.txt sk.txt\\r
+ sl.txt smn.txt sn.txt so.txt sq.txt\\r
+ sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt\\r
+ sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt\\r
+ sv_FI.txt sw.txt sw_CD.txt sw_KE.txt ta.txt\\r
+ te.txt teo.txt th.txt ti.txt to.txt\\r
+ tr.txt twq.txt tzm.txt ug.txt uk.txt\\r
+ ur.txt ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt\\r
uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt vi.txt\\r
vun.txt wae.txt xog.txt yav.txt yi.txt\\r
+ yo.txt yo_BJ.txt yue.txt zgh.txt zh.txt\\r
+ zh_Hans.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index a018349..d3a3428 100644 (file)
@@ -627,7 +627,7 @@ rm{
         TARASK{"ortografia taraskievica"}\r
         VALENCIA{"valencian"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"Lingua: {0}"}\r
         script{"Scrittira: {0}"}\r
index 5ce6113..413d73b 100644 (file)
@@ -48,5 +48,5 @@ rn{
         zh{"Igishinwa"}\r
         zu{"Ikizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f3cd645..e9a8340 100644 (file)
@@ -774,7 +774,7 @@ ro{
         SCOTLAND{"engleză standard scoțiană"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
     characterLabelPattern{\r
         all{"{0} – toate"}\r
         category-list{"{0}: {1}"}\r
index 1aef1a6..795eace 100644 (file)
@@ -5,5 +5,5 @@ ro_MD{
         sw_CD{"swahili (R. D. Congo)"}\r
         wal{"wolaytta"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0255b88..29ec3a7 100644 (file)
@@ -48,5 +48,5 @@ rof{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 76a6ee2..a9de906 100644 (file)
@@ -4,7 +4,7 @@
  * ICU <specials> source: <path>/common/main/root.xml\r
  */\r
 root{\r
-    Version{"2.1.30.58"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — all"}\r
         category-list{"{0}: {1}"}\r
index 0ecb523..c355b71 100644 (file)
@@ -912,7 +912,7 @@ ru{
         VALENCIA{"Валенсийский"}\r
         WADEGILE{"Система Уэйда – Джайлза"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} – все"}\r
         category-list{"{0}: {1}"}\r
index 797cbff..6e27571 100644 (file)
@@ -108,5 +108,5 @@ rw{
         yi{"Inyeyidishi"}\r
         zu{"Inyezulu"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 252c6d7..0505ddf 100644 (file)
@@ -48,5 +48,5 @@ rwk{
         zh{"Kyichina"}\r
         zu{"Kyizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 67b7179..20b2231 100644 (file)
@@ -91,7 +91,7 @@ sah{
             h24{"24 чаастаах тиһик (0–24)"}\r
         }\r
     }\r
-    Version{"2.1.27.87"}\r
+    Version{"2.1.31.33"}\r
     characterLabelPattern{\r
         strokes{\r
             other{"{0} Strokes"}\r
index 3e00cb9..d150a22 100644 (file)
@@ -48,5 +48,5 @@ saq{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index af95dc2..4eb33a0 100644 (file)
@@ -48,5 +48,5 @@ sbp{
         zh{"Ishishina"}\r
         zu{"Ishisulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d533cde..6e0b641 100644 (file)
@@ -154,7 +154,7 @@ se{
         PINYIN{"pinyin"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         language{"giella: {0}"}\r
         script{"chállin: {0}"}\r
index a71f28d..b661c06 100644 (file)
@@ -62,7 +62,7 @@ se_FI{
             fullwide{"fullwide"}\r
         }\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         script{"čállin: {0}"}\r
     }\r
index c782064..d097de1 100644 (file)
@@ -48,5 +48,5 @@ seh{
         zh{"chinês"}\r
         zu{"zulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bc6f8f9..7345578 100644 (file)
@@ -48,5 +48,5 @@ ses{
         zh{"Sinuwa senni, Mandareŋ"}\r
         zu{"Zulu senni"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f889bb2..ec1f1df 100644 (file)
@@ -48,5 +48,5 @@ sg{
         zh{"Shinuäa"}\r
         zu{"Zûlu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9f9bc6c..8a1833a 100644 (file)
@@ -48,5 +48,5 @@ shi{
         zh{"ⵜⴰⵛⵉⵏⵡⵉⵜ"}\r
         zu{"ⵜⴰⵣⵓⵍⵓⵜ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8b19fa1..c09b6c4 100644 (file)
@@ -49,5 +49,5 @@ shi_Latn{
         zh{"Tacinwit"}\r
         zu{"Tazulut"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 22785f4..2db194b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bdaa8b5..69b93b7 100644 (file)
@@ -547,7 +547,7 @@ si{
             tibt{"ටිබෙට ඉලක්කම්"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.28"}\r
     characterLabelPattern{\r
         all{"{0} — සියල්ල"}\r
         category-list{"{0}: {1}"}\r
index 852a751..4514d25 100644 (file)
@@ -755,7 +755,7 @@ sk{
     Variants{\r
         SCOTLAND{"škótska štandardná angličtina"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} – všetko"}\r
         category-list{"{0}: {1}"}\r
index 0ca8f3d..07aa44e 100644 (file)
@@ -831,7 +831,7 @@ sl{
         VALENCIA{"valencijski pravopis"}\r
         WADEGILE{"romanizacija Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} – vse"}\r
         category-list{"{0}: {1}"}\r
index 0c866c5..1941d46 100644 (file)
@@ -401,7 +401,7 @@ smn{
         en_GB{"eŋgâlâskielâ (OK)"}\r
         en_US{"eŋgâlâskielâ (USA)"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         language{"kielâ: {0}"}\r
         script{"čäällimvuáhádâh: {0}"}\r
index 980dd96..a54d7a2 100644 (file)
@@ -48,5 +48,5 @@ sn{
         zh{"chiChinese"}\r
         zu{"chiZulu"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3d6a275..843754f 100644 (file)
@@ -52,5 +52,5 @@ so{
         Zxxx{"Aan la qorin"}\r
         Zzzz{"Far aan la aqoon amase aan saxnayn"}\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.33.76"}\r
 }\r
index 030c703..867a2b6 100644 (file)
@@ -555,7 +555,7 @@ sq{
             tibt{"shifra tibetiane"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Të gjitha"}\r
         category-list{"{0}: {1}"}\r
index 372e39c..2f9945d 100644 (file)
@@ -842,7 +842,7 @@ sr{
         TARASK{"Тараскијевичка ортографија"}\r
         VALENCIA{"Валенцијска"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.73"}\r
     characterLabelPattern{\r
         all{"{0} — све"}\r
         category-list{"{0}: {1}"}\r
index 0b50a55..2e18268 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f481998..8435440 100644 (file)
@@ -18,5 +18,5 @@ sr_Cyrl_BA{
         zgh{"стандардни марокански тамашек"}\r
         zu{"исизулу"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b8a3dd4..6506986 100644 (file)
@@ -17,5 +17,5 @@ sr_Cyrl_ME{
         zgh{"стандардни марокански тамашек"}\r
         zu{"исизулу"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 76f27e4..31c7433 100644 (file)
@@ -17,5 +17,5 @@ sr_Cyrl_XK{
         zgh{"стандардни марокански тамашек"}\r
         zu{"исизулу"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 806b5bf..948dfb0 100644 (file)
@@ -843,7 +843,7 @@ sr_Latn{
         TARASK{"Taraskijevička ortografija"}\r
         VALENCIA{"Valencijska"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.32.73"}\r
     characterLabelPattern{\r
         all{"{0} — sve"}\r
         category-list{"{0}: {1}"}\r
index ea6b7e6..899695d 100644 (file)
@@ -18,5 +18,5 @@ sr_Latn_BA{
         zgh{"standardni marokanski tamašek"}\r
         zu{"isizulu"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0a3470f..02ecd98 100644 (file)
@@ -17,5 +17,5 @@ sr_Latn_ME{
         zgh{"standardni marokanski tamašek"}\r
         zu{"isizulu"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4c376bb..303bf09 100644 (file)
@@ -17,5 +17,5 @@ sr_Latn_XK{
         zgh{"standardni marokanski tamašek"}\r
         zu{"isizulu"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index caa8f1f..3c1f516 100644 (file)
@@ -1081,7 +1081,7 @@ sv{
         VALLADER{"vallader-dialekt"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — alla"}\r
         category-list{"{0}: {1}"}\r
index 7679c9c..3017eb3 100644 (file)
@@ -10,5 +10,5 @@ sv_FI{
     Scripts%variant{\r
         Arab{"persisk-arabiska"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9a62cd5..8355cec 100644 (file)
@@ -637,7 +637,7 @@ sw{
             vaii{"Dijiti za Vai"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.73"}\r
     characterLabelPattern{\r
         all{"{0} — Zote"}\r
         category-list{"{0}: {1}"}\r
index c0afa6e..64a14e7 100644 (file)
@@ -40,5 +40,5 @@ sw_CD{
         wae{"Kiwalser"}\r
         yi{"Kiyidi"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 593dcc7..4ff3f2a 100644 (file)
@@ -42,5 +42,5 @@ sw_KE{
         wae{"Kiwalser"}\r
         zgh{"Tamazight Sanifu ya Moroko"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 85dadca..2e4a476 100644 (file)
@@ -836,7 +836,7 @@ ta{
         PINYIN{"பின்யின் ரோமானைசெஷன்"}\r
         WADEGILE{"வேட்-கைல்ஸ் ரோமனைஷேசன்"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.4"}\r
     characterLabelPattern{\r
         all{"{0} — அனைத்தும்"}\r
         category-list{"{0}: {1}"}\r
index 060e7eb..34b2b9e 100644 (file)
@@ -837,7 +837,7 @@ te{
         REVISED{"సవరించబడిన వర్ణక్రమం"}\r
         WADEGILE{"వేడ్-గైల్స్ రోమనైజేషన్"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — అన్ని"}\r
         category-list{"{0}: {1}"}\r
index e4ee535..90f053d 100644 (file)
@@ -48,5 +48,5 @@ teo{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a52ce90..8b36b0c 100644 (file)
@@ -1054,7 +1054,7 @@ th{
         VALLADER{"วัลลาเดอร์"}\r
         WADEGILE{"การถอดอักษรแบบเวด-ไจลส์"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — ทั้งหมด"}\r
         category-list{"{0}: {1}"}\r
index db392c1..7dcf11d 100644 (file)
@@ -100,5 +100,5 @@ ti{
         Ethi{"ፊደል"}\r
         Latn{"ላቲን"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 36a1643..f0b45ff 100644 (file)
@@ -882,7 +882,7 @@ to{
             tibt{"fika fakatipeti"}\r
         }\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.74"}\r
     codePatterns{\r
         language{"Lea: {0}"}\r
         script{"Tohinima: {0}"}\r
index bdd22ff..74cfe8b 100644 (file)
@@ -1011,7 +1011,7 @@ tr{
         VALENCIA{"Valensiyaca"}\r
         WADEGILE{"Wade-Giles (Latin Alfabesinde Yazımı)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Tümü"}\r
         category-list{"{0}: {1}"}\r
index 47955e0..a254b30 100644 (file)
@@ -48,5 +48,5 @@ twq{
         zh{"Sinuwa senni, Mandareŋ"}\r
         zu{"Zulu senni"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c641e64..7a364a3 100644 (file)
@@ -48,5 +48,5 @@ tzm{
         zh{"Tacinwit,Mandarin"}\r
         zu{"tazulut"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f49c30c..df8ecb2 100644 (file)
@@ -830,7 +830,7 @@ ug{
         VALENCIA{"ۋالېنسىيە"}\r
         WADEGILE{"ۋېي ئائىلىسى پىنيىن لاتىنلاشتۇرۇش"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"تىل: {0}"}\r
         script{"يېزىق: {0}"}\r
index ab2a9dd..1b31a0a 100644 (file)
@@ -878,7 +878,7 @@ uk{
         VALENCIA{"Валенсійська"}\r
         WADEGILE{"Романізація Вейда-Джайлза"}\r
     }\r
-    Version{"2.1.29.38"}\r
+    Version{"2.1.32.60"}\r
     characterLabelPattern{\r
         all{"{0} — усі"}\r
         category-list{"{0}: {1}"}\r
index 5ae5de2..ac8543d 100644 (file)
@@ -626,7 +626,7 @@ ur{
             vaii{"وائی ہندسے"}\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — تمام"}\r
         category-list{"{0}: {1}"}\r
index ea2d1e3..4e267f1 100644 (file)
@@ -25,5 +25,5 @@ ur_IN{
             tibt{"تبتی ہندسے"}\r
         }\r
     }\r
-    Version{"2.1.27.79"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e003ca3..5342bb3 100644 (file)
@@ -521,7 +521,7 @@ uz{
             tibt{"tibet raqamlari"}\r
         }\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.60"}\r
     characterLabelPattern{\r
         all{"{0} — hammasi"}\r
         category-list{"{0}: {1}"}\r
index ba25329..ffb4605 100644 (file)
@@ -10,5 +10,5 @@ uz_Arab{
     Scripts{\r
         Arab{"عربی"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6624f57..839f327 100644 (file)
@@ -407,7 +407,7 @@ uz_Cyrl{
             tibt{"Тибет рақамлари"}\r
         }\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.86"}\r
     codePatterns{\r
         language{"Тил: {0}"}\r
         script{"{0}"}\r
index bdf99c4..fdd810c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7aa9ea4..3b1a87d 100644 (file)
@@ -48,5 +48,5 @@ vai{
         zh{"ꕦꕇꔧ"}\r
         zu{"ꖮꖨ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 59a405d..d30b029 100644 (file)
@@ -49,5 +49,5 @@ vai_Latn{
         zh{"Chaniĩ"}\r
         zu{"Zúlu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38872b5..e66f0f3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0bc610c..f75d1bb 100644 (file)
@@ -979,7 +979,7 @@ vi{
         VALLADER{"VALLADER"}\r
         WADEGILE{"La Mã hóa Wade-Giles"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     characterLabelPattern{\r
         all{"{0} — Tất cả"}\r
         category-list{"{0}: {1}"}\r
index 45ded0c..c635e38 100644 (file)
@@ -48,5 +48,5 @@ vun{
         zh{"Kyichina"}\r
         zu{"Kyizulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0d523b..ae0adae 100644 (file)
@@ -193,7 +193,7 @@ wae{
             latn{"Arabiši Zálä"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         language{"Sprač: {0}"}\r
         script{"Alfabét: {0}"}\r
index bc11dda..5d8ac18 100644 (file)
@@ -48,5 +48,5 @@ xog{
         zh{"Olucayina"}\r
         zu{"Oluzzulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f54be8f..5fbe417 100644 (file)
@@ -48,5 +48,5 @@ yav{
         zh{"sinúɛ"}\r
         zu{"nusulú"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b72a12f..b651045 100644 (file)
@@ -171,7 +171,7 @@ yi{
             gregorian{"גרעגארישער קאַלענדאַר"}\r
         }\r
     }\r
-    Version{"2.1.27.97"}\r
+    Version{"2.1.31.33"}\r
     codePatterns{\r
         language{"שפראַך: {0}"}\r
         script{"שריפֿט: {0}"}\r
index baaa8fd..2d72020 100644 (file)
@@ -101,5 +101,5 @@ yo{
         zh{"Èdè Mandari"}\r
         zu{"Èdè Ṣulu"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cb4f20e..3d02b2e 100644 (file)
@@ -11,5 +11,5 @@ yo_BJ{
         tr{"Èdè Tɔɔkisi"}\r
         zu{"Èdè Shulu"}\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0caa6cd..698b96f 100644 (file)
@@ -1024,7 +1024,7 @@ yue{
         VALLADER{"瑞士瓦勒德方言"}\r
         WADEGILE{"威妥瑪式拼音"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     characterLabelPattern{\r
         all{"{0} — 全部"}\r
         compatibility{"{0} — 相容性"}\r
index cb5badf..0f0d840 100644 (file)
@@ -61,5 +61,5 @@ zgh{
             islamic{"ⴰⵙⵎⵍⵓⵙⵙⴰⵏ ⵏ ⵍⵉⵙⵍⴰⵎ"}\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 59b7fcd..6c33a95 100644 (file)
@@ -954,7 +954,7 @@ zh{
         VALLADER{"瑞士瓦勒德方言"}\r
         WADEGILE{"WG 威氏拼音法"}\r
     }\r
-    Version{"2.1.29.84"}\r
+    Version{"2.1.33.94"}\r
     characterLabelPattern{\r
         all{"{0} — 全部"}\r
         category-list{"{0}: {1}"}\r
index c64cac5..1e311fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 086c618..1c30602 100644 (file)
@@ -1025,7 +1025,7 @@ zh_Hant{
         VALLADER{"瑞士瓦勒德方言"}\r
         WADEGILE{"威妥瑪式拼音"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.94"}\r
     characterLabelPattern{\r
         all{"{0} — 全部"}\r
         category-list{"{0}: {1}"}\r
index 6d747f9..c219252 100644 (file)
@@ -127,7 +127,7 @@ zh_Hant_HK{
         REVISED{"已修訂拼字法"}\r
         SCOTLAND{"蘇格蘭標準英語"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     characterLabelPattern{\r
         enclosed{"{0} — 包含"}\r
         historic{"{0} — 舊式"}\r
index 9d2c5aa..9589854 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 750dbf2..f120f57 100644 (file)
@@ -629,7 +629,7 @@ zu{
             vaii{"Izinhlazu Zezinombolo ze-Vai"}\r
         }\r
     }\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.31.74"}\r
     characterLabelPattern{\r
         all{"{0} — All"}\r
         category-list{"{0}: {1}"}\r
index 79bee19..3b8064c 100644 (file)
@@ -200,10 +200,19 @@ af{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Neem die {0}e afdraai na regs."}\r
+            }\r
+            plural{\r
+                one{"{0} dag"}\r
+                other{"{0} dae"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c903a09..59ce215 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 af_NA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 806e3ec..e15bf85 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 af_ZA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 79078f3..4d87aac 100644 (file)
@@ -22,7 +22,7 @@ agq{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f8e2b25..b72facf 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 agq_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d699fff..9e58da3 100644 (file)
@@ -15,7 +15,7 @@ ak{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d6145f5..4506ad6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ak_GH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dc2490f..f4144e9 100644 (file)
@@ -205,11 +205,20 @@ am{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"በቀኝ በኩል ባለው በ{0}ኛው መታጠፊያ ግባ።"}\r
+            }\r
+            plural{\r
+                one{"{0} ቀን"}\r
+                other{"{0} ቀናት"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"ethi"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 9617206..e12ac7c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 am_ET{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f96a5c0..4a2027b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar{\r
-    AuxExemplarCharacters{"[\u200C\u200D\u200E\u200F پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک گ ی]"}\r
+    AuxExemplarCharacters{"[\u0640 \u200C\u200D\u200E\u200F پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک گ ی]"}\r
     Ellipsis{\r
         final{"{0}…"}\r
         initial{"…{0}"}\r
@@ -15,7 +15,7 @@ ar{
         "آ ب ة ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ى ي]"\r
     }\r
     ExemplarCharactersIndex{"[ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي]"}\r
-    ExemplarCharactersPunctuation{"[\\- ‐ – — ، ؛ \\: ! ؟ . ' \u0022 ( ) \\[ \\]]"}\r
+    ExemplarCharactersPunctuation{"[\\- ‐ – — ، ؛ \\: ! ؟ . ' \u0022 ( ) \\[ \\] « » \u2026]"}\r
     MoreInformation{"؟"}\r
     NumberElements{\r
         arab{\r
@@ -366,10 +366,23 @@ ar{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"اتجه إلى المنعطف الـ {0} يمينًا."}\r
+            }\r
+            plural{\r
+                few{"{0} أولاد حضروا"}\r
+                many{"{0} ولدًا حضروا"}\r
+                one{"ولد واحد حضر"}\r
+                other{"{0} ولد حضروا"}\r
+                two{"ولدان حضرا"}\r
+                zero{"{0} كتاب"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"arab"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.86"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 5409c75..cdb4dd3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_001{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 58e3e9a..770ccd4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_AE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             eras{\r
index f668f6c..a44e4b5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_BH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4718546..8df511d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_DJ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index acbf7fe..f1a67d7 100644 (file)
@@ -10,7 +10,7 @@ ar_DZ{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index ca3350e..e1bef50 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_EG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 102ffca..6a4708e 100644 (file)
@@ -4,5 +4,5 @@ ar_EH{
     NumberElements{\r
         default{"latn"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8b43fbb..a4136a6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_ER{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b9ff797..bad6566 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_IL{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 50f3775..af0f2df 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_IQ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 794404c..ce77f75 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_JO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index defeac0..692edbd 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_KM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index c71fa52..0f9ac56 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_KW{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e360cf8..1ed929f 100644 (file)
@@ -9,7 +9,7 @@ ar_LB{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 3a692f4..9274e89 100644 (file)
@@ -10,7 +10,7 @@ ar_LY{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 218c0f5..60ac0d2 100644 (file)
@@ -11,7 +11,7 @@ ar_MA{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index ad48ef3..2c9a7b1 100644 (file)
@@ -9,7 +9,7 @@ ar_MR{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 75d7007..505f05d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_OM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b0e75c0..6b28eab 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_PS{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 926610d..279803a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_QA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2b26b11..ed97a66 100644 (file)
@@ -8,7 +8,7 @@ ar_SA{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         default{"islamic-umalqura"}\r
         gregorian{\r
index 3286d50..9dc2875 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_SD{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0d35163..a5c179c 100644 (file)
@@ -8,5 +8,5 @@ ar_SO{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eb02064..20ad16a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_SS{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index edc70d5..7231a4a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_SY{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index eba3b6c..8f291a8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_TD{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 37a7cf6..29a3dbc 100644 (file)
@@ -10,7 +10,7 @@ ar_TN{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 5bcf27d..a8db505 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_YE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/locales/ars.txt b/source/data/locales/ars.txt
new file mode 100644 (file)
index 0000000..9bb22b9
--- /dev/null
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+ars{\r
+    "%%ALIAS"{"ar_SA"}\r
+}\r
index c1bb16d..73ee237 100644 (file)
@@ -18,7 +18,7 @@ as{
         }\r
         native{"beng"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index a679ffb..0bebae7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 as_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e02a4a2..2a9f108 100644 (file)
@@ -11,7 +11,7 @@ asa{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a156c76..3c9c8ab 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 asa_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 16d61db..98ec553 100644 (file)
@@ -221,10 +221,16 @@ ast{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            plural{\r
+                one{"{0} día"}\r
+                other{"{0} díes"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index f175017..7357025 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ast_ES{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 88230ad..d3cda05 100644 (file)
@@ -200,10 +200,22 @@ az{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"{0}-cü sağ döngəni seçin."}\r
+                many{"{0}-cı sağ döngəni seçin."}\r
+                one{"{0}-ci sağ döngəni seçin."}\r
+                other{"{0}-cu sağ döngəni seçin."}\r
+            }\r
+            plural{\r
+                one{"Alış-veriş katınızda {0} X var. Almaq istəyirsiniz?"}\r
+                other{"Alış-veriş kartınızda {0} X var. Almaq istəyirsiniz?"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
@@ -242,7 +254,7 @@ az{
                 yyyyMEd{"GGGGG dd.MM.y, E"}\r
                 yyyyMMM{"G MMM y"}\r
                 yyyyMMMEd{"G d MMM y, E"}\r
-                yyyyMMMM{"G y MMMM"}\r
+                yyyyMMMM{"G MMMM y"}\r
                 yyyyMMMd{"G d MMM y"}\r
                 yyyyMd{"GGGGG dd.MM.y"}\r
                 yyyyQQQ{"G y QQQ"}\r
@@ -382,7 +394,7 @@ az{
                 yMEd{"dd.MM.y, E"}\r
                 yMMM{"MMM y"}\r
                 yMMMEd{"d MMM y, E"}\r
-                yMMMM{"y MMMM"}\r
+                yMMMM{"MMMM y"}\r
                 yMMMd{"d MMM y"}\r
                 yMd{"dd.MM.y"}\r
                 yQQQ{"y QQQ"}\r
index 129cae9..a49dbd1 100644 (file)
@@ -26,7 +26,7 @@ az_Cyrl{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.74"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index bc3b755..ffc7620 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Cyrl_AZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4ce2adb..4c0b75a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0bbd205..51285e0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn_AZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8fe93e2..9407958 100644 (file)
@@ -23,7 +23,7 @@ bas{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 531f218..7996233 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bas_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 49a1216..3d4691a 100644 (file)
@@ -271,10 +271,22 @@ be{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"{0}-і дом злева"}\r
+                other{"{0}-ы дом злева"}\r
+            }\r
+            plural{\r
+                few{"з {0} кніг за {0} дні"}\r
+                many{"з {0} кніг за {0} дзён"}\r
+                one{"з {0} кнігі за {0} дзень"}\r
+                other{"з {0} кніги за {0} дні"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.66"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 5cdfd7a..232d7f5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 be_BY{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 82f8049..80e66b0 100644 (file)
@@ -12,7 +12,7 @@ bem{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 31330b7..9418213 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bem_ZM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1a8dc4f..7779102 100644 (file)
@@ -11,7 +11,7 @@ bez{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index fc8993d..6a24740 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bez_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 02da35c..a8c65e7 100644 (file)
@@ -22,8 +22,8 @@ bg{
                 range{"{0} – {1}"}\r
             }\r
             patterns{\r
-                accountingFormat{"#0.00 ¤;(#0.00 ¤)"}\r
-                currencyFormat{"#0.00 ¤"}\r
+                accountingFormat{"0.00 ¤;(0.00 ¤)"}\r
+                currencyFormat{"0.00 ¤"}\r
                 decimalFormat{"#,##0.###"}\r
                 percentFormat{"#,##0%"}\r
                 scientificFormat{"#E0"}\r
@@ -197,10 +197,19 @@ bg{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Завийте надясно по {0}-ата пресечка."}\r
+            }\r
+            plural{\r
+                one{"{0} ден"}\r
+                other{"{0} дена"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.33.75"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1363c5c..08a3624 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bg_BG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 481cb7e..660d64e 100644 (file)
@@ -12,7 +12,7 @@ bm{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 2e3638e..f0e75ca 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bm_ML{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03651d0..86f9bd4 100644 (file)
@@ -219,10 +219,23 @@ bn{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"ডান দিকে {0}র্থ বাঁকটি নিন।"}\r
+                many{"ডান দিকে {0}ষ্ঠ বাঁকটি নিন।"}\r
+                one{"ডান দিকে {0}ম বাঁকটি নিন।"}\r
+                other{"ডান দিকে {0}তম বাঁকটি নিন।"}\r
+                two{"ডান দিকে {0}য় বাঁকটি নিন।"}\r
+            }\r
+            plural{\r
+                one{"সসে {0}টি আপেল খেল, সেটা ভাল"}\r
+                other{"সসে {0}টি আপেল খেল, সেগুলি ভাল"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"beng"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 01d1331..5c3efb3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bn_BD{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2625d6a..ac62d73 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bn_IN{\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 858b006..ecb9a41 100644 (file)
@@ -32,7 +32,7 @@ bo{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d14460a..d078c62 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bo_CN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 446d430..c910621 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bo_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3eda0a7..33f32d0 100644 (file)
@@ -47,10 +47,19 @@ br{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            plural{\r
+                few{"{0} deiz"}\r
+                many{"{0} a zeizioù"}\r
+                one{"{0} deiz"}\r
+                other{"{0} deiz"}\r
+                two{"{0} zeiz"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b579857..f70dc3a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 br_FR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5ca9c34..5474437 100644 (file)
@@ -35,7 +35,7 @@ brx{
         }\r
         native{"deva"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index fa00f98..d25903d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 brx_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 374db59..c8c44a2 100644 (file)
@@ -230,10 +230,21 @@ bs{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Skrenite na {0}. križanju desno."}\r
+            }\r
+            plural{\r
+                few{"za {0} mjeseca"}\r
+                many{"za {0} mjeseci"}\r
+                one{"za {0} mjesec"}\r
+                other{"za {0} mjeseci"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8105216..d7220de 100644 (file)
@@ -159,7 +159,7 @@ bs_Cyrl{
             }\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.72"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 5db9081..4335d9f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Cyrl_BA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 20b4126..972dc01 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d77e537..b892c9e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn_BA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 472a8ae..3bbd232 100644 (file)
@@ -200,10 +200,22 @@ ca{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"Agafa el {0}t a la dreta."}\r
+                one{"Agafa el {0}r a la dreta."}\r
+                other{"Agafa el {0}è a la dreta."}\r
+                two{"Agafa el {0}n a la dreta."}\r
+            }\r
+            plural{\r
+                one{"{0} dia"}\r
+                other{"{0} dies"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index eb8c0da..8084f9d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca_AD{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a05a155..17b5d30 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca_ES{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2ca4ae8..d037446 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca_FR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5906109..2ad3e6c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca_IT{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c7f18c6..8030b5d 100644 (file)
@@ -192,7 +192,7 @@ ce{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 170e4b9..290d689 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ce_RU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7bf18b8..8185aed 100644 (file)
@@ -10,7 +10,7 @@ cgg{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b14933f..37782c1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cgg_UG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8018b09..3bb5ecb 100644 (file)
@@ -203,7 +203,7 @@ chr{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c244f04..82fc619 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 chr_US{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 02905d2..2563157 100644 (file)
@@ -54,7 +54,7 @@ ckb{
         minimumGroupingDigits{"1"}\r
         native{"arab"}\r
     }\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ddb1eda..c395e28 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb_IQ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 089b81e..2a21718 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb_IR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         default{"persian"}\r
         gregorian{\r
index e6bccf8..09b1d4a 100644 (file)
@@ -282,10 +282,21 @@ cs{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Na {0}. křižovatce odbočte vpravo."}\r
+            }\r
+            plural{\r
+                few{"{0} dny"}\r
+                many{"{0} dne"}\r
+                one{"{0} den"}\r
+                other{"{0} dní"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             availableFormats{\r
index d101286..62dfe6d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cs_CZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 25d5402..a4954fc 100644 (file)
@@ -355,10 +355,28 @@ cy{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"{0}ydd ci"}\r
+                many{"{0}ed ci"}\r
+                one{"ci {0}af"}\r
+                other{"ci rhif {0}"}\r
+                two{"{0}il gi"}\r
+                zero{"{0}fed ci"}\r
+            }\r
+            plural{\r
+                few{"{0} chi, {0} cath"}\r
+                many{"{0} chi, {0} chath"}\r
+                one{"{0} ci, {0} gath"}\r
+                other{"{0} ci, {0} cath"}\r
+                two{"{0} gi, {0} gath"}\r
+                zero{"{0} cŵn, {0} cathod"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index db01da7..547e137 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cy_GB{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 59bcabb..df0211f 100644 (file)
@@ -197,10 +197,19 @@ da{
                 timeSeparator{"."}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Tag den {0}. vej til højre."}\r
+            }\r
+            plural{\r
+                one{"{0} dag"}\r
+                other{"{0} dage"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 90468bd..6383109 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 da_DK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0df430a..77a2fa8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 da_GL{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index a7be4b3..2b67547 100644 (file)
@@ -12,7 +12,7 @@ dav{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ad3c1e8..332362d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dav_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bb08c6c..97c6d1a 100644 (file)
@@ -139,16 +139,16 @@ de{
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        one{"0 Tsd'.'"}\r
-                        other{"0 Tsd'.'"}\r
+                        one{"0"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
-                        one{"00 Tsd'.'"}\r
-                        other{"00 Tsd'.'"}\r
+                        one{"0"}\r
+                        other{"0"}\r
                     }\r
                     100000{\r
-                        one{"000 Tsd'.'"}\r
-                        other{"000 Tsd'.'"}\r
+                        one{"0"}\r
+                        other{"0"}\r
                     }\r
                     1000000{\r
                         one{"0 Mio'.'"}\r
@@ -203,10 +203,19 @@ de{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}. Abzweigung nach rechts nehmen"}\r
+            }\r
+            plural{\r
+                one{"{0} Tag"}\r
+                other{"{0} Tage"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 546f0c6..65c6b8c 100644 (file)
@@ -13,7 +13,7 @@ de_AT{
             }\r
         }\r
     }\r
-    Version{"2.1.28.73"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 276c25f..4696925 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_BE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3590d19..314fdc3 100644 (file)
@@ -14,9 +14,9 @@ de_CH{
             }\r
             symbols{\r
                 decimal{"."}\r
-                group{"'"}\r
+                group{""}\r
             }\r
         }\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2ffb568..0457b99 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_DE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6e8600..f736601 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_IT{\r
-    Version{"2.1.28.58"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index ffc05c2..ad1e6e3 100644 (file)
@@ -9,11 +9,11 @@ de_LI{
             }\r
             symbols{\r
                 decimal{"."}\r
-                group{"'"}\r
+                group{""}\r
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index f26a275..dbdfbfc 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_LU{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkersNarrow{\r
index 574e06a..8aa7265 100644 (file)
@@ -17,7 +17,7 @@ dje{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index bc66792..7fa4142 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dje_NE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 66a4742..682505c 100644 (file)
@@ -195,7 +195,7 @@ dsb{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c5af5c2..dfd2e47 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dsb_DE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c5b4d59..d890233 100644 (file)
@@ -20,7 +20,7 @@ dua{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b25ec16..35ac1cb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dua_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b0e566b..0a3b87f 100644 (file)
@@ -17,7 +17,7 @@ dyo{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4f2f229..d820173 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dyo_SN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e2603fb..9475e9d 100644 (file)
@@ -84,6 +84,11 @@ dz{
                 plusSign{"+"}\r
             }\r
         }\r
+        minimalPairs{\r
+            plural{\r
+                other{"ཉིནམ་ {0} "}\r
+            }\r
+        }\r
         native{"tibt"}\r
         tibt{\r
             symbols{\r
@@ -100,7 +105,7 @@ dz{
             }\r
         }\r
     }\r
-    Version{"2.1.29.61"}\r
+    Version{"2.1.31.34"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c5b0de3..5ab1f9d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dz_BT{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c756392..b5778b2 100644 (file)
@@ -11,7 +11,7 @@ ebu{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8c3989b..7a1736f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ebu_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c146c2a..effd219 100644 (file)
@@ -75,7 +75,7 @@ ee{
             }\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e2dcd81..e1b3995 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ee_GH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b575799..b198936 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ee_TG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 6d0d2dc..407c6b6 100644 (file)
@@ -200,11 +200,20 @@ el{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Στρίψτε στην {0}η γωνία δεξιά."}\r
+            }\r
+            plural{\r
+                one{"{0} ημέρα"}\r
+                other{"{0} ημέρες"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"grek"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index f2aafa0..86a27e9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 el_CY{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 473e1ad..97a35ea 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 el_GR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e97c5a5..8b83df3 100644 (file)
@@ -191,8 +191,20 @@ en{
                 superscriptingExponent{"×"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"Take the {0}rd right."}\r
+                one{"Take the {0}st right."}\r
+                other{"Take the {0}th right."}\r
+                two{"Take the {0}nd right."}\r
+            }\r
+            plural{\r
+                one{"{0} day"}\r
+                other{"{0} days"}\r
+            }\r
+        }\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -1232,13 +1244,26 @@ en{
                 }\r
             }\r
         }\r
+        dayOfYear{\r
+            dn{"day of year"}\r
+        }\r
+        dayOfYear-short{\r
+            dn{"day of yr."}\r
+        }\r
         dayperiod{\r
             dn{"AM/PM"}\r
             dn%variant{"am/pm"}\r
         }\r
+        dayperiod-short{\r
+            dn{"AM/PM"}\r
+            dn%variant{"am/pm"}\r
+        }\r
         era{\r
             dn{"era"}\r
         }\r
+        era-short{\r
+            dn{"era"}\r
+        }\r
         fri{\r
             relative{\r
                 "-1"{"last Friday"}\r
@@ -1795,9 +1820,24 @@ en{
                 }\r
             }\r
         }\r
+        weekOfMonth{\r
+            dn{"week of month"}\r
+        }\r
+        weekOfMonth-short{\r
+            dn{"wk. of mo."}\r
+        }\r
         weekday{\r
             dn{"day of the week"}\r
         }\r
+        weekday-short{\r
+            dn{"day of wk."}\r
+        }\r
+        weekdayOfMonth{\r
+            dn{"weekday of the month"}\r
+        }\r
+        weekdayOfMonth-short{\r
+            dn{"wkday. of mo."}\r
+        }\r
         year{\r
             dn{"year"}\r
             relative{\r
@@ -1837,6 +1877,9 @@ en{
         zone{\r
             dn{"time zone"}\r
         }\r
+        zone-short{\r
+            dn{"zone"}\r
+        }\r
     }\r
     listPattern{\r
         standard{\r
index 9d4dc78..6102677 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_001{\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
index 29a67c0..41e4600 100644 (file)
@@ -14,7 +14,7 @@ en_150{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 93d0c87..8a0d454 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f5a6411..6eaf0f6 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index e38d778..7555155 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AS{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f032cd7..a0c42ef 100644 (file)
@@ -14,5 +14,5 @@ en_AT{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c614d9a..4f00017 100644 (file)
@@ -9,7 +9,7 @@ en_AU{
             }\r
         }\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.62"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index 7083244..84a0efd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3a54d74..ae54a4e 100644 (file)
@@ -13,7 +13,7 @@ en_BE{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 2ac4c19..33e77f4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BI{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 17ad945..a3b9186 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03e7849..95e82b5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3747a3a..677df7e 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 464f60e..8289b54 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 22485c2..0ee0c15 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
index ca6ff9f..d85cc61 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 026eac8..3919c84 100644 (file)
@@ -13,5 +13,5 @@ en_CH{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e9b97e1..2501fc4 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index d2e6cd2..9fb27c4 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 633829f..4b9b79e 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 81d8657..46da087 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a90a2ee..6a21192 100644 (file)
@@ -12,5 +12,5 @@ en_DE{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index afd1f99..ddfd8fd 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 783c665..80fabca 100644 (file)
@@ -12,7 +12,7 @@ en_DK{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index 4eaa7dc..b548583 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 228a8a8..7fd2c9a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 56c27a6..634a76e 100644 (file)
@@ -13,7 +13,7 @@ en_FI{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index c439098..86f8e9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 54410e8..ba255c5 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 78ffc47..eab91ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bc93380..244d540 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.24"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index ab0594c..7921b24 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6a6ab99..69c8058 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 33fc5d4..b66f585 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bb8f5f4..667e366 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index e0d4e60..1a05f40 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4a3e72b..256d083 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dec9373..f7397d6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 297e5ac..dab5987 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6dd04df..df8a004 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 995b671..71034d7 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index 2af01f6..3d7409a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index e191759..3011950 100644 (file)
@@ -11,7 +11,7 @@ en_IN{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 04e3b38..b07f34d 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 3c0ea36..f5a11ab 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 67edbc7..d812c18 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e192b33..2bf986d 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 3f8c7e1..899b1ea 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f755a2f..35fb03c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e26f444..bd356e9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7abb21b..bfd0689 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 07b6a83..3fc63c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5123bd..b723857 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 16ff510..1726249 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 2fedbad..896123a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0b1b6a5..f6dfb6a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1acf871..680d6fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MP{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2550fd9..0e04e95 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 54a384b..87588fd 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 449706a..3400c0e 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 58ee57a..873b8e1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 064aa6e..b36d9ba 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26854fe..5f0af42 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d709e94..e4dcad2 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 5038494..745a114 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 534294a..38287ea 100644 (file)
@@ -10,5 +10,5 @@ en_NL{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d1b58a9..1d2feef 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index bbcd1b6..1ece2f6 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 5c9a4c6..95d508d 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c1792a4..6aa4d92 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0ca66f9..080d0e6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e2c4699..96e49db 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4e27c18..08b159c 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index ec32f33..8ae7e2c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0af3d13..30541dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 17a50b1..d0918a8 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index cb507b5..e2de69a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bfa4714..d0761ab 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 6206b27..87a33e2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c43fb9c..5d54b9e 100644 (file)
@@ -13,7 +13,7 @@ en_SE{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0db2056..64467d4 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 064220d..29ee033 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 14d2d24..2d5acc9 100644 (file)
@@ -12,5 +12,5 @@ en_SI{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4005802..3e61485 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 002988b..2b3a430 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index de1eebd..38d5dc1 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 47c792d..cc8b6f1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eaabbe1..852eb0f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 81cd9f7..d6622a5 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index f1697f5..d27b6ec 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 599a8fe..21b8b30 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f2d4d59..d7868af 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index b8b18af..51903ab 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 0b86f84..df87949 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 6d611a3..d466437 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a8c1419..aa8243b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_US{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ce508b1..278d6f8 100644 (file)
@@ -15,5 +15,5 @@ en_US_POSIX{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index de17869..12317cf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6a295b..ba6619b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ba9e53c..e2d5079 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VI{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2cecbf4..12b8824 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a3f70e3..8c90fd7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 586724a..0e6d5c4 100644 (file)
@@ -14,7 +14,7 @@ en_ZA{
             }\r
         }\r
     }\r
-    Version{"2.1.27.64"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 05bb346..19ed0d0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 68e4dc4..a8cbbc8 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index dc2d4de..3a59fdc 100644 (file)
@@ -13,7 +13,7 @@ eo{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d914e6e..c767e3f 100644 (file)
@@ -200,10 +200,19 @@ es{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Toma la {0}.ª a la derecha."}\r
+            }\r
+            plural{\r
+                one{"{0} día"}\r
+                other{"{0} días"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.80"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -980,7 +989,7 @@ es{
         japanese_kana{"Kana japoneses"}\r
         kanbun{"Kanbun"}\r
         kanji{"Kanji"}\r
-        keycap{"tecla 10"}\r
+        keycap{"tecla"}\r
         leftwards_arrows{"Flechas hacia la izquierda"}\r
         leftwards_rightwards_arrows{"Flechas hacia la izquierda y la derecha"}\r
         letterlike_symbols{"Símbolos con letras"}\r
index 2c8380a..95c8a83 100644 (file)
@@ -42,7 +42,7 @@ es_419{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 330aa4a..5eac1eb 100644 (file)
@@ -15,7 +15,7 @@ es_AR{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index a61fe1e..985b956 100644 (file)
@@ -10,7 +10,7 @@ es_BO{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 2f5e37a..e68498b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/locales/es_BZ.txt b/source/data/locales/es_BZ.txt
new file mode 100644 (file)
index 0000000..aa10911
--- /dev/null
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+es_BZ{\r
+    %%Parent{"es_419"}\r
+    Version{"2.1.32.37"}\r
+}\r
index 61d6ba4..06de2c9 100644 (file)
@@ -14,7 +14,7 @@ es_CL{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c115a14..967cab6 100644 (file)
@@ -15,7 +15,7 @@ es_CO{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 3d1dd58..75486c8 100644 (file)
@@ -10,7 +10,7 @@ es_CR{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 791d7f5..66f010e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index aea3380..5b72ad0 100644 (file)
@@ -11,7 +11,7 @@ es_DO{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6a21e1b..09bdd5d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_EA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dcfe892..427c233 100644 (file)
@@ -13,7 +13,7 @@ es_EC{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 740a9dc..79fe19a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_ES{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f0ec04f..a314885 100644 (file)
@@ -8,5 +8,5 @@ es_GQ{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1361334..ff2f6be 100644 (file)
@@ -59,7 +59,7 @@ es_GT{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 2c1980a..8181e0b 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_HN{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 610d36d..416ff84 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_IC{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 54aa624..a4eb04c 100644 (file)
@@ -10,7 +10,7 @@ es_MX{
             }\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4861fb1..bd73bfa 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_NI{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index b54598e..4f1159d 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PA{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 398fecf..45a4eef 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 74e67f0..65eec7d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 4597430..ee48570 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d08be5c..cd1c3a2 100644 (file)
@@ -13,7 +13,7 @@ es_PY{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index b67218e..191c214 100644 (file)
@@ -5,7 +5,7 @@ es_SV{
     NumberElements{\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index d061196..83ad851 100644 (file)
@@ -22,7 +22,7 @@ es_US{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.74"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index f7732aa..83c2c42 100644 (file)
@@ -14,7 +14,7 @@ es_UY{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 1df68dd..c73d2ec 100644 (file)
@@ -13,7 +13,7 @@ es_VE{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 8e94250..84db98f 100644 (file)
@@ -196,10 +196,19 @@ et{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Tehke {0}. parempööre."}\r
+            }\r
+            plural{\r
+                one{"{0} ööpäev"}\r
+                other{"{0} ööpäeva"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         chinese{\r
             cyclicNameSets{\r
index 5801a58..5774de7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 et_EE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 10503de..1d82d9b 100644 (file)
@@ -150,10 +150,19 @@ eu{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}. bira eskuinetara"}\r
+            }\r
+            plural{\r
+                one{"Nire {0} lagunarekin nago"}\r
+                other{"Nire {0} lagunekin nago"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -326,10 +335,6 @@ eu{
                 "AM",\r
                 "PM",\r
             }\r
-            AmPmMarkersNarrow{\r
-                "g",\r
-                "a",\r
-            }\r
             DateTimePatterns{\r
                 "HH:mm:ss (zzzz)",\r
                 "HH:mm:ss (z)",\r
@@ -480,53 +485,34 @@ eu{
             dayPeriod{\r
                 format{\r
                     abbreviated{\r
-                        afternoon1{"arratsaldeko"}\r
-                        afternoon2{"arratsaldea"}\r
-                        evening1{"arratsaldeko"}\r
-                        midnight{"gauerdia"}\r
-                        morning1{"goizeko"}\r
-                        morning2{"goiza"}\r
-                        night1{"gaueko"}\r
-                    }\r
-                    narrow{\r
-                        afternoon1{"arratsaldeko"}\r
-                        afternoon2{"arratsaldea"}\r
-                        evening1{"arratsaldeko"}\r
+                        afternoon1{"eguerd."}\r
+                        afternoon2{"arrats."}\r
+                        evening1{"iluntz."}\r
                         midnight{"gauerdia"}\r
-                        morning1{"goizeko"}\r
-                        morning2{"goiza"}\r
-                        night1{"gauean"}\r
+                        morning1{"goiz."}\r
+                        morning2{"goizeko"}\r
+                        night1{"gau."}\r
                     }\r
                     wide{\r
-                        afternoon1{"arratsaldeko"}\r
-                        afternoon2{"arratsaldea"}\r
-                        evening1{"arratsaldeko"}\r
+                        afternoon1{"eguerdiko"}\r
+                        afternoon2{"arratsaldeko"}\r
+                        evening1{"iluntzeko"}\r
                         midnight{"gauerdia"}\r
-                        morning1{"goizeko"}\r
-                        morning2{"goiza"}\r
+                        morning1{"goizaldeko"}\r
+                        morning2{"goizeko"}\r
                         night1{"gaueko"}\r
                     }\r
                 }\r
                 stand-alone{\r
                     abbreviated{\r
-                        afternoon1{"eguerdia"}\r
-                        afternoon2{"arratsaldea"}\r
+                        afternoon1{"eguerd."}\r
+                        afternoon2{"arrats."}\r
                         am{"AM"}\r
                         evening1{"iluntz."}\r
                         midnight{"gauerdia"}\r
-                        morning1{"goizaldea"}\r
+                        morning1{"goiz."}\r
                         morning2{"goiza"}\r
-                        night1{"gau."}\r
-                        pm{"PM"}\r
-                    }\r
-                    narrow{\r
-                        afternoon1{"eguerdia"}\r
-                        afternoon2{"arratsaldea"}\r
-                        am{"AM"}\r
-                        evening1{"iluntz."}\r
-                        morning1{"goizaldea"}\r
-                        morning2{"goiza"}\r
-                        night1{"gau."}\r
+                        night1{"gaua"}\r
                         pm{"PM"}\r
                     }\r
                     wide{\r
index 8d47614..4435291 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eu_ES{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c22965b..0af1b35 100644 (file)
@@ -22,7 +22,7 @@ ewo{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 9a491df..ee87b16 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ewo_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a2a34b2..e26e7d5 100644 (file)
@@ -15,7 +15,7 @@ fa{
         "ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ة ی]"\r
     }\r
     ExemplarCharactersIndex{"[آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی]"}\r
-    ExemplarCharactersPunctuation{"[\\- ‐ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"}\r
+    ExemplarCharactersPunctuation{"[\u0640 \\- ‐ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"}\r
     MoreInformation{"؟"}\r
     NumberElements{\r
         arab{\r
@@ -238,10 +238,19 @@ fa{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"در پیچ {0}ام سمت راست بپیچید."}\r
+            }\r
+            plural{\r
+                one{"او {0} فیلم در هفته می‌بیند که کمدی است."}\r
+                other{"او {0} فیلم در هفته می‌بیند که کمدی هستند."}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         chinese{\r
             cyclicNameSets{\r
@@ -1158,6 +1167,34 @@ fa{
             }\r
         }\r
         persian{\r
+            DateTimePatterns{\r
+                "H:mm:ss (zzzz)",\r
+                "H:mm:ss (z)",\r
+                "H:mm:ss",\r
+                "H:mm",\r
+                "y MMMM d, EEEE",\r
+                "d MMMM y",\r
+                "d MMM y",\r
+                "y/M/d",\r
+                "{1}،‏ {0}",\r
+                "{1}، ساعت {0}",\r
+                "{1}، ساعت {0}",\r
+                "{1}،‏ {0}",\r
+                "{1}،‏ {0}",\r
+            }\r
+            availableFormats{\r
+                y{"y"}\r
+                yyyy{"y"}\r
+                yyyyM{"y/M"}\r
+                yyyyMEd{"E y/M/d"}\r
+                yyyyMMM{"MMM y"}\r
+                yyyyMMMEd{"E d MMM y"}\r
+                yyyyMMMM{"y MMMM"}\r
+                yyyyMMMd{"d MMM y"}\r
+                yyyyMd{"y/M/d"}\r
+                yyyyQQQ{"QQQQ y"}\r
+                yyyyQQQQ{"QQQQ y"}\r
+            }\r
             eras{\r
                 abbreviated{\r
                     "ه‍.ش.",\r
@@ -1166,6 +1203,43 @@ fa{
                     "هجری شمسی",\r
                 }\r
             }\r
+            intervalFormats{\r
+                y{\r
+                    y{"y تا y"}\r
+                }\r
+                yM{\r
+                    M{"y/M تا y/M"}\r
+                    y{"y/M تا y/M"}\r
+                }\r
+                yMEd{\r
+                    M{"E y/M/d تا E y/M/d"}\r
+                    d{"E y/M/d تا E y/M/d"}\r
+                    y{"E y/M/d تا E y/M/d"}\r
+                }\r
+                yMMM{\r
+                    M{"LLL تا MMM y"}\r
+                    y{"MMM y تا MMM y"}\r
+                }\r
+                yMMMEd{\r
+                    M{"E d LLL تا E d MMM y"}\r
+                    d{"E d LLL تا E d MMM y"}\r
+                    y{"E d MMM y تا E d MMM y"}\r
+                }\r
+                yMMMM{\r
+                    M{"LLLL تا MMMM y"}\r
+                    y{"MMMM y تا MMMM y"}\r
+                }\r
+                yMMMd{\r
+                    M{"d LLL تا d MMM y"}\r
+                    d{"d تا d MMM y"}\r
+                    y{"d MMM y تا d MMM y"}\r
+                }\r
+                yMd{\r
+                    M{"y/M/d تا y/M/d"}\r
+                    d{"y/M/d تا y/M/d"}\r
+                    y{"y/M/d تا y/M/d"}\r
+                }\r
+            }\r
             monthNames{\r
                 format{\r
                     abbreviated{\r
index c85cc67..faff2c7 100644 (file)
@@ -18,7 +18,7 @@ fa_AF{
             }\r
         }\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             appendItems{\r
index d4976bd..5e88314 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fa_IR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 653cb8b..e7b03e6 100644 (file)
@@ -15,7 +15,7 @@ ff{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 520a40e..b0a5ac3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 90d9877..619454e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff_GN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0ef2770..7749d83 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff_MR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index c752e40..45198cf 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff_SN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7c2d78c..a7198b3 100644 (file)
@@ -16,7 +16,7 @@ fi{
     }\r
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s š t u v w x y z ž å ä ö]"}\r
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö]"}\r
-    ExemplarCharactersPunctuation{"[‐ – , ; \\: ! ? . … ’ ” » ( ) \\[ \\] § @ * / \\\\ \\& #]"}\r
+    ExemplarCharactersPunctuation{"[\\- ‐ – , ; \\: ! ? . … ’ ” » ( ) \\[ \\] § @ * / \\\\ \\& #]"}\r
     MoreInformation{"?"}\r
     NumberElements{\r
         default{"latn"}\r
@@ -201,10 +201,19 @@ fi{
                 timeSeparator{"."}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Käänny {0}. risteyksestä oikealle."}\r
+            }\r
+            plural{\r
+                one{"{0} päivä"}\r
+                other{"{0} päivää"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.88"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 883ef7e..d41272f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fi_FI{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 01a0cdb..4b78beb 100644 (file)
@@ -197,10 +197,20 @@ fil{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"Lumiko sa unang kanan."}\r
+                other{"Lumiko sa ika-{0} kanan."}\r
+            }\r
+            plural{\r
+                one{"{0} mansanas"}\r
+                other{"{0} na mansanas"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 194e3f5..464d643 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fil_PH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9bd55e9..cc08db2 100644 (file)
@@ -200,7 +200,7 @@ fo{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 07b157f..e84f93a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fo_DK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e015ef1..a028b1e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fo_FO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f6af06c..90e340b 100644 (file)
@@ -200,10 +200,20 @@ fr{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"Prenez la {0}re à droite."}\r
+                other{"Prenez la {0}e à droite."}\r
+            }\r
+            plural{\r
+                one{"{0} jour"}\r
+                other{"{0} jours"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index cc1807d..3c05883 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 27ec52d..b3e4267 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b3ec7b1..9c128eb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BI{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f41267e..2d26a4e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BJ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4d91c13..7fa8eac 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BL{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a41a61b..96835d6 100644 (file)
@@ -99,7 +99,7 @@ fr_CA{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index cb9a7d4..3017847 100644 (file)
@@ -8,7 +8,7 @@ fr_CD{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 52ce28d..c975a94 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a54c193..8b8b429 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 31b48f9..67f74f6 100644 (file)
@@ -4,15 +4,14 @@ fr_CH{
     NumberElements{\r
         latn{\r
             patterns{\r
-                currencyFormat{"¤ #,##0.00;¤-#,##0.00"}\r
                 percentFormat{"#,##0%"}\r
             }\r
             symbols{\r
-                decimal{"."}\r
+                currencyDecimal{"."}\r
             }\r
         }\r
     }\r
-    Version{"2.1.27.96"}\r
+    Version{"2.1.32.48"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 89c6e01..a7b2a89 100644 (file)
@@ -8,5 +8,5 @@ fr_CI{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 209986d..4e0f60f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index c32164d..d5da59e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_DJ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 5c5bcf6..39d4f9b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_DZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 1d9ac09..729f59e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_FR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ecd5ff1..3ea2c27 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a4cf15d..87c23c5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0cd9de1..21a9ae9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9fb849a..f1b2f94 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GP{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5442983..21aa066 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GQ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f7d8806..5c7da26 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_HT{\r
-    Version{"2.1.27.63"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 1d59da2..755f149 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_KM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ae651f0..0f4f04d 100644 (file)
@@ -8,5 +8,5 @@ fr_LU{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4f1ab8f..8b2d675 100644 (file)
@@ -8,7 +8,7 @@ fr_MA{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index ad6838e..59fa216 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MC{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8c61e58..9f256b4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2fc051f..e830691 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b8284ad..1454742 100644 (file)
@@ -8,7 +8,7 @@ fr_ML{
             }\r
         }\r
     }\r
-    Version{"2.1.27.63"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 44ece16..e8488e0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MQ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1884c3e..c015b4b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 1e4ec19..12aa4a3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 92bc86e..aa1c620 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_NC{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 46dbcda..1283f0c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_NE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f05ba59..e2284ac 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_PF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0a5bccb..8f05344 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_PM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4cab3df..3459130 100644 (file)
@@ -8,7 +8,7 @@ fr_RE{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 7d2ea10..c520c4d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_RW{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2ffbdde..9e2524c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_SC{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 556025a..a18a173 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_SN{\r
-    Version{"2.1.27.63"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 629f9ca..56afc7e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_SY{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 2d6a519..27f147d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_TD{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index b1361e8..d0cb211 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_TG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ef7ecdf..703a322 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_TN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 8dc0816..217c71a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_VU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index d9ee33c..cb51349 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_WF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 28b9f3d..b6cf074 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_YT{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 159a677..c0b66cb 100644 (file)
@@ -26,7 +26,7 @@ fur{
             }\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 89c0349..3f23aea 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fur_IT{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4af7527..b0b6b2e 100644 (file)
@@ -154,7 +154,7 @@ fy{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 67b303b..4960d0f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fy_NL{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 017b7d3..7e575f3 100644 (file)
@@ -302,10 +302,23 @@ ga{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"Glac an {0}ú chasadh ar dheis."}\r
+                other{"Glac an {0}ú casadh ar dheis."}\r
+            }\r
+            plural{\r
+                few{"{0} chi, {0} cath"}\r
+                many{"{0} chi, {0} chath"}\r
+                one{"{0} ci, {0} gath"}\r
+                other{"{0} ci, {0} cath"}\r
+                two{"{0} gi, {0} gath"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 7db6398..df7d38b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ga_IE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4a6f79b..a223df0 100644 (file)
@@ -900,7 +900,7 @@ gd{
             }\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             intervalFormats{\r
index 6e622ed..6776e7a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gd_GB{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b983484..8a2426c 100644 (file)
@@ -200,10 +200,19 @@ gl{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Colle a {0}.ª curva á dereita."}\r
+            }\r
+            plural{\r
+                one{"{0} día"}\r
+                other{"{0} días"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 21cd552..a4c005c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gl_ES{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6b1a8e6..1640aa4 100644 (file)
@@ -11,6 +11,160 @@ gsw{
                 percentFormat{"#,##0 %"}\r
                 scientificFormat{"#E0"}\r
             }\r
+            patternsLong{\r
+                decimalFormat{\r
+                    1000{\r
+                        one{"0 Tuusig"}\r
+                        other{"0 Tuusig"}\r
+                    }\r
+                    10000{\r
+                        one{"00 Tuusig"}\r
+                        other{"00 Tuusig"}\r
+                    }\r
+                    100000{\r
+                        one{"000 Tuusig"}\r
+                        other{"000 Tuusig"}\r
+                    }\r
+                    1000000{\r
+                        one{"0 Millioon"}\r
+                        other{"0 Millioone"}\r
+                    }\r
+                    10000000{\r
+                        one{"00 Millioon"}\r
+                        other{"00 Millioone"}\r
+                    }\r
+                    100000000{\r
+                        one{"000 Millioon"}\r
+                        other{"000 Millioone"}\r
+                    }\r
+                    1000000000{\r
+                        one{"0 Milliarde"}\r
+                        other{"0 Milliarde"}\r
+                    }\r
+                    10000000000{\r
+                        one{"00 Milliarde"}\r
+                        other{"00 Milliarde"}\r
+                    }\r
+                    100000000000{\r
+                        one{"000 Milliarde"}\r
+                        other{"000 Milliarde"}\r
+                    }\r
+                    1000000000000{\r
+                        one{"0 Billioon"}\r
+                        other{"0 Billioone"}\r
+                    }\r
+                    10000000000000{\r
+                        one{"00 Billioon"}\r
+                        other{"00 Billioone"}\r
+                    }\r
+                    100000000000000{\r
+                        one{"000 Billioon"}\r
+                        other{"000 Billioone"}\r
+                    }\r
+                }\r
+            }\r
+            patternsShort{\r
+                currencyFormat{\r
+                    1000{\r
+                        one{"0 Tsg'.' ¤"}\r
+                        other{"0 Tsg'.' ¤"}\r
+                    }\r
+                    10000{\r
+                        one{"00 Tsg'.' ¤"}\r
+                        other{"00 Tsg'.' ¤"}\r
+                    }\r
+                    100000{\r
+                        one{"000 Tsg'.' ¤"}\r
+                        other{"000 Tsg'.' ¤"}\r
+                    }\r
+                    1000000{\r
+                        one{"0 Mio'.' ¤"}\r
+                        other{"0 Mio'.' ¤"}\r
+                    }\r
+                    10000000{\r
+                        one{"00 Mio'.' ¤"}\r
+                        other{"00 Mio'.' ¤"}\r
+                    }\r
+                    100000000{\r
+                        one{"000 Mio'.' ¤"}\r
+                        other{"000 Mio'.' ¤"}\r
+                    }\r
+                    1000000000{\r
+                        one{"0 Mrd'.' ¤"}\r
+                        other{"0 Mrd'.' ¤"}\r
+                    }\r
+                    10000000000{\r
+                        one{"00 Mrd'.' ¤"}\r
+                        other{"00 Mrd'.' ¤"}\r
+                    }\r
+                    100000000000{\r
+                        one{"000 Mrd'.' ¤"}\r
+                        other{"000 Mrd'.' ¤"}\r
+                    }\r
+                    1000000000000{\r
+                        one{"0 Bio'.' ¤"}\r
+                        other{"0 Bio'.' ¤"}\r
+                    }\r
+                    10000000000000{\r
+                        one{"00 Bio'.' ¤"}\r
+                        other{"00 Bio'.' ¤"}\r
+                    }\r
+                    100000000000000{\r
+                        one{"000 Bio'.' ¤"}\r
+                        other{"000 Bio'.' ¤"}\r
+                    }\r
+                }\r
+                decimalFormat{\r
+                    1000{\r
+                        one{"0 Tsg'.'"}\r
+                        other{"0 Tsg'.'"}\r
+                    }\r
+                    10000{\r
+                        one{"00 Tsg'.'"}\r
+                        other{"00 Tsg'.'"}\r
+                    }\r
+                    100000{\r
+                        one{"000 Tsg'.'"}\r
+                        other{"000 Tsg'.'"}\r
+                    }\r
+                    1000000{\r
+                        one{"0 Mio'.'"}\r
+                        other{"0 Mio'.'"}\r
+                    }\r
+                    10000000{\r
+                        one{"00 Mio'.'"}\r
+                        other{"00 Mio'.'"}\r
+                    }\r
+                    100000000{\r
+                        one{"000 Mio'.'"}\r
+                        other{"000 Mio'.'"}\r
+                    }\r
+                    1000000000{\r
+                        one{"0 Mrd'.'"}\r
+                        other{"0 Mrd'.'"}\r
+                    }\r
+                    10000000000{\r
+                        one{"00 Mrd'.'"}\r
+                        other{"00 Mrd'.'"}\r
+                    }\r
+                    100000000000{\r
+                        one{"000 Mrd'.'"}\r
+                        other{"000 Mrd'.'"}\r
+                    }\r
+                    1000000000000{\r
+                        one{"0 Bio'.'"}\r
+                        other{"0 Bio'.'"}\r
+                    }\r
+                    10000000000000{\r
+                        one{"00 Bio'.'"}\r
+                        other{"00 Bio'.'"}\r
+                    }\r
+                    100000000000000{\r
+                        one{"000 Bio'.'"}\r
+                        other{"000 Bio'.'"}\r
+                    }\r
+                }\r
+            }\r
             symbols{\r
                 decimal{"."}\r
                 exponential{"E"}\r
@@ -25,7 +179,7 @@ gsw{
             }\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
@@ -190,12 +344,12 @@ gsw{
         }\r
         gregorian{\r
             AmPmMarkers{\r
-                "vorm.",\r
-                "nam.",\r
+                "am Vormittag",\r
+                "am Namittag",\r
             }\r
             AmPmMarkersAbbr{\r
-                "v.m.",\r
-                "n.m.",\r
+                "vorm.",\r
+                "nam.",\r
             }\r
             DateTimePatterns{\r
                 "HH:mm:ss zzzz",\r
@@ -274,6 +428,38 @@ gsw{
                     }\r
                 }\r
             }\r
+            dayPeriod{\r
+                format{\r
+                    abbreviated{\r
+                        afternoon1{"zmittag"}\r
+                        afternoon2{"am Namittag"}\r
+                        evening1{"zaabig"}\r
+                        midnight{"Mitternacht"}\r
+                        morning1{"am Morge"}\r
+                        night1{"znacht"}\r
+                    }\r
+                    wide{\r
+                        afternoon1{"zmittag"}\r
+                        afternoon2{"am Namittag"}\r
+                        evening1{"zaabig"}\r
+                        midnight{"Mitternacht"}\r
+                        morning1{"am Morge"}\r
+                        night1{"znacht"}\r
+                    }\r
+                }\r
+                stand-alone{\r
+                    wide{\r
+                        afternoon1{"Mittag"}\r
+                        afternoon2{"Namittag"}\r
+                        am{"Vormittag"}\r
+                        evening1{"Aabig"}\r
+                        midnight{"Mitternacht"}\r
+                        morning1{"Morge"}\r
+                        night1{"Nacht"}\r
+                        pm{"Namittag"}\r
+                    }\r
+                }\r
+            }\r
             eras{\r
                 abbreviated{\r
                     "v. Chr.",\r
index 0874f44..c6b65d5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw_CH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 40553f1..71a250a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw_FR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 43e6137..420e0a4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw_LI{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 41fe21f..f27284f 100644 (file)
@@ -232,10 +232,23 @@ gu{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"જમણી બાજુએ {0}થો વળાંક લો."}\r
+                many{"જમણી બાજુએ {0}ઠો વળાંક લો."}\r
+                one{"જમણી બાજુએ {0}લો વળાંક લો."}\r
+                other{"જમણી બાજુએ {0}મો વળાંક લો."}\r
+                two{"જમણી બાજુએ {0}જો વળાંક લો."}\r
+            }\r
+            plural{\r
+                one{"{0} કિલોગ્રામ"}\r
+                other{"{0} કિલોગ્રામ્સ"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"gujr"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index cd1de72..0b3a7b6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gu_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9c59c81..e06f68c 100644 (file)
@@ -12,7 +12,7 @@ guz{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8335def..fd9d618 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 guz_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e42a051..e965afe 100644 (file)
@@ -8,8 +8,17 @@ gv{
                 currencyFormat{"¤#,##0.00"}\r
             }\r
         }\r
+        minimalPairs{\r
+            plural{\r
+                few{"{0} thunnag/muc/ooyl"}\r
+                many{"{0} dy hunnagyn/dy vucyn/dy ooylyn"}\r
+                one{"{0} thunnag/vuc/ooyl"}\r
+                other{"{0} thunnagyn/mucyn/ooylyn"}\r
+                two{"{0} hunnag/vuc/ooyl"}\r
+            }\r
+        }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 912b088..a84d272 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gv_IM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e65af2c..c64107e 100644 (file)
@@ -172,7 +172,7 @@ ha{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 50185ab..9aa8cff 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha_GH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0aeef36..d0c0fe0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha_NE{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5f4a716..df6cf24 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha_NG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 46df8b4..41828ad 100644 (file)
@@ -31,7 +31,7 @@ haw{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e72f2a1..1880315 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 haw_US{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 240da92..015988d 100644 (file)
@@ -272,11 +272,22 @@ he{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"פנה ימינה בפנייה ה-{0}"}\r
+            }\r
+            plural{\r
+                many{"{0} שנה"}\r
+                one{"שנה"}\r
+                other{"{0} שנים"}\r
+                two{"שנתיים"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"hebr"}\r
     }\r
-    Version{"2.1.29.27"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 5b4b444..33cad82 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 he_IL{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 92cca0b..7a6f1ed 100644 (file)
@@ -219,10 +219,23 @@ hi{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"{0}था दाहिना मोड़ लें."}\r
+                many{"{0}ठा दाहिना मोड़ लें."}\r
+                one{"{0}ला दाहिना मोड़ लें."}\r
+                other{"{0}वां दाहिना मोड़ लें."}\r
+                two{"{0}रा दाहिना मोड़ लें."}\r
+            }\r
+            plural{\r
+                one{"{0} घंटा"}\r
+                other{"{0} घंटे"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"deva"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         ethiopic{\r
             monthNames{\r
index e466d92..3febf3a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hi_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9e2d575..240aba1 100644 (file)
@@ -236,10 +236,21 @@ hr{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Skrenite na {0}. križanju desno."}\r
+            }\r
+            plural{\r
+                few{"za {0} mjeseca"}\r
+                many{"za {0} mjeseci"}\r
+                one{"za {0} mjesec"}\r
+                other{"za {0} mjeseci"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index e1e9aaa..73e934b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hr_BA{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 799f7b8..10191f7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hr_HR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 71db26c..be73c93 100644 (file)
@@ -195,7 +195,7 @@ hsb{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e122a0c..385b64f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hsb_DE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e969497..00f9b53 100644 (file)
@@ -207,10 +207,20 @@ hu{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"Az {0}. lehetőségnél forduljon jobbra."}\r
+                other{"A {0}. lehetőségnél forduljon jobbra."}\r
+            }\r
+            plural{\r
+                one{"A kosár tartalma: {0} X. Megveszi?"}\r
+                other{"A kosár tartalma: {0} X. Megveszi őket?"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index cac981c..0ab8597 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hu_HU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9964db9..665f3db 100644 (file)
@@ -199,11 +199,21 @@ hy{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"Թեքվեք աջ {0}-ին խաչմերուկից:"}\r
+                other{"Թեքվեք աջ {0}-րդ խաչմերուկից:"}\r
+            }\r
+            plural{\r
+                one{"այդ {0} ժամը"}\r
+                other{"այդ {0} ժամերը"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"armn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index fd8373f..6b4422b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hy_AM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7d6665b..fc54a18 100644 (file)
@@ -12,7 +12,7 @@ id{
     }\r
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}\r
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}\r
-    ExemplarCharactersPunctuation{"[‐ – — , ; \\: ! ? . … ' ‘ ’ “ ” ( ) \\[ \\] /]"}\r
+    ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ “ ” ( ) \\[ \\] /]"}\r
     MoreInformation{"?"}\r
     NumberElements{\r
         default{"latn"}\r
@@ -161,10 +161,18 @@ id{
                 timeSeparator{"."}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Ambil belokan kanan ke-{0}."}\r
+            }\r
+            plural{\r
+                other{"{0} hari"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 47a6c79..8cd4655 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 id_ID{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7f61395..c58c21e 100644 (file)
@@ -86,7 +86,7 @@ ig{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 65f842f..7eff6a9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ig_NG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 30e6fc9..67160a1 100644 (file)
@@ -19,7 +19,7 @@ ii{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 2807bdc..405f3a5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ii_CN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9d1e8d5..c49ff82 100644 (file)
@@ -188,10 +188,19 @@ is{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Taktu {0}. beygju til hægri."}\r
+            }\r
+            plural{\r
+                one{"{0} dagur"}\r
+                other{"{0} dagar"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.65"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index dafbfa1..f906424 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 is_IS{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a4165f7..da418b7 100644 (file)
@@ -31,7 +31,7 @@ it{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        one{"0 mila"}\r
+                        one{"0 mille"}\r
                         other{"0 mila"}\r
                     }\r
                     10000{\r
@@ -67,7 +67,7 @@ it{
                         other{"000 miliardi"}\r
                     }\r
                     1000000000000{\r
-                        one{"0 mila miliardi"}\r
+                        one{"0 mille miliardi"}\r
                         other{"0 mila miliardi"}\r
                     }\r
                     10000000000000{\r
@@ -197,10 +197,20 @@ it{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                many{"Prendi l’{0}° a destra."}\r
+                other{"Prendi la {0}° a destra."}\r
+            }\r
+            plural{\r
+                one{"{0} giorno"}\r
+                other{"{0} giorni"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 4fbfb3e..886d56e 100644 (file)
@@ -8,11 +8,11 @@ it_CH{
             }\r
             symbols{\r
                 decimal{"."}\r
-                group{"'"}\r
+                group{""}\r
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 66f7477..58298b8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 it_IT{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5112b13..9b06c39 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 it_SM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/locales/it_VA.txt b/source/data/locales/it_VA.txt
new file mode 100644 (file)
index 0000000..f555501
--- /dev/null
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+it_VA{\r
+    Version{"2.1.32.51"}\r
+}\r
index 763c323..bc31d77 100644 (file)
@@ -64,7 +64,7 @@ ja{
         "鑑 長 門 閉 開 閏 閑 間 関 閣 閥 閲 闘 阪 防 阻 附 降 限 陛 院-陥 陪 陰 陳 陵 陶 陸 険 陽 隅 隆 隊 階 随 隔 際 障 "\r
         "隠 隣 隷 隻 雄-雇 雉 雌 雑 離 難 雨 雪 雰 雲 零 雷 電 需 震 霊 霜 霧 露 青 静 非 面 革 靴 韓 音 韻 響 頂 頃 項 順 "\r
         "預-頒 領 頭 頻 頼 題 額 顔 顕 願 類 顧 風 飛 食 飢 飯 飲 飼-飾 養 餓 館 首 香 馬 駄-駆 駐 騎 騒 験 騰 驚 骨 髄 高 "\r
-        "髪 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 鹿 麗 麦 麻 黄 黒 黙 鼓 鼠 鼻 齢]"\r
+        "髪 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 鹿 麗 麦 麻 黄 黒 黙 鼓 鼠 鼻 齢 叱 剥 填 頬]"\r
     }\r
     ExemplarCharactersIndex{"[あ か さ た な は ま や ら わ]"}\r
     ExemplarCharactersPunctuation{\r
@@ -221,11 +221,19 @@ ja{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0} 番目の角を右折します。"}\r
+            }\r
+            plural{\r
+                other{"{0}日"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"jpan"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 81a27bb..3baabb8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ja_JP{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b349083..6d48c2d 100644 (file)
@@ -38,7 +38,7 @@ jgo{
         }\r
         native{"latn"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 52fd192..eca904e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jgo_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f057868..09ec87d 100644 (file)
@@ -11,7 +11,7 @@ jmc{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c64d442..06eadaa 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jmc_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a6c20e2..4ae0a1f 100644 (file)
@@ -203,11 +203,22 @@ ka{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                many{"მე-{0}"}\r
+                one{"{0}-ლი"}\r
+                other{"{0}-ე"}\r
+            }\r
+            plural{\r
+                one{"კალათში {0} X-ია. შეიძენთ მას?"}\r
+                other{"კალათში {0} X-ია. შეიძენთ მათ?"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
         traditional{"geor"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b476e4f..b4e467a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ka_GE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 63ef4e5..210f8c0 100644 (file)
@@ -15,7 +15,7 @@ kab{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ae7ff07..9efcf0e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kab_DZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a643dda..99635b5 100644 (file)
@@ -11,7 +11,7 @@ kam{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 5bea75f..a8d7400 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kam_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 02a1deb..7deeb95 100644 (file)
@@ -11,7 +11,7 @@ kde{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 330ed64..6c6d2c9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kde_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 11f1ec1..54acdc0 100644 (file)
@@ -128,7 +128,7 @@ kea{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.27.46"}\r
+    Version{"2.1.31.74"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6147ac3..b98fab1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kea_CV{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1b04190..80f19c5 100644 (file)
@@ -14,7 +14,7 @@ khq{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index fb0cacd..0a9f663 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 khq_ML{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2c15a44..82e7732 100644 (file)
@@ -12,7 +12,7 @@ ki{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ede703b..f6a0df7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ki_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f806196..517f309 100644 (file)
@@ -205,10 +205,20 @@ kk{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                many{"{0}-ші бұрылыстан оңға бұрылыңыз."}\r
+                other{"{0}-шы бұрылыстан оңға бұрылыңыз."}\r
+            }\r
+            plural{\r
+                one{"Cебетте {0} Х бар. Ол сіздікі ме?"}\r
+                other{"Себетте {0} Х бар. Олар сіздікі ме?"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index dbae802..5500950 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kk_KZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9eaa9d4..7b35650 100644 (file)
@@ -23,7 +23,7 @@ kkj{
         }\r
         native{"latn"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0edf994..0816d67 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kkj_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7392a1b..7946893 100644 (file)
@@ -17,8 +17,14 @@ kl{
                 group{"."}\r
             }\r
         }\r
+        minimalPairs{\r
+            plural{\r
+                one{"{0} Ulloq"}\r
+                other{"{0} Ullut"}\r
+            }\r
+        }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index b9228e2..c7b1c74 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kl_GL{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2baeb57..6c260ad 100644 (file)
@@ -12,7 +12,7 @@ kln{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 27640a0..8dcf16e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kln_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 44a22f1..647fceb 100644 (file)
@@ -164,10 +164,18 @@ km{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"បត់​ស្តាំ​លើក​ទី​ {0}"}\r
+            }\r
+            plural{\r
+                other{"{0} ថ្ងៃ"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"khmr"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.74"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b87f9bd..e16ae14 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 km_KH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b6ae1ac..c69ac9f 100644 (file)
@@ -220,10 +220,19 @@ kn{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}ನೇ ಬಲತಿರುವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ."}\r
+            }\r
+            plural{\r
+                one{"{0} ದಿನ"}\r
+                other{"{0} ದಿನಗಳು"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"knda"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d2f7dcc..baabc4f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kn_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 42f7b79..fd3136e 100644 (file)
@@ -187,10 +187,18 @@ ko{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}번째 길목에서 우회전하세요."}\r
+            }\r
+            plural{\r
+                other{"{0}일"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 993a892..27e3e2c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko_KP{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d6efd4e..18f6899 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko_KR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f338598..feea75d 100644 (file)
@@ -19,7 +19,7 @@ kok{
         }\r
         native{"deva"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 4383a6f..ac19051 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kok_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6c6a2a4..7d83b1a 100644 (file)
@@ -31,7 +31,7 @@ ks{
         }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 155ebc6..c6f74c6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ks_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f37f572..e13e0b2 100644 (file)
@@ -11,7 +11,7 @@ ksb{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f6d91d2..5f42d59 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksb_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b660bf3..03e37aa 100644 (file)
@@ -19,7 +19,7 @@ ksf{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 2fe4939..c5a4ba4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksf_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 465bf75..6c54e61 100644 (file)
@@ -160,7 +160,7 @@ ksh{
         }\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index beacb68..b734281 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksh_DE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index def1751..3fc4090 100644 (file)
@@ -9,7 +9,7 @@ kw{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 41e1e42..ae45c12 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kw_GB{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8ede76f..cda5cd5 100644 (file)
@@ -199,10 +199,19 @@ ky{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}-бурулуштан оңго бурулуңуз."}\r
+            }\r
+            plural{\r
+                one{"Себетте {0} Х бар. Аны аласызбы?"}\r
+                other{"Себетте {0} Х бар. Аларды аласызбы?"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index fce9a0b..224cbdb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ky_KG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 82f276a..34b3539 100644 (file)
@@ -3,7 +3,7 @@
 lag{\r
     ExemplarCharacters{"[a á b c d e é f g h i í ɨ j k l m n o ó p q r s t u ú ʉ v w x y z]"}\r
     ExemplarCharactersIndex{"[A B C D E F G H I Ɨ J K L M N O P Q R S T U Ʉ V W X Y Z]"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 79840de..1b25b3e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lag_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d883ca5..b2784e8 100644 (file)
@@ -155,7 +155,7 @@ lb{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index fc0e01c..7a42806 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lb_LU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8347ead..f0a0b5f 100644 (file)
@@ -11,7 +11,7 @@ lg{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4aac8e4..d88ad66 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lg_UG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index de6dee6..2edcfae 100644 (file)
@@ -8,7 +8,7 @@ lkt{
     }\r
     ExemplarCharactersIndex{"[A B Č E G Ǧ H Ȟ I K L M N Ŋ O P S Š T U W Y Z Ž]"}\r
     ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . \u0022 “ ” ( ) \\[ \\] @ * / \\& #]"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index a360552..ec0bf2e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lkt_US{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b7382f7..71aa960 100644 (file)
@@ -23,7 +23,7 @@ ln{
             }\r
         }\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4efa054..b22b145 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln_AO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 620a515..56898f8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln_CD{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bb95d5b..89a7f7f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln_CF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 94c4e65..247e15e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln_CG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 81b9756..b9b2a4c 100644 (file)
@@ -249,10 +249,19 @@ lo{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"ລ້ຽວຂວາທຳອິດ."}\r
+                other{"ລ້ຽວຂວາທີ {0}."}\r
+            }\r
+            plural{\r
+                other{"{0} ມື້"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"laoo"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
@@ -705,7 +714,7 @@ lo{
                 yyyyMEd{"E, G d/M/y"}\r
                 yyyyMMM{"G MMM y"}\r
                 yyyyMMMEd{"E, G d MMM y"}\r
-                yyyyMMMM{"G y MMMM"}\r
+                yyyyMMMM{"G MMMM y"}\r
                 yyyyMMMd{"G d MMM y"}\r
                 yyyyMd{"G d/M/y"}\r
                 yyyyQQQ{"G QQQ y"}\r
@@ -876,7 +885,7 @@ lo{
                 yMEd{"E, d/M/y"}\r
                 yMMM{"MMM y"}\r
                 yMMMEd{"E, d MMM y"}\r
-                yMMMM{"y MMMM"}\r
+                yMMMM{"MMMM y"}\r
                 yMMMd{"d MMM y"}\r
                 yMd{"d/M/y"}\r
                 yQQQ{"QQQ y"}\r
index a1ca49c..b27b901 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lo_LA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 70bc398..0bcc2e4 100644 (file)
@@ -30,7 +30,7 @@ lrc{
         }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         default{"persian"}\r
         generic{\r
index 3760941..d48cc09 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lrc_IQ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         default{"gregorian"}\r
         gregorian{\r
index e331276..8339c5a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lrc_IR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1f7a8cd..c750e62 100644 (file)
@@ -275,10 +275,21 @@ lt{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}-ame posūkyje sukite į dešinę."}\r
+            }\r
+            plural{\r
+                few{"{0} obuoliai"}\r
+                many{"{0} obuolio"}\r
+                one{"{0} obuolys"}\r
+                other{"{0} obuolių"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 89c8e27..54830de 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lt_LT{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b7b47da..e7c6c8c 100644 (file)
@@ -19,7 +19,7 @@ lu{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 271f9c5..36480ae 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lu_CD{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 20accf7..ead4a98 100644 (file)
@@ -11,7 +11,7 @@ luo{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 31dae0d..bd544bc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luo_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3d2937d..549c9ba 100644 (file)
@@ -10,7 +10,7 @@ luy{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a8f0715..4c060f4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luy_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1e30eb0..b8ccab8 100644 (file)
@@ -236,10 +236,20 @@ lv{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Dodieties {0}. pagriezienā pa labi."}\r
+            }\r
+            plural{\r
+                one{"{0} diennakts"}\r
+                other{"{0} diennaktis"}\r
+                zero{"{0} diennakšu"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 387a45e..06933d4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lv_LV{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 92596e0..ef70d09 100644 (file)
@@ -15,7 +15,7 @@ mas{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f13e433..948c554 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mas_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ae66e94..17a1ab1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mas_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 466d551..cae44a9 100644 (file)
@@ -11,7 +11,7 @@ mer{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f765013..7b48e1e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mer_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 536cd97..13f991d 100644 (file)
@@ -10,7 +10,7 @@ mfe{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 25371d6..7c9fed6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mfe_MU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 31caa8b..1fbd324 100644 (file)
@@ -32,7 +32,7 @@ mg{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1f8fd99..eb57bf6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mg_MG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3475fe6..e847621 100644 (file)
@@ -12,7 +12,7 @@ mgh{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index cd36910..db5642d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgh_MZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 72d3647..cd5fa28 100644 (file)
@@ -38,7 +38,7 @@ mgo{
         }\r
         native{"latn"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a42491d..eb0366b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgo_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4fc31a0..6a97cdd 100644 (file)
@@ -197,10 +197,22 @@ mk{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                many{"Сврти на {0}-мата улица десно."}\r
+                one{"Сврти на {0}-вата улица десно."}\r
+                other{"Сврти на {0}-тата улица десно."}\r
+                two{"Сврти на {0}-рата улица десно."}\r
+            }\r
+            plural{\r
+                one{"{0} ден"}\r
+                other{"{0} дена"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ee7770d..c76a54e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mk_MK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1728a71..4457f5b 100644 (file)
@@ -204,6 +204,15 @@ ml{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}-ാമത്തെ വലത്തേക്ക് തിരിയുക."}\r
+            }\r
+            plural{\r
+                one{"{0} വ്യക്തി"}\r
+                other{"{0} വ്യക്തികൾ"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         mlym{\r
             patterns{\r
@@ -229,7 +238,7 @@ ml{
         }\r
         native{"mlym"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e51e403..ddf9180 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ml_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a5d6e23..a7bbd4d 100644 (file)
@@ -199,10 +199,19 @@ mn{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}-р баруун эргэлтээр орно уу"}\r
+            }\r
+            plural{\r
+                one{"Картанд {0} Х байна. Үүнийг авах уу?"}\r
+                other{"Картанд {0} Х байна. Тэднийг авах уу?"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1c445ee..c294231 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mn_MN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index db2c027..7c771d7 100644 (file)
@@ -11,9 +11,9 @@ mr{
         word-medial{"{0} … {1}"}\r
     }\r
     ExemplarCharacters{\r
-        "[\u093C ॐ \u0902 \u0901 ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट "\r
-        "ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ ा ि ी \u0941 \u0942 \u0943 "\r
-        "\u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D]"\r
+        "[{\u0931} \u093C ॐ \u0902 \u0901 ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ"\r
+        " ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ ा ि ी \u0941 \u0942"\r
+        " \u0943 \u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D]"\r
     }\r
     ExemplarCharactersIndex{\r
         "[\u200D ॐ \u0902 ः अ आ इ ई उ ऊ ऋ ऌ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त"\r
@@ -225,10 +225,22 @@ mr{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"{0}थे उजवे वळण घ्या."}\r
+                one{"{0}ले उजवे वळण घ्या."}\r
+                other{"{0}वे उजवे वळण घ्या."}\r
+                two{"{0}रे उजवे वळण घ्या."}\r
+            }\r
+            plural{\r
+                one{"{0} घर"}\r
+                other{"{0} घरे"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"deva"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a9fcd66..71e6a42 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mr_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a5306b5..f7b9331 100644 (file)
@@ -167,10 +167,19 @@ ms{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"Ambil belokan kanan yang pertama."}\r
+                other{"Ambil belokan kanan yang ke-{0}."}\r
+            }\r
+            plural{\r
+                other{"{0} hari"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 82f8c76..49412ae 100644 (file)
@@ -12,7 +12,7 @@ ms_BN{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a25d5e5..9ffb9df 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ms_MY{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 653ef9c..3ba4291 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ms_SG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7bf0c46..4192928 100644 (file)
@@ -44,7 +44,7 @@ mt{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d62e9cb..4ae4520 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mt_MT{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7d575e1..378f507 100644 (file)
@@ -18,7 +18,7 @@ mua{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index fbc81b0..8c043d4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mua_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c14ca9f..9d30a5e 100644 (file)
@@ -11,9 +11,9 @@ my{
         word-medial{"{0} … {1}"}\r
     }\r
     ExemplarCharacters{\r
-        "[က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ အ ဣ ဤ ဥ ဦ"\r
-        " ဧ ဩ ဪ ာ ါ \u102D \u102E \u102F \u1030 ေ \u1032 \u1036 ဿ ျ ြ \u103D \u103E "\r
-        "\u1039 \u103A \u1037 း]"\r
+        "[{\u104F} က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ "\r
+        "အ ဣ ဤ ဥ ဦ ဧ ဩ ဪ ာ ါ \u102D \u102E \u102F \u1030 ေ \u1032 \u1036 ဿ ျ ြ \u103D"\r
+        " \u103E \u1039 \u103A \u1037 း]"\r
     }\r
     ExemplarCharactersIndex{"[က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ အ]"}\r
     ExemplarCharactersPunctuation{"[၊ ။ ‘ ’ “ ”]"}\r
@@ -165,6 +165,14 @@ my{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0} အုပ်မြောက်"}\r
+            }\r
+            plural{\r
+                other{"{0}ရက်"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         mymr{\r
             patterns{\r
@@ -184,7 +192,7 @@ my{
         }\r
         native{"mymr"}\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.33.28"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index fb0a830..4b22c00 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 my_MM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 809f247..8b149e0 100644 (file)
@@ -21,7 +21,7 @@ mzn{
         default{"arabext"}\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         default{"persian"}\r
         gregorian{\r
index 61854f7..0814d6d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mzn_IR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 506a286..3e8f55d 100644 (file)
@@ -11,7 +11,7 @@ naq{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4e7b049..914f50a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 naq_NA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e836733..db3f94f 100644 (file)
@@ -233,10 +233,19 @@ nb{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Ta {0}. svingen til høyre."}\r
+            }\r
+            plural{\r
+                one{"{0} dag"}\r
+                other{"{0} dager"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             availableFormats{\r
index 22fabcb..5e00af2 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nb_NO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 28806ef..9041be5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nb_SJ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7217780..db430e9 100644 (file)
@@ -12,7 +12,7 @@ nd{
             }\r
         }\r
     }\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 50e9618..8720335 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nd_ZW{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0126abf..455c8f6 100644 (file)
@@ -3,5 +3,5 @@
 nds{\r
     AuxExemplarCharacters{"[á à ă â ā æ ç é è ĕ ê ë ę ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ ú ù ŭ û ū ÿ]"}\r
     ExemplarCharacters{"[a å ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z]"}\r
-    Version{"2.1.28.71"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c35c1ad..6989592 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds_DE{\r
-    Version{"2.1.28.71"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a47b8a2..d33dd45 100644 (file)
@@ -8,5 +8,5 @@ nds_NL{
         "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ "\r
         "″]"\r
     }\r
-    Version{"2.1.28.71"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ffc4b09..af6b7cc 100644 (file)
@@ -220,10 +220,20 @@ ne{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"{0} ओ दायाँ घुम्ति लिनुहोस्"}\r
+                other{"{0} औं दायाँ घुम्ति लिनुहोस्"}\r
+            }\r
+            plural{\r
+                one{"तपाईँसँग {0} निम्तो छ"}\r
+                other{"तपाईँसँग {0} निम्ता छन््"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"deva"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index bb91048..c116a8c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 83ebd0b..f748284 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne_NP{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 90e616a..b871363 100644 (file)
@@ -236,10 +236,19 @@ nl{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Neem de {0}e afslag rechts."}\r
+            }\r
+            plural{\r
+                one{"{0} dag"}\r
+                other{"{0} dagen"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 0919d83..bdeca2d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_AW{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f603df8..899cb4f 100644 (file)
@@ -8,7 +8,7 @@ nl_BE{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7dd19c6..a5b7af3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_BQ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8dbfbbd..893b69f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_CW{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c7b379f..53f1f9f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_NL{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 25d26a6..7603e3e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_SR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 78cec98..a89d35f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_SX{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5240cfd..94378e9 100644 (file)
@@ -21,7 +21,7 @@ nmg{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7f3be5e..fc69a67 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nmg_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cb76158..b0e8f54 100644 (file)
@@ -36,7 +36,7 @@ nn{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6df86ea..73baa40 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nn_NO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 035e56b..296124f 100644 (file)
@@ -27,7 +27,7 @@ nnh{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a529594..ffda18e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nnh_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2f8a8e2..9dac7c1 100644 (file)
@@ -21,7 +21,7 @@ nus{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 32ede21..c2e7960 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nus_SS{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e237322..acb8e9e 100644 (file)
@@ -10,7 +10,7 @@ nyn{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0f9ef2d..316c23e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nyn_UG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8c6a53a..215f18f 100644 (file)
@@ -34,7 +34,7 @@ om{
         native{"latn"}\r
         traditional{"ethi"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a2d2fa3..bf0cbaf 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 om_ET{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a74fc24..38968cb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 om_KE{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 109efa4..c0482db 100644 (file)
@@ -26,7 +26,7 @@ or{
         }\r
         native{"orya"}\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6bb2596..b34ec0f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 or_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bf1f23c..00c21e4 100644 (file)
@@ -43,7 +43,7 @@ os{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4b523c1..f43cbb5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 os_GE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f500bb6..001710c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 os_RU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0de6e34..de8cb53 100644 (file)
@@ -240,10 +240,19 @@ pa{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"ਸਜੇ ਪਾਸੇ {0} ਮੋੜ ਲਵੋ"}\r
+            }\r
+            plural{\r
+                one{"{0} ਘੰਟਾ"}\r
+                other{"{0} ਘੰਟੇ"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"guru"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
@@ -286,7 +295,7 @@ pa{
                 yyyyMEd{"E, d/M/y GGGGG"}\r
                 yyyyMMM{"MMM y G"}\r
                 yyyyMMMEd{"E, d MMM y G"}\r
-                yyyyMMMM{"G y MMMM"}\r
+                yyyyMMMM{"MMMM y G"}\r
                 yyyyMMMd{"d MMM y G"}\r
                 yyyyMd{"d/M/y GGGGG"}\r
                 yyyyQQQ{"QQQ y G"}\r
@@ -427,7 +436,7 @@ pa{
                 yMEd{"E, d/M/y"}\r
                 yMMM{"MMM y"}\r
                 yMMMEd{"E, d MMM y"}\r
-                yMMMM{"y MMMM"}\r
+                yMMMM{"MMMM y"}\r
                 yMMMd{"d MMM y"}\r
                 yMd{"d/M/y"}\r
                 yQQQ{"QQQ y"}\r
index 193392c..22e1d02 100644 (file)
@@ -17,7 +17,7 @@ pa_Arab{
         }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ad09c90..b75ed4d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Arab_PK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dca680f..dc1602d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26d6e29..0b35aa7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7396e44..d2d5944 100644 (file)
@@ -272,10 +272,21 @@ pl{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Skręć w {0} w prawo."}\r
+            }\r
+            plural{\r
+                few{"{0} miesiące"}\r
+                many{"{0} miesięcy"}\r
+                one{"{0} miesiąc"}\r
+                other{"{0} miesiąca"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index e4e959c..05a9748 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pl_PL{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 99ef76c..4e500b9 100644 (file)
Binary files a/source/data/locales/pool.res and b/source/data/locales/pool.res differ
index e106dc8..bbea3b4 100644 (file)
@@ -57,7 +57,7 @@ ps{
         minimumGroupingDigits{"1"}\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         default{"persian"}\r
         generic{\r
index c7b1b2c..5741f9c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ps_AF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 60bd7f3..96ddf74 100644 (file)
@@ -203,10 +203,19 @@ pt{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}º livro"}\r
+            }\r
+            plural{\r
+                one{"{0} ponto"}\r
+                other{"{0} pontos"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 149733f..3d5fbf3 100644 (file)
@@ -5,5 +5,5 @@ pt_AO{
     NumberElements{\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index de0bcf3..3aab755 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_BR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a4226b1..4ee7339 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 829f400..ed8f313 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fd432f9..0f6e235 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 75c5d9d..f4cd124 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5eca2f..b5a1669 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 534f5ba..ca01c7f 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 9878c5a..060a5fc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 97fe460..fd57bd8 100644 (file)
@@ -141,7 +141,7 @@ pt_PT{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index fcc981b..e3f0965 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bbbc3d..b8cb201 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1e313bd..7e4416c 100644 (file)
@@ -34,7 +34,7 @@ qu{
             }\r
         }\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 0dbd93c..8b959e3 100644 (file)
@@ -9,5 +9,5 @@ qu_BO{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 69b8ba0..0da49d8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu_EC{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2163c2a..803056f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu_PE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ae413c9..fa01950 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-GENRB_CLDR_VERSION = %version%\r
+GENRB_CLDR_VERSION = 31.0.1\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a '%local%' file in this same directory.\r
+# you should consider creating a 'reslocal.mk' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example '%local%' files:\r
+# Example 'reslocal.mk' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,15 +26,15 @@ GENRB_CLDR_VERSION = %version%
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-GENRB_SYNTHETIC_ALIAS = az_AZ.txt bs_BA.txt en_NH.txt en_RH.txt\\r
in.txt in_ID.txt iw.txt iw_IL.txt ja_JP_TRADITIONAL.txt\\r
mo.txt no.txt no_NO.txt no_NO_NY.txt pa_IN.txt\\r
- pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
- shi_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt sr_Cyrl_YU.txt\\r
- sr_Latn_CS.txt sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt\\r
- sr_YU.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
- uz_UZ.txt vai_LR.txt zh_CN.txt zh_HK.txt zh_MO.txt\\r
- zh_SG.txt zh_TW.txt\r
+GENRB_SYNTHETIC_ALIAS = ars.txt az_AZ.txt bs_BA.txt en_NH.txt\\r
en_RH.txt in.txt in_ID.txt iw.txt iw_IL.txt\\r
ja_JP_TRADITIONAL.txt mo.txt no.txt no_NO.txt no_NO_NY.txt\\r
+ pa_IN.txt pa_PK.txt sh.txt sh_BA.txt sh_CS.txt\\r
+ sh_YU.txt shi_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt\\r
+ sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_YU.txt sr_ME.txt sr_RS.txt\\r
+ sr_XK.txt sr_YU.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt\\r
+ uz_AF.txt uz_UZ.txt vai_LR.txt zh_CN.txt zh_HK.txt\\r
+ zh_MO.txt zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -89,99 +89,100 @@ GENRB_SOURCE = af.txt af_NA.txt af_ZA.txt agq.txt\
  en_UG.txt en_UM.txt en_US.txt en_US_POSIX.txt en_VC.txt\\r
  en_VG.txt en_VI.txt en_VU.txt en_WS.txt en_ZA.txt\\r
  en_ZM.txt en_ZW.txt eo.txt es.txt es_419.txt\\r
- es_AR.txt es_BO.txt es_BR.txt es_CL.txt es_CO.txt\\r
- es_CR.txt es_CU.txt es_DO.txt es_EA.txt es_EC.txt\\r
- es_ES.txt es_GQ.txt es_GT.txt es_HN.txt es_IC.txt\\r
- es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PH.txt\\r
- es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\\r
- es_VE.txt et.txt et_EE.txt eu.txt eu_ES.txt\\r
- ewo.txt ewo_CM.txt fa.txt fa_AF.txt fa_IR.txt\\r
- ff.txt ff_CM.txt ff_GN.txt ff_MR.txt ff_SN.txt\\r
- fi.txt fi_FI.txt fil.txt fil_PH.txt fo.txt\\r
- fo_DK.txt fo_FO.txt fr.txt fr_BE.txt fr_BF.txt\\r
- fr_BI.txt fr_BJ.txt fr_BL.txt fr_CA.txt fr_CD.txt\\r
- fr_CF.txt fr_CG.txt fr_CH.txt fr_CI.txt fr_CM.txt\\r
- fr_DJ.txt fr_DZ.txt fr_FR.txt fr_GA.txt fr_GF.txt\\r
- fr_GN.txt fr_GP.txt fr_GQ.txt fr_HT.txt fr_KM.txt\\r
- fr_LU.txt fr_MA.txt fr_MC.txt fr_MF.txt fr_MG.txt\\r
- fr_ML.txt fr_MQ.txt fr_MR.txt fr_MU.txt fr_NC.txt\\r
- fr_NE.txt fr_PF.txt fr_PM.txt fr_RE.txt fr_RW.txt\\r
- fr_SC.txt fr_SN.txt fr_SY.txt fr_TD.txt fr_TG.txt\\r
- fr_TN.txt fr_VU.txt fr_WF.txt fr_YT.txt fur.txt\\r
- fur_IT.txt fy.txt fy_NL.txt ga.txt ga_IE.txt\\r
- gd.txt gd_GB.txt gl.txt gl_ES.txt gsw.txt\\r
- gsw_CH.txt gsw_FR.txt gsw_LI.txt gu.txt gu_IN.txt\\r
- guz.txt guz_KE.txt gv.txt gv_IM.txt ha.txt\\r
- ha_GH.txt ha_NE.txt ha_NG.txt haw.txt haw_US.txt\\r
- he.txt he_IL.txt hi.txt hi_IN.txt hr.txt\\r
- hr_BA.txt hr_HR.txt hsb.txt hsb_DE.txt hu.txt\\r
- hu_HU.txt hy.txt hy_AM.txt id.txt id_ID.txt\\r
- ig.txt ig_NG.txt ii.txt ii_CN.txt is.txt\\r
- is_IS.txt it.txt it_CH.txt it_IT.txt it_SM.txt\\r
- ja.txt ja_JP.txt jgo.txt jgo_CM.txt jmc.txt\\r
- jmc_TZ.txt ka.txt ka_GE.txt kab.txt kab_DZ.txt\\r
- kam.txt kam_KE.txt kde.txt kde_TZ.txt kea.txt\\r
- kea_CV.txt khq.txt khq_ML.txt ki.txt ki_KE.txt\\r
- kk.txt kk_KZ.txt kkj.txt kkj_CM.txt kl.txt\\r
- kl_GL.txt kln.txt kln_KE.txt km.txt km_KH.txt\\r
- kn.txt kn_IN.txt ko.txt ko_KP.txt ko_KR.txt\\r
- kok.txt kok_IN.txt ks.txt ks_IN.txt ksb.txt\\r
- ksb_TZ.txt ksf.txt ksf_CM.txt ksh.txt ksh_DE.txt\\r
- kw.txt kw_GB.txt ky.txt ky_KG.txt lag.txt\\r
- lag_TZ.txt lb.txt lb_LU.txt lg.txt lg_UG.txt\\r
- lkt.txt lkt_US.txt ln.txt ln_AO.txt ln_CD.txt\\r
- ln_CF.txt ln_CG.txt lo.txt lo_LA.txt lrc.txt\\r
- lrc_IQ.txt lrc_IR.txt lt.txt lt_LT.txt lu.txt\\r
- lu_CD.txt luo.txt luo_KE.txt luy.txt luy_KE.txt\\r
- lv.txt lv_LV.txt mas.txt mas_KE.txt mas_TZ.txt\\r
- mer.txt mer_KE.txt mfe.txt mfe_MU.txt mg.txt\\r
- mg_MG.txt mgh.txt mgh_MZ.txt mgo.txt mgo_CM.txt\\r
- mk.txt mk_MK.txt ml.txt ml_IN.txt mn.txt\\r
- mn_MN.txt mr.txt mr_IN.txt ms.txt ms_BN.txt\\r
- ms_MY.txt ms_SG.txt mt.txt mt_MT.txt mua.txt\\r
- mua_CM.txt my.txt my_MM.txt mzn.txt mzn_IR.txt\\r
- naq.txt naq_NA.txt nb.txt nb_NO.txt nb_SJ.txt\\r
- nd.txt nd_ZW.txt nds.txt nds_DE.txt nds_NL.txt\\r
- ne.txt ne_IN.txt ne_NP.txt nl.txt nl_AW.txt\\r
- nl_BE.txt nl_BQ.txt nl_CW.txt nl_NL.txt nl_SR.txt\\r
- nl_SX.txt nmg.txt nmg_CM.txt nn.txt nn_NO.txt\\r
- nnh.txt nnh_CM.txt nus.txt nus_SS.txt nyn.txt\\r
- nyn_UG.txt om.txt om_ET.txt om_KE.txt or.txt\\r
- or_IN.txt os.txt os_GE.txt os_RU.txt pa.txt\\r
- pa_Arab.txt pa_Arab_PK.txt pa_Guru.txt pa_Guru_IN.txt pl.txt\\r
- pl_PL.txt ps.txt ps_AF.txt pt.txt pt_AO.txt\\r
- pt_BR.txt pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt\\r
- pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\\r
- pt_TL.txt qu.txt qu_BO.txt qu_EC.txt qu_PE.txt\\r
- rm.txt rm_CH.txt rn.txt rn_BI.txt ro.txt\\r
- ro_MD.txt ro_RO.txt rof.txt rof_TZ.txt ru.txt\\r
- ru_BY.txt ru_KG.txt ru_KZ.txt ru_MD.txt ru_RU.txt\\r
- ru_UA.txt rw.txt rw_RW.txt rwk.txt rwk_TZ.txt\\r
- sah.txt sah_RU.txt saq.txt saq_KE.txt sbp.txt\\r
- sbp_TZ.txt se.txt se_FI.txt se_NO.txt se_SE.txt\\r
- seh.txt seh_MZ.txt ses.txt ses_ML.txt sg.txt\\r
- sg_CF.txt shi.txt shi_Latn.txt shi_Latn_MA.txt shi_Tfng.txt\\r
- shi_Tfng_MA.txt si.txt si_LK.txt sk.txt sk_SK.txt\\r
- sl.txt sl_SI.txt smn.txt smn_FI.txt sn.txt\\r
- sn_ZW.txt so.txt so_DJ.txt so_ET.txt so_KE.txt\\r
- so_SO.txt sq.txt sq_AL.txt sq_MK.txt sq_XK.txt\\r
- sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt\\r
- sr_Cyrl_XK.txt sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_RS.txt\\r
- sr_Latn_XK.txt sv.txt sv_AX.txt sv_FI.txt sv_SE.txt\\r
- sw.txt sw_CD.txt sw_KE.txt sw_TZ.txt sw_UG.txt\\r
- ta.txt ta_IN.txt ta_LK.txt ta_MY.txt ta_SG.txt\\r
- te.txt te_IN.txt teo.txt teo_KE.txt teo_UG.txt\\r
- th.txt th_TH.txt ti.txt ti_ER.txt ti_ET.txt\\r
- to.txt to_TO.txt tr.txt tr_CY.txt tr_TR.txt\\r
- twq.txt twq_NE.txt tzm.txt tzm_MA.txt ug.txt\\r
- ug_CN.txt uk.txt uk_UA.txt ur.txt ur_IN.txt\\r
- ur_PK.txt uz.txt uz_Arab.txt uz_Arab_AF.txt uz_Cyrl.txt\\r
- uz_Cyrl_UZ.txt uz_Latn.txt uz_Latn_UZ.txt vai.txt vai_Latn.txt\\r
- vai_Latn_LR.txt vai_Vaii.txt vai_Vaii_LR.txt vi.txt vi_VN.txt\\r
- vun.txt vun_TZ.txt wae.txt wae_CH.txt xog.txt\\r
- xog_UG.txt yav.txt yav_CM.txt yi.txt yi_001.txt\\r
- yo.txt yo_BJ.txt yo_NG.txt yue.txt yue_HK.txt\\r
- zgh.txt zgh_MA.txt zh.txt zh_Hans.txt zh_Hans_CN.txt\\r
- zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt\\r
- zh_Hant_MO.txt zh_Hant_TW.txt zu.txt zu_ZA.txt\r
+ es_AR.txt es_BO.txt es_BR.txt es_BZ.txt es_CL.txt\\r
+ es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EA.txt\\r
+ es_EC.txt es_ES.txt es_GQ.txt es_GT.txt es_HN.txt\\r
+ es_IC.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\\r
+ es_PH.txt es_PR.txt es_PY.txt es_SV.txt es_US.txt\\r
+ es_UY.txt es_VE.txt et.txt et_EE.txt eu.txt\\r
+ eu_ES.txt ewo.txt ewo_CM.txt fa.txt fa_AF.txt\\r
+ fa_IR.txt ff.txt ff_CM.txt ff_GN.txt ff_MR.txt\\r
+ ff_SN.txt fi.txt fi_FI.txt fil.txt fil_PH.txt\\r
+ fo.txt fo_DK.txt fo_FO.txt fr.txt fr_BE.txt\\r
+ fr_BF.txt fr_BI.txt fr_BJ.txt fr_BL.txt fr_CA.txt\\r
+ fr_CD.txt fr_CF.txt fr_CG.txt fr_CH.txt fr_CI.txt\\r
+ fr_CM.txt fr_DJ.txt fr_DZ.txt fr_FR.txt fr_GA.txt\\r
+ fr_GF.txt fr_GN.txt fr_GP.txt fr_GQ.txt fr_HT.txt\\r
+ fr_KM.txt fr_LU.txt fr_MA.txt fr_MC.txt fr_MF.txt\\r
+ fr_MG.txt fr_ML.txt fr_MQ.txt fr_MR.txt fr_MU.txt\\r
+ fr_NC.txt fr_NE.txt fr_PF.txt fr_PM.txt fr_RE.txt\\r
+ fr_RW.txt fr_SC.txt fr_SN.txt fr_SY.txt fr_TD.txt\\r
+ fr_TG.txt fr_TN.txt fr_VU.txt fr_WF.txt fr_YT.txt\\r
+ fur.txt fur_IT.txt fy.txt fy_NL.txt ga.txt\\r
+ ga_IE.txt gd.txt gd_GB.txt gl.txt gl_ES.txt\\r
+ gsw.txt gsw_CH.txt gsw_FR.txt gsw_LI.txt gu.txt\\r
+ gu_IN.txt guz.txt guz_KE.txt gv.txt gv_IM.txt\\r
+ ha.txt ha_GH.txt ha_NE.txt ha_NG.txt haw.txt\\r
+ haw_US.txt he.txt he_IL.txt hi.txt hi_IN.txt\\r
+ hr.txt hr_BA.txt hr_HR.txt hsb.txt hsb_DE.txt\\r
+ hu.txt hu_HU.txt hy.txt hy_AM.txt id.txt\\r
+ id_ID.txt ig.txt ig_NG.txt ii.txt ii_CN.txt\\r
+ is.txt is_IS.txt it.txt it_CH.txt it_IT.txt\\r
+ it_SM.txt it_VA.txt ja.txt ja_JP.txt jgo.txt\\r
+ jgo_CM.txt jmc.txt jmc_TZ.txt ka.txt ka_GE.txt\\r
+ kab.txt kab_DZ.txt kam.txt kam_KE.txt kde.txt\\r
+ kde_TZ.txt kea.txt kea_CV.txt khq.txt khq_ML.txt\\r
+ ki.txt ki_KE.txt kk.txt kk_KZ.txt kkj.txt\\r
+ kkj_CM.txt kl.txt kl_GL.txt kln.txt kln_KE.txt\\r
+ km.txt km_KH.txt kn.txt kn_IN.txt ko.txt\\r
+ ko_KP.txt ko_KR.txt kok.txt kok_IN.txt ks.txt\\r
+ ks_IN.txt ksb.txt ksb_TZ.txt ksf.txt ksf_CM.txt\\r
+ ksh.txt ksh_DE.txt kw.txt kw_GB.txt ky.txt\\r
+ ky_KG.txt lag.txt lag_TZ.txt lb.txt lb_LU.txt\\r
+ lg.txt lg_UG.txt lkt.txt lkt_US.txt ln.txt\\r
+ ln_AO.txt ln_CD.txt ln_CF.txt ln_CG.txt lo.txt\\r
+ lo_LA.txt lrc.txt lrc_IQ.txt lrc_IR.txt lt.txt\\r
+ lt_LT.txt lu.txt lu_CD.txt luo.txt luo_KE.txt\\r
+ luy.txt luy_KE.txt lv.txt lv_LV.txt mas.txt\\r
+ mas_KE.txt mas_TZ.txt mer.txt mer_KE.txt mfe.txt\\r
+ mfe_MU.txt mg.txt mg_MG.txt mgh.txt mgh_MZ.txt\\r
+ mgo.txt mgo_CM.txt mk.txt mk_MK.txt ml.txt\\r
+ ml_IN.txt mn.txt mn_MN.txt mr.txt mr_IN.txt\\r
+ ms.txt ms_BN.txt ms_MY.txt ms_SG.txt mt.txt\\r
+ mt_MT.txt mua.txt mua_CM.txt my.txt my_MM.txt\\r
+ mzn.txt mzn_IR.txt naq.txt naq_NA.txt nb.txt\\r
+ nb_NO.txt nb_SJ.txt nd.txt nd_ZW.txt nds.txt\\r
+ nds_DE.txt nds_NL.txt ne.txt ne_IN.txt ne_NP.txt\\r
+ nl.txt nl_AW.txt nl_BE.txt nl_BQ.txt nl_CW.txt\\r
+ nl_NL.txt nl_SR.txt nl_SX.txt nmg.txt nmg_CM.txt\\r
+ nn.txt nn_NO.txt nnh.txt nnh_CM.txt nus.txt\\r
+ nus_SS.txt nyn.txt nyn_UG.txt om.txt om_ET.txt\\r
+ om_KE.txt or.txt or_IN.txt os.txt os_GE.txt\\r
+ os_RU.txt pa.txt pa_Arab.txt pa_Arab_PK.txt pa_Guru.txt\\r
+ pa_Guru_IN.txt pl.txt pl_PL.txt ps.txt ps_AF.txt\\r
+ pt.txt pt_AO.txt pt_BR.txt pt_CH.txt pt_CV.txt\\r
+ pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt\\r
+ pt_PT.txt pt_ST.txt pt_TL.txt qu.txt qu_BO.txt\\r
+ qu_EC.txt qu_PE.txt rm.txt rm_CH.txt rn.txt\\r
+ rn_BI.txt ro.txt ro_MD.txt ro_RO.txt rof.txt\\r
+ rof_TZ.txt ru.txt ru_BY.txt ru_KG.txt ru_KZ.txt\\r
+ ru_MD.txt ru_RU.txt ru_UA.txt rw.txt rw_RW.txt\\r
+ rwk.txt rwk_TZ.txt sah.txt sah_RU.txt saq.txt\\r
+ saq_KE.txt sbp.txt sbp_TZ.txt se.txt se_FI.txt\\r
+ se_NO.txt se_SE.txt seh.txt seh_MZ.txt ses.txt\\r
+ ses_ML.txt sg.txt sg_CF.txt shi.txt shi_Latn.txt\\r
+ shi_Latn_MA.txt shi_Tfng.txt shi_Tfng_MA.txt si.txt si_LK.txt\\r
+ sk.txt sk_SK.txt sl.txt sl_SI.txt smn.txt\\r
+ smn_FI.txt sn.txt sn_ZW.txt so.txt so_DJ.txt\\r
+ so_ET.txt so_KE.txt so_SO.txt sq.txt sq_AL.txt\\r
+ sq_MK.txt sq_XK.txt sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt\\r
+ sr_Cyrl_ME.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt sr_Latn.txt sr_Latn_BA.txt\\r
+ sr_Latn_ME.txt sr_Latn_RS.txt sr_Latn_XK.txt sv.txt sv_AX.txt\\r
+ sv_FI.txt sv_SE.txt sw.txt sw_CD.txt sw_KE.txt\\r
+ sw_TZ.txt sw_UG.txt ta.txt ta_IN.txt ta_LK.txt\\r
+ ta_MY.txt ta_SG.txt te.txt te_IN.txt teo.txt\\r
+ teo_KE.txt teo_UG.txt th.txt th_TH.txt ti.txt\\r
+ ti_ER.txt ti_ET.txt to.txt to_TO.txt tr.txt\\r
+ tr_CY.txt tr_TR.txt twq.txt twq_NE.txt tzm.txt\\r
+ tzm_MA.txt ug.txt ug_CN.txt uk.txt uk_UA.txt\\r
+ ur.txt ur_IN.txt ur_PK.txt uz.txt uz_Arab.txt\\r
+ uz_Arab_AF.txt uz_Cyrl.txt uz_Cyrl_UZ.txt uz_Latn.txt uz_Latn_UZ.txt\\r
+ vai.txt vai_Latn.txt vai_Latn_LR.txt vai_Vaii.txt vai_Vaii_LR.txt\\r
+ vi.txt vi_VN.txt vun.txt vun_TZ.txt wae.txt\\r
+ wae_CH.txt xog.txt xog_UG.txt yav.txt yav_CM.txt\\r
+ yi.txt yi_001.txt yo.txt yo_BJ.txt yo_NG.txt\\r
+ yue.txt yue_HK.txt zgh.txt zgh_MA.txt zh.txt\\r
+ zh_Hans.txt zh_Hans_CN.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt\\r
+ zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zh_Hant_TW.txt zu.txt\\r
+ zu_ZA.txt\r
 \r
index 48efd86..ffef807 100644 (file)
@@ -34,7 +34,7 @@ rm{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8b9f156..9139d92 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rm_CH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c2d7cbd..94d4199 100644 (file)
@@ -16,7 +16,7 @@ rn{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e64be13..e0a6706 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rn_BI{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e53b940..b084701 100644 (file)
@@ -233,10 +233,21 @@ ro{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"Faceți virajul nr. {0} la dreapta."}\r
+                other{"Faceți virajul al {0}-lea la dreapta."}\r
+            }\r
+            plural{\r
+                few{"{0} zile"}\r
+                one{"{0} zi"}\r
+                other{"{0} de zile"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index f10298a..f76f446 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro_MD{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index c62372c..d04ff69 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro_RO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c6aa38e..c1ff90c 100644 (file)
@@ -11,7 +11,7 @@ rof{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 014d99d..8ad4782 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rof_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 100c07b..7108137 100644 (file)
@@ -160,10 +160,18 @@ root{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}?"}\r
+            }\r
+            plural{\r
+                other{"{0}?"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.30.58"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             AmPmMarkers:alias{"/LOCALE/calendar/gregorian/AmPmMarkers"}\r
@@ -2126,12 +2134,21 @@ root{
         }\r
         day-narrow:alias{"/LOCALE/fields/day-short"}\r
         day-short:alias{"/LOCALE/fields/day"}\r
+        dayOfYear{\r
+            dn{"Day Of Year"}\r
+        }\r
+        dayOfYear-narrow:alias{"/LOCALE/fields/dayOfYear-short"}\r
+        dayOfYear-short:alias{"/LOCALE/fields/dayOfYear"}\r
         dayperiod{\r
             dn{"Dayperiod"}\r
         }\r
+        dayperiod-narrow:alias{"/LOCALE/fields/dayperiod-short"}\r
+        dayperiod-short:alias{"/LOCALE/fields/dayperiod"}\r
         era{\r
             dn{"Era"}\r
         }\r
+        era-narrow:alias{"/LOCALE/fields/era-short"}\r
+        era-short:alias{"/LOCALE/fields/era"}\r
         fri{\r
             relative{\r
                 "-1"{"last Friday"}\r
@@ -2354,9 +2371,21 @@ root{
         }\r
         week-narrow:alias{"/LOCALE/fields/week-short"}\r
         week-short:alias{"/LOCALE/fields/week"}\r
+        weekOfMonth{\r
+            dn{"Week Of Month"}\r
+        }\r
+        weekOfMonth-narrow:alias{"/LOCALE/fields/weekOfMonth-short"}\r
+        weekOfMonth-short:alias{"/LOCALE/fields/weekOfMonth"}\r
         weekday{\r
             dn{"Day of the Week"}\r
         }\r
+        weekday-narrow:alias{"/LOCALE/fields/weekday-short"}\r
+        weekday-short:alias{"/LOCALE/fields/weekday"}\r
+        weekdayOfMonth{\r
+            dn{"Weekday Of Month"}\r
+        }\r
+        weekdayOfMonth-narrow:alias{"/LOCALE/fields/weekdayOfMonth-short"}\r
+        weekdayOfMonth-short:alias{"/LOCALE/fields/weekdayOfMonth"}\r
         year{\r
             dn{"Year"}\r
             relative{\r
@@ -2378,6 +2407,8 @@ root{
         zone{\r
             dn{"Zone"}\r
         }\r
+        zone-narrow:alias{"/LOCALE/fields/zone-short"}\r
+        zone-short:alias{"/LOCALE/fields/zone"}\r
     }\r
     layout{\r
         characters{"left-to-right"}\r
@@ -2420,4 +2451,31 @@ root{
         US{"US"}\r
         metric{"Metric"}\r
     }\r
+    parse{\r
+        date{\r
+            lenient{\r
+                "[\\-./]",\r
+                "[\\:∶]",\r
+            }\r
+        }\r
+        general{\r
+            lenient{\r
+                "[..․﹒ 。︒。]",\r
+                "[$﹩$$]",\r
+                "[£₤]",\r
+                "[₨₹{Rs}{Rp}]",\r
+            }\r
+        }\r
+        number{\r
+            lenient{\r
+                "[\\--﹣ −⁻₋ ➖‒]",\r
+                "[,,﹐︐ ، ٫ 、﹑︑、]",\r
+                "[++﬩﹢⁺₊ ➕]",\r
+            }\r
+            stricter{\r
+                "[,,﹐︐ ٫]",\r
+                "[..․﹒ 。]",\r
+            }\r
+        }\r
+    }\r
 }\r
index dcd151a..9fedd8c 100644 (file)
@@ -275,10 +275,21 @@ ru{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Сверните направо на {0}-м перекрестке."}\r
+            }\r
+            plural{\r
+                few{"из {0} книг за {0} дня"}\r
+                many{"из {0} книг за {0} дней"}\r
+                one{"из {0} книги за {0} день"}\r
+                other{"из {0} книги за {0} дня"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 47177cf..7f8050c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_BY{\r
-    Version{"2.1.30.5"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 998d040..28d8764 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_KG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 85c52fb..5d66d72 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_KZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 688c61c..d674bbc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_MD{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5c2a23c..d023d79 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_RU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a8e6a15..ed6e77d 100644 (file)
@@ -4,7 +4,7 @@ ru_UA{
     NumberElements{\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7507ee0..56a8a8f 100644 (file)
@@ -31,7 +31,7 @@ rw{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 56f8864..4420ad9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rw_RW{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b658eef..cb33ef8 100644 (file)
@@ -11,7 +11,7 @@ rwk{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a9dcefd..1ef6afe 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rwk_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4b0059b..15d137d 100644 (file)
@@ -163,7 +163,7 @@ sah{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.27.87"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7db1283..83f1bde 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sah_RU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6243ec2..0287914 100644 (file)
@@ -12,7 +12,7 @@ saq{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 2097b13..c2085bf 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 saq_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c9551b8..411b547 100644 (file)
@@ -17,7 +17,7 @@ sbp{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0fa45c3..bc9f302 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sbp_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6e81f4..bfea3a9 100644 (file)
@@ -165,7 +165,7 @@ se{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 38d5bd1..5303abb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se_FI{\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index dccd6de..0ab7c02 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se_NO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8ed5b42..8cd1231 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se_SE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2bcee9e..4e4330e 100644 (file)
@@ -17,7 +17,7 @@ seh{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 3e1a5df..9836fd7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 seh_MZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 23688e8..b59a4f4 100644 (file)
@@ -14,7 +14,7 @@ ses{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 135f5bd..6ee0aec 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ses_ML{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5dd1137..316b1d6 100644 (file)
@@ -15,7 +15,7 @@ sg{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index de3e492..e1a1f71 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sg_CF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 193133c..52c3d54 100644 (file)
@@ -14,7 +14,7 @@ shi{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a2edf44..54d9c52 100644 (file)
@@ -16,7 +16,7 @@ shi_Latn{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 05d7980..b77a991 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Latn_MA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 22785f4..2db194b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 591ddc7..b7a021d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng_MA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a35ff51..49f9872 100644 (file)
@@ -206,10 +206,19 @@ si{
                 timeSeparator{"."}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0} වන හැරවුම දකුණට"}\r
+            }\r
+            plural{\r
+                one{"{0} පොතක් ඇත. එය කියවීමි."}\r
+                other{"පොත් {0}ක් ඇත. ඒවා කියවීමි."}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.28"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1135591..b716329 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 si_LK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c46dbfe..5fed40b 100644 (file)
@@ -272,10 +272,21 @@ sk{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Na {0}. križovatke odbočte doprava."}\r
+            }\r
+            plural{\r
+                few{"{0} dni"}\r
+                many{"{0} dňa"}\r
+                one{"{0} deň"}\r
+                other{"{0} dní"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index eaefd1a..e8c63e1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sk_SK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index deb64b8..e4f3763 100644 (file)
@@ -262,7 +262,7 @@ sl{
                 group{"."}\r
                 infinity{"∞"}\r
                 list{";"}\r
-                minusSign{"â\80\93"}\r
+                minusSign{"â\88\92"}\r
                 nan{"NaN"}\r
                 perMille{"‰"}\r
                 percentSign{"%"}\r
@@ -271,10 +271,21 @@ sl{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"V {0}. križišču zavijte desno."}\r
+            }\r
+            plural{\r
+                few{"{0} ure"}\r
+                one{"{0} ura"}\r
+                other{"{0} ur"}\r
+                two{"{0} uri"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 5d0f70c..8d5f82a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sl_SI{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ba9b302..84960f6 100644 (file)
@@ -97,7 +97,7 @@ smn{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f9e1440..8f651d8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 smn_FI{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 53b0245..3c55cbc 100644 (file)
@@ -32,7 +32,7 @@ sn{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6480fa5..8b6a348 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sn_ZW{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2110401..90e1219 100644 (file)
@@ -10,7 +10,7 @@ so{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        one{"Kun"}\r
+                        one{"0K"}\r
                         other{"0K"}\r
                     }\r
                     10000{\r
@@ -29,7 +29,7 @@ so{
             }\r
         }\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.33.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0327421..8436049 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so_DJ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1727964..20a9611 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so_ET{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 10f66a1..e0775cb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index fc6b24f..02860c7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so_SO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e40c039..1e10b43 100644 (file)
@@ -205,10 +205,21 @@ sq{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                many{"Merrni kthesën e {0}-t në të djathtë."}\r
+                one{"Merrni kthesën e {0}-rë në të djathtë."}\r
+                other{"Merrni kthesën e {0}-të në të djathtë."}\r
+            }\r
+            plural{\r
+                one{"{0} libër"}\r
+                other{"{0} libra"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7062565..61b9457 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq_AL{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fdc96bb..4f32aa8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq_MK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index cc4e136..c0d40dd 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq_XK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index b502010..e3c54e6 100644 (file)
@@ -230,13 +230,24 @@ sr{
                 percentSign{"%"}\r
                 plusSign{"+"}\r
                 superscriptingExponent{"×"}\r
-                timeSeparator{"."}\r
+                timeSeparator{":"}\r
+            }\r
+        }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Скрените у {0}. десно."}\r
+            }\r
+            plural{\r
+                few{"{0} сата"}\r
+                many{"{0} сати"}\r
+                one{"{0} сат"}\r
+                other{"{0} сати"}\r
             }\r
         }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.73"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -311,8 +322,8 @@ sr{
                 GyMMMEd{"E, d. MMM y. G"}\r
                 GyMMMd{"d. MMM y. G"}\r
                 H{"HH"}\r
-                Hm{"HH.mm"}\r
-                Hms{"HH.mm.ss"}\r
+                Hm{"HH:mm"}\r
+                Hms{"HH:mm:ss"}\r
                 M{"L"}\r
                 MEd{"E, d.M."}\r
                 MMM{"LLL"}\r
@@ -325,9 +336,9 @@ sr{
                 Md{"d.M."}\r
                 d{"d"}\r
                 h{"hh a"}\r
-                hm{"hh.mm a"}\r
-                hms{"hh.mm.ss a"}\r
-                ms{"mm.ss"}\r
+                hm{"hh:mm a"}\r
+                hms{"hh:mm:ss a"}\r
+                ms{"mm:ss"}\r
                 y{"y. G"}\r
                 yyyy{"y. G"}\r
                 yyyyM{"M.y. GGGGG"}\r
@@ -347,12 +358,12 @@ sr{
                     H{"HH–HH"}\r
                 }\r
                 Hm{\r
-                    H{"HH.mm–HH.mm"}\r
-                    m{"HH.mm–HH.mm"}\r
+                    H{"HH:mm–HH:mm"}\r
+                    m{"HH:mm–HH:mm"}\r
                 }\r
                 Hmv{\r
-                    H{"HH.mm–HH.mm v"}\r
-                    m{"HH.mm–HH.mm v"}\r
+                    H{"HH:mm–HH:mm v"}\r
+                    m{"HH:mm–HH:mm v"}\r
                 }\r
                 Hv{\r
                     H{"HH–HH v"}\r
@@ -388,14 +399,14 @@ sr{
                     h{"h–h a"}\r
                 }\r
                 hm{\r
-                    a{"h.mm a – h.mm a"}\r
-                    h{"h.mm–h.mm a"}\r
-                    m{"h.mm–h.mm a"}\r
+                    a{"h:mm a – h:mm a"}\r
+                    h{"h:mm–h:mm a"}\r
+                    m{"h:mm–h:mm a"}\r
                 }\r
                 hmv{\r
-                    a{"h.mm a – h.mm a v"}\r
-                    h{"h.mm–h.mm a v"}\r
-                    m{"h.mm–h.mm a v"}\r
+                    a{"h:mm a – h:mm a v"}\r
+                    h{"h:mm–h:mm a v"}\r
+                    m{"h:mm–h:mm a v"}\r
                 }\r
                 hv{\r
                     a{"h a – h a v"}\r
@@ -682,12 +693,12 @@ sr{
                     H{"HH–HH"}\r
                 }\r
                 Hm{\r
-                    H{"HH.mm–HH.mm"}\r
-                    m{"HH.mm–HH.mm"}\r
+                    H{"HH:mm–HH:mm"}\r
+                    m{"HH:mm–HH:mm"}\r
                 }\r
                 Hmv{\r
-                    H{"HH.mm–HH.mm v"}\r
-                    m{"HH.mm–HH.mm v"}\r
+                    H{"HH:mm–HH:mm v"}\r
+                    m{"HH:mm–HH:mm v"}\r
                 }\r
                 Hv{\r
                     H{"HH–HH v"}\r
@@ -723,14 +734,14 @@ sr{
                     h{"h–h a"}\r
                 }\r
                 hm{\r
-                    a{"h.mm a – h.mm a"}\r
-                    h{"h.mm–h.mm a"}\r
-                    m{"h.mm–h.mm a"}\r
+                    a{"h:mm a – h:mm a"}\r
+                    h{"h:mm–h:mm a"}\r
+                    m{"h:mm–h:mm a"}\r
                 }\r
                 hmv{\r
-                    a{"h.mm a – h.mm a v"}\r
-                    h{"h.mm–h.mm a v"}\r
-                    m{"h.mm–h.mm a v"}\r
+                    a{"h:mm a – h:mm a v"}\r
+                    h{"h:mm–h:mm a v"}\r
+                    m{"h:mm–h:mm a v"}\r
                 }\r
                 hv{\r
                     a{"h a – h a v"}\r
index 0b50a55..2e18268 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d23cd7d..5ee4a5b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl_BA{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index c1b8d72..381e9b8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl_ME{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index 676c665..7d0223f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl_RS{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a70717c..820fcc7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl_XK{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index 24111d6..cddcd6e 100644 (file)
@@ -231,13 +231,24 @@ sr_Latn{
                 percentSign{"%"}\r
                 plusSign{"+"}\r
                 superscriptingExponent{"×"}\r
-                timeSeparator{"."}\r
+                timeSeparator{":"}\r
+            }\r
+        }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Skrenite u {0}. desno."}\r
+            }\r
+            plural{\r
+                few{"{0} sata"}\r
+                many{"{0} sati"}\r
+                one{"{0} sat"}\r
+                other{"{0} sati"}\r
             }\r
         }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.32.73"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -312,8 +323,8 @@ sr_Latn{
                 GyMMMEd{"E, d. MMM y. G"}\r
                 GyMMMd{"d. MMM y. G"}\r
                 H{"HH"}\r
-                Hm{"HH.mm"}\r
-                Hms{"HH.mm.ss"}\r
+                Hm{"HH:mm"}\r
+                Hms{"HH:mm:ss"}\r
                 M{"L"}\r
                 MEd{"E, d.M."}\r
                 MMM{"LLL"}\r
@@ -326,9 +337,9 @@ sr_Latn{
                 Md{"d.M."}\r
                 d{"d"}\r
                 h{"hh a"}\r
-                hm{"hh.mm a"}\r
-                hms{"hh.mm.ss a"}\r
-                ms{"mm.ss"}\r
+                hm{"hh:mm a"}\r
+                hms{"hh:mm:ss a"}\r
+                ms{"mm:ss"}\r
                 y{"y. G"}\r
                 yyyy{"y. G"}\r
                 yyyyM{"M.y. GGGGG"}\r
@@ -348,12 +359,12 @@ sr_Latn{
                     H{"HH–HH"}\r
                 }\r
                 Hm{\r
-                    H{"HH.mm–HH.mm"}\r
-                    m{"HH.mm–HH.mm"}\r
+                    H{"HH:mm–HH:mm"}\r
+                    m{"HH:mm–HH:mm"}\r
                 }\r
                 Hmv{\r
-                    H{"HH.mm–HH.mm v"}\r
-                    m{"HH.mm–HH.mm v"}\r
+                    H{"HH:mm–HH:mm v"}\r
+                    m{"HH:mm–HH:mm v"}\r
                 }\r
                 Hv{\r
                     H{"HH–HH v"}\r
@@ -389,14 +400,14 @@ sr_Latn{
                     h{"h–h a"}\r
                 }\r
                 hm{\r
-                    a{"h.mm a – h.mm a"}\r
-                    h{"h.mm–h.mm a"}\r
-                    m{"h.mm–h.mm a"}\r
+                    a{"h:mm a – h:mm a"}\r
+                    h{"h:mm–h:mm a"}\r
+                    m{"h:mm–h:mm a"}\r
                 }\r
                 hmv{\r
-                    a{"h.mm a – h.mm a v"}\r
-                    h{"h.mm–h.mm a v"}\r
-                    m{"h.mm–h.mm a v"}\r
+                    a{"h:mm a – h:mm a v"}\r
+                    h{"h:mm–h:mm a v"}\r
+                    m{"h:mm–h:mm a v"}\r
                 }\r
                 hv{\r
                     a{"h a – h a v"}\r
@@ -683,12 +694,12 @@ sr_Latn{
                     H{"HH–HH"}\r
                 }\r
                 Hm{\r
-                    H{"HH.mm–HH.mm"}\r
-                    m{"HH.mm–HH.mm"}\r
+                    H{"HH:mm–HH:mm"}\r
+                    m{"HH:mm–HH:mm"}\r
                 }\r
                 Hmv{\r
-                    H{"HH.mm–HH.mm v"}\r
-                    m{"HH.mm–HH.mm v"}\r
+                    H{"HH:mm–HH:mm v"}\r
+                    m{"HH:mm–HH:mm v"}\r
                 }\r
                 Hv{\r
                     H{"HH–HH v"}\r
@@ -724,14 +735,14 @@ sr_Latn{
                     h{"h–h a"}\r
                 }\r
                 hm{\r
-                    a{"h.mm a – h.mm a"}\r
-                    h{"h.mm–h.mm a"}\r
-                    m{"h.mm–h.mm a"}\r
+                    a{"h:mm a – h:mm a"}\r
+                    h{"h:mm–h:mm a"}\r
+                    m{"h:mm–h:mm a"}\r
                 }\r
                 hmv{\r
-                    a{"h.mm a – h.mm a v"}\r
-                    h{"h.mm–h.mm a v"}\r
-                    m{"h.mm–h.mm a v"}\r
+                    a{"h:mm a – h:mm a v"}\r
+                    h{"h:mm–h:mm a v"}\r
+                    m{"h:mm–h:mm a v"}\r
                 }\r
                 hv{\r
                     a{"h a – h a v"}\r
index 1f7e08d..fe24051 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn_BA{\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index 6e41b02..ca00cb2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn_ME{\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index 62df0de..dbfd1b6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn_RS{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 72dfda9..35aca46 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn_XK{\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index 1efb155..a8e0518 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv{\r
-    AuxExemplarCharacters{"[á â ã ā ç ë í î ï ī ñ ó ú ÿ ü æ ø]"}\r
+    AuxExemplarCharacters{"[á Ã¢ Ã£ Ä\81 Ã§ Ã¨ Ã« Ã­ Ã® Ã¯ Ä« Ã± Ã³ Ãº Ã¿ Ã¼ Ã¦ Ã¸]"}\r
     Ellipsis{\r
         final{"{0}…"}\r
         initial{"…{0}"}\r
@@ -216,10 +216,20 @@ sv{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"Ta {0}:a svängen till höger"}\r
+                other{"Ta {0}:e svängen till höger"}\r
+            }\r
+            plural{\r
+                one{"om {0} dag"}\r
+                other{"om {0} dagar"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index b693a9d..f71e3c6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv_AX{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ce9be45..f6765b4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv_FI{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 8d04d74..365ee3d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv_SE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9a97202..ea09319 100644 (file)
@@ -29,154 +29,154 @@ sw{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        one{"Elfu 0"}\r
-                        other{"Elfu 0"}\r
+                        one{"Elfu 0;Elfu -0"}\r
+                        other{"Elfu 0;Elfu -0"}\r
                     }\r
                     10000{\r
-                        one{"Elfu 00"}\r
-                        other{"Elfu 00"}\r
+                        one{"Elfu 00;Elfu -00"}\r
+                        other{"Elfu 00;Elfu -00"}\r
                     }\r
                     100000{\r
-                        one{"Elfu 000"}\r
-                        other{"Elfu 000"}\r
+                        one{"Elfu 000;Elfu -000"}\r
+                        other{"Elfu 000;Elfu -000"}\r
                     }\r
                     1000000{\r
-                        one{"Milioni 0"}\r
-                        other{"Milioni 0"}\r
+                        one{"Milioni 0;Milioni -0"}\r
+                        other{"Milioni 0;Milioni -0"}\r
                     }\r
                     10000000{\r
-                        one{"Milioni 00"}\r
-                        other{"Milioni 00"}\r
+                        one{"Milioni 00;Milioni -00"}\r
+                        other{"Milioni 00;Milioni -00"}\r
                     }\r
                     100000000{\r
-                        one{"Milioni 000"}\r
-                        other{"Milioni 000"}\r
+                        one{"Milioni 000;Milioni -000"}\r
+                        other{"Milioni 000;Milioni -000"}\r
                     }\r
                     1000000000{\r
-                        one{"Bilioni 0"}\r
-                        other{"Bilioni 0"}\r
+                        one{"Bilioni 0;Bilioni -0"}\r
+                        other{"Bilioni 0;Bilioni -0"}\r
                     }\r
                     10000000000{\r
-                        one{"Bilioni 00"}\r
-                        other{"Bilioni 00"}\r
+                        one{"Bilioni 00;Bilioni -00"}\r
+                        other{"Bilioni 00;Bilioni -00"}\r
                     }\r
                     100000000000{\r
-                        one{"Bilioni 000"}\r
-                        other{"Bilioni 000"}\r
+                        one{"Bilioni 000;Bilioni -000"}\r
+                        other{"Bilioni 000;Bilioni -000"}\r
                     }\r
                     1000000000000{\r
-                        one{"Trilioni 0"}\r
-                        other{"Trilioni 0"}\r
+                        one{"Trilioni 0;Trilioni -0"}\r
+                        other{"Trilioni 0;Trilioni -0"}\r
                     }\r
                     10000000000000{\r
-                        one{"Trilioni 00"}\r
-                        other{"Trilioni 00"}\r
+                        one{"Trilioni 00;Trilioni -00"}\r
+                        other{"Trilioni 00;Trilioni -00"}\r
                     }\r
                     100000000000000{\r
-                        one{"Trilioni 000"}\r
-                        other{"Trilioni 000"}\r
+                        one{"Trilioni 000;Trilioni -000"}\r
+                        other{"Trilioni 000;Trilioni -000"}\r
                     }\r
                 }\r
             }\r
             patternsShort{\r
                 currencyFormat{\r
                     1000{\r
-                        one{"¤elfu 0"}\r
-                        other{"¤elfu 0"}\r
+                        one{"¤elfu 0;¤elfu -0"}\r
+                        other{"¤elfu 0;¤elfu -0"}\r
                     }\r
                     10000{\r
-                        one{"¤elfu 00"}\r
-                        other{"¤elfu 00"}\r
+                        one{"¤elfu 00;¤elfu -00"}\r
+                        other{"¤elfu 00;¤elfu -00"}\r
                     }\r
                     100000{\r
-                        one{"¤laki 000"}\r
-                        other{"¤laki 000"}\r
+                        one{"¤laki 000;¤laki -000"}\r
+                        other{"¤laki 000;¤laki -000"}\r
                     }\r
                     1000000{\r
-                        one{"¤M0"}\r
-                        other{"¤M0"}\r
+                        one{"¤M0;¤M-0"}\r
+                        other{"¤M0;¤M-0"}\r
                     }\r
                     10000000{\r
-                        one{"¤M00"}\r
-                        other{"¤M00"}\r
+                        one{"¤M00;¤M-00"}\r
+                        other{"¤M00;¤M-00"}\r
                     }\r
                     100000000{\r
-                        one{"¤M000"}\r
-                        other{"¤M000"}\r
+                        one{"¤M000;¤M-000"}\r
+                        other{"¤M000;¤M-000"}\r
                     }\r
                     1000000000{\r
-                        one{"¤B0"}\r
-                        other{"¤B0"}\r
+                        one{"¤B0;¤B-0"}\r
+                        other{"¤B0;¤B-0"}\r
                     }\r
                     10000000000{\r
-                        one{"¤B00"}\r
-                        other{"¤B00"}\r
+                        one{"¤B00;¤B-00"}\r
+                        other{"¤B00;¤B-00"}\r
                     }\r
                     100000000000{\r
-                        one{"¤B000"}\r
-                        other{"¤B000"}\r
+                        one{"¤B000;¤B-000"}\r
+                        other{"¤B000;¤B-000"}\r
                     }\r
                     1000000000000{\r
-                        one{"¤T0"}\r
-                        other{"¤T0"}\r
+                        one{"¤T0;¤T-0"}\r
+                        other{"¤T0;¤T-0"}\r
                     }\r
                     10000000000000{\r
-                        one{"¤T00"}\r
-                        other{"¤T00"}\r
+                        one{"¤T00;¤T-00"}\r
+                        other{"¤T00;¤T-00"}\r
                     }\r
                     100000000000000{\r
-                        one{"¤T000"}\r
-                        other{"¤T000"}\r
+                        one{"¤T000;¤T-000"}\r
+                        other{"¤T000;¤T-000"}\r
                     }\r
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        one{"elfu 0"}\r
-                        other{"elfu 0"}\r
+                        one{"elfu 0;elfu -0"}\r
+                        other{"elfu 0;elfu -0"}\r
                     }\r
                     10000{\r
-                        one{"elfu 00"}\r
-                        other{"elfu 00"}\r
+                        one{"elfu 00;elfu -00"}\r
+                        other{"elfu 00;elfu -00"}\r
                     }\r
                     100000{\r
-                        one{"elfu 000"}\r
-                        other{"elfu 000"}\r
+                        one{"elfu 000;elfu -000"}\r
+                        other{"elfu 000;elfu -000"}\r
                     }\r
                     1000000{\r
-                        one{"M0"}\r
-                        other{"M0"}\r
+                        one{"M0;M-0"}\r
+                        other{"M0;M-0"}\r
                     }\r
                     10000000{\r
-                        one{"M00"}\r
-                        other{"M00"}\r
+                        one{"M00;M-00"}\r
+                        other{"M00;M-00"}\r
                     }\r
                     100000000{\r
-                        one{"M000"}\r
-                        other{"M000"}\r
+                        one{"M000;M-000"}\r
+                        other{"M000;M-000"}\r
                     }\r
                     1000000000{\r
-                        one{"B0"}\r
-                        other{"B0"}\r
+                        one{"B0;B-0"}\r
+                        other{"B0;B-0"}\r
                     }\r
                     10000000000{\r
-                        one{"B00"}\r
-                        other{"B00"}\r
+                        one{"B00;B-00"}\r
+                        other{"B00;B-00"}\r
                     }\r
                     100000000000{\r
-                        one{"B000"}\r
-                        other{"B000"}\r
+                        one{"B000;B-000"}\r
+                        other{"B000;B-000"}\r
                     }\r
                     1000000000000{\r
-                        one{"T0"}\r
-                        other{"T0"}\r
+                        one{"T0;T-0"}\r
+                        other{"T0;T-0"}\r
                     }\r
                     10000000000000{\r
-                        one{"T00"}\r
-                        other{"T00"}\r
+                        one{"T00;T-00"}\r
+                        other{"T00;T-00"}\r
                     }\r
                     100000000000000{\r
-                        one{"T000"}\r
-                        other{"T000"}\r
+                        one{"T000;T-000"}\r
+                        other{"T000;T-000"}\r
                     }\r
                 }\r
             }\r
@@ -195,10 +195,19 @@ sw{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Chukua mpinduko wa {0} kulia."}\r
+            }\r
+            plural{\r
+                one{"siku {0} iliyopita"}\r
+                other{"siku {0} zilizopita"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.73"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 074975d..92bab87 100644 (file)
@@ -11,7 +11,7 @@ sw_CD{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index 3ba7866..0464c35 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw_KE{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e3dd777..c9c96ae 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b18eaf1..341bdf9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw_UG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cbcdd9e..9a9927e 100644 (file)
@@ -202,6 +202,15 @@ ta{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}வது வலது திருப்பத்தை எடு."}\r
+            }\r
+            plural{\r
+                one{"{0} நாள்"}\r
+                other{"{0} நாட்கள்"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"tamldec"}\r
         tamldec{\r
@@ -225,7 +234,7 @@ ta{
         }\r
         traditional{"taml"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.4"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
index bf8d3d4..bb765c8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c4854d4..6704eb0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta_LK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 6d54270..4f84bf9 100644 (file)
@@ -10,5 +10,5 @@ ta_MY{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d8f2715..def1605 100644 (file)
@@ -10,5 +10,5 @@ ta_SG{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 690b603..421a0f6 100644 (file)
@@ -204,6 +204,15 @@ te{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}వ కుడి మలుపు తీసుకోండి."}\r
+            }\r
+            plural{\r
+                one{"{0} రోజు"}\r
+                other{"{0} రోజులు"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"telu"}\r
         telu{\r
@@ -228,7 +237,7 @@ te{
             }\r
         }\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 38e26ee..0ec2d2a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 te_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e67ce3d..d44e8bf 100644 (file)
@@ -12,7 +12,7 @@ teo{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6bb77cb..eff4185 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 teo_KE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1852ad9..b987f93 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 teo_UG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0126369..d31c5b6 100644 (file)
@@ -78,78 +78,78 @@ th{
             patternsShort{\r
                 currencyFormat{\r
                     1000{\r
-                        other{"¤0 พ'.'"}\r
+                        other{"¤0K"}\r
                     }\r
                     10000{\r
-                        other{"¤0 ม'.'"}\r
+                        other{"¤00K"}\r
                     }\r
                     100000{\r
-                        other{"¤0 ส'.'"}\r
+                        other{"¤000K"}\r
                     }\r
                     1000000{\r
-                        other{"¤0 ล'.'"}\r
+                        other{"¤0M"}\r
                     }\r
                     10000000{\r
-                        other{"¤00 ล'.'"}\r
+                        other{"¤00M"}\r
                     }\r
                     100000000{\r
-                        other{"¤000 ล'.'"}\r
+                        other{"¤000M"}\r
                     }\r
                     1000000000{\r
-                        other{"¤0 พ'.'ล'.'"}\r
+                        other{"¤0B"}\r
                     }\r
                     10000000000{\r
-                        other{"¤0 ม'.'ล'.'"}\r
+                        other{"¤00B"}\r
                     }\r
                     100000000000{\r
-                        other{"¤0 ส'.'ล'.'"}\r
+                        other{"¤000B"}\r
                     }\r
                     1000000000000{\r
-                        other{"¤0 ล'.'ล'.'"}\r
+                        other{"¤0T"}\r
                     }\r
                     10000000000000{\r
-                        other{"¤00 ล'.'ล'.'"}\r
+                        other{"¤00T"}\r
                     }\r
                     100000000000000{\r
-                        other{"¤000 ล'.'ล'.'"}\r
+                        other{"¤000T"}\r
                     }\r
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0 พ'.'"}\r
+                        other{"0K"}\r
                     }\r
                     10000{\r
-                        other{"0 ม'.'"}\r
+                        other{"00K"}\r
                     }\r
                     100000{\r
-                        other{"0 ส'.'"}\r
+                        other{"000K"}\r
                     }\r
                     1000000{\r
-                        other{"0 ล'.'"}\r
+                        other{"0M"}\r
                     }\r
                     10000000{\r
-                        other{"00 ล'.'"}\r
+                        other{"00M"}\r
                     }\r
                     100000000{\r
-                        other{"000 ล'.'"}\r
+                        other{"000M"}\r
                     }\r
                     1000000000{\r
-                        other{"0 พ'.'ล'.'"}\r
+                        other{"0B"}\r
                     }\r
                     10000000000{\r
-                        other{"0 ม'.'ล'.'"}\r
+                        other{"00B"}\r
                     }\r
                     100000000000{\r
-                        other{"0 ส'.'ล'.'"}\r
+                        other{"000B"}\r
                     }\r
                     1000000000000{\r
-                        other{"0 ล'.'ล'.'"}\r
+                        other{"0T"}\r
                     }\r
                     10000000000000{\r
-                        other{"00 ล'.'ล'.'"}\r
+                        other{"00T"}\r
                     }\r
                     100000000000000{\r
-                        other{"000 ล'.'ล'.'"}\r
+                        other{"000T"}\r
                     }\r
                 }\r
             }\r
@@ -168,10 +168,18 @@ th{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"เลี้ยวขวาที่ทางเลี้ยวที่ {0}"}\r
+            }\r
+            plural{\r
+                other{"{0} วัน"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"thai"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 8f6a7a3..b06acb6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 th_TH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 66df2f4..7072d82 100644 (file)
@@ -47,7 +47,7 @@ ti{
         native{"latn"}\r
         traditional{"ethi"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 37ca4bb..eb10f4b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti_ER{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 2d82c18..f4af622 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti_ET{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1aa7abc..8488b49 100644 (file)
@@ -131,7 +131,7 @@ to{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.74"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4d62e69..e8f96ad 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 to_TO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 07eeeb7..5cda648 100644 (file)
@@ -203,10 +203,19 @@ tr{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}. sağdan dönün."}\r
+            }\r
+            plural{\r
+                one{"Sepetinizde {0} X var. Bunu almak istiyor musunuz?"}\r
+                other{"Sepetinizde {0} X var. Bunları almak istiyor musunuz?"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 44b519d..fbe5e60 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tr_CY{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index bda5281..a805a98 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tr_TR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26c67c4..513701f 100644 (file)
@@ -16,7 +16,7 @@ twq{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4a7d4d8..e506ace 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 twq_NE{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 319351c..43b0812 100644 (file)
@@ -15,7 +15,7 @@ tzm{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 2c250c2..a23008a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tzm_MA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8a6748c..b7807e2 100644 (file)
@@ -133,9 +133,15 @@ ug{
                 superscriptingExponent{"×"}\r
             }\r
         }\r
+        minimalPairs{\r
+            plural{\r
+                one{"{0}  كىتاب"}\r
+                other{"{0} بېلىق كۆردۈم ۋە ئۇنى يەۋەتتىم."}\r
+            }\r
+        }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 98a87ab..6860a05 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ug_CN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 05c6e84..abc8d07 100644 (file)
@@ -15,7 +15,7 @@ uk{
     }\r
     ExemplarCharacters{"[а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ь ю я ʼ]"}\r
     ExemplarCharactersIndex{"[А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я]"}\r
-    ExemplarCharactersPunctuation{"[\\- – , ; \\: ! ? . ' \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / \\\\ №]"}\r
+    ExemplarCharactersPunctuation{"[\\- – , ; \\: ! ? . ' ’ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / \\\\ №]"}\r
     MoreInformation{"?"}\r
     NumberElements{\r
         default{"latn"}\r
@@ -272,10 +272,22 @@ uk{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                few{"{0}-я дивізія, {0}-є коло"}\r
+                other{"{0}-а дивізія, {0}-е коло"}\r
+            }\r
+            plural{\r
+                few{"{0} дні"}\r
+                many{"{0} днів"}\r
+                one{"{0} день"}\r
+                other{"{0} дня"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.38"}\r
+    Version{"2.1.32.60"}\r
     calendar{\r
         coptic{\r
             monthNames{\r
index df32bfa..4e294e0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uk_UA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6217fe2..3080480 100644 (file)
@@ -227,10 +227,19 @@ ur{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"دایاں موڑ نمبر {0} مڑیں۔"}\r
+            }\r
+            plural{\r
+                one{"{0} گھنٹہ"}\r
+                other{"{0} گھنٹے"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
@@ -276,7 +285,7 @@ ur{
                 yyyyMEd{"E، d/M/y G"}\r
                 yyyyMMM{"MMM y G"}\r
                 yyyyMMMEd{"E، d MMM، y G"}\r
-                yyyyMMMM{"G y MMMM"}\r
+                yyyyMMMM{"MMMM y G"}\r
                 yyyyMMMd{"d MMM، y G"}\r
                 yyyyMd{"d/M/y G"}\r
                 yyyyQQQ{"QQQ y G"}\r
@@ -448,7 +457,7 @@ ur{
                 yMEd{"E، d/M/y"}\r
                 yMMM{"MMM y"}\r
                 yMMMEd{"E، d MMM، y"}\r
-                yMMMM{"y MMMM"}\r
+                yMMMM{"MMMM y"}\r
                 yMMMd{"d MMM، y"}\r
                 yMd{"d/M/y"}\r
                 yQQQ{"QQQ y"}\r
index 93a6e25..0b2f6c9 100644 (file)
@@ -14,7 +14,7 @@ ur_IN{
             }\r
         }\r
     }\r
-    Version{"2.1.27.79"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index 593eb43..03a7aba 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur_PK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 849da90..ba37a60 100644 (file)
@@ -220,10 +220,19 @@ uz{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"{0}chi chorraxada oʼngga buriling."}\r
+            }\r
+            plural{\r
+                one{"Savatingizda {0}X bor. Uni sotib olasizmi?"}\r
+                other{"Savatingizda {0}X bor. Ularni sotib olasizmi?"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.60"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 3fe1bed..aced47d 100644 (file)
@@ -27,7 +27,7 @@ uz_Arab{
         }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index 98aee99..e4b7967 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Arab_AF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         default{"persian"}\r
     }\r
index 38eb8eb..976a5c1 100644 (file)
@@ -164,7 +164,7 @@ uz_Cyrl{
             }\r
         }\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6d2c9f6..0debf66 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Cyrl_UZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bdf99c4..fdd810c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 10499fb..0069ccc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn_UZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c63aad5..c5384ff 100644 (file)
@@ -27,7 +27,7 @@ vai{
         }\r
         native{"vaii"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 414657f..be6e735 100644 (file)
@@ -22,7 +22,7 @@ vai_Latn{
         }\r
         native{"vaii"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a356564..59e39ea 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Latn_LR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38872b5..e66f0f3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 30c9f78..9aefce3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii_LR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a08cdb3..8fa9369 100644 (file)
@@ -168,10 +168,20 @@ vi{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                one{"Rẽ vào lối rẽ thứ nhất bên phải."}\r
+                other{"Rẽ vào lối rẽ thứ {0} bên phải."}\r
+            }\r
+            plural{\r
+                one{"Rẽ vào lối rẽ thứ nhất bên phải."}\r
+                other{"Rẽ vào lối rẽ thứ {0} bên phải."}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 6bb46b4..43b4da3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vi_VN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3740856..42c4678 100644 (file)
@@ -11,7 +11,7 @@ vun{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 5d8d275..b6e01ac 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vun_TZ{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 86e51fa..4ec4482 100644 (file)
@@ -15,7 +15,7 @@ wae{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 184e62c..67f3676 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 wae_CH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3dcce2e..841dc76 100644 (file)
@@ -10,7 +10,7 @@ xog{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 43c14c2..21ab0f7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 xog_UG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b05b478..3be826c 100644 (file)
@@ -21,7 +21,7 @@ yav{
             }\r
         }\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0f8eb26..7a57c8e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yav_CM{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fc0257c..3c1aa2a 100644 (file)
@@ -28,7 +28,7 @@ yi{
         native{"latn"}\r
         traditional{"hebr"}\r
     }\r
-    Version{"2.1.27.97"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1e7c6ca..c45325b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yi_001{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6c5ff64..bbb7206 100644 (file)
@@ -35,7 +35,7 @@ yo{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 12c771e..d06ce38 100644 (file)
@@ -5,7 +5,7 @@ yo_BJ{
         "[a á à b d e é è ɛ {ɛ\u0301} {ɛ\u0300} f g {gb} h i í ì j k l m n o ó ò ɔ {ɔ"\r
         "\u0301} {ɔ\u0300} p r s {sh} t u ú ù w y]"\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 5e1f0d5..ef97b8c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yo_NG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2d116c6..abc5a1c 100644 (file)
@@ -247,11 +247,19 @@ yue{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"第 {0} 本書"}\r
+            }\r
+            plural{\r
+                other{"{0} 本書"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"hanidec"}\r
         traditional{"hant"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 246d841..2ad7ca8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yue_HK{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 25b5197..6cb32f6 100644 (file)
@@ -31,7 +31,7 @@ zgh{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 32ec1c0..1d9ed9d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zgh_MA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 13136bc..1cc5a21 100644 (file)
@@ -1,7 +1,13 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh{\r
-    AuxExemplarCharacters{"[仂 侣 傈 傣 僳 卑 卞 厘 吕 坝 堤 奎 屿 巽 撤 楔 楠 滕 瑚 甫 盲 碑 禄 粟 脚 艮 谬 钯 铂 锑 镑 魁]"}\r
+    AuxExemplarCharacters{\r
+        "[仂 侣 傈 傣 僳 卑 卞 厘 吕 坝 堤 奎 屿 巽 撤 楔 楠 滕 瑚 甫 盲 碑 禄 粟 脚 艮 谬 钯 铂 锑 镑 魁 乒 乓 仓 伞 冥 凉"\r
+        " 刨 匕 厦 厨 呣 唇 啤 啮 喱 嗅 噘 噢 墟 妆 婴 媚 宅 寺 尬 尴 屑 巾 弓 彗 惊 戟 扔 扰 扳 抛 挂 捂 摇 撅 杆 杖 柜 柱"\r
+        " 栗 栽 桶 棍 棕 棺 榈 槟 橙 洒 浆 涌 淇 滚 滩 灾 烛 烟 焰 煎 犬 猫 瓢 皱 盆 盔 眨 眯 瞌 矿 祈 祭 祷 稻 竿 笼 筒 篷"\r
+        " 粮 纠 纬 缆 缎 耸 舔 舵 艇 芽 苜 苞 菇 菱 葫 葵 蒸 蓿 蔽 薯 蘑 蚂 蛛 蜗 蜘 蜡 蝎 蝴 螃 裹 谍 豚 账 跤 踪 躬 轴 辐"\r
+        " 迹 郁 鄙 酢 钉 钥 钮 铅 铛 锄 锚 锤 闺 阱 隧 雕 霾 靴 靶 鞠 颠 馏 驼 骆 髦 鲤 鲸 鳄 鸽]"\r
+    }\r
     Ellipsis{\r
         final{"{0}…"}\r
         initial{"…{0}"}\r
@@ -146,7 +152,7 @@ zh{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"0万"}\r
@@ -186,7 +192,7 @@ zh{
             patternsShort{\r
                 currencyFormat{\r
                     1000{\r
-                        other{"¤0千"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"¤0万"}\r
@@ -224,7 +230,7 @@ zh{
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"0万"}\r
@@ -276,11 +282,19 @@ zh{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"在第 {0} 个路口右转。"}\r
+            }\r
+            plural{\r
+                other{"{0} 天"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"hanidec"}\r
         traditional{"hans"}\r
     }\r
-    Version{"2.1.29.84"}\r
+    Version{"2.1.33.94"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index c64cac5..1e311fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 14ddc17..9990427 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_CN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d8f8229..bf3dfaf 100644 (file)
@@ -31,7 +31,7 @@ zh_Hans_HK{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 5ea1f54..0ab64e6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_MO{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
index 1058b3d..a5db5fb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_SG{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 1b8ec8c..135b84f 100644 (file)
@@ -4,7 +4,9 @@ zh_Hant{
     %%Parent{"root"}\r
     AuxExemplarCharacters{\r
         "[乍 仂 伏 佐 侶 僳 兆 兌 兹 别 券 勳 卑 卞 占 叶 堤 墎 壤 奥 孜 峇 嶼 巽 栗 楔 涅 渾 澎 燦 狄 琳 瑚 甫 碑 礁 芒 苗"\r
-        " 茨 蓬 蚩 蜀 裘 謬 酋 隴]"\r
+        " 茨 蓬 蚩 蜀 裘 謬 酋 隴 乳 划 匕 匙 匣 叉 吻 嘟 噘 妖 巾 帆 廁 廚 弋 弓 懸 戟 扳 捂 摔 暈 框 桶 桿 櫃 煎 燭 牡 皺"\r
+        " 盒 眨 眩 筒 簍 糰 紋 紗 纏 纜 羯 聳 肖 艇 虹 蛛 蜘 蝴 蝸 蠟 裙 豚 躬 釘 鈔 鈕 鉛 鎚 鎬 鐺 鑰 鑽 霄 鞠 骰 骷 髏 鯉"\r
+        " 鳶]"\r
     }\r
     Ellipsis{\r
         final{"{0}…"}\r
@@ -119,7 +121,7 @@ zh_Hant{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"0萬"}\r
@@ -159,7 +161,7 @@ zh_Hant{
             patternsShort{\r
                 currencyFormat{\r
                     1000{\r
-                        other{"¤0千"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"¤0萬"}\r
@@ -197,7 +199,7 @@ zh_Hant{
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"0萬"}\r
@@ -249,10 +251,18 @@ zh_Hant{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"在第 {0} 個路口右轉。"}\r
+            }\r
+            plural{\r
+                other{"{0} 日"}\r
+            }\r
+        }\r
         native{"hanidec"}\r
         traditional{"hant"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.94"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index a46edbb..d0ddf5d 100644 (file)
@@ -91,7 +91,7 @@ zh_Hant_HK{
             }\r
         }\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     calendar{\r
         buddhist{\r
             availableFormats{\r
index 9d2c5aa..9589854 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 48c2dc5..365603b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_TW{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 065e71d..c0d35eb 100644 (file)
@@ -203,10 +203,19 @@ zu{
                 timeSeparator{":"}\r
             }\r
         }\r
+        minimalPairs{\r
+            ordinal{\r
+                other{"Thatha indlela ejikela kwesokudla engu-{0}"}\r
+            }\r
+            plural{\r
+                one{"{0} usuku"}\r
+                other{"{0} izinsuku"}\r
+            }\r
+        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.31.74"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index daab6cb..1db9f3a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zu_ZA{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 83a2e8d..37efb00 100644 (file)
 \r
 ##############################################################################\r
 # Keep the following in sync with the version - see common/unicode/uvernum.h\r
-U_ICUDATA_NAME=icudt58\r
+U_ICUDATA_NAME=icudt59\r
 ##############################################################################\r
+!IF "$(UWP)" == "UWP"\r
+U_ICUDATA_NAME=icudt\r
+!ENDIF\r
 U_ICUDATA_ENDIAN_SUFFIX=l\r
 UNICODE_VERSION=9.0\r
 ICU_LIB_TARGET=$(DLL_OUTPUT)\$(U_ICUDATA_NAME).dll\r
@@ -119,10 +122,14 @@ ICUDATA=$(ICUP)\source\data
 #      This is the same place that all of the other ICU DLLs go (the code-containing DLLs)\r
 #      The lib file for the data DLL goes in $(DLL_OUTPUT)/../lib/\r
 #\r
-!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"\r
-DLL_OUTPUT=$(ICUP)\bin64\r
+!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"\r
+DLL_OUTPUT=$(ICUP)\binARM$(UWP)\r
+!ELSE IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"\r
+DLL_OUTPUT=$(ICUP)\bin64$(UWP)\r
+!ELSE IF "$(UWP)" == "UWP"\r
+DLL_OUTPUT=$(ICUP)\bin32$(UWP)\r
 !ELSE\r
-DLL_OUTPUT=$(ICUP)\bin\r
+DLL_OUTPUT=$(ICUP)\bin$(UWP)\r
 !ENDIF\r
 \r
 #\r
@@ -147,14 +154,28 @@ TESTDATABLD=$(ICUP)\source\test\testdata\out\build
 #       Directory under which all of the ICU data building tools live.\r
 #\r
 ICUTOOLS=$(ICUP)\source\tools\r
+!MESSAGE ICU tools path is $(ICUTOOLS)\r
+\r
+#\r
+#  TOOLS CFG PATH\r
+#      ARM needs to use one of the other tools, so make sure to get an usable cfg path\r
+#      Since tools, particularly pkggen, have architecture built-in, we made x64 on\r
+#      Windows be machine-independent and use those tools.\r
+#\r
+CFGTOOLS=$(CFG)\r
+!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"\r
+CFGTOOLS=x64\Release\r
+!ENDIF\r
+!MESSAGE ICU tools CFG subpath is $(CFGTOOLS)\r
 \r
 # The current ICU tools need to be in the path first.\r
-!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"\r
-PATH = $(ICUP)\bin64;$(PATH)\r
-ICUPBIN=$(ICUP)\bin64\r
-!ELSE\r
+# x86 uses x86, x64 and arm use x64\r
+!IF "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug"\r
 PATH = $(ICUP)\bin;$(PATH)\r
 ICUPBIN=$(ICUP)\bin\r
+!ELSE\r
+PATH = $(ICUP)\bin64;$(PATH)\r
+ICUPBIN=$(ICUP)\bin64\r
 !ENDIF\r
 \r
 \r
@@ -492,6 +513,12 @@ SPREP_FILES = $(SPREP_SOURCE:.txt=.spp)
 # Common defines for both ways of building ICU's data library.\r
 COMMON_ICUDATA_DEPENDENCIES="$(ICUPBIN)\pkgdata.exe" "$(ICUTMP)\icudata.res" "$(ICUP)\source\stubdata\stubdatabuilt.txt"\r
 COMMON_ICUDATA_ARGUMENTS=-f -e $(U_ICUDATA_NAME) -v $(ICU_PACKAGE_MODE) -c -p $(ICUPKG) -T "$(ICUTMP)" -L $(U_ICUDATA_NAME) -d "$(ICUBLD_PKG)" -s .\r
+!IF "$(UWP)" == "UWP"\r
+COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -u\r
+!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"\r
+COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a\r
+!ENDIF\r
+!ENDIF\r
 \r
 #############################################################################\r
 #\r
@@ -505,6 +532,11 @@ COMMON_ICUDATA_ARGUMENTS=-f -e $(U_ICUDATA_NAME) -v $(ICU_PACKAGE_MODE) -c -p $(
 ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat"\r
        @echo All targets are up to date\r
 \r
+!IF "$(UWP)" == "UWP"\r
+       @if not exist "$(ICUMAKE)\..\..\commondata\" mkdir "$(ICUMAKE)\..\..\commondata\"\r
+    copy "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" "$(ICUMAKE)\..\..\commondata\"\r
+!ENDIF\r
+\r
 # The core Unicode properties files (uprops.icu, ucase.icu, ubidi.icu)\r
 # are hardcoded in the common DLL and therefore not included in the data package any more.\r
 # They are not built by default but need to be built for ICU4J data and for getting the .c source files\r
@@ -556,9 +588,9 @@ DEBUGUTILITIESDATA_DIR=main\tests\core\src\com\ibm\icu\dev\test\util
 DEBUGUTILITIESDATA_SRC=DebugUtilitiesData.java\r
 \r
 # Build DebugUtilitiesData.java\r
-"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFG)"}gentest.exe\r
+"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFGTOOLS)"}gentest.exe\r
        if not exist "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"\r
-       "$(ICUTOOLS)\gentest\$(CFG)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"\r
+       "$(ICUTOOLS)\gentest\$(CFGTOOLS)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"\r
 \r
 ICU4J_DATA="$(ICUOUT)\icu4j\icudata.jar" "$(ICUOUT)\icu4j\testdata.jar"  "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"\r
 \r
@@ -602,10 +634,10 @@ icu4j-data-install :
 #\r
 # testdata - nmake will invoke pkgdata, which will create testdata.dat\r
 #\r
-"$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu" $(TRANSLIT_RES_FILES) $(MISC_FILES) $(RB_FILES) {"$(ICUTOOLS)\genrb\$(CFG)"}genrb.exe\r
+"$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu" $(TRANSLIT_RES_FILES) $(MISC_FILES) $(RB_FILES) {"$(ICUTOOLS)\genrb\$(CFGTOOLS)"}genrb.exe\r
        @cd "$(TESTDATA)"\r
        @echo building testdata...\r
-       nmake /nologo /f "$(TESTDATA)\testdata.mak" TESTDATA=. ICUTOOLS="$(ICUTOOLS)" ICUPBIN="$(ICUPBIN)" ICUP="$(ICUP)" CFG=$(CFG) TESTDATAOUT="$(TESTDATAOUT)" TESTDATABLD="$(TESTDATABLD)"\r
+       nmake /nologo /f "$(TESTDATA)\testdata.mak" TESTDATA=. ICUTOOLS="$(ICUTOOLS)" ICUPBIN="$(ICUPBIN)" ICUP="$(ICUP)" CFG=$(CFGTOOLS) TESTDATAOUT="$(TESTDATAOUT)" TESTDATABLD="$(TESTDATABLD)"\r
 \r
 #invoke pkgdata for ICU common data\r
 #  pkgdata will drop all output files (.dat, .dll, .lib) into the target (ICUBLD_PKG) directory.\r
@@ -669,6 +701,7 @@ $(SPREP_FILES:.spp=.spp
 )\r
 <<KEEP\r
        -@erase "$(ICU_LIB_TARGET)"\r
+    @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)"\r
        copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)"\r
        -@erase "$(U_ICUDATA_NAME).dll"\r
        copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"\r
@@ -757,40 +790,40 @@ CLEAN : GODATA
 # RBBI .brk file generation.\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\rules}.txt.brk:\r
        @echo Creating $@\r
-       @"$(ICUTOOLS)\genbrk\$(CFG)\genbrk" -c -r $< -o $@ -d"$(ICUBLD_PKG)" -i "$(ICUBLD_PKG)"\r
+       @"$(ICUTOOLS)\genbrk\$(CFGTOOLS)\genbrk" -c -r $< -o $@ -d"$(ICUBLD_PKG)" -i "$(ICUBLD_PKG)"\r
 \r
 #RBBI .dict file generation.\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries}.txt.dict:\r
     @echo Creating $@\r
-    @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --uchars $<  "$(ICUBLD_PKG)\$@"\r
+    @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --uchars $<  "$(ICUBLD_PKG)\$@"\r
 \r
 $(ICUBRK)\thaidict.dict:\r
        @echo Creating $(ICUBRK)\thaidict.dict\r
-       @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x0e00 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\thaidict.txt "$(ICUBLD_PKG)\$(ICUBRK)\thaidict.dict"\r
+       @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x0e00 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\thaidict.txt "$(ICUBLD_PKG)\$(ICUBRK)\thaidict.dict"\r
 \r
 $(ICUBRK)\laodict.dict:\r
        @echo Creating $(ICUBRK)\laodict.dict\r
-       @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x0e80 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\laodict.txt "$(ICUBLD_PKG)\$(ICUBRK)\laodict.dict"\r
+       @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x0e80 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\laodict.txt "$(ICUBLD_PKG)\$(ICUBRK)\laodict.dict"\r
 \r
 $(ICUBRK)\burmesedict.dict:\r
        @echo Creating $(ICUBRK)\burmesedict.dict\r
-       @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x1000 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\burmesedict.txt "$(ICUBLD_PKG)\$(ICUBRK)\burmesedict.dict"\r
+       @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x1000 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\burmesedict.txt "$(ICUBLD_PKG)\$(ICUBRK)\burmesedict.dict"\r
 \r
 $(ICUBRK)\khmerdict.dict:\r
        @echo Creating $(ICUBRK)\khmerdict.dict\r
-       @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x1780 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\khmerdict.txt "$(ICUBLD_PKG)\$(ICUBRK)\khmerdict.dict"\r
+       @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x1780 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\khmerdict.txt "$(ICUBLD_PKG)\$(ICUBRK)\khmerdict.dict"\r
 \r
 !IFNDEF ICUDATA_SOURCE_ARCHIVE\r
 # Rule for creating converters\r
 $(CNV_FILES): $(UCM_SOURCE)\r
        @echo Building Charset Conversion table $(@B)\r
-       @"$(ICUTOOLS)\makeconv\$(CFG)\makeconv" -c -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm\r
+       @"$(ICUTOOLS)\makeconv\$(CFGTOOLS)\makeconv" -c -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm\r
 !ENDIF\r
 \r
 !IFDEF BUILD_SPECIAL_CNV_FILES\r
 $(CNV_FILES_SPECIAL): $(UCM_SOURCE_SPECIAL)\r
        @echo Building Special Charset Conversion table $(@B)\r
-       @"$(ICUTOOLS)\makeconv\$(CFG)\makeconv" -c --ignore-siso-check -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm\r
+       @"$(ICUTOOLS)\makeconv\$(CFGTOOLS)\makeconv" -c --ignore-siso-check -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm\r
 !ENDIF\r
 \r
 # Batch inference rule for creating miscellaneous resource files\r
@@ -800,12 +833,12 @@ $(CNV_FILES_SPECIAL): $(UCM_SOURCE_SPECIAL)
 #       way, remove the -q.\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUMISC2)}.txt.res::\r
        @echo Making Miscellaneous Resource Bundle files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -q -d"$(ICUBLD_PKG)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -q -d"$(ICUBLD_PKG)" $<\r
 \r
 # Inference rule for creating resource bundle files\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC)}.txt.res::\r
        @echo Making Locale Resource Bundle files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC) -k -d"$(ICUBLD_PKG)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC) -k -d"$(ICUBLD_PKG)" $<\r
 \r
 # copy the locales/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -822,12 +855,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)" .\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)" .\res_index.txt\r
        \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\curr}.txt{curr}.res::\r
        @echo Making currency display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\curr -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\curr" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\curr -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\curr" $<\r
 \r
 # copy the curr/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -844,12 +877,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\curr" .\curr\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\curr" .\curr\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\lang}.txt{lang}.res::\r
        @echo Making language/script display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\lang -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\lang" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\lang -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\lang" $<\r
 \r
 # copy the lang/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -866,12 +899,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\lang" .\lang\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\lang" .\lang\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\region}.txt{region}.res::\r
        @echo Making region display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\region -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\region" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\region -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\region" $<\r
 \r
 # copy the region/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -888,12 +921,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\region" .\region\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\region" .\region\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\zone}.txt{zone}.res::\r
        @echo Making time zone display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\zone -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\zone" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\zone -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\zone" $<\r
 \r
 # copy the zone/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -910,12 +943,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\zone" .\zone\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\zone" .\zone\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\unit}.txt{unit}.res::\r
        @echo Making unit display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\unit -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\unit" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\unit -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\unit" $<\r
 \r
 # copy the unit/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -932,12 +965,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\unit" .\unit\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\unit" .\unit\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUCOL)}.txt{$(ICUCOL)}.res::\r
        @echo Making Collation files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUCOL)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUCOL)" $<\r
 \r
 $(ICUCOL)\res_index.res:\r
        @echo Generating <<$(ICUCOL)\res_index.txt\r
@@ -949,11 +982,11 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUCOL)" .\$(ICUCOL)\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUCOL)" .\$(ICUCOL)\res_index.txt\r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICURBNF)}.txt{$(ICURBNF)}.res::\r
        @echo Making RBNF files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICURBNF)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICURBNF)" $<\r
 \r
 $(ICURBNF)\res_index.res:\r
        @echo Generating <<$(ICURBNF)\res_index.txt\r
@@ -965,7 +998,7 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\$(ICURBNF)" .\$(ICURBNF)\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICURBNF)" .\$(ICURBNF)\res_index.txt\r
 \r
 $(ICUBRK)\res_index.res:\r
        @echo Generating <<$(ICUBRK)\res_index.txt\r
@@ -977,15 +1010,15 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUBRK)" .\$(ICUBRK)\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUBRK)" .\$(ICUBRK)\res_index.txt\r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)}.txt{$(ICUBRK)}.res::\r
        @echo Making Break Iterator Resource files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUBRK)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUBRK)" $<\r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUTRNS)}.txt{$(ICUTRNS)}.res::\r
        @echo Making Transliterator files\r
-       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUTRNS)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUTRNS)" $<\r
 \r
 \r
 # DLL version information\r
@@ -995,9 +1028,9 @@ res_index:table(nofallback) {
        @rc.exe /i "..\..\..\..\common" /r /fo $@ $**\r
 \r
 # Targets for converters\r
-"$(ICUBLD_PKG)\cnvalias.icu" : {"$(ICUSRCDATA)\$(ICUUCM)"}\convrtrs.txt "$(ICUTOOLS)\gencnval\$(CFG)\gencnval.exe"\r
+"$(ICUBLD_PKG)\cnvalias.icu" : {"$(ICUSRCDATA)\$(ICUUCM)"}\convrtrs.txt "$(ICUTOOLS)\gencnval\$(CFGTOOLS)\gencnval.exe"\r
        @echo Creating data file for Converter Aliases\r
-       @"$(ICUTOOLS)\gencnval\$(CFG)\gencnval" -d "$(ICUBLD_PKG)" "$(ICUSRCDATA)\$(ICUUCM)\convrtrs.txt"\r
+       @"$(ICUTOOLS)\gencnval\$(CFGTOOLS)\gencnval" -d "$(ICUBLD_PKG)" "$(ICUSRCDATA)\$(ICUUCM)\convrtrs.txt"\r
 \r
 # Targets for prebuilt Unicode data\r
 "$(ICUBLD_PKG)\pnames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\pnames.icu\r
@@ -1033,32 +1066,32 @@ res_index:table(nofallback) {
 # Stringprep .spp file generation.\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUSPREP)}.txt.spp:\r
        @echo Creating $@\r
-       @"$(ICUTOOLS)\gensprep\$(CFG)\gensprep" -s $(<D) -d "$(ICUBLD_PKG)" -b $(@B) -m "$(ICUUNIDATA)" -u 3.2.0 $(<F)\r
+       @"$(ICUTOOLS)\gensprep\$(CFGTOOLS)\gensprep" -s $(<D) -d "$(ICUBLD_PKG)" -b $(@B) -m "$(ICUUNIDATA)" -u 3.2.0 $(<F)\r
 \r
 # Confusables .cfu file generation\r
 #     Can't use an inference rule because two .txt source files combine to produce a single .cfu output file\r
-"$(ICUBLD_PKG)\confusables.cfu": "$(ICUUNIDATA)\confusables.txt" "$(ICUUNIDATA)\confusablesWholeScript.txt" "$(ICUTOOLS)\gencfu\$(CFG)\gencfu.exe"\r
+"$(ICUBLD_PKG)\confusables.cfu": "$(ICUUNIDATA)\confusables.txt" "$(ICUUNIDATA)\confusablesWholeScript.txt" "$(ICUTOOLS)\gencfu\$(CFGTOOLS)\gencfu.exe"\r
        @echo Creating $@\r
-       @"$(ICUTOOLS)\gencfu\$(CFG)\gencfu" -c -r "$(ICUUNIDATA)\confusables.txt" -w "$(ICUUNIDATA)\confusablesWholeScript.txt" -o $@ -i "$(ICUBLD_PKG)"\r
+       @"$(ICUTOOLS)\gencfu\$(CFGTOOLS)\gencfu" -c -r "$(ICUUNIDATA)\confusables.txt" -w "$(ICUUNIDATA)\confusablesWholeScript.txt" -o $@ -i "$(ICUBLD_PKG)"\r
 \r
 !IFDEF ICUDATA_ARCHIVE\r
-"$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) "$(ICUTOOLS)\icupkg\$(CFG)\icupkg.exe"\r
-       "$(ICUTOOLS)\icupkg\$(CFG)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)"\r
+"$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg.exe"\r
+       "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)"\r
 !ENDIF\r
 \r
 # Dependencies on the tools for the batch inference rules\r
 \r
 !IFNDEF ICUDATA_SOURCE_ARCHIVE\r
-$(UCM_SOURCE) : {"$(ICUTOOLS)\makeconv\$(CFG)"}makeconv.exe\r
+$(UCM_SOURCE) : {"$(ICUTOOLS)\makeconv\$(CFGTOOLS)"}makeconv.exe\r
 \r
 !IFDEF BUILD_SPECIAL_CNV_FILES\r
-$(UCM_SOURCE_SPECIAL): {"$(ICUTOOLS)\makeconv\$(CFG)"}makeconv.exe\r
+$(UCM_SOURCE_SPECIAL): {"$(ICUTOOLS)\makeconv\$(CFGTOOLS)"}makeconv.exe\r
 !ENDIF\r
 \r
 # This used to depend on "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu"\r
 # This data is now hard coded as a part of the library.\r
 # See Jitterbug 4497 for details.\r
-$(MISC_SOURCE) $(RB_FILES) $(CURR_FILES) $(LANG_FILES) $(REGION_FILES) $(ZONE_FILES) $(UNIT_FILES) $(COL_COL_FILES) $(RBNF_RES_FILES) $(BRK_RES_FILES) $(TRANSLIT_RES_FILES): {"$(ICUTOOLS)\genrb\$(CFG)"}genrb.exe "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu"\r
+$(MISC_SOURCE) $(RB_FILES) $(CURR_FILES) $(LANG_FILES) $(REGION_FILES) $(ZONE_FILES) $(UNIT_FILES) $(COL_COL_FILES) $(RBNF_RES_FILES) $(BRK_RES_FILES) $(TRANSLIT_RES_FILES): {"$(ICUTOOLS)\genrb\$(CFGTOOLS)"}genrb.exe "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu"\r
 \r
 # This used to depend on "$(ICUBLD_PKG)\pnames.icu" "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu"\r
 # These are now hardcoded in ICU4C and only loaded in ICU4J.\r
index 607f4b3..6ec1045 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r\r
-  <ItemGroup Label="ProjectConfigurations">\r\r
-    <ProjectConfiguration Include="Debug|Win32">\r\r
-      <Configuration>Debug</Configuration>\r\r
-      <Platform>Win32</Platform>\r\r
-    </ProjectConfiguration>\r\r
-    <ProjectConfiguration Include="Debug|x64">\r\r
-      <Configuration>Debug</Configuration>\r\r
-      <Platform>x64</Platform>\r\r
-    </ProjectConfiguration>\r\r
-    <ProjectConfiguration Include="Release|Win32">\r\r
-      <Configuration>Release</Configuration>\r\r
-      <Platform>Win32</Platform>\r\r
-    </ProjectConfiguration>\r\r
-    <ProjectConfiguration Include="Release|x64">\r\r
-      <Configuration>Release</Configuration>\r\r
-      <Platform>x64</Platform>\r\r
-    </ProjectConfiguration>\r\r
-  </ItemGroup>\r\r
-  <PropertyGroup Label="Globals">\r\r
-    <ProjectGuid>{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}</ProjectGuid>\r\r
-    <Keyword>MakeFileProj</Keyword>\r\r
-    <PlatformToolset>v140</PlatformToolset>\r\r
-    <ConfigurationType>Makefile</ConfigurationType>\r\r
-    <UseOfMfc>false</UseOfMfc>\r\r
-  </PropertyGroup>\r\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r\r
-  <ImportGroup Label="ExtensionSettings">\r\r
-  </ImportGroup>\r\r
-  <ImportGroup Label="PropertySheets">\r\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r\r
-  </ImportGroup>\r\r
-  <PropertyGroup Label="UserMacros" />\r\r
-  <PropertyGroup>\r\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release</NMakeBuildCommandLine>\r\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean all</NMakeReBuildCommandLine>\r\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean</NMakeCleanCommandLine>\r\r
-    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r\r
-    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r\r
-    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r\r
-    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r\r
-    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r\r
-    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug</NMakeBuildCommandLine>\r\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean all</NMakeReBuildCommandLine>\r\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean</NMakeCleanCommandLine>\r\r
-    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r\r
-    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r\r
-    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r\r
-    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r\r
-    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r\r
-    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release</NMakeBuildCommandLine>\r\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean all</NMakeReBuildCommandLine>\r\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean</NMakeCleanCommandLine>\r\r
-    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r\r
-    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r\r
-    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r\r
-    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r\r
-    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r\r
-    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug</NMakeBuildCommandLine>\r\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean all</NMakeReBuildCommandLine>\r\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean</NMakeCleanCommandLine>\r\r
-    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r\r
-    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r\r
-    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r\r
-    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r\r
-    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r\r
-    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r\r
-  </PropertyGroup>\r\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r\r
-    <BuildLog>\r\r
-      <Path>.\out\tmp\x86\ReleaseBuildLog.html</Path>\r\r
-    </BuildLog>\r\r
-  </ItemDefinitionGroup>\r\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r\r
-    <BuildLog>\r\r
-      <Path>.\out\tmp\x86\DebugBuildLog.html</Path>\r\r
-    </BuildLog>\r\r
-  </ItemDefinitionGroup>\r\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r\r
-    <BuildLog>\r\r
-      <Path>.\out\tmp\x64\ReleaseBuildLog.html</Path>\r\r
-    </BuildLog>\r\r
-  </ItemDefinitionGroup>\r\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r\r
-    <BuildLog>\r\r
-      <Path>.\out\tmp\x64\DebugBuildLog.html</Path>\r\r
-    </BuildLog>\r\r
-  </ItemDefinitionGroup>\r\r
-  <ItemGroup>\r\r
-    <None Include="brkitr\brkfiles.mk" />\r\r
-    <None Include="coll\colfiles.mk" />\r\r
-    <None Include="makedata.mak" />\r\r
-    <None Include="misc\miscfiles.mk" />\r\r
-    <None Include="rbnf\rbnffiles.mk" />\r\r
-    <None Include="locales\resfiles.mk" />\r\r
-    <None Include="..\test\testdata\testdata.mak" />\r\r
-    <None Include="translit\trnsfiles.mk" />\r\r
-    <None Include="..\test\testdata\tstfiles.mk" />\r\r
-    <None Include="mappings\ucmcore.mk" />\r\r
-    <None Include="mappings\ucmebcdic.mk" />\r\r
-    <None Include="mappings\ucmfiles.mk" />\r\r
-  </ItemGroup>\r\r
-  <ItemGroup>\r\r
-    <ProjectReference Include="..\common\common.vcxproj">\r\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\extra\uconv\uconv.vcxproj">\r\r
-      <Project>{dba4088d-f6f9-4f8f-8820-082a4765c16c}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\i18n\i18n.vcxproj">\r\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\io\io.vcxproj">\r\r
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\stubdata\stubdata.vcxproj">\r\r
-      <Project>{203ec78a-0531-43f0-a636-285439bde025}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\test\cintltst\cintltst.vcxproj">\r\r
-      <Project>{3d1246ae-1b32-479b-beca-aefa97be2321}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\test\intltest\intltest.vcxproj">\r\r
-      <Project>{73632960-b3a6-464d-83a3-4b43365f19b8}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\test\iotest\iotest.vcxproj">\r\r
-      <Project>{e4993e82-d68a-46ca-bae0-9d35e172e46f}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\ctestfw\ctestfw.vcxproj">\r\r
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\genbrk\genbrk.vcxproj">\r\r
-      <Project>{c2be5000-7501-4e87-9724-b8d82494fae6}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\genccode\genccode.vcxproj">\r\r
-      <Project>{fdd3c4f2-9805-44eb-9a77-bc1c1c95b547}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\gencfu\gencfu.vcxproj">\r\r
-      <Project>{691ee0c0-dc57-4a48-8aee-8ed75eb3a057}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\gencmn\gencmn.vcxproj">\r\r
-      <Project>{a8d36f8d-09e6-4174-91c3-7beaa9c3f04f}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\gencnval\gencnval.vcxproj">\r\r
-      <Project>{8b41752b-5a52-41e4-b7e0-07921c0cc6bf}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\gendict\gendict.vcxproj">\r\r
-      <Project>{9d4211f7-2c77-439c-82f0-30a4e43ba569}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\gennorm2\gennorm2.vcxproj">\r\r
-      <Project>{c7891a65-80ab-4245-912e-5f1e17b0e6c4}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\genrb\derb.vcxproj">\r\r
-      <Project>{d3065adb-8820-4cc7-9b6c-9510833961a3}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\genrb\genrb.vcxproj">\r\r
-      <Project>{97521d06-ec47-45d4-8bd0-9e16b3f93b2a}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\gensprep\gensprep.vcxproj">\r\r
-      <Project>{631c23ce-6c1d-4875-88f0-85e0a42b36ea}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\gentest\gentest.vcxproj">\r\r
-      <Project>{77c78066-746f-4ea6-b3fe-b8c8a4a97891}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\icupkg\icupkg.vcxproj">\r\r
-      <Project>{62d4b15d-7a90-4ecb-ba19-5e021d6a21bc}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\makeconv\makeconv.vcxproj">\r\r
-      <Project>{f5ad9738-1a3d-4906-b9c4-a7d9ce33dc2c}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\pkgdata\pkgdata.vcxproj">\r\r
-      <Project>{4c8454fe-81d3-4ca3-9927-29ba96f03dac}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-    <ProjectReference Include="..\tools\toolutil\toolutil.vcxproj">\r\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
-    </ProjectReference>\r\r
-  </ItemGroup>\r\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r\r
-  <ImportGroup Label="ExtensionTargets">\r\r
-  </ImportGroup>\r\r
-</Project>\r\r
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}</ProjectGuid>\r
+    <Keyword>MakeFileProj</Keyword>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+    <ConfigurationType>Makefile</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\tmp\x86\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\build\</IntDir>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean</NMakeCleanCommandLine>\r
+    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r
+    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r
+    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r
+    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r
+    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\tmp\x86\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\build\</IntDir>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean</NMakeCleanCommandLine>\r
+    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r
+    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r
+    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r
+    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r
+    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\tmp\x64\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\build\</IntDir>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean</NMakeCleanCommandLine>\r
+    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r
+    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r
+    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r
+    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r
+    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\tmp\x64\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\build\</IntDir>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean</NMakeCleanCommandLine>\r
+    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r
+    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r
+    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r
+    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r
+    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\x86\ReleaseBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\x86\DebugBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\x64\ReleaseBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\x64\DebugBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <None Include="brkitr\brkfiles.mk" />\r
+    <None Include="coll\colfiles.mk" />\r
+    <None Include="makedata.mak" />\r
+    <None Include="misc\miscfiles.mk" />\r
+    <None Include="rbnf\rbnffiles.mk" />\r
+    <None Include="locales\resfiles.mk" />\r
+    <None Include="..\test\testdata\testdata.mak" />\r
+    <None Include="translit\trnsfiles.mk" />\r
+    <None Include="..\test\testdata\tstfiles.mk" />\r
+    <None Include="mappings\ucmcore.mk" />\r
+    <None Include="mappings\ucmebcdic.mk" />\r
+    <None Include="mappings\ucmfiles.mk" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\extra\uconv\uconv.vcxproj">\r
+      <Project>{dba4088d-f6f9-4f8f-8820-082a4765c16c}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\io\io.vcxproj">\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\stubdata\stubdata.vcxproj">\r
+      <Project>{203ec78a-0531-43f0-a636-285439bde025}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\test\cintltst\cintltst.vcxproj">\r
+      <Project>{3d1246ae-1b32-479b-beca-aefa97be2321}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\test\intltest\intltest.vcxproj">\r
+      <Project>{73632960-b3a6-464d-83a3-4b43365f19b8}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\test\iotest\iotest.vcxproj">\r
+      <Project>{e4993e82-d68a-46ca-bae0-9d35e172e46f}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\ctestfw\ctestfw.vcxproj">\r
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\genbrk\genbrk.vcxproj">\r
+      <Project>{c2be5000-7501-4e87-9724-b8d82494fae6}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\genccode\genccode.vcxproj">\r
+      <Project>{fdd3c4f2-9805-44eb-9a77-bc1c1c95b547}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\gencfu\gencfu.vcxproj">\r
+      <Project>{691ee0c0-dc57-4a48-8aee-8ed75eb3a057}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\gencmn\gencmn.vcxproj">\r
+      <Project>{a8d36f8d-09e6-4174-91c3-7beaa9c3f04f}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\gencnval\gencnval.vcxproj">\r
+      <Project>{8b41752b-5a52-41e4-b7e0-07921c0cc6bf}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\gendict\gendict.vcxproj">\r
+      <Project>{9d4211f7-2c77-439c-82f0-30a4e43ba569}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\gennorm2\gennorm2.vcxproj">\r
+      <Project>{c7891a65-80ab-4245-912e-5f1e17b0e6c4}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\genrb\derb.vcxproj">\r
+      <Project>{d3065adb-8820-4cc7-9b6c-9510833961a3}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\genrb\genrb.vcxproj">\r
+      <Project>{97521d06-ec47-45d4-8bd0-9e16b3f93b2a}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\gensprep\gensprep.vcxproj">\r
+      <Project>{631c23ce-6c1d-4875-88f0-85e0a42b36ea}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\gentest\gentest.vcxproj">\r
+      <Project>{77c78066-746f-4ea6-b3fe-b8c8a4a97891}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\icupkg\icupkg.vcxproj">\r
+      <Project>{62d4b15d-7a90-4ecb-ba19-5e021d6a21bc}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\makeconv\makeconv.vcxproj">\r
+      <Project>{f5ad9738-1a3d-4906-b9c4-a7d9ce33dc2c}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\pkgdata\pkgdata.vcxproj">\r
+      <Project>{4c8454fe-81d3-4ca3-9927-29ba96f03dac}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\tools\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/source/data/makedata_uwp.vcxproj b/source/data/makedata_uwp.vcxproj
new file mode 100644 (file)
index 0000000..7d78872
--- /dev/null
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|ARM">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>ARM</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Arm">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>ARM</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{B1D53358-37BD-48BC-B27C-68BAF1E78508}</ProjectGuid>\r
+    <Keyword>MakeFileProj</Keyword>\r
+    <DefaultLanguage>en-US</DefaultLanguage>\r
+    <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>\r
+    <AppContainerApplication>true</AppContainerApplication>\r
+    <ApplicationType>Windows Store</ApplicationType>\r
+    <WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>\r
+    <WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>\r
+    <ApplicationTypeRevision>10.0</ApplicationTypeRevision>\r
+    <ConfigurationType>Makefile</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\tmp\x86\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\tmp\x86\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\tmp\x64\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\tmp\x64\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\data\tmp\arm\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\data\tmp\arm\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\build\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\build\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\build\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\build\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\data\build\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\data\build\</IntDir>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP clean</NMakeCleanCommandLine>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP clean</NMakeCleanCommandLine>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP clean</NMakeCleanCommandLine>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP clean</NMakeCleanCommandLine>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP clean</NMakeCleanCommandLine>\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP</NMakeBuildCommandLine>\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP clean all</NMakeReBuildCommandLine>\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP clean</NMakeCleanCommandLine>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\x86\ReleaseUWPBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\x86\DebugUWPBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\x64\ReleaseUWPBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\x64\DebugUWPBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\arm\ReleaseUWPBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">\r
+    <BuildLog>\r
+      <Path>.\out\tmp\arm\DebugUWPBuildLog.html</Path>\r
+    </BuildLog>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <None Include="brkitr\brkfiles.mk" />\r
+    <None Include="coll\colfiles.mk" />\r
+    <None Include="makedata.mak" />\r
+    <None Include="misc\miscfiles.mk" />\r
+    <None Include="rbnf\rbnffiles.mk" />\r
+    <None Include="locales\resfiles.mk" />\r
+    <None Include="..\test\testdata\testdata.mak" />\r
+    <None Include="translit\trnsfiles.mk" />\r
+    <None Include="..\test\testdata\tstfiles.mk" />\r
+    <None Include="mappings\ucmcore.mk" />\r
+    <None Include="mappings\ucmebcdic.mk" />\r
+    <None Include="mappings\ucmfiles.mk" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include=".\makedata.vcxproj">\r
+      <Project>{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index b98e106..8453585 100644 (file)
@@ -938,6 +938,8 @@ ibm-1129_P100-1997 { UTR22* }   ibm-1129 { IBM* }
 ibm-1131_P100-1997 { UTR22* }   ibm-1131 { IBM* } cp1131                                # Cyrillic Belarus PC\r
 ibm-1133_P100-1997 { UTR22* }   ibm-1133 { IBM* }                                       # ISO Lao\r
 \r
+# GSM 03.38\r
+gsm-03.38-2009 { UTR22* }   GSM0338 # GSM0338 alias is from Perl\r
 \r
 # Partially algorithmic converters\r
 \r
@@ -1150,7 +1152,6 @@ ebcdic-xml-us
 # These are not installed by default. They are rarely used.\r
 # Many of them can be added through the online ICU Data Library Customization tool\r
 \r
-gsm-03.38-2000 { UTR22* }   GSM0338 # GSM0338 alias is from Perl\r
 ibm-1004_P100-1995 { UTR22* }   ibm-1004 { IBM* }\r
 ibm-1008_P100-1995 { UTR22* }   ibm-1008 { IBM* } # cp1008, 8-bit Arabic (w/o euro update)\r
 ibm-1009_P100-1995 { UTR22* }   ibm-1009 { IBM* }\r
diff --git a/source/data/mappings/gsm-03.38-2009.ucm b/source/data/mappings/gsm-03.38-2009.ucm
new file mode 100644 (file)
index 0000000..5a172f7
--- /dev/null
@@ -0,0 +1,218 @@
+# Copyright (C) 2017 and later: Unicode, Inc. and others.\r
+# License & terms of use: http://www.unicode.org/copyright.html\r
+#\r
+# Name:             GSM 03.38 to Unicode\r
+# Unicode version:  3.0\r
+# Table version:    2.0\r
+# Date:             2009 Nov 10\r
+# Authors:          Ken Whistler\r
+#                   Kent Karlsson\r
+#                   Markus Kuhn\r
+#\r
+# Source:           http://www.unicode.org/Public/MAPPINGS/ETSI/GSM0338.TXT\r
+# See there for the license and for a description of the charset.\r
+# Formatted into ICU .ucm format by Markus Scherer on 2006-nov-02.\r
+# Updated to table version 2.0 by Fredrik Roubert on 2017-feb-08.\r
+# Commented-out mappings are turned into fallbacks (|1), all others are turned\r
+# into round-trips (|0).\r
+# Multi-byte mappings are preserved as multi-single-byte character mappings,\r
+# using ICU's m:n conversion capability.\r
+#\r
+# The substitution character is not documented in the Unicode file.\r
+# \x3F is chosen here because \x1A is a graphic character.\r
+#\r
+# Other deviations from the Unicode file:\r
+# a)\r
+# The GSM standard specifies that one or two ESC bytes (\x1B), if not followed\r
+# by a recognized final byte, be mapped to spaces (that is, reverse fallbacks\r
+# to U+0020).\r
+# The Unicode file round-trips a single \x1B to U+00A0 (NBSP) and has no mapping\r
+# for \x1B\x1B.\r
+# (Reverse fallbacks to U+00A0 would result in Unicode text that cannot be\r
+# converted back to GSM 03.38. A roundtrip for U+00A0 adds a character that is\r
+# not mappable in the standard.)\r
+#\r
+# See the ietf-charsets list email "Re: GSM 03.38 substitution character?"\r
+# at http://mail.apps.ietf.org/ietf/charsets/msg01696.html\r
+#\r
+# b)\r
+# The GSM standard maps U+00C7 capital C-cedilla to \x09 but the Unicode file\r
+# contains and documents a "fix" to map U+00E7 small c-cedilla instead, based on\r
+# an interpretation of the intent of the standard. Prevailing implementations\r
+# in mobile phones follow the standard.\r
+#\r
+# This file follows the GSM standard.\r
+#\r
+# See the GSM standard at\r
+# http://www.3gpp.org/ftp/Specs/archive/03_series/03.38/0338-720.zip\r
+#\r
+# For problems with the table format please submit a bug\r
+# at http://www.icu-project.org/ .\r
+# For issues with the mappings please contact Unicode\r
+# at http://www.unicode.org/reporting.html\r
+\r
+<code_set_name>     "gsm-03.38-2009"\r
+<char_name_mask>    "AXXXX"\r
+<mb_cur_max>        1\r
+<mb_cur_min>        1\r
+<uconv_class>       "SBCS"\r
+<icu:state>         0-7f\r
+<subchar>           \x3F\r
+<icu:charsetFamily> "ASCII"\r
+\r
+CHARMAP\r
+<U0000> \x00 |1\r
+<U000A> \x0A |0\r
+<U000C> \x1B\x0A |0\r
+<U000D> \x0D |0\r
+<U0020> \x20 |0\r
+<U0020> \x1B |3\r
+<U0020> \x1B\x1B |3\r
+<U0021> \x21 |0\r
+<U0022> \x22 |0\r
+<U0023> \x23 |0\r
+<U0024> \x02 |0\r
+<U0025> \x25 |0\r
+<U0026> \x26 |0\r
+<U0027> \x27 |0\r
+<U0028> \x28 |0\r
+<U0029> \x29 |0\r
+<U002A> \x2A |0\r
+<U002B> \x2B |0\r
+<U002C> \x2C |0\r
+<U002D> \x2D |0\r
+<U002E> \x2E |0\r
+<U002F> \x2F |0\r
+<U0030> \x30 |0\r
+<U0031> \x31 |0\r
+<U0032> \x32 |0\r
+<U0033> \x33 |0\r
+<U0034> \x34 |0\r
+<U0035> \x35 |0\r
+<U0036> \x36 |0\r
+<U0037> \x37 |0\r
+<U0038> \x38 |0\r
+<U0039> \x39 |0\r
+<U003A> \x3A |0\r
+<U003B> \x3B |0\r
+<U003C> \x3C |0\r
+<U003D> \x3D |0\r
+<U003E> \x3E |0\r
+<U003F> \x3F |0\r
+<U0040> \x00 |0\r
+<U0041> \x41 |0\r
+<U0042> \x42 |0\r
+<U0043> \x43 |0\r
+<U0044> \x44 |0\r
+<U0045> \x45 |0\r
+<U0046> \x46 |0\r
+<U0047> \x47 |0\r
+<U0048> \x48 |0\r
+<U0049> \x49 |0\r
+<U004A> \x4A |0\r
+<U004B> \x4B |0\r
+<U004C> \x4C |0\r
+<U004D> \x4D |0\r
+<U004E> \x4E |0\r
+<U004F> \x4F |0\r
+<U0050> \x50 |0\r
+<U0051> \x51 |0\r
+<U0052> \x52 |0\r
+<U0053> \x53 |0\r
+<U0054> \x54 |0\r
+<U0055> \x55 |0\r
+<U0056> \x56 |0\r
+<U0057> \x57 |0\r
+<U0058> \x58 |0\r
+<U0059> \x59 |0\r
+<U005A> \x5A |0\r
+<U005B> \x1B\x3C |0\r
+<U005C> \x1B\x2F |0\r
+<U005D> \x1B\x3E |0\r
+<U005E> \x1B\x14 |0\r
+<U005F> \x11 |0\r
+<U0061> \x61 |0\r
+<U0062> \x62 |0\r
+<U0063> \x63 |0\r
+<U0064> \x64 |0\r
+<U0065> \x65 |0\r
+<U0066> \x66 |0\r
+<U0067> \x67 |0\r
+<U0068> \x68 |0\r
+<U0069> \x69 |0\r
+<U006A> \x6A |0\r
+<U006B> \x6B |0\r
+<U006C> \x6C |0\r
+<U006D> \x6D |0\r
+<U006E> \x6E |0\r
+<U006F> \x6F |0\r
+<U0070> \x70 |0\r
+<U0071> \x71 |0\r
+<U0072> \x72 |0\r
+<U0073> \x73 |0\r
+<U0074> \x74 |0\r
+<U0075> \x75 |0\r
+<U0076> \x76 |0\r
+<U0077> \x77 |0\r
+<U0078> \x78 |0\r
+<U0079> \x79 |0\r
+<U007A> \x7A |0\r
+<U007B> \x1B\x28 |0\r
+<U007C> \x1B\x40 |0\r
+<U007D> \x1B\x29 |0\r
+<U007E> \x1B\x3D |0\r
+<U00A1> \x40 |0\r
+<U00A3> \x01 |0\r
+<U00A4> \x24 |0\r
+<U00A5> \x03 |0\r
+<U00A7> \x5F |0\r
+<U00BF> \x60 |0\r
+<U00C4> \x5B |0\r
+<U00C5> \x0E |0\r
+<U00C6> \x1C |0\r
+<U00C7> \x09 |0\r
+<U00C9> \x1F |0\r
+<U00D1> \x5D |0\r
+<U00D6> \x5C |0\r
+<U00D8> \x0B |0\r
+<U00DC> \x5E |0\r
+<U00DF> \x1E |0\r
+<U00E0> \x7F |0\r
+<U00E4> \x7B |0\r
+<U00E5> \x0F |0\r
+<U00E6> \x1D |0\r
+<U00E8> \x04 |0\r
+<U00E9> \x05 |0\r
+<U00EC> \x07 |0\r
+<U00F1> \x7D |0\r
+<U00F2> \x08 |0\r
+<U00F6> \x7C |0\r
+<U00F8> \x0C |0\r
+<U00F9> \x06 |0\r
+<U00FC> \x7E |0\r
+<U0391> \x41 |1\r
+<U0392> \x42 |1\r
+<U0393> \x13 |0\r
+<U0394> \x10 |0\r
+<U0395> \x45 |1\r
+<U0396> \x5A |1\r
+<U0397> \x48 |1\r
+<U0398> \x19 |0\r
+<U0399> \x49 |1\r
+<U039A> \x4B |1\r
+<U039B> \x14 |0\r
+<U039C> \x4D |1\r
+<U039D> \x4E |1\r
+<U039E> \x1A |0\r
+<U039F> \x4F |1\r
+<U03A0> \x16 |0\r
+<U03A1> \x50 |1\r
+<U03A3> \x18 |0\r
+<U03A4> \x54 |1\r
+<U03A5> \x59 |1\r
+<U03A6> \x12 |0\r
+<U03A7> \x58 |1\r
+<U03A8> \x17 |0\r
+<U03A9> \x15 |0\r
+<U20AC> \x1B\x65 |0\r
+END CHARMAP\r
index d61b7a4..82acfae 100644 (file)
@@ -120,5 +120,5 @@ icu-internal-compound-d1.ucm icu-internal-compound-d2.ucm icu-internal-compound-
 icu-internal-compound-d5.ucm icu-internal-compound-d6.ucm icu-internal-compound-d7.ucm \\r
 icu-internal-compound-s1.ucm icu-internal-compound-s2.ucm icu-internal-compound-s3.ucm icu-internal-compound-t.ucm \\r
 euc-jp-2007.ucm\\r
-euc-tw-2014.ucm\r
-\r
+euc-tw-2014.ucm\\r
+gsm-03.38-2009.ucm\r
index 94d511a..bc0d58d 100644 (file)
 dayPeriods:table(nofallback){\r
     locales{\r
         af{"set3"}\r
-        am{"set67"}\r
-        ar{"set65"}\r
-        az{"set61"}\r
-        bg{"set20"}\r
-        bn{"set33"}\r
-        bs{"set24"}\r
-        ca{"set14"}\r
-        chr{"set75"}\r
-        cs{"set26"}\r
-        da{"set6"}\r
-        de{"set5"}\r
-        ee{"set76"}\r
-        el{"set39"}\r
+        am{"set68"}\r
+        ar{"set66"}\r
+        az{"set62"}\r
+        bg{"set21"}\r
+        bn{"set34"}\r
+        bs{"set25"}\r
+        ca{"set15"}\r
+        chr{"set76"}\r
+        cs{"set27"}\r
+        da{"set7"}\r
+        de{"set6"}\r
+        ee{"set77"}\r
+        el{"set40"}\r
         en{"set2"}\r
-        es{"set12"}\r
-        es_CO{"set13"}\r
-        et{"set48"}\r
-        eu{"set73"}\r
-        fa{"set42"}\r
-        fi{"set47"}\r
-        fil{"set59"}\r
-        fr{"set17"}\r
-        gl{"set11"}\r
-        gu{"set34"}\r
-        he{"set66"}\r
-        hi{"set32"}\r
-        hr{"set23"}\r
-        hu{"set49"}\r
-        hy{"set41"}\r
-        id{"set57"}\r
-        is{"set9"}\r
-        it{"set15"}\r
-        ja{"set52"}\r
-        ka{"set72"}\r
-        kk{"set62"}\r
-        km{"set69"}\r
-        kn{"set46"}\r
-        ko{"set53"}\r
-        ky{"set63"}\r
-        lo{"set56"}\r
-        lt{"set29"}\r
-        lv{"set30"}\r
-        mk{"set21"}\r
-        ml{"set45"}\r
-        mn{"set74"}\r
-        mr{"set35"}\r
-        ms{"set58"}\r
-        my{"set54"}\r
-        nb{"set7"}\r
-        ne{"set36"}\r
+        es{"set13"}\r
+        es_CO{"set14"}\r
+        et{"set49"}\r
+        eu{"set74"}\r
+        fa{"set43"}\r
+        fi{"set48"}\r
+        fil{"set60"}\r
+        fr{"set18"}\r
+        gl{"set12"}\r
+        gsw{"set5"}\r
+        gu{"set35"}\r
+        he{"set67"}\r
+        hi{"set33"}\r
+        hr{"set24"}\r
+        hu{"set50"}\r
+        hy{"set42"}\r
+        id{"set58"}\r
+        is{"set10"}\r
+        it{"set16"}\r
+        ja{"set53"}\r
+        ka{"set73"}\r
+        kk{"set63"}\r
+        km{"set70"}\r
+        kn{"set47"}\r
+        ko{"set54"}\r
+        ky{"set64"}\r
+        lo{"set57"}\r
+        lt{"set30"}\r
+        lv{"set31"}\r
+        mk{"set22"}\r
+        ml{"set46"}\r
+        mn{"set75"}\r
+        mr{"set36"}\r
+        ms{"set59"}\r
+        my{"set55"}\r
+        nb{"set8"}\r
+        ne{"set37"}\r
         nl{"set4"}\r
-        pa{"set37"}\r
-        pl{"set28"}\r
-        pt{"set10"}\r
-        ro{"set16"}\r
+        pa{"set38"}\r
+        pl{"set29"}\r
+        pt{"set11"}\r
+        ro{"set17"}\r
         root{"set1"}\r
-        ru{"set18"}\r
-        si{"set38"}\r
-        sk{"set27"}\r
-        sl{"set25"}\r
-        sq{"set40"}\r
-        sr{"set22"}\r
-        sv{"set8"}\r
-        sw{"set70"}\r
-        ta{"set43"}\r
-        te{"set44"}\r
-        th{"set55"}\r
-        tr{"set60"}\r
-        uk{"set19"}\r
-        ur{"set31"}\r
-        uz{"set64"}\r
-        vi{"set68"}\r
-        yue{"set51"}\r
-        zh{"set50"}\r
-        zu{"set71"}\r
+        ru{"set19"}\r
+        si{"set39"}\r
+        sk{"set28"}\r
+        sl{"set26"}\r
+        sq{"set41"}\r
+        sr{"set23"}\r
+        sv{"set9"}\r
+        sw{"set71"}\r
+        ta{"set44"}\r
+        te{"set45"}\r
+        th{"set56"}\r
+        tr{"set61"}\r
+        uk{"set20"}\r
+        ur{"set32"}\r
+        uz{"set65"}\r
+        vi{"set69"}\r
+        yue{"set52"}\r
+        zh{"set51"}\r
+        zu{"set72"}\r
     }\r
     locales_selection{\r
-        af{"set79"}\r
-        am{"set147"}\r
-        ar{"set138"}\r
-        az{"set129"}\r
-        bg{"set101"}\r
-        bn{"set114"}\r
-        bs{"set95"}\r
-        ca{"set90"}\r
-        chr{"set151"}\r
-        cs{"set98"}\r
-        da{"set82"}\r
-        de{"set81"}\r
-        ee{"set152"}\r
-        el{"set107"}\r
-        en{"set78"}\r
-        es{"set88"}\r
-        es_CO{"set89"}\r
-        et{"set133"}\r
-        eu{"set148"}\r
-        fa{"set108"}\r
-        fi{"set134"}\r
-        fil{"set142"}\r
-        fr{"set93"}\r
-        gl{"set87"}\r
-        gu{"set115"}\r
-        he{"set139"}\r
-        hi{"set113"}\r
-        hr{"set94"}\r
-        hu{"set135"}\r
-        hy{"set109"}\r
-        id{"set140"}\r
-        is{"set85"}\r
-        it{"set91"}\r
-        ja{"set126"}\r
-        ka{"set110"}\r
-        kk{"set130"}\r
-        km{"set144"}\r
-        kn{"set123"}\r
-        ko{"set127"}\r
-        ky{"set131"}\r
-        lo{"set137"}\r
-        lt{"set105"}\r
-        lv{"set106"}\r
-        mk{"set102"}\r
-        ml{"set122"}\r
-        mn{"set149"}\r
-        mr{"set116"}\r
-        ms{"set141"}\r
-        my{"set150"}\r
-        nb{"set83"}\r
-        ne{"set117"}\r
-        nl{"set80"}\r
-        pa{"set118"}\r
-        pl{"set100"}\r
-        pt{"set86"}\r
-        ro{"set92"}\r
-        root{"set77"}\r
-        ru{"set103"}\r
-        si{"set119"}\r
-        sk{"set99"}\r
-        sl{"set97"}\r
-        sq{"set111"}\r
-        sr{"set96"}\r
-        sv{"set84"}\r
-        sw{"set145"}\r
-        ta{"set120"}\r
-        te{"set121"}\r
-        th{"set136"}\r
-        tr{"set128"}\r
-        uk{"set104"}\r
-        ur{"set112"}\r
-        uz{"set132"}\r
-        vi{"set143"}\r
-        yue{"set125"}\r
-        zh{"set124"}\r
-        zu{"set146"}\r
+        af{"set80"}\r
+        am{"set149"}\r
+        ar{"set140"}\r
+        az{"set131"}\r
+        bg{"set103"}\r
+        bn{"set116"}\r
+        bs{"set97"}\r
+        ca{"set92"}\r
+        chr{"set153"}\r
+        cs{"set100"}\r
+        da{"set84"}\r
+        de{"set83"}\r
+        ee{"set154"}\r
+        el{"set109"}\r
+        en{"set79"}\r
+        es{"set90"}\r
+        es_CO{"set91"}\r
+        et{"set135"}\r
+        eu{"set150"}\r
+        fa{"set110"}\r
+        fi{"set136"}\r
+        fil{"set144"}\r
+        fr{"set95"}\r
+        gl{"set89"}\r
+        gsw{"set82"}\r
+        gu{"set117"}\r
+        he{"set141"}\r
+        hi{"set115"}\r
+        hr{"set96"}\r
+        hu{"set137"}\r
+        hy{"set111"}\r
+        id{"set142"}\r
+        is{"set87"}\r
+        it{"set93"}\r
+        ja{"set128"}\r
+        ka{"set112"}\r
+        kk{"set132"}\r
+        km{"set146"}\r
+        kn{"set125"}\r
+        ko{"set129"}\r
+        ky{"set133"}\r
+        lo{"set139"}\r
+        lt{"set107"}\r
+        lv{"set108"}\r
+        mk{"set104"}\r
+        ml{"set124"}\r
+        mn{"set151"}\r
+        mr{"set118"}\r
+        ms{"set143"}\r
+        my{"set152"}\r
+        nb{"set85"}\r
+        ne{"set119"}\r
+        nl{"set81"}\r
+        pa{"set120"}\r
+        pl{"set102"}\r
+        pt{"set88"}\r
+        ro{"set94"}\r
+        root{"set78"}\r
+        ru{"set105"}\r
+        si{"set121"}\r
+        sk{"set101"}\r
+        sl{"set99"}\r
+        sq{"set113"}\r
+        sr{"set98"}\r
+        sv{"set86"}\r
+        sw{"set147"}\r
+        ta{"set122"}\r
+        te{"set123"}\r
+        th{"set138"}\r
+        tr{"set130"}\r
+        uk{"set106"}\r
+        ur{"set114"}\r
+        uz{"set134"}\r
+        vi{"set145"}\r
+        yue{"set127"}\r
+        zh{"set126"}\r
+        zu{"set148"}\r
     }\r
     rules{\r
         set1{\r
@@ -170,12 +172,12 @@ dayPeriods:table(nofallback){
         }\r
         set10{\r
             afternoon1{\r
-                before{"19:00"}\r
+                before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
                 before{"24:00"}\r
-                from{"19:00"}\r
+                from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
@@ -198,6 +200,50 @@ dayPeriods:table(nofallback){
                 from{"12:00"}\r
             }\r
             evening1{\r
+                before{"22:00"}\r
+                from{"18:00"}\r
+            }\r
+            morning1{\r
+                before{"09:00"}\r
+                from{"04:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"09:00"}\r
+            }\r
+            night1{\r
+                before{"04:00"}\r
+                from{"22:00"}\r
+            }\r
+        }\r
+        set101{\r
+            afternoon1{\r
+                before{"18:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
+                before{"22:00"}\r
+                from{"18:00"}\r
+            }\r
+            morning1{\r
+                before{"09:00"}\r
+                from{"04:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"09:00"}\r
+            }\r
+            night1{\r
+                before{"04:00"}\r
+                from{"22:00"}\r
+            }\r
+        }\r
+        set102{\r
+            afternoon1{\r
+                before{"18:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
                 before{"21:00"}\r
                 from{"18:00"}\r
             }\r
@@ -214,7 +260,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set101{\r
+        set103{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"14:00"}\r
@@ -236,7 +282,7 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set102{\r
+        set104{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -258,7 +304,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set103{\r
+        set105{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -276,7 +322,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set104{\r
+        set106{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -294,7 +340,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set105{\r
+        set107{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -312,7 +358,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set106{\r
+        set108{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -330,7 +376,7 @@ dayPeriods:table(nofallback){
                 from{"23:00"}\r
             }\r
         }\r
-        set107{\r
+        set109{\r
             afternoon1{\r
                 before{"17:00"}\r
                 from{"12:00"}\r
@@ -348,68 +394,67 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set108{\r
+        set11{\r
             afternoon1{\r
-                before{"17:00"}\r
+                before{"19:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"19:00"}\r
-                from{"17:00"}\r
+                before{"24:00"}\r
+                from{"19:00"}\r
+            }\r
+            midnight{\r
+                at{"00:00"}\r
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"04:00"}\r
+                from{"06:00"}\r
             }\r
             night1{\r
-                before{"04:00"}\r
-                from{"19:00"}\r
+                before{"06:00"}\r
+                from{"00:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
             }\r
         }\r
-        set109{\r
+        set110{\r
             afternoon1{\r
-                before{"18:00"}\r
+                before{"17:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
+                before{"19:00"}\r
+                from{"17:00"}\r
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"06:00"}\r
+                from{"04:00"}\r
             }\r
             night1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
+                before{"04:00"}\r
+                from{"19:00"}\r
             }\r
         }\r
-        set11{\r
+        set111{\r
             afternoon1{\r
-                before{"13:00"}\r
+                before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"21:00"}\r
-                from{"13:00"}\r
-            }\r
-            midnight{\r
-                at{"00:00"}\r
+                before{"24:00"}\r
+                from{"18:00"}\r
             }\r
             morning1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
-            }\r
-            morning2{\r
                 before{"12:00"}\r
                 from{"06:00"}\r
             }\r
             night1{\r
-                before{"24:00"}\r
-                from{"21:00"}\r
+                before{"06:00"}\r
+                from{"00:00"}\r
             }\r
         }\r
-        set110{\r
+        set112{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -427,7 +472,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set111{\r
+        set113{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -449,7 +494,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set112{\r
+        set114{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -471,7 +516,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set113{\r
+        set115{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -489,7 +534,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set114{\r
+        set116{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -515,7 +560,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set115{\r
+        set117{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -533,7 +578,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set116{\r
+        set118{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -559,7 +604,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set117{\r
+        set119{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -581,7 +626,32 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set118{\r
+        set12{\r
+            afternoon1{\r
+                before{"13:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
+                before{"21:00"}\r
+                from{"13:00"}\r
+            }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
+            morning1{\r
+                before{"06:00"}\r
+                from{"00:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"06:00"}\r
+            }\r
+            night1{\r
+                before{"24:00"}\r
+                from{"21:00"}\r
+            }\r
+        }\r
+        set120{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -599,7 +669,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set119{\r
+        set121{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -625,28 +695,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set12{\r
-            evening1{\r
-                before{"20:00"}\r
-                from{"12:00"}\r
-            }\r
-            morning1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"06:00"}\r
-            }\r
-            night1{\r
-                before{"24:00"}\r
-                from{"20:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
-            }\r
-        }\r
-        set120{\r
+        set122{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -676,7 +725,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set121{\r
+        set123{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -694,7 +743,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set122{\r
+        set124{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -724,7 +773,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set123{\r
+        set125{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -742,7 +791,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set124{\r
+        set126{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -768,7 +817,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set125{\r
+        set127{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -794,7 +843,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set126{\r
+        set128{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -816,7 +865,7 @@ dayPeriods:table(nofallback){
                 from{"23:00"}\r
             }\r
         }\r
-        set127{\r
+        set129{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -838,7 +887,28 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set128{\r
+        set13{\r
+            evening1{\r
+                before{"20:00"}\r
+                from{"12:00"}\r
+            }\r
+            morning1{\r
+                before{"06:00"}\r
+                from{"00:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"06:00"}\r
+            }\r
+            night1{\r
+                before{"24:00"}\r
+                from{"20:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
+            }\r
+        }\r
+        set130{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -864,7 +934,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set129{\r
+        set131{\r
             afternoon1{\r
                 before{"17:00"}\r
                 from{"12:00"}\r
@@ -890,24 +960,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set13{\r
-            evening1{\r
-                before{"20:00"}\r
-                from{"12:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"00:00"}\r
-            }\r
-            night1{\r
-                before{"24:00"}\r
-                from{"20:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
-            }\r
-        }\r
-        set130{\r
+        set132{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -925,7 +978,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set131{\r
+        set133{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -943,7 +996,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set132{\r
+        set134{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"11:00"}\r
@@ -961,7 +1014,7 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set133{\r
+        set135{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -979,7 +1032,7 @@ dayPeriods:table(nofallback){
                 from{"23:00"}\r
             }\r
         }\r
-        set134{\r
+        set136{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1001,7 +1054,7 @@ dayPeriods:table(nofallback){
                 from{"23:00"}\r
             }\r
         }\r
-        set135{\r
+        set137{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1027,7 +1080,7 @@ dayPeriods:table(nofallback){
                 from{"04:00"}\r
             }\r
         }\r
-        set136{\r
+        set138{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -1053,7 +1106,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set137{\r
+        set139{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1071,7 +1124,24 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set138{\r
+        set14{\r
+            evening1{\r
+                before{"20:00"}\r
+                from{"12:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"00:00"}\r
+            }\r
+            night1{\r
+                before{"24:00"}\r
+                from{"20:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
+            }\r
+        }\r
+        set140{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -1101,7 +1171,7 @@ dayPeriods:table(nofallback){
                 from{"01:00"}\r
             }\r
         }\r
-        set139{\r
+        set141{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1127,36 +1197,7 @@ dayPeriods:table(nofallback){
                 from{"03:00"}\r
             }\r
         }\r
-        set14{\r
-            afternoon1{\r
-                before{"13:00"}\r
-                from{"12:00"}\r
-            }\r
-            afternoon2{\r
-                before{"19:00"}\r
-                from{"13:00"}\r
-            }\r
-            evening1{\r
-                before{"21:00"}\r
-                from{"19:00"}\r
-            }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
-            morning1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"06:00"}\r
-            }\r
-            night1{\r
-                before{"24:00"}\r
-                from{"21:00"}\r
-            }\r
-        }\r
-        set140{\r
+        set142{\r
             afternoon1{\r
                 before{"15:00"}\r
                 from{"10:00"}\r
@@ -1174,7 +1215,7 @@ dayPeriods:table(nofallback){
                 from{"18:00"}\r
             }\r
         }\r
-        set141{\r
+        set143{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -1196,7 +1237,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set142{\r
+        set144{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1218,7 +1259,7 @@ dayPeriods:table(nofallback){
                 from{"18:00"}\r
             }\r
         }\r
-        set143{\r
+        set145{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1236,7 +1277,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set144{\r
+        set146{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1254,7 +1295,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set145{\r
+        set147{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1276,7 +1317,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set146{\r
+        set148{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"10:00"}\r
@@ -1298,7 +1339,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set147{\r
+        set149{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1316,19 +1357,22 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set148{\r
+        set15{\r
             afternoon1{\r
-                before{"14:00"}\r
+                before{"13:00"}\r
                 from{"12:00"}\r
             }\r
             afternoon2{\r
                 before{"19:00"}\r
-                from{"14:00"}\r
+                from{"13:00"}\r
             }\r
             evening1{\r
                 before{"21:00"}\r
                 from{"19:00"}\r
             }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
             morning1{\r
                 before{"06:00"}\r
                 from{"00:00"}\r
@@ -1342,49 +1386,51 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set149{\r
+        set150{\r
             afternoon1{\r
-                before{"18:00"}\r
+                before{"14:00"}\r
                 from{"12:00"}\r
             }\r
+            afternoon2{\r
+                before{"19:00"}\r
+                from{"14:00"}\r
+            }\r
             evening1{\r
                 before{"21:00"}\r
-                from{"18:00"}\r
+                from{"19:00"}\r
             }\r
             morning1{\r
+                before{"06:00"}\r
+                from{"00:00"}\r
+            }\r
+            morning2{\r
                 before{"12:00"}\r
                 from{"06:00"}\r
             }\r
             night1{\r
-                before{"06:00"}\r
+                before{"24:00"}\r
                 from{"21:00"}\r
             }\r
         }\r
-        set15{\r
+        set151{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
+                before{"21:00"}\r
                 from{"18:00"}\r
             }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
             morning1{\r
                 before{"12:00"}\r
                 from{"06:00"}\r
             }\r
             night1{\r
                 before{"06:00"}\r
-                from{"00:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
+                from{"21:00"}\r
             }\r
         }\r
-        set150{\r
+        set152{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1402,7 +1448,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set151{\r
+        set153{\r
             afternoon1{\r
                 before{"24:00"}\r
                 from{"12:00"}\r
@@ -1412,7 +1458,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set152{\r
+        set154{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -1444,7 +1490,7 @@ dayPeriods:table(nofallback){
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"22:00"}\r
+                before{"24:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
@@ -1452,11 +1498,11 @@ dayPeriods:table(nofallback){
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"05:00"}\r
+                from{"06:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
-                from{"22:00"}\r
+                before{"06:00"}\r
+                from{"00:00"}\r
             }\r
             noon{\r
                 at{"12:00"}\r
@@ -1468,7 +1514,7 @@ dayPeriods:table(nofallback){
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
+                before{"22:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
@@ -1476,11 +1522,11 @@ dayPeriods:table(nofallback){
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"04:00"}\r
+                from{"05:00"}\r
             }\r
             night1{\r
-                before{"04:00"}\r
-                from{"00:00"}\r
+                before{"05:00"}\r
+                from{"22:00"}\r
             }\r
             noon{\r
                 at{"12:00"}\r
@@ -1561,6 +1607,30 @@ dayPeriods:table(nofallback){
         set20{\r
             afternoon1{\r
                 before{"18:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
+                before{"24:00"}\r
+                from{"18:00"}\r
+            }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
+            morning1{\r
+                before{"12:00"}\r
+                from{"04:00"}\r
+            }\r
+            night1{\r
+                before{"04:00"}\r
+                from{"00:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
+            }\r
+        }\r
+        set21{\r
+            afternoon1{\r
+                before{"18:00"}\r
                 from{"14:00"}\r
             }\r
             evening1{\r
@@ -1583,7 +1653,7 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set21{\r
+        set22{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1611,7 +1681,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set22{\r
+        set23{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1635,7 +1705,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set23{\r
+        set24{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1659,7 +1729,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set24{\r
+        set25{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1683,7 +1753,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set25{\r
+        set26{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1711,7 +1781,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set26{\r
+        set27{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1739,7 +1809,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set27{\r
+        set28{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1767,7 +1837,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set28{\r
+        set29{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1795,7 +1865,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set29{\r
+        set3{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1809,17 +1879,14 @@ dayPeriods:table(nofallback){
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"06:00"}\r
+                from{"05:00"}\r
             }\r
             night1{\r
-                before{"06:00"}\r
+                before{"05:00"}\r
                 from{"00:00"}\r
             }\r
-            noon{\r
-                at{"12:00"}\r
-            }\r
         }\r
-        set3{\r
+        set30{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1833,14 +1900,17 @@ dayPeriods:table(nofallback){
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"05:00"}\r
+                from{"06:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
+                before{"06:00"}\r
                 from{"00:00"}\r
             }\r
+            noon{\r
+                at{"12:00"}\r
+            }\r
         }\r
-        set30{\r
+        set31{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1864,7 +1934,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set31{\r
+        set32{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1889,7 +1959,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set32{\r
+        set33{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1910,7 +1980,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set33{\r
+        set34{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1936,7 +2006,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set34{\r
+        set35{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1957,7 +2027,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set35{\r
+        set36{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1989,7 +2059,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set36{\r
+        set37{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2017,7 +2087,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set37{\r
+        set38{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2038,7 +2108,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set38{\r
+        set39{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -2070,24 +2140,6 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set39{\r
-            afternoon1{\r
-                before{"17:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
-                before{"20:00"}\r
-                from{"17:00"}\r
-            }\r
-            morning1{\r
-                before{"12:00"}\r
-                from{"04:00"}\r
-            }\r
-            night1{\r
-                before{"04:00"}\r
-                from{"20:00"}\r
-            }\r
-        }\r
         set4{\r
             afternoon1{\r
                 before{"18:00"}\r
@@ -2111,6 +2163,24 @@ dayPeriods:table(nofallback){
         }\r
         set40{\r
             afternoon1{\r
+                before{"17:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
+                before{"20:00"}\r
+                from{"17:00"}\r
+            }\r
+            morning1{\r
+                before{"12:00"}\r
+                from{"04:00"}\r
+            }\r
+            night1{\r
+                before{"04:00"}\r
+                from{"20:00"}\r
+            }\r
+        }\r
+        set41{\r
+            afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
             }\r
@@ -2137,7 +2207,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set41{\r
+        set42{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2161,7 +2231,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set42{\r
+        set43{\r
             afternoon1{\r
                 before{"17:00"}\r
                 from{"12:00"}\r
@@ -2185,7 +2255,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set43{\r
+        set44{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -2221,7 +2291,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set44{\r
+        set45{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2242,7 +2312,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set45{\r
+        set46{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -2278,7 +2348,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set46{\r
+        set47{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2299,7 +2369,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set47{\r
+        set48{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2327,7 +2397,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set48{\r
+        set49{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2351,68 +2421,64 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set49{\r
+        set5{\r
             afternoon1{\r
-                before{"18:00"}\r
+                before{"14:00"}\r
                 from{"12:00"}\r
             }\r
+            afternoon2{\r
+                before{"18:00"}\r
+                from{"14:00"}\r
+            }\r
             evening1{\r
-                before{"21:00"}\r
+                before{"24:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
-                before{"09:00"}\r
-                from{"06:00"}\r
-            }\r
-            morning2{\r
                 before{"12:00"}\r
-                from{"09:00"}\r
+                from{"05:00"}\r
             }\r
             night1{\r
-                before{"04:00"}\r
-                from{"21:00"}\r
-            }\r
-            night2{\r
-                before{"06:00"}\r
-                from{"04:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
+                before{"05:00"}\r
+                from{"00:00"}\r
             }\r
         }\r
-        set5{\r
+        set50{\r
             afternoon1{\r
-                before{"13:00"}\r
-                from{"12:00"}\r
-            }\r
-            afternoon2{\r
                 before{"18:00"}\r
-                from{"13:00"}\r
+                from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
+                before{"21:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
-                before{"10:00"}\r
-                from{"05:00"}\r
+                before{"09:00"}\r
+                from{"06:00"}\r
             }\r
             morning2{\r
                 before{"12:00"}\r
-                from{"10:00"}\r
+                from{"09:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
-                from{"00:00"}\r
+                before{"04:00"}\r
+                from{"21:00"}\r
+            }\r
+            night2{\r
+                before{"06:00"}\r
+                from{"04:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
             }\r
         }\r
-        set50{\r
+        set51{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -2441,7 +2507,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set51{\r
+        set52{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -2470,7 +2536,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set52{\r
+        set53{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2498,7 +2564,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set53{\r
+        set54{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2526,7 +2592,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set54{\r
+        set55{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2550,7 +2616,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set55{\r
+        set56{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -2582,7 +2648,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set56{\r
+        set57{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2606,7 +2672,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set57{\r
+        set58{\r
             afternoon1{\r
                 before{"15:00"}\r
                 from{"10:00"}\r
@@ -2630,7 +2696,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set58{\r
+        set59{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -2652,60 +2718,64 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set59{\r
+        set6{\r
             afternoon1{\r
-                before{"16:00"}\r
+                before{"13:00"}\r
                 from{"12:00"}\r
             }\r
-            evening1{\r
+            afternoon2{\r
                 before{"18:00"}\r
-                from{"16:00"}\r
+                from{"13:00"}\r
+            }\r
+            evening1{\r
+                before{"24:00"}\r
+                from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
+                before{"10:00"}\r
+                from{"05:00"}\r
             }\r
             morning2{\r
                 before{"12:00"}\r
-                from{"06:00"}\r
+                from{"10:00"}\r
             }\r
             night1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
+                before{"05:00"}\r
+                from{"00:00"}\r
             }\r
         }\r
-        set6{\r
+        set60{\r
             afternoon1{\r
-                before{"18:00"}\r
+                before{"16:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
+                before{"18:00"}\r
+                from{"16:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
-                before{"10:00"}\r
-                from{"05:00"}\r
+                before{"06:00"}\r
+                from{"00:00"}\r
             }\r
             morning2{\r
                 before{"12:00"}\r
-                from{"10:00"}\r
+                from{"06:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
-                from{"00:00"}\r
+                before{"24:00"}\r
+                from{"18:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
             }\r
         }\r
-        set60{\r
+        set61{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2737,7 +2807,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set61{\r
+        set62{\r
             afternoon1{\r
                 before{"17:00"}\r
                 from{"12:00"}\r
@@ -2769,7 +2839,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set62{\r
+        set63{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2793,7 +2863,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set63{\r
+        set64{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2817,7 +2887,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set64{\r
+        set65{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"11:00"}\r
@@ -2841,7 +2911,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set65{\r
+        set66{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -2871,7 +2941,7 @@ dayPeriods:table(nofallback){
                 from{"01:00"}\r
             }\r
         }\r
-        set66{\r
+        set67{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2900,7 +2970,7 @@ dayPeriods:table(nofallback){
                 from{"03:00"}\r
             }\r
         }\r
-        set67{\r
+        set68{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2924,7 +2994,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set68{\r
+        set69{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2948,56 +3018,56 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set69{\r
+        set7{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"21:00"}\r
+                before{"24:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
+                before{"10:00"}\r
+                from{"05:00"}\r
+            }\r
+            morning2{\r
                 before{"12:00"}\r
-                from{"00:00"}\r
+                from{"10:00"}\r
             }\r
             night1{\r
-                before{"24:00"}\r
-                from{"21:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
+                before{"05:00"}\r
+                from{"00:00"}\r
             }\r
         }\r
-        set7{\r
+        set70{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
+                before{"21:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
-                before{"10:00"}\r
-                from{"06:00"}\r
-            }\r
-            morning2{\r
                 before{"12:00"}\r
-                from{"10:00"}\r
+                from{"00:00"}\r
             }\r
             night1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
+                before{"24:00"}\r
+                from{"21:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
             }\r
         }\r
-        set70{\r
+        set71{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -3025,7 +3095,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set71{\r
+        set72{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"10:00"}\r
@@ -3047,7 +3117,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set72{\r
+        set73{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3071,7 +3141,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set73{\r
+        set74{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -3100,7 +3170,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set74{\r
+        set75{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3124,7 +3194,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set75{\r
+        set76{\r
             afternoon1{\r
                 before{"24:00"}\r
                 from{"12:00"}\r
@@ -3137,7 +3207,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set76{\r
+        set77{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -3163,7 +3233,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set77{\r
+        set78{\r
             am{\r
                 before{"12:00"}\r
                 from{"00:00"}\r
@@ -3173,7 +3243,7 @@ dayPeriods:table(nofallback){
                 from{"12:00"}\r
             }\r
         }\r
-        set78{\r
+        set79{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3191,7 +3261,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set79{\r
+        set8{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3200,16 +3270,23 @@ dayPeriods:table(nofallback){
                 before{"24:00"}\r
                 from{"18:00"}\r
             }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
             morning1{\r
+                before{"10:00"}\r
+                from{"06:00"}\r
+            }\r
+            morning2{\r
                 before{"12:00"}\r
-                from{"05:00"}\r
+                from{"10:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
+                before{"06:00"}\r
                 from{"00:00"}\r
             }\r
         }\r
-        set8{\r
+        set80{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3218,23 +3295,16 @@ dayPeriods:table(nofallback){
                 before{"24:00"}\r
                 from{"18:00"}\r
             }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
             morning1{\r
-                before{"10:00"}\r
-                from{"05:00"}\r
-            }\r
-            morning2{\r
                 before{"12:00"}\r
-                from{"10:00"}\r
+                from{"05:00"}\r
             }\r
             night1{\r
                 before{"05:00"}\r
                 from{"00:00"}\r
             }\r
         }\r
-        set80{\r
+        set81{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3252,7 +3322,32 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set81{\r
+        set82{\r
+            afternoon1{\r
+                before{"14:00"}\r
+                from{"12:00"}\r
+            }\r
+            afternoon2{\r
+                before{"18:00"}\r
+                from{"14:00"}\r
+            }\r
+            evening1{\r
+                before{"24:00"}\r
+                from{"18:00"}\r
+            }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
+            morning1{\r
+                before{"12:00"}\r
+                from{"05:00"}\r
+            }\r
+            night1{\r
+                before{"05:00"}\r
+                from{"00:00"}\r
+            }\r
+        }\r
+        set83{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -3278,7 +3373,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set82{\r
+        set84{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3300,7 +3395,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set83{\r
+        set85{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3322,7 +3417,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set84{\r
+        set86{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3344,7 +3439,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set85{\r
+        set87{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3362,7 +3457,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set86{\r
+        set88{\r
             afternoon1{\r
                 before{"19:00"}\r
                 from{"12:00"}\r
@@ -3380,7 +3475,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set87{\r
+        set89{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -3402,7 +3497,32 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set88{\r
+        set9{\r
+            afternoon1{\r
+                before{"18:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
+                before{"24:00"}\r
+                from{"18:00"}\r
+            }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
+            morning1{\r
+                before{"10:00"}\r
+                from{"05:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"10:00"}\r
+            }\r
+            night1{\r
+                before{"05:00"}\r
+                from{"00:00"}\r
+            }\r
+        }\r
+        set90{\r
             evening1{\r
                 before{"20:00"}\r
                 from{"12:00"}\r
@@ -3420,7 +3540,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set89{\r
+        set91{\r
             evening1{\r
                 before{"20:00"}\r
                 from{"12:00"}\r
@@ -3434,31 +3554,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set9{\r
-            afternoon1{\r
-                before{"18:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
-            }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
-            morning1{\r
-                before{"12:00"}\r
-                from{"06:00"}\r
-            }\r
-            night1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
-            }\r
-        }\r
-        set90{\r
+        set92{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -3484,7 +3580,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set91{\r
+        set93{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3502,7 +3598,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set92{\r
+        set94{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3520,7 +3616,7 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set93{\r
+        set95{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3538,7 +3634,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set94{\r
+        set96{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3556,7 +3652,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set95{\r
+        set97{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3574,7 +3670,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set96{\r
+        set98{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3592,7 +3688,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set97{\r
+        set99{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3614,49 +3710,5 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set98{\r
-            afternoon1{\r
-                before{"18:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
-                before{"22:00"}\r
-                from{"18:00"}\r
-            }\r
-            morning1{\r
-                before{"09:00"}\r
-                from{"04:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"09:00"}\r
-            }\r
-            night1{\r
-                before{"04:00"}\r
-                from{"22:00"}\r
-            }\r
-        }\r
-        set99{\r
-            afternoon1{\r
-                before{"18:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
-                before{"22:00"}\r
-                from{"18:00"}\r
-            }\r
-            morning1{\r
-                before{"09:00"}\r
-                from{"04:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"09:00"}\r
-            }\r
-            night1{\r
-                before{"04:00"}\r
-                from{"22:00"}\r
-            }\r
-        }\r
     }\r
 }\r
index cb7704f..d4c9ece 100644 (file)
@@ -8,6 +8,6 @@
 // ***************************************************************************\r
 \r
 icuver:table(nofallback){ \r
-    DataVersion { "58.2.0.0" }\r
-    ICUVersion  { "58.2.0.0" }\r
+    DataVersion { "59.1.0.0" }\r
+    ICUVersion  { "59.1.0.0" }\r
 }\r
index 0318b4f..643ede2 100644 (file)
@@ -14,6 +14,7 @@ keyTypeData:table(nofallback){
         }\r
         valueType{\r
             ca{"incremental"}\r
+            h0{"single"}\r
             kr{"multiple"}\r
             vt{"multiple"}\r
             x0{"any"}\r
@@ -36,6 +37,7 @@ keyTypeData:table(nofallback){
         d0{""}\r
         em{""}\r
         fw{""}\r
+        h0{""}\r
         hours{"hc"}\r
         i0{""}\r
         k0{""}\r
@@ -216,6 +218,7 @@ keyTypeData:table(nofallback){
             buk{""}\r
             bwp{""}\r
             byb{""}\r
+            byn{""}\r
             byr{""}\r
             bzd{""}\r
             cad{""}\r
@@ -497,6 +500,9 @@ keyTypeData:table(nofallback){
             tue{""}\r
             wed{""}\r
         }\r
+        h0{\r
+            hybrid{""}\r
+        }\r
         hours{\r
             h11{""}\r
             h12{""}\r
index 9fd9505..03d878c 100644 (file)
@@ -7,6 +7,7 @@ likelySubtags:table(nofallback){
     aau{"aau_Latn_ZZ"}\r
     ab{"ab_Cyrl_GE"}\r
     abi{"abi_Latn_ZZ"}\r
+    abq{"abq_Cyrl_ZZ"}\r
     abr{"abr_Latn_GH"}\r
     abt{"abt_Latn_ZZ"}\r
     aby{"aby_Latn_ZZ"}\r
@@ -154,6 +155,7 @@ likelySubtags:table(nofallback){
     bjn{"bjn_Latn_ID"}\r
     bjo{"bjo_Latn_ZZ"}\r
     bjr{"bjr_Latn_ZZ"}\r
+    bjt{"bjt_Latn_SN"}\r
     bjz{"bjz_Latn_ZZ"}\r
     bkc{"bkc_Latn_ZZ"}\r
     bkm{"bkm_Latn_CM"}\r
@@ -220,8 +222,7 @@ likelySubtags:table(nofallback){
     can{"can_Latn_ZZ"}\r
     cbj{"cbj_Latn_ZZ"}\r
     cch{"cch_Latn_NG"}\r
-    ccp{"ccp_Beng_IN"}\r
-    ccp_Cakm{"ccp_Cakm_BD"}\r
+    ccp{"ccp_Cakm_BD"}\r
     ce{"ce_Cyrl_RU"}\r
     ceb{"ceb_Latn_PH"}\r
     cfa{"cfa_Latn_ZZ"}\r
@@ -245,6 +246,7 @@ likelySubtags:table(nofallback){
     cop{"cop_Copt_EG"}\r
     cps{"cps_Latn_PH"}\r
     cr{"cr_Cans_CA"}\r
+    crh{"crh_Cyrl_UA"}\r
     crj{"crj_Cans_CA"}\r
     crk{"crk_Cans_CA"}\r
     crl{"crl_Cans_CA"}\r
@@ -309,6 +311,7 @@ likelySubtags:table(nofallback){
     efi{"efi_Latn_NG"}\r
     egl{"egl_Latn_IT"}\r
     egy{"egy_Egyp_EG"}\r
+    eka{"eka_Latn_ZZ"}\r
     eky{"eky_Kali_MM"}\r
     el{"el_Grek_GR"}\r
     ema{"ema_Latn_ZZ"}\r
@@ -416,6 +419,7 @@ likelySubtags:table(nofallback){
     gor{"gor_Latn_ID"}\r
     gos{"gos_Latn_NL"}\r
     got{"got_Goth_UA"}\r
+    grb{"grb_Latn_ZZ"}\r
     grc{"grc_Cprt_CY"}\r
     grc_Linb{"grc_Linb_GR"}\r
     grt{"grt_Beng_IN"}\r
@@ -488,6 +492,7 @@ likelySubtags:table(nofallback){
     idd{"idd_Latn_ZZ"}\r
     idi{"idi_Latn_ZZ"}\r
     idu{"idu_Latn_ZZ"}\r
+    ife{"ife_Latn_TG"}\r
     ig{"ig_Latn_NG"}\r
     igb{"igb_Latn_ZZ"}\r
     ige{"ige_Latn_ZZ"}\r
@@ -598,6 +603,7 @@ likelySubtags:table(nofallback){
     kmu{"kmu_Latn_ZZ"}\r
     kmw{"kmw_Latn_ZZ"}\r
     kn{"kn_Knda_IN"}\r
+    knf{"knf_Latn_SN"}\r
     knp{"knp_Latn_ZZ"}\r
     ko{"ko_Kore_KR"}\r
     koi{"koi_Cyrl_RU"}\r
@@ -1021,6 +1027,7 @@ likelySubtags:table(nofallback){
     saq{"saq_Latn_KE"}\r
     sas{"sas_Latn_ID"}\r
     sat{"sat_Latn_IN"}\r
+    sav{"sav_Latn_SN"}\r
     saz{"saz_Saur_IN"}\r
     sba{"sba_Latn_ZZ"}\r
     sbe{"sbe_Latn_ZZ"}\r
@@ -1344,7 +1351,6 @@ likelySubtags:table(nofallback){
     und_Cyrl_GE{"ab_Cyrl_GE"}\r
     und_Cyrl_GR{"mk_Cyrl_GR"}\r
     und_Cyrl_MD{"uk_Cyrl_MD"}\r
-    und_Cyrl_PL{"be_Cyrl_PL"}\r
     und_Cyrl_RO{"bg_Cyrl_RO"}\r
     und_Cyrl_SK{"uk_Cyrl_SK"}\r
     und_Cyrl_TR{"kbd_Cyrl_TR"}\r
index 3438968..1a6e771 100644 (file)
@@ -212,7 +212,6 @@ metaZones:table(nofallback){
         }\r
         Chile{\r
             001{"America/Santiago"}\r
-            AQ{"Antarctica/Palmer"}\r
         }\r
         China{\r
             001{"Asia/Shanghai"}\r
@@ -2245,6 +2244,13 @@ metaZones:table(nofallback){
                 "Atlantic",\r
             }\r
         }\r
+        "America:Punta_Arenas"{\r
+            {\r
+                "Chile",\r
+                "1970-01-01 00:00",\r
+                "2016-12-03 23:00",\r
+            }\r
+        }\r
         "America:Rainy_River"{\r
             {\r
                 "America_Central",\r
@@ -2576,7 +2582,7 @@ metaZones:table(nofallback){
             {\r
                 "Chile",\r
                 "1982-05-01 03:00",\r
-                "9999-12-31 23:59",\r
+                "2016-12-03 23:00",\r
             }\r
         }\r
         "Antarctica:Rothera"{\r
@@ -3454,6 +3460,11 @@ metaZones:table(nofallback){
                 "America_Eastern",\r
             }\r
         }\r
+        "Etc:GMT"{\r
+            {\r
+                "GMT",\r
+            }\r
+        }\r
         "Europe:Amsterdam"{\r
             {\r
                 "Europe_Central",\r
index 8d02b8e..86c5f38 100644 (file)
@@ -1279,6 +1279,14 @@ metadata:table(nofallback){
                 reason{"overlong"}\r
                 replacement{"yo"}\r
             }\r
+            yue_CN{\r
+                reason{"legacy"}\r
+                replacement{"yue_Hans_CN"}\r
+            }\r
+            yue_HK{\r
+                reason{"legacy"}\r
+                replacement{"yue_Hant_HK"}\r
+            }\r
             zai{\r
                 reason{"macrolanguage"}\r
                 replacement{"zap"}\r
@@ -1347,163 +1355,311 @@ metadata:table(nofallback){
             }\r
         }\r
         subdivision{\r
-            CN-71{\r
+            cn71{\r
                 reason{"overlong"}\r
                 replacement{"TW"}\r
             }\r
-            CN-91{\r
+            cn91{\r
                 reason{"overlong"}\r
                 replacement{"HK"}\r
             }\r
-            CN-92{\r
+            cn92{\r
                 reason{"overlong"}\r
                 replacement{"MO"}\r
             }\r
-            FR-BL{\r
+            czjc{\r
+                reason{"deprecated"}\r
+                replacement{"cz31"}\r
+            }\r
+            czka{\r
+                reason{"deprecated"}\r
+                replacement{"cz41"}\r
+            }\r
+            czkr{\r
+                reason{"deprecated"}\r
+                replacement{"cz52"}\r
+            }\r
+            czli{\r
+                reason{"deprecated"}\r
+                replacement{"cz51"}\r
+            }\r
+            czmo{\r
+                reason{"deprecated"}\r
+                replacement{"cz80"}\r
+            }\r
+            czol{\r
+                reason{"deprecated"}\r
+                replacement{"cz71"}\r
+            }\r
+            czpa{\r
+                reason{"deprecated"}\r
+                replacement{"cz53"}\r
+            }\r
+            czpl{\r
+                reason{"deprecated"}\r
+                replacement{"cz32"}\r
+            }\r
+            czst{\r
+                reason{"deprecated"}\r
+                replacement{"cz20"}\r
+            }\r
+            czus{\r
+                reason{"deprecated"}\r
+                replacement{"cz42"}\r
+            }\r
+            czzl{\r
+                reason{"deprecated"}\r
+                replacement{"cz72"}\r
+            }\r
+            escn{\r
+                reason{"overlong"}\r
+                replacement{"IC"}\r
+            }\r
+            fi01{\r
+                reason{"overlong"}\r
+                replacement{"AX"}\r
+            }\r
+            fra{\r
+                reason{"deprecated"}\r
+                replacement{"frges"}\r
+            }\r
+            frb{\r
+                reason{"deprecated"}\r
+                replacement{"frnaq"}\r
+            }\r
+            frbl{\r
                 reason{"overlong"}\r
                 replacement{"BL"}\r
             }\r
-            FR-GF{\r
+            frc{\r
+                reason{"deprecated"}\r
+                replacement{"frara"}\r
+            }\r
+            frcp{\r
+                reason{"overlong"}\r
+                replacement{"CP"}\r
+            }\r
+            frd{\r
+                reason{"deprecated"}\r
+                replacement{"frbfc"}\r
+            }\r
+            fre{\r
+                reason{"deprecated"}\r
+                replacement{"frbre"}\r
+            }\r
+            frf{\r
+                reason{"deprecated"}\r
+                replacement{"frcvl"}\r
+            }\r
+            frg{\r
+                reason{"deprecated"}\r
+                replacement{"frges"}\r
+            }\r
+            frgf{\r
                 reason{"overlong"}\r
                 replacement{"GF"}\r
             }\r
-            FR-GP{\r
+            frgp{\r
                 reason{"overlong"}\r
                 replacement{"GP"}\r
             }\r
-            FR-MF{\r
+            frh{\r
+                reason{"deprecated"}\r
+                replacement{"frcor"}\r
+            }\r
+            fri{\r
+                reason{"deprecated"}\r
+                replacement{"frbfc"}\r
+            }\r
+            frj{\r
+                reason{"deprecated"}\r
+                replacement{"fridf"}\r
+            }\r
+            frk{\r
+                reason{"deprecated"}\r
+                replacement{"frocc"}\r
+            }\r
+            frl{\r
+                reason{"deprecated"}\r
+                replacement{"frnaq"}\r
+            }\r
+            frm{\r
+                reason{"deprecated"}\r
+                replacement{"frges"}\r
+            }\r
+            frmf{\r
                 reason{"overlong"}\r
                 replacement{"MF"}\r
             }\r
-            FR-MQ{\r
+            frmq{\r
                 reason{"overlong"}\r
                 replacement{"MQ"}\r
             }\r
-            FR-NC{\r
+            frn{\r
+                reason{"deprecated"}\r
+                replacement{"frocc"}\r
+            }\r
+            frnc{\r
                 reason{"overlong"}\r
                 replacement{"NC"}\r
             }\r
-            FR-PF{\r
+            fro{\r
+                reason{"deprecated"}\r
+                replacement{"frhdf"}\r
+            }\r
+            frp{\r
+                reason{"deprecated"}\r
+                replacement{"frnor"}\r
+            }\r
+            frpf{\r
                 reason{"overlong"}\r
                 replacement{"PF"}\r
             }\r
-            FR-PM{\r
+            frpm{\r
                 reason{"overlong"}\r
                 replacement{"PM"}\r
             }\r
-            FR-RE{\r
+            frq{\r
+                reason{"deprecated"}\r
+                replacement{"frnor"}\r
+            }\r
+            frr{\r
+                reason{"deprecated"}\r
+                replacement{"frpdl"}\r
+            }\r
+            frre{\r
                 reason{"overlong"}\r
                 replacement{"RE"}\r
             }\r
-            FR-TF{\r
+            frs{\r
+                reason{"deprecated"}\r
+                replacement{"frhdf"}\r
+            }\r
+            frt{\r
+                reason{"deprecated"}\r
+                replacement{"frnaq"}\r
+            }\r
+            frtf{\r
                 reason{"overlong"}\r
                 replacement{"TF"}\r
             }\r
-            FR-WF{\r
+            fru{\r
+                reason{"deprecated"}\r
+                replacement{"frpac"}\r
+            }\r
+            frv{\r
+                reason{"deprecated"}\r
+                replacement{"frara"}\r
+            }\r
+            frwf{\r
                 reason{"overlong"}\r
                 replacement{"WF"}\r
             }\r
-            FR-YT{\r
+            fryt{\r
                 reason{"overlong"}\r
                 replacement{"YT"}\r
             }\r
-            LA-XN{\r
+            laxn{\r
                 reason{"deprecated"}\r
-                replacement{"LA-XS"}\r
+                replacement{"laxs"}\r
             }\r
-            LU-D{\r
+            lud{\r
                 reason{"deprecated"}\r
-                replacement{"LU-CL LU-DI LU-RD LU-VD LU-WI"}\r
+                replacement{"lucl ludi lurd luvd luwi"}\r
             }\r
-            LU-G{\r
+            lug{\r
                 reason{"deprecated"}\r
-                replacement{"LU-EC LU-GR LU-RM"}\r
+                replacement{"luec lugr lurm"}\r
             }\r
-            LU-L{\r
+            lul{\r
                 reason{"deprecated"}\r
-                replacement{"LU-CA LU-ES LU-LU LU-ME"}\r
+                replacement{"luca lues lulu lume"}\r
             }\r
-            MR-NKC{\r
+            mrnkc{\r
                 reason{"deprecated"}\r
-                replacement{"MR-13 MR-14 MR-15"}\r
+                replacement{"mr13 mr14 mr15"}\r
             }\r
-            NL-AW{\r
+            nlaw{\r
                 reason{"overlong"}\r
                 replacement{"AW"}\r
             }\r
-            NL-CW{\r
+            nlcw{\r
                 reason{"overlong"}\r
                 replacement{"CW"}\r
             }\r
-            NL-SX{\r
+            nlsx{\r
                 reason{"overlong"}\r
                 replacement{"SX"}\r
             }\r
-            NZ-N{\r
+            nzn{\r
                 reason{"deprecated"}\r
-                replacement{"NZ-AUK NZ-BOP NZ-GIS NZ-HKB NZ-MWT NZ-NTL NZ-TKI NZ-WGN NZ-WKO"}\r
+                replacement{"nzauk nzbop nzgis nzhkb nzmwt nzntl nztki nzwgn nzwko"}\r
             }\r
-            NZ-S{\r
+            nzs{\r
                 reason{"deprecated"}\r
-                replacement{"NZ-CAN NZ-MBH NZ-NSN NZ-OTA NZ-STL NZ-TAS NZ-WTC"}\r
+                replacement{"nzcan nzmbh nznsn nzota nzstl nztas nzwtc"}\r
             }\r
-            OM-BA{\r
+            omba{\r
                 reason{"deprecated"}\r
-                replacement{"OM-BJ OM-BS"}\r
+                replacement{"ombj ombs"}\r
             }\r
-            OM-SH{\r
+            omsh{\r
                 reason{"deprecated"}\r
-                replacement{"OM-SJ OM-SS"}\r
+                replacement{"omsj omss"}\r
+            }\r
+            shta{\r
+                reason{"overlong"}\r
+                replacement{"TA"}\r
             }\r
-            TT-ETO{\r
+            tteto{\r
                 reason{"deprecated"}\r
-                replacement{"TT-TOB"}\r
+                replacement{"tttob"}\r
             }\r
-            TT-RCM{\r
+            ttrcm{\r
                 reason{"deprecated"}\r
-                replacement{"TT-MRC"}\r
+                replacement{"ttmrc"}\r
             }\r
-            TT-WTO{\r
+            ttwto{\r
                 reason{"deprecated"}\r
-                replacement{"TT-TOB"}\r
+                replacement{"tttob"}\r
             }\r
-            TW-KHQ{\r
+            twkhq{\r
                 reason{"deprecated"}\r
-                replacement{"TW-KHH"}\r
+                replacement{"twkhh"}\r
             }\r
-            TW-TNQ{\r
+            twtnq{\r
                 reason{"deprecated"}\r
-                replacement{"TW-TNN"}\r
+                replacement{"twtnn"}\r
             }\r
-            TW-TPQ{\r
+            twtpq{\r
                 reason{"deprecated"}\r
-                replacement{"TW-NWT"}\r
+                replacement{"twnwt"}\r
             }\r
-            TW-TXQ{\r
+            twtxq{\r
                 reason{"deprecated"}\r
-                replacement{"TW-TXG"}\r
+                replacement{"twtxg"}\r
             }\r
-            US-AS{\r
+            usas{\r
                 reason{"overlong"}\r
                 replacement{"AS"}\r
             }\r
-            US-GU{\r
+            usgu{\r
                 reason{"overlong"}\r
                 replacement{"GU"}\r
             }\r
-            US-MP{\r
+            usmp{\r
                 reason{"overlong"}\r
                 replacement{"MP"}\r
             }\r
-            US-PR{\r
+            uspr{\r
                 reason{"overlong"}\r
                 replacement{"PR"}\r
             }\r
-            US-UM{\r
+            usum{\r
                 reason{"overlong"}\r
                 replacement{"UM"}\r
             }\r
-            US-VI{\r
+            usvi{\r
                 reason{"overlong"}\r
                 replacement{"VI"}\r
             }\r
@@ -4107,6 +4263,7 @@ metadata:table(nofallback){
         "bez_TZ",\r
         "bg_BG",\r
         "bgn_PK",\r
+        "blt_Tavt_VN",\r
         "bm_ML",\r
         "bm_Nkoo_ML",\r
         "bn_BD",\r
@@ -4120,6 +4277,7 @@ metadata:table(nofallback){
         "byn_ER",\r
         "ca_ES",\r
         "cch_NG",\r
+        "ccp_BD",\r
         "ce_RU",\r
         "cgg_UG",\r
         "chr_US",\r
index 031595a..007a56d 100644 (file)
@@ -3,79 +3,79 @@
 plurals:table(nofallback){\r
     locales{\r
         af{"set8"}\r
-        ak{"set5"}\r
+        ak{"set6"}\r
         am{"set1"}\r
-        ar{"set34"}\r
-        ars{"set34"}\r
+        ar{"set33"}\r
+        ars{"set33"}\r
         as{"set1"}\r
         asa{"set8"}\r
-        ast{"set3"}\r
+        ast{"set4"}\r
         az{"set8"}\r
-        be{"set27"}\r
+        be{"set26"}\r
         bem{"set8"}\r
         bez{"set8"}\r
         bg{"set8"}\r
-        bh{"set5"}\r
+        bh{"set6"}\r
         bm{"set0"}\r
         bn{"set1"}\r
         bo{"set0"}\r
-        br{"set31"}\r
+        br{"set30"}\r
         brx{"set8"}\r
-        bs{"set20"}\r
-        ca{"set3"}\r
+        bs{"set19"}\r
+        ca{"set4"}\r
         ce{"set8"}\r
         cgg{"set8"}\r
         chr{"set8"}\r
         ckb{"set8"}\r
-        cs{"set25"}\r
-        cy{"set35"}\r
-        da{"set10"}\r
-        de{"set3"}\r
-        dsb{"set23"}\r
+        cs{"set24"}\r
+        cy{"set34"}\r
+        da{"set9"}\r
+        de{"set4"}\r
+        dsb{"set22"}\r
         dv{"set8"}\r
         dz{"set0"}\r
         ee{"set8"}\r
         el{"set8"}\r
-        en{"set3"}\r
+        en{"set4"}\r
         eo{"set8"}\r
         es{"set8"}\r
-        et{"set3"}\r
+        et{"set4"}\r
         eu{"set8"}\r
         fa{"set1"}\r
         ff{"set2"}\r
-        fi{"set3"}\r
-        fil{"set13"}\r
+        fi{"set4"}\r
+        fil{"set12"}\r
         fo{"set8"}\r
         fr{"set2"}\r
         fur{"set8"}\r
-        fy{"set3"}\r
-        ga{"set32"}\r
-        gd{"set21"}\r
-        gl{"set3"}\r
+        fy{"set4"}\r
+        ga{"set31"}\r
+        gd{"set20"}\r
+        gl{"set4"}\r
         gsw{"set8"}\r
         gu{"set1"}\r
-        guw{"set5"}\r
-        gv{"set33"}\r
+        guw{"set6"}\r
+        gv{"set32"}\r
         ha{"set8"}\r
         haw{"set8"}\r
-        he{"set24"}\r
+        he{"set23"}\r
         hi{"set1"}\r
-        hr{"set20"}\r
-        hsb{"set23"}\r
+        hr{"set19"}\r
+        hsb{"set22"}\r
         hu{"set8"}\r
         hy{"set2"}\r
         id{"set0"}\r
         ig{"set0"}\r
         ii{"set0"}\r
         in{"set0"}\r
-        is{"set11"}\r
-        it{"set3"}\r
-        iu{"set17"}\r
-        iw{"set24"}\r
+        is{"set10"}\r
+        it{"set4"}\r
+        iu{"set16"}\r
+        iw{"set23"}\r
         ja{"set0"}\r
         jbo{"set0"}\r
         jgo{"set8"}\r
-        ji{"set3"}\r
+        ji{"set4"}\r
         jmc{"set8"}\r
         jv{"set0"}\r
         jw{"set0"}\r
@@ -93,206 +93,206 @@ plurals:table(nofallback){
         ko{"set0"}\r
         ks{"set8"}\r
         ksb{"set8"}\r
-        ksh{"set16"}\r
+        ksh{"set15"}\r
         ku{"set8"}\r
-        kw{"set17"}\r
+        kw{"set16"}\r
         ky{"set8"}\r
-        lag{"set15"}\r
+        lag{"set14"}\r
         lb{"set8"}\r
         lg{"set8"}\r
         lkt{"set0"}\r
-        ln{"set5"}\r
+        ln{"set6"}\r
         lo{"set0"}\r
-        lt{"set28"}\r
-        lv{"set14"}\r
+        lt{"set27"}\r
+        lv{"set13"}\r
         mas{"set8"}\r
-        mg{"set5"}\r
+        mg{"set6"}\r
         mgo{"set8"}\r
-        mk{"set12"}\r
+        mk{"set11"}\r
         ml{"set8"}\r
         mn{"set8"}\r
-        mo{"set19"}\r
+        mo{"set18"}\r
         mr{"set1"}\r
         ms{"set0"}\r
-        mt{"set29"}\r
+        mt{"set28"}\r
         my{"set0"}\r
         nah{"set8"}\r
-        naq{"set17"}\r
+        naq{"set16"}\r
         nb{"set8"}\r
         nd{"set8"}\r
         ne{"set8"}\r
-        nl{"set3"}\r
+        nl{"set4"}\r
         nn{"set8"}\r
         nnh{"set8"}\r
         no{"set8"}\r
         nqo{"set0"}\r
         nr{"set8"}\r
-        nso{"set5"}\r
+        nso{"set6"}\r
         ny{"set8"}\r
         nyn{"set8"}\r
         om{"set8"}\r
         or{"set8"}\r
         os{"set8"}\r
-        pa{"set5"}\r
+        pa{"set6"}\r
         pap{"set8"}\r
-        pl{"set26"}\r
-        prg{"set14"}\r
+        pl{"set25"}\r
+        prg{"set13"}\r
         ps{"set8"}\r
-        pt{"set7"}\r
-        pt_PT{"set9"}\r
+        pt{"set3"}\r
         rm{"set8"}\r
-        ro{"set19"}\r
+        ro{"set18"}\r
         rof{"set8"}\r
         root{"set0"}\r
-        ru{"set30"}\r
+        ru{"set29"}\r
         rwk{"set8"}\r
         sah{"set0"}\r
         saq{"set8"}\r
         sdh{"set8"}\r
-        se{"set17"}\r
+        se{"set16"}\r
         seh{"set8"}\r
         ses{"set0"}\r
         sg{"set0"}\r
-        sh{"set20"}\r
-        shi{"set18"}\r
-        si{"set4"}\r
-        sk{"set25"}\r
-        sl{"set22"}\r
-        sma{"set17"}\r
-        smi{"set17"}\r
-        smj{"set17"}\r
-        smn{"set17"}\r
-        sms{"set17"}\r
+        sh{"set19"}\r
+        shi{"set17"}\r
+        si{"set5"}\r
+        sk{"set24"}\r
+        sl{"set21"}\r
+        sma{"set16"}\r
+        smi{"set16"}\r
+        smj{"set16"}\r
+        smn{"set16"}\r
+        sms{"set16"}\r
         sn{"set8"}\r
         so{"set8"}\r
         sq{"set8"}\r
-        sr{"set20"}\r
+        sr{"set19"}\r
         ss{"set8"}\r
         ssy{"set8"}\r
         st{"set8"}\r
-        sv{"set3"}\r
-        sw{"set3"}\r
+        sv{"set4"}\r
+        sw{"set4"}\r
         syr{"set8"}\r
         ta{"set8"}\r
         te{"set8"}\r
         teo{"set8"}\r
         th{"set0"}\r
-        ti{"set5"}\r
+        ti{"set6"}\r
         tig{"set8"}\r
         tk{"set8"}\r
-        tl{"set13"}\r
+        tl{"set12"}\r
         tn{"set8"}\r
         to{"set0"}\r
         tr{"set8"}\r
         ts{"set8"}\r
-        tzm{"set6"}\r
+        tzm{"set7"}\r
         ug{"set8"}\r
-        uk{"set30"}\r
-        ur{"set3"}\r
+        uk{"set29"}\r
+        ur{"set4"}\r
         uz{"set8"}\r
         ve{"set8"}\r
         vi{"set0"}\r
         vo{"set8"}\r
         vun{"set8"}\r
-        wa{"set5"}\r
+        wa{"set6"}\r
         wae{"set8"}\r
         wo{"set0"}\r
         xh{"set8"}\r
         xog{"set8"}\r
-        yi{"set3"}\r
+        yi{"set4"}\r
         yo{"set0"}\r
         yue{"set0"}\r
         zh{"set0"}\r
         zu{"set1"}\r
     }\r
     locales_ordinals{\r
-        af{"set36"}\r
-        am{"set36"}\r
-        ar{"set36"}\r
-        as{"set53"}\r
-        az{"set51"}\r
-        be{"set41"}\r
-        bg{"set36"}\r
-        bn{"set53"}\r
-        bs{"set36"}\r
-        ca{"set49"}\r
-        ce{"set36"}\r
-        cs{"set36"}\r
-        cy{"set54"}\r
-        da{"set36"}\r
-        de{"set36"}\r
-        dsb{"set36"}\r
-        el{"set36"}\r
-        en{"set47"}\r
-        es{"set36"}\r
-        et{"set36"}\r
-        eu{"set36"}\r
-        fa{"set36"}\r
-        fi{"set36"}\r
-        fil{"set38"}\r
-        fr{"set38"}\r
-        fy{"set36"}\r
-        ga{"set38"}\r
-        gl{"set36"}\r
-        gu{"set52"}\r
-        he{"set36"}\r
-        hi{"set52"}\r
-        hr{"set36"}\r
-        hsb{"set36"}\r
-        hu{"set39"}\r
-        hy{"set38"}\r
-        id{"set36"}\r
-        in{"set36"}\r
-        is{"set36"}\r
-        it{"set44"}\r
-        iw{"set36"}\r
-        ja{"set36"}\r
-        ka{"set45"}\r
-        kk{"set43"}\r
-        km{"set36"}\r
-        kn{"set36"}\r
-        ko{"set36"}\r
-        ky{"set36"}\r
-        lo{"set38"}\r
-        lt{"set36"}\r
-        lv{"set36"}\r
-        mk{"set50"}\r
-        ml{"set36"}\r
-        mn{"set36"}\r
-        mo{"set38"}\r
-        mr{"set48"}\r
-        ms{"set38"}\r
-        my{"set36"}\r
-        nb{"set36"}\r
-        ne{"set40"}\r
-        nl{"set36"}\r
-        pa{"set36"}\r
-        pl{"set36"}\r
-        prg{"set36"}\r
-        pt{"set36"}\r
-        ro{"set38"}\r
-        root{"set36"}\r
-        ru{"set36"}\r
-        sh{"set36"}\r
-        si{"set36"}\r
-        sk{"set36"}\r
-        sl{"set36"}\r
-        sq{"set46"}\r
-        sr{"set36"}\r
-        sv{"set37"}\r
-        sw{"set36"}\r
-        ta{"set36"}\r
-        te{"set36"}\r
-        th{"set36"}\r
-        tl{"set38"}\r
-        tr{"set36"}\r
-        uk{"set42"}\r
-        ur{"set36"}\r
-        uz{"set36"}\r
-        vi{"set38"}\r
-        yue{"set36"}\r
-        zh{"set36"}\r
-        zu{"set36"}\r
+        af{"set35"}\r
+        am{"set35"}\r
+        ar{"set35"}\r
+        as{"set52"}\r
+        az{"set50"}\r
+        be{"set40"}\r
+        bg{"set35"}\r
+        bn{"set52"}\r
+        bs{"set35"}\r
+        ca{"set48"}\r
+        ce{"set35"}\r
+        cs{"set35"}\r
+        cy{"set53"}\r
+        da{"set35"}\r
+        de{"set35"}\r
+        dsb{"set35"}\r
+        el{"set35"}\r
+        en{"set46"}\r
+        es{"set35"}\r
+        et{"set35"}\r
+        eu{"set35"}\r
+        fa{"set35"}\r
+        fi{"set35"}\r
+        fil{"set37"}\r
+        fr{"set37"}\r
+        fy{"set35"}\r
+        ga{"set37"}\r
+        gl{"set35"}\r
+        gsw{"set35"}\r
+        gu{"set51"}\r
+        he{"set35"}\r
+        hi{"set51"}\r
+        hr{"set35"}\r
+        hsb{"set35"}\r
+        hu{"set38"}\r
+        hy{"set37"}\r
+        id{"set35"}\r
+        in{"set35"}\r
+        is{"set35"}\r
+        it{"set43"}\r
+        iw{"set35"}\r
+        ja{"set35"}\r
+        ka{"set44"}\r
+        kk{"set42"}\r
+        km{"set35"}\r
+        kn{"set35"}\r
+        ko{"set35"}\r
+        ky{"set35"}\r
+        lo{"set37"}\r
+        lt{"set35"}\r
+        lv{"set35"}\r
+        mk{"set49"}\r
+        ml{"set35"}\r
+        mn{"set35"}\r
+        mo{"set37"}\r
+        mr{"set47"}\r
+        ms{"set37"}\r
+        my{"set35"}\r
+        nb{"set35"}\r
+        ne{"set39"}\r
+        nl{"set35"}\r
+        pa{"set35"}\r
+        pl{"set35"}\r
+        prg{"set35"}\r
+        pt{"set35"}\r
+        ro{"set37"}\r
+        root{"set35"}\r
+        ru{"set35"}\r
+        sh{"set35"}\r
+        si{"set35"}\r
+        sk{"set35"}\r
+        sl{"set35"}\r
+        sq{"set45"}\r
+        sr{"set35"}\r
+        sv{"set36"}\r
+        sw{"set35"}\r
+        ta{"set35"}\r
+        te{"set35"}\r
+        th{"set35"}\r
+        tl{"set37"}\r
+        tr{"set35"}\r
+        uk{"set41"}\r
+        ur{"set35"}\r
+        uz{"set35"}\r
+        vi{"set37"}\r
+        yue{"set35"}\r
+        zh{"set35"}\r
+        zu{"set35"}\r
     }\r
     rules{\r
         set0{\r
@@ -309,13 +309,6 @@ plurals:table(nofallback){
             }\r
         }\r
         set10{\r
-            one{"n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6"}\r
-            other{\r
-                " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
-                ", 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
-            }\r
-        }\r
-        set11{\r
             one{\r
                 "t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31,"\r
                 " 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 100"\r
@@ -327,7 +320,7 @@ plurals:table(nofallback){
                 "00000.0, 1000000.0, …"\r
             }\r
         }\r
-        set12{\r
+        set11{\r
             one{\r
                 "v = 0 and i % 10 = 1 or f % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 6"\r
                 "1, 71, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1,"\r
@@ -339,7 +332,7 @@ plurals:table(nofallback){
                 "000000.0, …"\r
             }\r
         }\r
-        set13{\r
+        set12{\r
             one{\r
                 "v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 1"\r
                 "0 != 4,6,9 @integer 0~3, 5, 7, 8, 10~13, 15, 17, 18, 20, 21, 100, 10"\r
@@ -352,7 +345,7 @@ plurals:table(nofallback){
                 "6, 0.9, 1.4, 1.6, 1.9, 2.4, 2.6, 10.4, 100.4, 1000.4, …"\r
             }\r
         }\r
-        set14{\r
+        set13{\r
             one{\r
                 "n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != "\r
                 "11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, "\r
@@ -370,7 +363,7 @@ plurals:table(nofallback){
                 "10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
-        set15{\r
+        set14{\r
             one{"i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6"}\r
             other{\r
                 " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."\r
@@ -378,7 +371,7 @@ plurals:table(nofallback){
             }\r
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}\r
         }\r
-        set16{\r
+        set15{\r
             one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"}\r
             other{\r
                 " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0."\r
@@ -386,7 +379,7 @@ plurals:table(nofallback){
             }\r
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}\r
         }\r
-        set17{\r
+        set16{\r
             one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"}\r
             other{\r
                 " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
@@ -394,7 +387,7 @@ plurals:table(nofallback){
             }\r
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}\r
         }\r
-        set18{\r
+        set17{\r
             few{\r
                 "n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, "\r
                 "9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00"\r
@@ -405,7 +398,7 @@ plurals:table(nofallback){
                 ".9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
-        set19{\r
+        set18{\r
             few{\r
                 "v != 0 or n = 0 or n != 1 and n % 100 = 1..19 @integer 0, 2~16, 101,"\r
                 " 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1"\r
@@ -414,14 +407,7 @@ plurals:table(nofallback){
             one{"i = 1 and v = 0 @integer 1"}\r
             other{" @integer 20~35, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set2{\r
-            one{"i = 0,1 @integer 0, 1 @decimal 0.0~1.5"}\r
-            other{\r
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."\r
-                "5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
-            }\r
-        }\r
-        set20{\r
+        set19{\r
             few{\r
                 "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f"\r
                 " % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, "\r
@@ -439,7 +425,14 @@ plurals:table(nofallback){
                 " 1000000.0, …"\r
             }\r
         }\r
-        set21{\r
+        set2{\r
+            one{"i = 0,1 @integer 0, 1 @decimal 0.0~1.5"}\r
+            other{\r
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."\r
+                "5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+            }\r
+        }\r
+        set20{\r
             few{\r
                 "n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7"\r
                 ".0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00"\r
@@ -457,7 +450,7 @@ plurals:table(nofallback){
                 "00, 2.0000"\r
             }\r
         }\r
-        set22{\r
+        set21{\r
             few{\r
                 "v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204"\r
                 ", 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal"\r
@@ -473,7 +466,7 @@ plurals:table(nofallback){
                 " 1002, …"\r
             }\r
         }\r
-        set23{\r
+        set22{\r
             few{\r
                 "v = 0 and i % 100 = 3..4 or f % 100 = 3..4 @integer 3, 4, 103, 104, "\r
                 "203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … "\r
@@ -496,7 +489,7 @@ plurals:table(nofallback){
                 "7.2, 10.2, 100.2, 1000.2, …"\r
             }\r
         }\r
-        set24{\r
+        set23{\r
             many{\r
                 "v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70,"\r
                 " 80, 90, 100, 1000, 10000, 100000, 1000000, …"\r
@@ -508,7 +501,7 @@ plurals:table(nofallback){
             }\r
             two{"i = 2 and v = 0 @integer 2"}\r
         }\r
-        set25{\r
+        set24{\r
             few{"i = 2..4 and v = 0 @integer 2~4"}\r
             many{\r
                 "v != 0   @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1"\r
@@ -517,7 +510,7 @@ plurals:table(nofallback){
             one{"i = 1 and v = 0 @integer 1"}\r
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set26{\r
+        set25{\r
             few{\r
                 "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 3"\r
                 "2~34, 42~44, 52~54, 62, 102, 1002, …"\r
@@ -533,7 +526,7 @@ plurals:table(nofallback){
                 ".0, …"\r
             }\r
         }\r
-        set27{\r
+        set26{\r
             few{\r
                 "n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~4"\r
                 "4, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0,"\r
@@ -551,7 +544,7 @@ plurals:table(nofallback){
             }\r
             other{"   @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …"}\r
         }\r
-        set28{\r
+        set27{\r
             few{\r
                 "n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, "\r
                 "… @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002"\r
@@ -569,7 +562,7 @@ plurals:table(nofallback){
                 "1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
-        set29{\r
+        set28{\r
             few{\r
                 "n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal"\r
                 " 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …"\r
@@ -584,14 +577,7 @@ plurals:table(nofallback){
                 ".9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
-        set3{\r
-            one{"i = 1 and v = 0 @integer 1"}\r
-            other{\r
-                " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
-                "~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
-            }\r
-        }\r
-        set30{\r
+        set29{\r
             few{\r
                 "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 3"\r
                 "2~34, 42~44, 52~54, 62, 102, 1002, …"\r
@@ -609,7 +595,14 @@ plurals:table(nofallback){
                 ".0, …"\r
             }\r
         }\r
-        set31{\r
+        set3{\r
+            one{"i = 0..1 @integer 0, 1 @decimal 0.0~1.5"}\r
+            other{\r
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."\r
+                "5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+            }\r
+        }\r
+        set30{\r
             few{\r
                 "n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9"\r
                 ", 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0"\r
@@ -634,7 +627,7 @@ plurals:table(nofallback){
                 "2.0, 1002.0, …"\r
             }\r
         }\r
-        set32{\r
+        set31{\r
             few{\r
                 "n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00,"\r
                 " 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000"\r
@@ -651,7 +644,7 @@ plurals:table(nofallback){
             }\r
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}\r
         }\r
-        set33{\r
+        set32{\r
             few{\r
                 "v = 0 and i % 100 = 0,20,40,60,80 @integer 0, 20, 40, 60, 80, 100, 1"\r
                 "20, 140, 1000, 10000, 100000, 1000000, …"\r
@@ -670,7 +663,7 @@ plurals:table(nofallback){
                 "02, …"\r
             }\r
         }\r
-        set34{\r
+        set33{\r
             few{\r
                 "n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5"\r
                 ".0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …"\r
@@ -688,7 +681,7 @@ plurals:table(nofallback){
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}\r
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}\r
         }\r
-        set35{\r
+        set34{\r
             few{"n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000"}\r
             many{"n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000"}\r
             one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"}\r
@@ -700,53 +693,50 @@ plurals:table(nofallback){
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}\r
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}\r
         }\r
-        set36{\r
+        set35{\r
             other{" @integer 0~15, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set37{\r
+        set36{\r
             one{\r
                 "n % 10 = 1,2 and n % 100 != 11,12 @integer 1, 2, 21, 22, 31, 32, 41,"\r
                 " 42, 51, 52, 61, 62, 71, 72, 81, 82, 101, 1001, …"\r
             }\r
             other{" @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set38{\r
+        set37{\r
             one{"n = 1 @integer 1"}\r
             other{" @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set39{\r
+        set38{\r
             one{"n = 1,5 @integer 1, 5"}\r
             other{" @integer 0, 2~4, 6~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
+        set39{\r
+            one{"n = 1..4 @integer 1~4"}\r
+            other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
+        }\r
         set4{\r
-            one{\r
-                "n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.0"\r
-                "0, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000"\r
-            }\r
+            one{"i = 1 and v = 0 @integer 1"}\r
             other{\r
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0."\r
-                "9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+                " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
+                "~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
         set40{\r
-            one{"n = 1..4 @integer 1~4"}\r
-            other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
-        }\r
-        set41{\r
             few{\r
                 "n % 10 = 2,3 and n % 100 != 12,13 @integer 2, 3, 22, 23, 32, 33, 42,"\r
                 " 43, 52, 53, 62, 63, 72, 73, 82, 83, 102, 1002, …"\r
             }\r
             other{" @integer 0, 1, 4~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set42{\r
+        set41{\r
             few{\r
                 "n % 10 = 3 and n % 100 != 13 @integer 3, 23, 33, 43, 53, 63, 73, 83,"\r
                 " 103, 1003, …"\r
             }\r
             other{" @integer 0~2, 4~16, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set43{\r
+        set42{\r
             many{\r
                 "n % 10 = 6 or n % 10 = 9 or n % 10 = 0 and n != 0 @integer 6, 9, 10,"\r
                 " 16, 19, 20, 26, 29, 30, 36, 39, 40, 100, 1000, 10000, 100000, 10000"\r
@@ -754,16 +744,16 @@ plurals:table(nofallback){
             }\r
             other{" @integer 0~5, 7, 8, 11~15, 17, 18, 21, 101, 1001, …"}\r
         }\r
-        set44{\r
+        set43{\r
             many{"n = 11,8,80,800 @integer 8, 11, 80, 800"}\r
             other{" @integer 0~7, 9, 10, 12~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set45{\r
+        set44{\r
             many{"i = 0 or i % 100 = 2..20,40,60,80 @integer 0, 2~16, 102, 1002, …"}\r
             one{"i = 1 @integer 1"}\r
             other{" @integer 21~36, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set46{\r
+        set45{\r
             many{\r
                 "n % 10 = 4 and n % 100 != 14 @integer 4, 24, 34, 44, 54, 64, 74, 84,"\r
                 " 104, 1004, …"\r
@@ -771,7 +761,7 @@ plurals:table(nofallback){
             one{"n = 1 @integer 1"}\r
             other{" @integer 0, 2, 3, 5~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set47{\r
+        set46{\r
             few{\r
                 "n % 10 = 3 and n % 100 != 13 @integer 3, 23, 33, 43, 53, 63, 73, 83,"\r
                 " 103, 1003, …"\r
@@ -786,29 +776,19 @@ plurals:table(nofallback){
                 " 102, 1002, …"\r
             }\r
         }\r
-        set48{\r
+        set47{\r
             few{"n = 4 @integer 4"}\r
             one{"n = 1 @integer 1"}\r
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
             two{"n = 2,3 @integer 2, 3"}\r
         }\r
-        set49{\r
+        set48{\r
             few{"n = 4 @integer 4"}\r
             one{"n = 1,3 @integer 1, 3"}\r
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
             two{"n = 2 @integer 2"}\r
         }\r
-        set5{\r
-            one{\r
-                "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, "\r
-                "0.0000, 1.0000"\r
-            }\r
-            other{\r
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0."\r
-                "9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
-            }\r
-        }\r
-        set50{\r
+        set49{\r
             many{\r
                 "i % 10 = 7,8 and i % 100 != 17,18 @integer 7, 8, 27, 28, 37, 38, 47,"\r
                 " 48, 57, 58, 67, 68, 77, 78, 87, 88, 107, 1007, …"\r
@@ -823,7 +803,17 @@ plurals:table(nofallback){
                 " 102, 1002, …"\r
             }\r
         }\r
-        set51{\r
+        set5{\r
+            one{\r
+                "n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.0"\r
+                "0, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000"\r
+            }\r
+            other{\r
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0."\r
+                "9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+            }\r
+        }\r
+        set50{\r
             few{\r
                 "i % 10 = 3,4 or i % 1000 = 100,200,300,400,500,600,700,800,900 @inte"\r
                 "ger 3, 4, 13, 14, 23, 24, 33, 34, 43, 44, 53, 54, 63, 64, 73, 74, 10"\r
@@ -842,21 +832,21 @@ plurals:table(nofallback){
                 "00000, 1000000, …"\r
             }\r
         }\r
-        set52{\r
+        set51{\r
             few{"n = 4 @integer 4"}\r
             many{"n = 6 @integer 6"}\r
             one{"n = 1 @integer 1"}\r
             other{" @integer 0, 5, 7~20, 100, 1000, 10000, 100000, 1000000, …"}\r
             two{"n = 2,3 @integer 2, 3"}\r
         }\r
-        set53{\r
+        set52{\r
             few{"n = 4 @integer 4"}\r
             many{"n = 6 @integer 6"}\r
             one{"n = 1,5,7,8,9,10 @integer 1, 5, 7~10"}\r
             other{" @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, …"}\r
             two{"n = 2,3 @integer 2, 3"}\r
         }\r
-        set54{\r
+        set53{\r
             few{"n = 3,4 @integer 3, 4"}\r
             many{"n = 5,6 @integer 5, 6"}\r
             one{"n = 1 @integer 1"}\r
@@ -866,23 +856,23 @@ plurals:table(nofallback){
         }\r
         set6{\r
             one{\r
-                "n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0,"\r
-                " 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 2"\r
-                "3.0, 24.0"\r
+                "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, "\r
+                "0.0000, 1.0000"\r
             }\r
             other{\r
-                " @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0."\r
-                "1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0."\r
+                "9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
         set7{\r
             one{\r
-                "n = 0..2 and n != 2 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.0"\r
-                "00, 1.000, 0.0000, 1.0000"\r
+                "n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0,"\r
+                " 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 2"\r
+                "3.0, 24.0"\r
             }\r
             other{\r
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0."\r
-                "9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+                " @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0."\r
+                "1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
         set8{\r
@@ -893,10 +883,10 @@ plurals:table(nofallback){
             }\r
         }\r
         set9{\r
-            one{"n = 1 and v = 0 @integer 1"}\r
+            one{"n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6"}\r
             other{\r
                 " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
-                "~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+                ", 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
     }\r
index 86f8039..1cc21d7 100644 (file)
@@ -1841,7 +1841,7 @@ supplementalData:table(nofallback){
             "islamic-tbla",\r
         }\r
     }\r
-    cldrVersion{"30.0.3"}\r
+    cldrVersion{"31.0.1"}\r
     codeMappings{\r
         {\r
             "AA",\r
@@ -4100,6 +4100,7 @@ supplementalData:table(nofallback){
                 "BRZ",\r
                 "BUK",\r
                 "BYB",\r
+                "BYR",\r
                 "CHE",\r
                 "CHW",\r
                 "CLE~F",\r
@@ -4229,7 +4230,6 @@ supplementalData:table(nofallback){
                 "BTN",\r
                 "BWP",\r
                 "BYN",\r
-                "BYR",\r
                 "BZD",\r
                 "CAD",\r
                 "CDF",\r
@@ -7355,20 +7355,53 @@ supplementalData:table(nofallback){
                 "ba01~9",\r
                 "ba10",\r
                 "bh16",\r
+                "cdbn",\r
+                "cdka",\r
+                "cdkw",\r
+                "cdor",\r
                 "ci01~9",\r
                 "ci10~9",\r
                 "cn71",\r
                 "cn91~2",\r
+                "cz10a~f",\r
+                "cz611~5",\r
+                "cz621~7",\r
+                "czjc",\r
+                "czjm",\r
+                "czka",\r
+                "czkr",\r
+                "czli",\r
+                "czmo",\r
+                "czol",\r
+                "czpa",\r
+                "czpl",\r
+                "czpr",\r
+                "czst",\r
+                "czus",\r
+                "czvy",\r
+                "czzl",\r
+                "escn",\r
+                "fi01",\r
+                "fra~b",\r
                 "frbl",\r
+                "frc",\r
+                "frcp",\r
+                "frd~g",\r
                 "frgf",\r
                 "frgp",\r
+                "frh~m",\r
                 "frmf",\r
                 "frmq",\r
+                "frn",\r
                 "frnc",\r
+                "fro~p",\r
                 "frpf",\r
                 "frpm",\r
+                "frq~r",\r
                 "frre",\r
+                "frs~t",\r
                 "frtf",\r
+                "fru~v",\r
                 "frwf",\r
                 "fryt",\r
                 "gbant",\r
@@ -7396,6 +7429,18 @@ supplementalData:table(nofallback){
                 "gbnym",\r
                 "gbomh",\r
                 "gbstb",\r
+                "gr01",\r
+                "gr03~7",\r
+                "gr11~7",\r
+                "gr21~4",\r
+                "gr31~4",\r
+                "gr41~4",\r
+                "gr51~9",\r
+                "gr61~4",\r
+                "gr71~3",\r
+                "gr81~5",\r
+                "gr91~4",\r
+                "gra1",\r
                 "is0",\r
                 "laxn",\r
                 "lud",\r
@@ -7414,6 +7459,7 @@ supplementalData:table(nofallback){
                 "mk79",\r
                 "mk84",\r
                 "mrnkc",\r
+                "mxdif",\r
                 "nlaw",\r
                 "nlcw",\r
                 "nlsx",\r
@@ -7421,6 +7467,7 @@ supplementalData:table(nofallback){
                 "nzs",\r
                 "omba",\r
                 "omsh",\r
+                "shta",\r
                 "tteto",\r
                 "ttrcm",\r
                 "ttwto",\r
@@ -7428,6 +7475,7 @@ supplementalData:table(nofallback){
                 "twtnq",\r
                 "twtpq",\r
                 "twtxq",\r
+                "ug331",\r
                 "usas",\r
                 "usgu",\r
                 "usmp",\r
@@ -7609,7 +7657,7 @@ supplementalData:table(nofallback){
                 "bd40~9",\r
                 "bd50~9",\r
                 "bd60~4",\r
-                "bda~g",\r
+                "bda~h",\r
                 "bebru",\r
                 "bevan",\r
                 "bevbr",\r
@@ -7811,16 +7859,29 @@ supplementalData:table(nofallback){
                 "cask",\r
                 "cayt",\r
                 "cdbc",\r
-                "cdbn",\r
+                "cdbu",\r
                 "cdeq",\r
-                "cdka",\r
+                "cdhk~l",\r
+                "cdhu",\r
+                "cdit",\r
+                "cdkc",\r
                 "cdke",\r
+                "cdkg",\r
+                "cdkl",\r
                 "cdkn",\r
-                "cdkw",\r
+                "cdks",\r
+                "cdlo",\r
+                "cdlu",\r
                 "cdma",\r
+                "cdmn~o",\r
                 "cdnk",\r
-                "cdor",\r
+                "cdnu",\r
+                "cdsa",\r
                 "cdsk",\r
+                "cdsu",\r
+                "cdta",\r
+                "cdto",\r
+                "cdtu",\r
                 "cfac",\r
                 "cfbb",\r
                 "cfbgf",\r
@@ -7979,36 +8040,37 @@ supplementalData:table(nofallback){
                 "cvta",\r
                 "cvts",\r
                 "cy01~6",\r
+                "cz10",\r
                 "cz101~9",\r
-                "cz10a~f",\r
+                "cz110~9",\r
+                "cz120~2",\r
+                "cz20",\r
                 "cz201~9",\r
                 "cz20a~c",\r
+                "cz31",\r
                 "cz311~7",\r
+                "cz32",\r
                 "cz321~7",\r
+                "cz41",\r
                 "cz411~3",\r
+                "cz42",\r
                 "cz421~7",\r
+                "cz51",\r
                 "cz511~4",\r
+                "cz52",\r
                 "cz521~5",\r
+                "cz53",\r
                 "cz531~4",\r
-                "cz611~5",\r
-                "cz621~7",\r
+                "cz63",\r
+                "cz631~5",\r
+                "cz64",\r
+                "cz641~7",\r
+                "cz71",\r
                 "cz711~5",\r
+                "cz72",\r
                 "cz721~4",\r
+                "cz80",\r
                 "cz801~6",\r
-                "czjc",\r
-                "czjm",\r
-                "czka",\r
-                "czkr",\r
-                "czli",\r
-                "czmo",\r
-                "czol",\r
-                "czpa",\r
-                "czpl",\r
-                "czpr",\r
-                "czst",\r
-                "czus",\r
-                "czvy",\r
-                "czzl",\r
                 "debb",\r
                 "debe",\r
                 "debw",\r
@@ -8109,7 +8171,8 @@ supplementalData:table(nofallback){
                 "esc",\r
                 "esca~c",\r
                 "esce",\r
-                "escl~o",\r
+                "escl~m",\r
+                "esco",\r
                 "escr~u",\r
                 "esex",\r
                 "esga",\r
@@ -8164,7 +8227,7 @@ supplementalData:table(nofallback){
                 "etor",\r
                 "etsn~o",\r
                 "etti",\r
-                "fi01~9",\r
+                "fi02~9",\r
                 "fi10~9",\r
                 "fj01~9",\r
                 "fj10~4",\r
@@ -8188,9 +8251,22 @@ supplementalData:table(nofallback){
                 "fr70~9",\r
                 "fr80~9",\r
                 "fr90~5",\r
-                "fra~c",\r
-                "frcp",\r
-                "frd~v",\r
+                "frara",\r
+                "frbfc",\r
+                "frbre",\r
+                "frcor",\r
+                "frcvl",\r
+                "frges",\r
+                "frgua",\r
+                "frhdf",\r
+                "fridf",\r
+                "frlre",\r
+                "frmay",\r
+                "frnaq",\r
+                "frnor",\r
+                "frocc",\r
+                "frpac",\r
+                "frpdl",\r
                 "ga1~9",\r
                 "gbabc~e",\r
                 "gbagb",\r
@@ -8480,21 +8556,8 @@ supplementalData:table(nofallback){
                 "gqkn",\r
                 "gqli",\r
                 "gqwn",\r
-                "gr01",\r
-                "gr03~7",\r
-                "gr11~7",\r
-                "gr21~4",\r
-                "gr31~4",\r
-                "gr41~4",\r
-                "gr51~9",\r
-                "gr61~4",\r
                 "gr69",\r
-                "gr71~3",\r
-                "gr81~5",\r
-                "gr91~4",\r
-                "gra",\r
-                "gra1",\r
-                "grb~m",\r
+                "gra~m",\r
                 "gtav",\r
                 "gtbv",\r
                 "gtcm",\r
@@ -8888,6 +8951,7 @@ supplementalData:table(nofallback){
                 "kzalm",\r
                 "kzast",\r
                 "kzaty",\r
+                "kzbay",\r
                 "kzkar",\r
                 "kzkus",\r
                 "kzkzy",\r
@@ -9290,9 +9354,9 @@ supplementalData:table(nofallback){
                 "mxcam",\r
                 "mxchh",\r
                 "mxchp",\r
+                "mxcmx",\r
                 "mxcoa",\r
                 "mxcol",\r
-                "mxdif",\r
                 "mxdur",\r
                 "mxgro",\r
                 "mxgua",\r
@@ -9824,7 +9888,6 @@ supplementalData:table(nofallback){
                 "sg01~5",\r
                 "shac",\r
                 "shhl",\r
-                "shta",\r
                 "si001~9",\r
                 "si010~9",\r
                 "si020~9",\r
@@ -9847,7 +9910,7 @@ supplementalData:table(nofallback){
                 "si180~9",\r
                 "si190~9",\r
                 "si200~9",\r
-                "si210~2",\r
+                "si210~3",\r
                 "skbc",\r
                 "skbl",\r
                 "skki",\r
@@ -9986,6 +10049,7 @@ supplementalData:table(nofallback){
                 "tjdu",\r
                 "tjgb",\r
                 "tjkt",\r
+                "tjra",\r
                 "tjsu",\r
                 "tlal",\r
                 "tlan",\r
@@ -10108,10 +10172,10 @@ supplementalData:table(nofallback){
                 "ug301~9",\r
                 "ug310~9",\r
                 "ug320~9",\r
-                "ug330~1",\r
+                "ug330",\r
                 "ug401~9",\r
                 "ug410~9",\r
-                "ug420~5",\r
+                "ug420~6",\r
                 "ugc",\r
                 "uge",\r
                 "ugn",\r
@@ -10742,6 +10806,7 @@ supplementalData:table(nofallback){
                 "nulik",\r
                 "osojs",\r
                 "oxendict",\r
+                "pahawh2~4",\r
                 "pamaka",\r
                 "petr1708",\r
                 "pinyin",\r
@@ -11565,10 +11630,10 @@ supplementalData:table(nofallback){
         }\r
         ccp{\r
             primary{\r
-                scripts{"Beng"}\r
-            }\r
-            secondary{\r
-                scripts{"Cakm"}\r
+                scripts{\r
+                    "Beng",\r
+                    "Cakm",\r
+                }\r
             }\r
         }\r
         ce{\r
@@ -11831,7 +11896,6 @@ supplementalData:table(nofallback){
                     "BE",\r
                     "CH",\r
                     "DE",\r
-                    "IT",\r
                     "LI",\r
                     "LU",\r
                 }\r
@@ -12997,6 +13061,11 @@ supplementalData:table(nofallback){
                 scripts{"Arab"}\r
             }\r
         }\r
+        ife{\r
+            primary{\r
+                scripts{"Latn"}\r
+            }\r
+        }\r
         ig{\r
             primary{\r
                 scripts{"Latn"}\r
@@ -13060,6 +13129,7 @@ supplementalData:table(nofallback){
                     "CH",\r
                     "IT",\r
                     "SM",\r
+                    "VA",\r
                 }\r
             }\r
             secondary{\r
@@ -13069,7 +13139,6 @@ supplementalData:table(nofallback){
                     "HR",\r
                     "MT",\r
                     "US",\r
-                    "VA",\r
                 }\r
             }\r
         }\r
@@ -13117,9 +13186,6 @@ supplementalData:table(nofallback){
             primary{\r
                 scripts{"Deva"}\r
             }\r
-            secondary{\r
-                territories{"NP"}\r
-            }\r
         }\r
         jpr{\r
             primary{\r
@@ -14352,9 +14418,6 @@ supplementalData:table(nofallback){
             primary{\r
                 scripts{"Deva"}\r
             }\r
-            secondary{\r
-                territories{"NP"}\r
-            }\r
         }\r
         ng{\r
             primary{\r
@@ -16475,6 +16538,66 @@ supplementalData:table(nofallback){
     languageMatching{\r
         written{\r
             {\r
+                "no",\r
+                "nb",\r
+                "99",\r
+                "0",\r
+            }\r
+            {\r
+                "hr",\r
+                "bs",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "sh",\r
+                "bs",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "sh",\r
+                "hr",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "sh",\r
+                "sr",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "ssy",\r
+                "aa",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "gsw",\r
+                "de",\r
+                "96",\r
+                "1",\r
+            }\r
+            {\r
+                "lb",\r
+                "de",\r
+                "96",\r
+                "1",\r
+            }\r
+            {\r
+                "da",\r
+                "no",\r
+                "92",\r
+                "0",\r
+            }\r
+            {\r
+                "da",\r
+                "nb",\r
+                "92",\r
+                "0",\r
+            }\r
+            {\r
                 "ab",\r
                 "ru",\r
                 "90",\r
@@ -16511,13 +16634,19 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "az",\r
+                "ru",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "az_Latn",\r
                 "ru_Cyrl",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "az",\r
+                "be",\r
                 "ru",\r
                 "90",\r
                 "1",\r
@@ -16529,14 +16658,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "be",\r
-                "ru",\r
+                "bho",\r
+                "hi",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "bh",\r
-                "hi",\r
+                "bn",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
@@ -16547,12 +16676,6 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "bn",\r
-                "en",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "br",\r
                 "fr",\r
                 "90",\r
@@ -16577,12 +16700,6 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "ckb",\r
-                "ku",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
                 "co",\r
                 "fr",\r
                 "90",\r
@@ -16601,72 +16718,18 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "da",\r
-                "nb",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
-                "da",\r
-                "no",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
                 "ee",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "en_*_001",\r
-                "en_*_*",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_GB",\r
-                "en_*_*",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_US",\r
-                "en_*_*",\r
-                "94",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_*",\r
-                "en_*_*",\r
-                "95",\r
-                "0",\r
-            }\r
-            {\r
                 "eo",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "es_*_419",\r
-                "es_*_*",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "es_*_ES",\r
-                "es_*_*",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
-                "es_*_*",\r
-                "es_*_*",\r
-                "95",\r
-                "0",\r
-            }\r
-            {\r
                 "et",\r
                 "fi",\r
                 "90",\r
@@ -16691,13 +16754,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "gaa",\r
+                "ga",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ga",\r
+                "gaa",\r
                 "en",\r
                 "90",\r
                 "1",\r
@@ -16721,12 +16784,6 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "gsw",\r
-                "de",\r
-                "96",\r
-                "1",\r
-            }\r
-            {\r
                 "gu",\r
                 "hi",\r
                 "90",\r
@@ -16745,30 +16802,24 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "hr",\r
-                "bs",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
                 "ht",\r
                 "fr",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "hy_Armn",\r
-                "ru_Cyrl",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "hy",\r
                 "ru",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
+                "hy_Armn",\r
+                "ru_Cyrl",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "ia",\r
                 "en",\r
                 "90",\r
@@ -16817,19 +16868,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "km_Khmr",\r
-                "en_Latn",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "km",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "kn_Knda",\r
+                "km_Khmr",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
@@ -16841,16 +16886,16 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "kri",\r
-                "en",\r
+                "kn_Knda",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ku",\r
-                "ckb",\r
-                "96",\r
-                "0",\r
+                "kri",\r
+                "en",\r
+                "90",\r
+                "1",\r
             }\r
             {\r
                 "ku",\r
@@ -16871,12 +16916,6 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "lb",\r
-                "de",\r
-                "96",\r
-                "1",\r
-            }\r
-            {\r
                 "lg",\r
                 "en",\r
                 "90",\r
@@ -16889,14 +16928,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "lo_Laoo",\r
-                "en_Latn",\r
+                "lo",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "lo",\r
-                "en",\r
+                "lo_Laoo",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
@@ -16937,14 +16976,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "ml_Mlym",\r
-                "en_Latn",\r
+                "ml",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ml",\r
-                "en",\r
+                "ml_Mlym",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
@@ -16973,19 +17012,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "my_Mymr",\r
-                "en_Latn",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "my",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ne_Deva",\r
+                "my_Mymr",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
@@ -16997,6 +17030,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "ne_Deva",\r
+                "en_Latn",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "nn",\r
                 "nb",\r
                 "90",\r
@@ -17009,12 +17048,6 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "no",\r
-                "nb",\r
-                "99",\r
-                "0",\r
-            }\r
-            {\r
                 "nso",\r
                 "en",\r
                 "90",\r
@@ -17045,19 +17078,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "or_Orya",\r
-                "en_Latn",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "or",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "pa_Guru",\r
+                "or_Orya",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
@@ -17069,14 +17096,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "pcm",\r
-                "en",\r
+                "pa_Guru",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ps_Arab",\r
-                "en_Latn",\r
+                "pcm",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
@@ -17087,28 +17114,10 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "pt_*_BR",\r
-                "pt_*_US",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "pt_*_BR",\r
-                "pt_*_*",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
-                "pt_*_US",\r
-                "pt_*_*",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
-                "pt_*_*",\r
-                "pt_*_*",\r
-                "96",\r
-                "0",\r
+                "ps_Arab",\r
+                "en_Latn",\r
+                "90",\r
+                "1",\r
             }\r
             {\r
                 "qu",\r
@@ -17141,37 +17150,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "sd_Arab",\r
-                "en_Latn",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "sd",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "sh",\r
-                "bs",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "sh",\r
-                "hr",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "sh",\r
-                "sr",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "si_Sinh",\r
+                "sd_Arab",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
@@ -17183,6 +17168,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "si_Sinh",\r
+                "en_Latn",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "sn",\r
                 "en",\r
                 "90",\r
@@ -17201,30 +17192,6 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "sr_Latn",\r
-                "sr_Cyrl",\r
-                "95",\r
-                "0",\r
-            }\r
-            {\r
-                "sr",\r
-                "bs",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "sr",\r
-                "hr",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "ssy",\r
-                "aa",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
                 "st",\r
                 "en",\r
                 "90",\r
@@ -17243,19 +17210,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "ta_Taml",\r
-                "en_Latn",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "ta",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "te_Telu",\r
+                "ta_Taml",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
@@ -17267,14 +17228,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "tg",\r
-                "ru",\r
+                "te_Telu",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ti_Ethi",\r
-                "en_Latn",\r
+                "tg",\r
+                "ru",\r
                 "90",\r
                 "1",\r
             }\r
@@ -17285,8 +17246,8 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "tk_Latn",\r
-                "ru_Cyrl",\r
+                "ti_Ethi",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
@@ -17297,6 +17258,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "tk_Latn",\r
+                "ru_Cyrl",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "tlh",\r
                 "en",\r
                 "90",\r
@@ -17333,20 +17300,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "ur_Arab",\r
-                "en_Latn",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "ur",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "uz_Latn",\r
-                "ru_Cyrl",\r
+                "ur_Arab",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
@@ -17357,6 +17318,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "uz_Latn",\r
+                "ru_Cyrl",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "wo",\r
                 "fr",\r
                 "90",\r
@@ -17369,14 +17336,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "yi_Hebr",\r
-                "en_Latn",\r
+                "yi",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "yi",\r
-                "en",\r
+                "yi_Hebr",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
@@ -17387,6128 +17354,7102 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "zh_Hant_HK",\r
-                "zh_Hant_MO",\r
-                "97",\r
-                "0",\r
-            }\r
-            {\r
                 "zu",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "*_Hans",\r
-                "*_Hant",\r
+                "sr_Latn",\r
+                "sr_Cyrl",\r
+                "95",\r
+                "0",\r
+            }\r
+            {\r
+                "zh_Hans",\r
+                "zh_Hant",\r
                 "85",\r
                 "1",\r
             }\r
             {\r
-                "*_Hant",\r
-                "*_Hans",\r
+                "zh_Hant",\r
+                "zh_Hans",\r
                 "81",\r
                 "1",\r
             }\r
             {\r
-                "*_*_*",\r
-                "*_*_*",\r
+                "zh_Hant_HK",\r
+                "zh_Hant_MO",\r
+                "97",\r
+                "0",\r
+            }\r
+            {\r
+                "pt_*_BR",\r
+                "pt_*_US",\r
                 "96",\r
                 "0",\r
             }\r
             {\r
-                "*_*",\r
-                "*_*",\r
-                "60",\r
+                "pt_*_US",\r
+                "pt_*_*",\r
+                "92",\r
                 "0",\r
             }\r
             {\r
-                "*",\r
-                "*",\r
-                "20",\r
+                "pt_*_BR",\r
+                "pt_*_*",\r
+                "92",\r
                 "0",\r
             }\r
-        }\r
-    }\r
-    measurementData{\r
-        001{\r
-            MeasurementSystem:int{0}\r
-            PaperSize:intvector{\r
-                297,\r
-                210,\r
+            {\r
+                "pt_*_*",\r
+                "pt_*_*",\r
+                "96",\r
+                "0",\r
             }\r
-        }\r
-        BS{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
+            {\r
+                "en_*_US",\r
+                "en_*_*",\r
+                "94",\r
+                "0",\r
             }\r
-        }\r
-        BZ{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
+            {\r
+                "en_*_GB",\r
+                "en_*_*",\r
+                "96",\r
+                "0",\r
             }\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "en_*_001",\r
+                "en_*_*",\r
+                "96",\r
+                "0",\r
             }\r
-        }\r
-        CA{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "en_*_*",\r
+                "en_*_*",\r
+                "95",\r
+                "0",\r
             }\r
-        }\r
-        CL{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "es_*_ES",\r
+                "es_*_*",\r
+                "92",\r
+                "0",\r
             }\r
-        }\r
-        CO{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "es_*_419",\r
+                "es_*_*",\r
+                "96",\r
+                "0",\r
             }\r
-        }\r
-        CR{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "es_*_*",\r
+                "es_*_*",\r
+                "95",\r
+                "0",\r
             }\r
-        }\r
-        GB{\r
-            MeasurementSystem:int{2}\r
-        }\r
-        GT{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "*",\r
+                "*",\r
+                "20",\r
+                "0",\r
             }\r
-        }\r
-        KY{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
+            {\r
+                "*_*",\r
+                "*_*",\r
+                "60",\r
+                "0",\r
             }\r
-        }\r
-        LR{\r
-            MeasurementSystem:int{1}\r
-            MeasurementSystemCategory{\r
-                temperature:int{0}\r
+            {\r
+                "*_*_*",\r
+                "*_*_*",\r
+                "96",\r
+                "0",\r
             }\r
         }\r
-        MM{\r
-            MeasurementSystem:int{1}\r
-            MeasurementSystemCategory{\r
-                temperature:int{0}\r
+    }\r
+    languageMatchingInfo{\r
+        written{\r
+            matchVariable{\r
+                americas{"019"}\r
+                cnsar{"HK+MO"}\r
+                enUS{"AS+GU+MH+MP+PR+UM+US+VI"}\r
+                maghreb{"MA+DZ+TN+LY+MR+EH"}\r
             }\r
-        }\r
-        MX{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            paradigmLocales{\r
+                "en",\r
+                "en-GB",\r
+                "es",\r
+                "es-419",\r
+                "pt-BR",\r
+                "pt-PT",\r
             }\r
         }\r
-        NI{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+    }\r
+    languageMatchingNew{\r
+        written{\r
+            {\r
+                "no",\r
+                "nb",\r
+                "1",\r
+                "0",\r
             }\r
-        }\r
-        PA{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "hr",\r
+                "bs",\r
+                "4",\r
+                "0",\r
             }\r
-        }\r
-        PH{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "sh",\r
+                "bs",\r
+                "4",\r
+                "0",\r
             }\r
-        }\r
-        PR{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
+            {\r
+                "sh",\r
+                "hr",\r
+                "4",\r
+                "0",\r
             }\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "sh",\r
+                "sr",\r
+                "4",\r
+                "0",\r
             }\r
-        }\r
-        PW{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
+            {\r
+                "ssy",\r
+                "aa",\r
+                "4",\r
+                "0",\r
             }\r
-        }\r
-        SV{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "gsw",\r
+                "de",\r
+                "4",\r
+                "1",\r
             }\r
-        }\r
-        US{\r
-            MeasurementSystem:int{1}\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "lb",\r
+                "de",\r
+                "4",\r
+                "1",\r
             }\r
-        }\r
-        VE{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
+            {\r
+                "da",\r
+                "no",\r
+                "8",\r
+                "0",\r
+            }\r
+            {\r
+                "da",\r
+                "nb",\r
+                "8",\r
+                "0",\r
+            }\r
+            {\r
+                "ab",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ach",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "af",\r
+                "nl",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ak",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ay",\r
+                "es",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "az",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "be",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "bem",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "bh",\r
+                "hi",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "bn",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "br",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ceb",\r
+                "fil",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "chr",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ckb",\r
+                "ar",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "co",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "crs",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "cy",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ee",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "eo",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "et",\r
+                "fi",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "eu",\r
+                "es",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "fo",\r
+                "da",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "fy",\r
+                "nl",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ga",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "gaa",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "gd",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "gl",\r
+                "es",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "gn",\r
+                "es",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "gu",\r
+                "hi",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ha",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "haw",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ht",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "hy",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ia",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ig",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "is",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "jv",\r
+                "id",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ka",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "kg",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "kk",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "km",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "kn",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "kri",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ku",\r
+                "tr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ky",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "la",\r
+                "it",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "lg",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ln",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "lo",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "loz",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "lua",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "mfe",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "mg",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "mi",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "mk",\r
+                "bg",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ml",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "mn",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "mr",\r
+                "hi",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ms",\r
+                "id",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "mt",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "my",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ne",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "nn",\r
+                "nb",\r
+                "10",\r
+                "0",\r
+            }\r
+            {\r
+                "nn",\r
+                "no",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "nso",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ny",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "nyn",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "oc",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "om",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "or",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "pa",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "pcm",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ps",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "qu",\r
+                "es",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "rm",\r
+                "de",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "rn",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "rw",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "sa",\r
+                "hi",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "sd",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "si",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "sn",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "so",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "sq",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "st",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "su",\r
+                "id",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "sw",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ta",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "te",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "tg",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ti",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "tk",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "tlh",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "tn",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "to",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "tt",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "tum",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ug",\r
+                "zh",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ur",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "uz",\r
+                "ru",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "wo",\r
+                "fr",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "xh",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "yi",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "yo",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "zu",\r
+                "en",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "*",\r
+                "*",\r
+                "80",\r
+                "0",\r
+            }\r
+            {\r
+                "az_Latn",\r
+                "ru_Cyrl",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "bn_Beng",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "hy_Armn",\r
+                "ru_Cyrl",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ka_Geor",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "km_Khmr",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "kn_Knda",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "lo_Laoo",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ml_Mlym",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "my_Mymr",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ne_Deva",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "or_Orya",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "pa_Guru",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ps_Arab",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "sd_Arab",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "si_Sinh",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ta_Taml",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "te_Telu",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ti_Ethi",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "tk_Latn",\r
+                "ru_Cyrl",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "ur_Arab",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "uz_Latn",\r
+                "ru_Cyrl",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "yi_Hebr",\r
+                "en_Latn",\r
+                "10",\r
+                "1",\r
+            }\r
+            {\r
+                "sr_Latn",\r
+                "sr_Cyrl",\r
+                "5",\r
+                "0",\r
+            }\r
+            {\r
+                "zh_Hans",\r
+                "zh_Hant",\r
+                "15",\r
+                "1",\r
+            }\r
+            {\r
+                "zh_Hant",\r
+                "zh_Hans",\r
+                "19",\r
+                "1",\r
+            }\r
+            {\r
+                "*_*",\r
+                "*_*",\r
+                "50",\r
+                "0",\r
+            }\r
+            {\r
+                "ar_*_$maghreb",\r
+                "ar_*_$maghreb",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "ar_*_$!maghreb",\r
+                "ar_*_$!maghreb",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "ar_*_*",\r
+                "ar_*_*",\r
+                "5",\r
+                "0",\r
+            }\r
+            {\r
+                "en_*_$enUS",\r
+                "en_*_$enUS",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "en_*_$!enUS",\r
+                "en_*_$!enUS",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "en_*_*",\r
+                "en_*_*",\r
+                "5",\r
+                "0",\r
+            }\r
+            {\r
+                "es_*_$americas",\r
+                "es_*_$americas",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "es_*_$!americas",\r
+                "es_*_$!americas",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "es_*_*",\r
+                "es_*_*",\r
+                "5",\r
+                "0",\r
+            }\r
+            {\r
+                "pt_*_$americas",\r
+                "pt_*_$americas",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "pt_*_$!americas",\r
+                "pt_*_$!americas",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "pt_*_*",\r
+                "pt_*_*",\r
+                "5",\r
+                "0",\r
+            }\r
+            {\r
+                "zh_Hant_$cnsar",\r
+                "zh_Hant_$cnsar",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "zh_Hant_$!cnsar",\r
+                "zh_Hant_$!cnsar",\r
+                "4",\r
+                "0",\r
+            }\r
+            {\r
+                "zh_Hant_*",\r
+                "zh_Hant_*",\r
+                "5",\r
+                "0",\r
+            }\r
+            {\r
+                "*_*_*",\r
+                "*_*_*",\r
+                "4",\r
+                "0",\r
             }\r
         }\r
-    }\r
-    parentLocales{\r
-        en_001{\r
-            "en_150",\r
-            "en_AG",\r
-            "en_AI",\r
-            "en_AU",\r
-            "en_BB",\r
-            "en_BE",\r
-            "en_BM",\r
-            "en_BS",\r
-            "en_BW",\r
-            "en_BZ",\r
-            "en_CA",\r
-            "en_CC",\r
-            "en_CK",\r
-            "en_CM",\r
-            "en_CX",\r
-            "en_CY",\r
-            "en_DG",\r
-            "en_DM",\r
-            "en_ER",\r
-            "en_FJ",\r
-            "en_FK",\r
-            "en_FM",\r
-            "en_GB",\r
-            "en_GD",\r
-            "en_GG",\r
-            "en_GH",\r
-            "en_GI",\r
-            "en_GM",\r
-            "en_GY",\r
-            "en_HK",\r
-            "en_IE",\r
-            "en_IL",\r
-            "en_IM",\r
-            "en_IN",\r
-            "en_IO",\r
-            "en_JE",\r
-            "en_JM",\r
-            "en_KE",\r
-            "en_KI",\r
-            "en_KN",\r
-            "en_KY",\r
-            "en_LC",\r
-            "en_LR",\r
-            "en_LS",\r
-            "en_MG",\r
-            "en_MO",\r
-            "en_MS",\r
-            "en_MT",\r
-            "en_MU",\r
-            "en_MW",\r
-            "en_MY",\r
-            "en_NA",\r
-            "en_NF",\r
-            "en_NG",\r
-            "en_NR",\r
-            "en_NU",\r
-            "en_NZ",\r
-            "en_PG",\r
-            "en_PH",\r
-            "en_PK",\r
-            "en_PN",\r
-            "en_PW",\r
-            "en_RW",\r
-            "en_SB",\r
-            "en_SC",\r
-            "en_SD",\r
-            "en_SG",\r
-            "en_SH",\r
-            "en_SL",\r
-            "en_SS",\r
-            "en_SX",\r
-            "en_SZ",\r
-            "en_TC",\r
-            "en_TK",\r
-            "en_TO",\r
-            "en_TT",\r
-            "en_TV",\r
-            "en_TZ",\r
-            "en_UG",\r
-            "en_VC",\r
-            "en_VG",\r
-            "en_VU",\r
-            "en_WS",\r
-            "en_ZA",\r
-            "en_ZM",\r
-            "en_ZW",\r
-        }\r
-        en_150{\r
-            "en_AT",\r
-            "en_CH",\r
-            "en_DE",\r
-            "en_DK",\r
-            "en_FI",\r
-            "en_NL",\r
-            "en_SE",\r
-            "en_SI",\r
-        }\r
-        es_419{\r
-            "es_AR",\r
-            "es_BO",\r
-            "es_BR",\r
-            "es_CL",\r
-            "es_CO",\r
-            "es_CR",\r
-            "es_CU",\r
-            "es_DO",\r
-            "es_EC",\r
-            "es_GT",\r
-            "es_HN",\r
-            "es_MX",\r
-            "es_NI",\r
-            "es_PA",\r
-            "es_PE",\r
-            "es_PR",\r
-            "es_PY",\r
-            "es_SV",\r
-            "es_US",\r
-            "es_UY",\r
-            "es_VE",\r
-        }\r
-        pt_PT{\r
-            "pt_AO",\r
-            "pt_CH",\r
-            "pt_CV",\r
-            "pt_GQ",\r
-            "pt_GW",\r
-            "pt_LU",\r
-            "pt_MO",\r
-            "pt_MZ",\r
-            "pt_ST",\r
-            "pt_TL",\r
-        }\r
-        root{\r
-            "az_Arab",\r
-            "az_Cyrl",\r
-            "bm_Nkoo",\r
-            "bs_Cyrl",\r
-            "en_Dsrt",\r
-            "en_Shaw",\r
-            "ha_Arab",\r
-            "iu_Latn",\r
-            "mn_Mong",\r
-            "ms_Arab",\r
-            "pa_Arab",\r
-            "shi_Latn",\r
-            "sr_Latn",\r
-            "uz_Arab",\r
-            "uz_Cyrl",\r
-            "vai_Latn",\r
-            "zh_Hant",\r
-            "yue_Hans",\r
-        }\r
-        zh_Hant_HK{"zh_Hant_MO"}\r
-    }\r
-    subdivisionContainment{\r
-        AD{\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-        }\r
-        AE{\r
-            "AJ",\r
-            "AZ",\r
-            "DU",\r
-            "FU",\r
-            "RK",\r
-            "SH",\r
-            "UQ",\r
-        }\r
-        AF{\r
-            "BAL",\r
-            "BAM",\r
-            "BDG",\r
-            "BDS",\r
-            "BGL",\r
-            "DAY",\r
-            "FRA",\r
-            "FYB",\r
-            "GHA",\r
-            "GHO",\r
-            "HEL",\r
-            "HER",\r
-            "JOW",\r
-            "KAB",\r
-            "KAN",\r
-            "KAP",\r
-            "KDZ",\r
-            "KHO",\r
-            "KNR",\r
-            "LAG",\r
-            "LOG",\r
-            "NAN",\r
-            "NIM",\r
-            "NUR",\r
-            "PAN",\r
-            "PAR",\r
-            "PIA",\r
-            "PKA",\r
-            "SAM",\r
-            "SAR",\r
-            "TAK",\r
-            "URU",\r
-            "WAR",\r
-            "ZAB",\r
-        }\r
-        AG{\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "10",\r
-            "11",\r
-        }\r
-        AL{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-        }\r
-        AM{\r
-            "AG",\r
-            "AR",\r
-            "AV",\r
-            "ER",\r
-            "GR",\r
-            "KT",\r
-            "LO",\r
-            "SH",\r
-            "SU",\r
-            "TV",\r
-            "VD",\r
-        }\r
-        AO{\r
-            "BGO",\r
-            "BGU",\r
-            "BIE",\r
-            "CAB",\r
-            "CCU",\r
-            "CNN",\r
-            "CNO",\r
-            "CUS",\r
-            "HUA",\r
-            "HUI",\r
-            "LNO",\r
-            "LSU",\r
-            "LUA",\r
-            "MAL",\r
-            "MOX",\r
-            "NAM",\r
-            "UIG",\r
-            "ZAI",\r
-        }\r
-        AR{\r
-            "A",\r
-            "B",\r
-            "C",\r
-            "D",\r
-            "E",\r
-            "F",\r
-            "G",\r
-            "H",\r
-            "J",\r
-            "K",\r
-            "L",\r
-            "M",\r
-            "N",\r
-            "P",\r
-            "Q",\r
-            "R",\r
-            "S",\r
-            "T",\r
-            "U",\r
-            "V",\r
-            "W",\r
-            "X",\r
-            "Y",\r
-            "Z",\r
-        }\r
-        AT{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-            "6",\r
-            "7",\r
-            "8",\r
-            "9",\r
-        }\r
-        AU{\r
-            "ACT",\r
-            "NSW",\r
-            "NT",\r
-            "QLD",\r
-            "SA",\r
-            "TAS",\r
-            "VIC",\r
-            "WA",\r
-        }\r
-        AZ{\r
-            "ABS",\r
-            "AGA",\r
-            "AGC",\r
-            "AGM",\r
-            "AGS",\r
-            "AGU",\r
-            "AST",\r
-            "BA",\r
-            "BAL",\r
-            "BAR",\r
-            "BEY",\r
-            "BIL",\r
-            "CAB",\r
-            "CAL",\r
-            "DAS",\r
-            "FUZ",\r
-            "GA",\r
-            "GAD",\r
-            "GOR",\r
-            "GOY",\r
-            "GYG",\r
-            "HAC",\r
-            "IMI",\r
-            "ISM",\r
-            "KAL",\r
-            "KUR",\r
-            "LA",\r
-            "LAC",\r
-            "LAN",\r
-            "LER",\r
-            "MAS",\r
-            "MI",\r
-            "NA",\r
-            "NEF",\r
-            "NX",\r
-            "OGU",\r
-            "QAB",\r
-            "QAX",\r
-            "QAZ",\r
-            "QBA",\r
-            "QBI",\r
-            "QOB",\r
-            "QUS",\r
-            "SA",\r
-            "SAB",\r
-            "SAK",\r
-            "SAL",\r
-            "SAT",\r
-            "SBN",\r
-            "SIY",\r
-            "SKR",\r
-            "SM",\r
-            "SMI",\r
-            "SMX",\r
-            "SR",\r
-            "SUS",\r
-            "TAR",\r
-            "TOV",\r
-            "UCA",\r
-            "XA",\r
-            "XAC",\r
-            "XCI",\r
-            "XIZ",\r
-            "XVD",\r
-            "YAR",\r
-            "YE",\r
-            "YEV",\r
-            "ZAN",\r
-            "ZAQ",\r
-            "ZAR",\r
-        }\r
-        AZ-NX{\r
-            "BAB",\r
-            "CUL",\r
-            "KAN",\r
-            "NV",\r
-            "ORD",\r
-            "SAD",\r
-            "SAH",\r
-            "SAR",\r
-        }\r
-        BA{\r
-            "BIH",\r
-            "BRC",\r
-            "SRP",\r
-        }\r
-        BB{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-        }\r
-        BD{\r
-            "A",\r
-            "B",\r
-            "C",\r
-            "D",\r
-            "E",\r
-            "F",\r
-            "G",\r
-        }\r
-        BD-A{\r
-            "02",\r
-            "06",\r
-            "07",\r
-            "25",\r
-            "50",\r
-            "51",\r
-        }\r
-        BD-B{\r
-            "01",\r
-            "04",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "16",\r
-            "29",\r
-            "31",\r
-            "47",\r
-            "56",\r
-        }\r
-        BD-C{\r
-            "13",\r
-            "15",\r
-            "17",\r
-            "18",\r
-            "21",\r
-            "26",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "40",\r
-            "41",\r
-            "42",\r
-            "53",\r
-            "57",\r
-            "62",\r
-            "63",\r
-        }\r
-        BD-D{\r
-            "05",\r
-            "12",\r
-            "22",\r
-            "23",\r
-            "27",\r
-            "30",\r
-            "37",\r
-            "39",\r
-            "43",\r
-            "58",\r
-        }\r
-        BD-E{\r
-            "03",\r
-            "24",\r
-            "44",\r
-            "45",\r
-            "48",\r
-            "49",\r
-            "54",\r
-            "55",\r
-            "59",\r
-        }\r
-        BD-F{\r
-            "14",\r
-            "19",\r
-            "28",\r
-            "32",\r
-            "46",\r
-            "52",\r
-            "64",\r
-        }\r
-        BD-G{\r
-            "20",\r
-            "38",\r
-            "60",\r
-            "61",\r
-        }\r
-        BE{\r
-            "BRU",\r
-            "VLG",\r
-            "WAL",\r
-        }\r
-        BE-VLG{\r
-            "VAN",\r
-            "VBR",\r
-            "VLI",\r
-            "VOV",\r
-            "VWV",\r
-        }\r
-        BE-WAL{\r
-            "WBR",\r
-            "WHT",\r
-            "WLG",\r
-            "WLX",\r
-            "WNA",\r
-        }\r
-        BF{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-        }\r
-        BF-01{\r
-            "BAL",\r
-            "BAN",\r
-            "KOS",\r
-            "MOU",\r
-            "NAY",\r
-            "SOR",\r
-        }\r
-        BF-02{\r
-            "COM",\r
-            "LER",\r
-        }\r
-        BF-03{"KAD"}\r
-        BF-04{\r
-            "BLG",\r
-            "KOP",\r
-            "KOT",\r
-        }\r
-        BF-05{\r
-            "BAM",\r
-            "NAM",\r
-            "SMT",\r
-        }\r
-        BF-06{\r
-            "BLK",\r
-            "SIS",\r
-            "SNG",\r
-            "ZIR",\r
-        }\r
-        BF-07{\r
-            "BAZ",\r
-            "NAO",\r
-            "ZOU",\r
-        }\r
-        BF-08{\r
-            "GNA",\r
-            "GOU",\r
-            "KMD",\r
-            "KMP",\r
-            "TAP",\r
-        }\r
-        BF-09{\r
-            "HOU",\r
-            "KEN",\r
-            "TUI",\r
-        }\r
-        BF-10{\r
-            "LOR",\r
-            "PAS",\r
-            "YAT",\r
-            "ZON",\r
-        }\r
-        BF-11{\r
-            "GAN",\r
-            "KOW",\r
-            "OUB",\r
-        }\r
-        BF-12{\r
-            "OUD",\r
-            "SEN",\r
-            "SOM",\r
-            "YAG",\r
-        }\r
-        BF-13{\r
-            "BGR",\r
-            "IOB",\r
-            "NOU",\r
-            "PON",\r
-        }\r
-        BG{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-        }\r
-        BH{\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "17",\r
-        }\r
-        BI{\r
-            "BB",\r
-            "BL",\r
-            "BM",\r
-            "BR",\r
-            "CA",\r
-            "CI",\r
-            "GI",\r
-            "KI",\r
-            "KR",\r
-            "KY",\r
-            "MA",\r
-            "MU",\r
-            "MW",\r
-            "MY",\r
-            "NG",\r
-            "RM",\r
-            "RT",\r
-            "RY",\r
-        }\r
-        BJ{\r
-            "AK",\r
-            "AL",\r
-            "AQ",\r
-            "BO",\r
-            "CO",\r
-            "DO",\r
-            "KO",\r
-            "LI",\r
-            "MO",\r
-            "OU",\r
-            "PL",\r
-            "ZO",\r
-        }\r
-        BN{\r
-            "BE",\r
-            "BM",\r
-            "TE",\r
-            "TU",\r
-        }\r
-        BO{\r
-            "B",\r
-            "C",\r
-            "H",\r
-            "L",\r
-            "N",\r
-            "O",\r
-            "P",\r
-            "S",\r
-            "T",\r
-        }\r
-        BQ{\r
-            "BO",\r
-            "SA",\r
-            "SE",\r
-        }\r
-        BR{\r
-            "AC",\r
-            "AL",\r
-            "AM",\r
-            "AP",\r
-            "BA",\r
-            "CE",\r
-            "DF",\r
-            "ES",\r
-            "GO",\r
-            "MA",\r
-            "MG",\r
-            "MS",\r
-            "MT",\r
-            "PA",\r
-            "PB",\r
-            "PE",\r
-            "PI",\r
-            "PR",\r
-            "RJ",\r
-            "RN",\r
-            "RO",\r
-            "RR",\r
-            "RS",\r
-            "SC",\r
-            "SE",\r
-            "SP",\r
-            "TO",\r
-        }\r
-        BS{\r
-            "AK",\r
-            "BI",\r
-            "BP",\r
-            "BY",\r
-            "CE",\r
-            "CI",\r
-            "CK",\r
-            "CO",\r
-            "CS",\r
-            "EG",\r
-            "EX",\r
-            "FP",\r
-            "GC",\r
-            "HI",\r
-            "HT",\r
-            "IN",\r
-            "LI",\r
-            "MC",\r
-            "MG",\r
-            "MI",\r
-            "NE",\r
-            "NO",\r
-            "NS",\r
-            "RC",\r
-            "RI",\r
-            "SA",\r
-            "SE",\r
-            "SO",\r
-            "SS",\r
-            "SW",\r
-            "WG",\r
-        }\r
-        BT{\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "GA",\r
-            "TY",\r
-        }\r
-        BW{\r
-            "CE",\r
-            "CH",\r
-            "FR",\r
-            "GA",\r
-            "GH",\r
-            "JW",\r
-            "KG",\r
-            "KL",\r
-            "KW",\r
-            "LO",\r
-            "NE",\r
-            "NW",\r
-            "SE",\r
-            "SO",\r
-            "SP",\r
-            "ST",\r
-        }\r
-        BY{\r
-            "BR",\r
-            "HM",\r
-            "HO",\r
-            "HR",\r
-            "MA",\r
-            "MI",\r
-            "VI",\r
-        }\r
-        BZ{\r
-            "BZ",\r
-            "CY",\r
-            "CZL",\r
-            "OW",\r
-            "SC",\r
-            "TOL",\r
-        }\r
-        CA{\r
-            "AB",\r
-            "BC",\r
-            "MB",\r
-            "NB",\r
-            "NL",\r
-            "NS",\r
-            "NT",\r
-            "NU",\r
-            "ON",\r
-            "PE",\r
-            "QC",\r
-            "SK",\r
-            "YT",\r
-        }\r
-        CD{\r
-            "BC",\r
-            "BN",\r
-            "EQ",\r
-            "KA",\r
-            "KE",\r
-            "KN",\r
-            "KW",\r
-            "MA",\r
-            "NK",\r
-            "OR",\r
-            "SK",\r
-        }\r
-        CF{\r
-            "AC",\r
-            "BB",\r
-            "BGF",\r
-            "BK",\r
-            "HK",\r
-            "HM",\r
-            "HS",\r
-            "KB",\r
-            "KG",\r
-            "LB",\r
-            "MB",\r
-            "MP",\r
-            "NM",\r
-            "OP",\r
-            "SE",\r
-            "UK",\r
-            "VK",\r
-        }\r
-        CG{\r
-            "2",\r
-            "5",\r
-            "7",\r
-            "8",\r
-            "9",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "BZV",\r
-        }\r
-        CH{\r
-            "AG",\r
-            "AI",\r
-            "AR",\r
-            "BE",\r
-            "BL",\r
-            "BS",\r
-            "FR",\r
-            "GE",\r
-            "GL",\r
-            "GR",\r
-            "JU",\r
-            "LU",\r
-            "NE",\r
-            "NW",\r
-            "OW",\r
-            "SG",\r
-            "SH",\r
-            "SO",\r
-            "SZ",\r
-            "TG",\r
-            "TI",\r
-            "UR",\r
-            "VD",\r
-            "VS",\r
-            "ZG",\r
-            "ZH",\r
-        }\r
-        CI{\r
-            "AB",\r
-            "BS",\r
-            "CM",\r
-            "DN",\r
-            "GD",\r
-            "LC",\r
-            "LG",\r
-            "MG",\r
-            "SM",\r
-            "SV",\r
-            "VB",\r
-            "WR",\r
-            "YM",\r
-            "ZZ",\r
-        }\r
-        CL{\r
-            "AI",\r
-            "AN",\r
-            "AP",\r
-            "AR",\r
-            "AT",\r
-            "BI",\r
-            "CO",\r
-            "LI",\r
-            "LL",\r
-            "LR",\r
-            "MA",\r
-            "ML",\r
-            "RM",\r
-            "TA",\r
-            "VS",\r
-        }\r
-        CM{\r
-            "AD",\r
-            "CE",\r
-            "EN",\r
-            "ES",\r
-            "LT",\r
-            "NO",\r
-            "NW",\r
-            "OU",\r
-            "SU",\r
-            "SW",\r
-        }\r
-        CN{\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "50",\r
-            "51",\r
-            "52",\r
-            "53",\r
-            "54",\r
-            "61",\r
-            "62",\r
-            "63",\r
-            "64",\r
-            "65",\r
-            "71",\r
-            "91",\r
-            "92",\r
-        }\r
-        CO{\r
-            "AMA",\r
-            "ANT",\r
-            "ARA",\r
-            "ATL",\r
-            "BOL",\r
-            "BOY",\r
-            "CAL",\r
-            "CAQ",\r
-            "CAS",\r
-            "CAU",\r
-            "CES",\r
-            "CHO",\r
-            "COR",\r
-            "CUN",\r
-            "DC",\r
-            "GUA",\r
-            "GUV",\r
-            "HUI",\r
-            "LAG",\r
-            "MAG",\r
-            "MET",\r
-            "NAR",\r
-            "NSA",\r
-            "PUT",\r
-            "QUI",\r
-            "RIS",\r
-            "SAN",\r
-            "SAP",\r
-            "SUC",\r
-            "TOL",\r
-            "VAC",\r
-            "VAU",\r
-            "VID",\r
-        }\r
-        CR{\r
-            "A",\r
-            "C",\r
-            "G",\r
-            "H",\r
-            "L",\r
-            "P",\r
-            "SJ",\r
-        }\r
-        CU{\r
-            "01",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "99",\r
-        }\r
-        CV{\r
-            "B",\r
-            "S",\r
-        }\r
-        CV-B{\r
-            "BV",\r
-            "PA",\r
-            "PN",\r
-            "RB",\r
-            "RG",\r
-            "SL",\r
-            "SV",\r
-            "TS",\r
-        }\r
-        CV-S{\r
-            "BR",\r
-            "CA",\r
-            "CF",\r
-            "CR",\r
-            "MA",\r
-            "MO",\r
-            "PR",\r
-            "RS",\r
-            "SD",\r
-            "SF",\r
-            "SM",\r
-            "SO",\r
-            "SS",\r
-            "TA",\r
-        }\r
-        CY{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-        }\r
-        CZ{\r
-            "JC",\r
-            "JM",\r
-            "KA",\r
-            "KR",\r
-            "LI",\r
-            "MO",\r
-            "OL",\r
-            "PA",\r
-            "PL",\r
-            "PR",\r
-            "ST",\r
-            "US",\r
-            "VY",\r
-            "ZL",\r
-        }\r
-        CZ-JC{\r
-            "311",\r
-            "312",\r
-            "313",\r
-            "314",\r
-            "315",\r
-            "316",\r
-            "317",\r
-        }\r
-        CZ-JM{\r
-            "621",\r
-            "622",\r
-            "623",\r
-            "624",\r
-            "625",\r
-            "626",\r
-            "627",\r
-        }\r
-        CZ-KA{\r
-            "411",\r
-            "412",\r
-            "413",\r
-        }\r
-        CZ-KR{\r
-            "521",\r
-            "522",\r
-            "523",\r
-            "524",\r
-            "525",\r
-        }\r
-        CZ-LI{\r
-            "511",\r
-            "512",\r
-            "513",\r
-            "514",\r
-        }\r
-        CZ-MO{\r
-            "801",\r
-            "802",\r
-            "803",\r
-            "804",\r
-            "805",\r
-            "806",\r
-        }\r
-        CZ-OL{\r
-            "711",\r
-            "712",\r
-            "713",\r
-            "714",\r
-            "715",\r
-        }\r
-        CZ-PA{\r
-            "531",\r
-            "532",\r
-            "533",\r
-            "534",\r
-        }\r
-        CZ-PL{\r
-            "321",\r
-            "322",\r
-            "323",\r
-            "324",\r
-            "325",\r
-            "326",\r
-            "327",\r
-        }\r
-        CZ-PR{\r
-            "10A",\r
-            "10B",\r
-            "10C",\r
-            "10D",\r
-            "10E",\r
-            "10F",\r
-            "101",\r
-            "102",\r
-            "103",\r
-            "104",\r
-            "105",\r
-            "106",\r
-            "107",\r
-            "108",\r
-            "109",\r
-        }\r
-        CZ-ST{\r
-            "20A",\r
-            "20B",\r
-            "20C",\r
-            "201",\r
-            "202",\r
-            "203",\r
-            "204",\r
-            "205",\r
-            "206",\r
-            "207",\r
-            "208",\r
-            "209",\r
-        }\r
-        CZ-US{\r
-            "421",\r
-            "422",\r
-            "423",\r
-            "424",\r
-            "425",\r
-            "426",\r
-            "427",\r
-        }\r
-        CZ-VY{\r
-            "611",\r
-            "612",\r
-            "613",\r
-            "614",\r
-            "615",\r
-        }\r
-        CZ-ZL{\r
-            "721",\r
-            "722",\r
-            "723",\r
-            "724",\r
-        }\r
-        DE{\r
-            "BB",\r
-            "BE",\r
-            "BW",\r
-            "BY",\r
-            "HB",\r
-            "HE",\r
-            "HH",\r
-            "MV",\r
-            "NI",\r
-            "NW",\r
-            "RP",\r
-            "SH",\r
-            "SL",\r
-            "SN",\r
-            "ST",\r
-            "TH",\r
-        }\r
-        DJ{\r
-            "AR",\r
-            "AS",\r
-            "DI",\r
-            "DJ",\r
-            "OB",\r
-            "TA",\r
-        }\r
-        DK{\r
-            "81",\r
-            "82",\r
-            "83",\r
-            "84",\r
-            "85",\r
-        }\r
-        DM{\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-        }\r
-        DO{\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "38",\r
-            "39",\r
-            "40",\r
-            "41",\r
-            "42",\r
-        }\r
-        DO-33{\r
-            "06",\r
-            "14",\r
-            "19",\r
-            "20",\r
-        }\r
-        DO-34{\r
-            "05",\r
-            "15",\r
-            "26",\r
-            "27",\r
-        }\r
-        DO-35{\r
-            "09",\r
-            "18",\r
-            "25",\r
-        }\r
-        DO-36{\r
-            "13",\r
-            "24",\r
-            "28",\r
-        }\r
-        DO-37{\r
-            "07",\r
-            "22",\r
-        }\r
-        DO-38{\r
-            "03",\r
-            "04",\r
-            "10",\r
-            "16",\r
-        }\r
-        DO-39{\r
-            "23",\r
-            "29",\r
-            "30",\r
-        }\r
-        DO-40{\r
-            "01",\r
-            "32",\r
-        }\r
-        DO-41{\r
-            "02",\r
-            "17",\r
-            "21",\r
-            "31",\r
-        }\r
-        DO-42{\r
-            "08",\r
-            "11",\r
-            "12",\r
-        }\r
-        DZ{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "38",\r
-            "39",\r
-            "40",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
-            "48",\r
-        }\r
-        EC{\r
-            "A",\r
-            "B",\r
-            "C",\r
-            "D",\r
-            "E",\r
-            "F",\r
-            "G",\r
-            "H",\r
-            "I",\r
-            "L",\r
-            "M",\r
-            "N",\r
-            "O",\r
-            "P",\r
-            "R",\r
-            "S",\r
-            "SD",\r
-            "SE",\r
-            "T",\r
-            "U",\r
-            "W",\r
-            "X",\r
-            "Y",\r
-            "Z",\r
-        }\r
-        EE{\r
-            "37",\r
-            "39",\r
-            "44",\r
-            "49",\r
-            "51",\r
-            "57",\r
-            "59",\r
-            "65",\r
-            "67",\r
-            "70",\r
-            "74",\r
-            "78",\r
-            "82",\r
-            "84",\r
-            "86",\r
-        }\r
-        EG{\r
-            "ALX",\r
-            "ASN",\r
-            "AST",\r
-            "BA",\r
-            "BH",\r
-            "BNS",\r
-            "C",\r
-            "DK",\r
-            "DT",\r
-            "FYM",\r
-            "GH",\r
-            "GZ",\r
-            "IS",\r
-            "JS",\r
-            "KB",\r
-            "KFS",\r
-            "KN",\r
-            "LX",\r
-            "MN",\r
-            "MNF",\r
-            "MT",\r
-            "PTS",\r
-            "SHG",\r
-            "SHR",\r
-            "SIN",\r
-            "SUZ",\r
-            "WAD",\r
-        }\r
-        ER{\r
-            "AN",\r
-            "DK",\r
-            "DU",\r
-            "GB",\r
-            "MA",\r
-            "SK",\r
-        }\r
-        ES{\r
-            "AN",\r
-            "AR",\r
-            "AS",\r
-            "CB",\r
-            "CE",\r
-            "CL",\r
-            "CM",\r
-            "CN",\r
-            "CT",\r
-            "EX",\r
-            "GA",\r
-            "IB",\r
-            "MC",\r
-            "MD",\r
-            "ML",\r
-            "NC",\r
-            "PV",\r
-            "RI",\r
-            "VC",\r
-        }\r
-        ES-AN{\r
-            "AL",\r
-            "CA",\r
-            "CO",\r
-            "GR",\r
-            "H",\r
-            "J",\r
-            "MA",\r
-            "SE",\r
-        }\r
-        ES-AR{\r
-            "HU",\r
-            "TE",\r
-            "Z",\r
-        }\r
-        ES-AS{"O"}\r
-        ES-CB{"S"}\r
-        ES-CL{\r
-            "AV",\r
-            "BU",\r
-            "LE",\r
-            "P",\r
-            "SA",\r
-            "SG",\r
-            "SO",\r
-            "VA",\r
-            "ZA",\r
-        }\r
-        ES-CM{\r
-            "AB",\r
-            "CR",\r
-            "CU",\r
-            "GU",\r
-            "TO",\r
-        }\r
-        ES-CN{\r
-            "GC",\r
-            "TF",\r
-        }\r
-        ES-CT{\r
-            "B",\r
-            "GI",\r
-            "L",\r
-            "T",\r
-        }\r
-        ES-EX{\r
-            "BA",\r
-            "CC",\r
-        }\r
-        ES-GA{\r
-            "C",\r
-            "LU",\r
-            "OR",\r
-            "PO",\r
-        }\r
-        ES-IB{"PM"}\r
-        ES-MC{"MU"}\r
-        ES-MD{"M"}\r
-        ES-NC{"NA"}\r
-        ES-PV{\r
-            "BI",\r
-            "SS",\r
-            "VI",\r
-        }\r
-        ES-RI{"LO"}\r
-        ES-VC{\r
-            "A",\r
-            "CS",\r
-            "V",\r
-        }\r
-        ET{\r
-            "AA",\r
-            "AF",\r
-            "AM",\r
-            "BE",\r
-            "DD",\r
-            "GA",\r
-            "HA",\r
-            "OR",\r
-            "SN",\r
-            "SO",\r
-            "TI",\r
-        }\r
-        FI{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-        }\r
-        FJ{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "C",\r
-            "E",\r
-            "N",\r
-            "R",\r
-            "W",\r
-        }\r
-        FM{\r
-            "KSA",\r
-            "PNI",\r
-            "TRK",\r
-            "YAP",\r
-        }\r
-        FR{\r
-            "A",\r
-            "B",\r
-            "BL",\r
-            "C",\r
-            "CP",\r
-            "D",\r
-            "E",\r
-            "F",\r
-            "G",\r
-            "GF",\r
-            "GP",\r
-            "H",\r
-            "I",\r
-            "J",\r
-            "K",\r
-            "L",\r
-            "M",\r
-            "MF",\r
-            "MQ",\r
-            "N",\r
-            "NC",\r
-            "O",\r
-            "P",\r
-            "PF",\r
-            "PM",\r
-            "Q",\r
-            "R",\r
-            "RE",\r
-            "S",\r
-            "T",\r
-            "TF",\r
-            "U",\r
-            "V",\r
-            "WF",\r
-            "YT",\r
-        }\r
-        FR-A{\r
-            "67",\r
-            "68",\r
-        }\r
-        FR-B{\r
-            "24",\r
-            "33",\r
-            "40",\r
-            "47",\r
-            "64",\r
-        }\r
-        FR-C{\r
-            "03",\r
-            "15",\r
-            "43",\r
-            "63",\r
-        }\r
-        FR-D{\r
-            "21",\r
-            "58",\r
-            "71",\r
-            "89",\r
-        }\r
-        FR-E{\r
-            "22",\r
-            "29",\r
-            "35",\r
-            "56",\r
-        }\r
-        FR-F{\r
-            "18",\r
-            "28",\r
-            "36",\r
-            "37",\r
-            "41",\r
-            "45",\r
-        }\r
-        FR-G{\r
-            "08",\r
-            "10",\r
-            "51",\r
-            "52",\r
-        }\r
-        FR-H{\r
-            "2A",\r
-            "2B",\r
-        }\r
-        FR-I{\r
-            "25",\r
-            "39",\r
-            "70",\r
-            "90",\r
-        }\r
-        FR-J{\r
-            "75",\r
-            "77",\r
-            "78",\r
-            "91",\r
-            "92",\r
-            "93",\r
-            "94",\r
-            "95",\r
-        }\r
-        FR-K{\r
-            "11",\r
-            "30",\r
-            "34",\r
-            "48",\r
-            "66",\r
-        }\r
-        FR-L{\r
-            "19",\r
-            "23",\r
-            "87",\r
-        }\r
-        FR-M{\r
-            "54",\r
-            "55",\r
-            "57",\r
-            "88",\r
-        }\r
-        FR-N{\r
-            "09",\r
-            "12",\r
-            "31",\r
-            "32",\r
-            "46",\r
-            "65",\r
-            "81",\r
-            "82",\r
-        }\r
-        FR-O{\r
-            "59",\r
-            "62",\r
-        }\r
-        FR-P{\r
-            "14",\r
-            "50",\r
-            "61",\r
-        }\r
-        FR-Q{\r
-            "27",\r
-            "76",\r
-        }\r
-        FR-R{\r
-            "44",\r
-            "49",\r
-            "53",\r
-            "72",\r
-            "85",\r
-        }\r
-        FR-S{\r
-            "02",\r
-            "60",\r
-            "80",\r
-        }\r
-        FR-T{\r
-            "16",\r
-            "17",\r
-            "79",\r
-            "86",\r
-        }\r
-        FR-U{\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "13",\r
-            "83",\r
-            "84",\r
+    }\r
+    measurementData{\r
+        001{\r
+            MeasurementSystem:int{0}\r
+            PaperSize:intvector{\r
+                297,\r
+                210,\r
+            }\r
         }\r
-        FR-V{\r
-            "01",\r
-            "07",\r
-            "26",\r
-            "38",\r
-            "42",\r
-            "69",\r
-            "73",\r
-            "74",\r
+        BS{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
+            }\r
         }\r
-        GA{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-            "6",\r
-            "7",\r
-            "8",\r
-            "9",\r
+        BZ{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
+            }\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GB{\r
-            "EAW",\r
-            "ENG",\r
-            "GBN",\r
-            "NIR",\r
-            "SCT",\r
-            "UKM",\r
-            "WLS",\r
-        }\r
-        GB-ENG{\r
-            "BAS",\r
-            "BBD",\r
-            "BDF",\r
-            "BDG",\r
-            "BEN",\r
-            "BEX",\r
-            "BIR",\r
-            "BKM",\r
-            "BMH",\r
-            "BNE",\r
-            "BNH",\r
-            "BNS",\r
-            "BOL",\r
-            "BPL",\r
-            "BRC",\r
-            "BRD",\r
-            "BRY",\r
-            "BST",\r
-            "BUR",\r
-            "CAM",\r
-            "CBF",\r
-            "CHE",\r
-            "CHW",\r
-            "CLD",\r
-            "CMA",\r
-            "CMD",\r
-            "CON",\r
-            "COV",\r
-            "CRY",\r
-            "DAL",\r
-            "DBY",\r
-            "DER",\r
-            "DEV",\r
-            "DNC",\r
-            "DOR",\r
-            "DUD",\r
-            "DUR",\r
-            "EAL",\r
-            "ENF",\r
-            "ERY",\r
-            "ESS",\r
-            "ESX",\r
-            "GAT",\r
-            "GLS",\r
-            "GRE",\r
-            "HAL",\r
-            "HAM",\r
-            "HAV",\r
-            "HCK",\r
-            "HEF",\r
-            "HIL",\r
-            "HMF",\r
-            "HNS",\r
-            "HPL",\r
-            "HRT",\r
-            "HRW",\r
-            "HRY",\r
-            "IOS",\r
-            "IOW",\r
-            "ISL",\r
-            "KEC",\r
-            "KEN",\r
-            "KHL",\r
-            "KIR",\r
-            "KTT",\r
-            "KWL",\r
-            "LAN",\r
-            "LBH",\r
-            "LCE",\r
-            "LDS",\r
-            "LEC",\r
-            "LEW",\r
-            "LIN",\r
-            "LIV",\r
-            "LND",\r
-            "LUT",\r
-            "MAN",\r
-            "MDB",\r
-            "MDW",\r
-            "MIK",\r
-            "MRT",\r
-            "NBL",\r
-            "NEL",\r
-            "NET",\r
-            "NFK",\r
-            "NGM",\r
-            "NLN",\r
-            "NSM",\r
-            "NTH",\r
-            "NTT",\r
-            "NTY",\r
-            "NWM",\r
-            "NYK",\r
-            "OLD",\r
-            "OXF",\r
-            "PLY",\r
-            "POL",\r
-            "POR",\r
-            "PTE",\r
-            "RCC",\r
-            "RCH",\r
-            "RDB",\r
-            "RDG",\r
-            "RIC",\r
-            "ROT",\r
-            "RUT",\r
-            "SAW",\r
-            "SFK",\r
-            "SFT",\r
-            "SGC",\r
-            "SHF",\r
-            "SHN",\r
-            "SHR",\r
-            "SKP",\r
-            "SLF",\r
-            "SLG",\r
-            "SND",\r
-            "SOL",\r
-            "SOM",\r
-            "SOS",\r
-            "SRY",\r
-            "STE",\r
-            "STH",\r
-            "STN",\r
-            "STS",\r
-            "STT",\r
-            "STY",\r
-            "SWD",\r
-            "SWK",\r
-            "TAM",\r
-            "TFW",\r
-            "THR",\r
-            "TOB",\r
-            "TRF",\r
-            "TWH",\r
-            "WAR",\r
-            "WBK",\r
-            "WFT",\r
-            "WGN",\r
-            "WIL",\r
-            "WKF",\r
-            "WLL",\r
-            "WLV",\r
-            "WND",\r
-            "WNM",\r
-            "WOK",\r
-            "WOR",\r
-            "WRL",\r
-            "WRT",\r
-            "WSM",\r
-            "WSX",\r
-            "YOR",\r
+        CA{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GB-NIR{\r
-            "ABC",\r
-            "AND",\r
-            "ANN",\r
-            "BFS",\r
-            "CCG",\r
-            "DRS",\r
-            "FMO",\r
-            "LBC",\r
-            "MEA",\r
-            "MUL",\r
-            "NMD",\r
-        }\r
-        GB-SCT{\r
-            "ABD",\r
-            "ABE",\r
-            "AGB",\r
-            "ANS",\r
-            "CLK",\r
-            "DGY",\r
-            "DND",\r
-            "EAY",\r
-            "EDH",\r
-            "EDU",\r
-            "ELN",\r
-            "ELS",\r
-            "ERW",\r
-            "FAL",\r
-            "FIF",\r
-            "GLG",\r
-            "HLD",\r
-            "IVC",\r
-            "MLN",\r
-            "MRY",\r
-            "NAY",\r
-            "NLK",\r
-            "ORK",\r
-            "PKN",\r
-            "RFW",\r
-            "SAY",\r
-            "SCB",\r
-            "SLK",\r
-            "STG",\r
-            "WDU",\r
-            "WLN",\r
-            "ZET",\r
-        }\r
-        GB-WLS{\r
-            "AGY",\r
-            "BGE",\r
-            "BGW",\r
-            "CAY",\r
-            "CGN",\r
-            "CMN",\r
-            "CRF",\r
-            "CWY",\r
-            "DEN",\r
-            "FLN",\r
-            "GWN",\r
-            "MON",\r
-            "MTY",\r
-            "NTL",\r
-            "NWP",\r
-            "PEM",\r
-            "POW",\r
-            "RCT",\r
-            "SWA",\r
-            "TOF",\r
-            "VGL",\r
-            "WRX",\r
+        CL{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GD{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "10",\r
+        CO{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GE{\r
-            "AB",\r
-            "AJ",\r
-            "GU",\r
-            "IM",\r
-            "KA",\r
-            "KK",\r
-            "MM",\r
-            "RL",\r
-            "SJ",\r
-            "SK",\r
-            "SZ",\r
-            "TB",\r
+        CR{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GH{\r
-            "AA",\r
-            "AH",\r
-            "BA",\r
-            "CP",\r
-            "EP",\r
-            "NP",\r
-            "TV",\r
-            "UE",\r
-            "UW",\r
-            "WP",\r
+        GB{\r
+            MeasurementSystem:int{2}\r
         }\r
-        GL{\r
-            "KU",\r
-            "QA",\r
-            "QE",\r
-            "SM",\r
+        GT{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GM{\r
-            "B",\r
-            "L",\r
-            "M",\r
-            "N",\r
-            "U",\r
-            "W",\r
+        KY{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
+            }\r
         }\r
-        GN{\r
-            "B",\r
-            "C",\r
-            "D",\r
-            "F",\r
-            "K",\r
-            "L",\r
-            "M",\r
-            "N",\r
-        }\r
-        GN-B{\r
-            "BF",\r
-            "BK",\r
-            "FR",\r
-            "GA",\r
-            "KN",\r
+        LR{\r
+            MeasurementSystem:int{1}\r
+            MeasurementSystemCategory{\r
+                temperature:int{0}\r
+            }\r
         }\r
-        GN-D{\r
-            "CO",\r
-            "DU",\r
-            "FO",\r
-            "KD",\r
-            "TE",\r
+        MM{\r
+            MeasurementSystem:int{1}\r
+            MeasurementSystemCategory{\r
+                temperature:int{0}\r
+            }\r
         }\r
-        GN-F{\r
-            "DB",\r
-            "DI",\r
-            "FA",\r
-            "KS",\r
+        MX{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GN-K{\r
-            "KA",\r
-            "KE",\r
-            "KO",\r
-            "MD",\r
-            "SI",\r
+        NI{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GN-L{\r
-            "KB",\r
-            "LA",\r
-            "LE",\r
-            "ML",\r
-            "TO",\r
+        PA{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GN-M{\r
-            "DL",\r
-            "MM",\r
-            "PI",\r
+        PH{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GN-N{\r
-            "BE",\r
-            "GU",\r
-            "LO",\r
-            "MC",\r
-            "NZ",\r
-            "YO",\r
+        PR{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
+            }\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GQ{\r
-            "C",\r
-            "I",\r
+        PW{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
+            }\r
         }\r
-        GQ-C{\r
-            "CS",\r
-            "KN",\r
-            "LI",\r
-            "WN",\r
+        SV{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GQ-I{\r
-            "AN",\r
-            "BN",\r
-            "BS",\r
+        US{\r
+            MeasurementSystem:int{1}\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GR{\r
-            "69",\r
-            "A",\r
-            "B",\r
-            "C",\r
-            "D",\r
-            "E",\r
-            "F",\r
-            "G",\r
-            "H",\r
-            "I",\r
-            "J",\r
-            "K",\r
-            "L",\r
-            "M",\r
-        }\r
-        GR-A{\r
-            "52",\r
-            "55",\r
-            "71",\r
-            "72",\r
-            "73",\r
-        }\r
-        GR-B{\r
-            "53",\r
-            "54",\r
-            "57",\r
-            "59",\r
-            "61",\r
-            "62",\r
-            "64",\r
+        VE{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
+            }\r
         }\r
-        GR-C{\r
-            "51",\r
-            "56",\r
-            "58",\r
-            "63",\r
+    }\r
+    parentLocales{\r
+        en_001{\r
+            "en_150",\r
+            "en_AG",\r
+            "en_AI",\r
+            "en_AU",\r
+            "en_BB",\r
+            "en_BE",\r
+            "en_BM",\r
+            "en_BS",\r
+            "en_BW",\r
+            "en_BZ",\r
+            "en_CA",\r
+            "en_CC",\r
+            "en_CK",\r
+            "en_CM",\r
+            "en_CX",\r
+            "en_CY",\r
+            "en_DG",\r
+            "en_DM",\r
+            "en_ER",\r
+            "en_FJ",\r
+            "en_FK",\r
+            "en_FM",\r
+            "en_GB",\r
+            "en_GD",\r
+            "en_GG",\r
+            "en_GH",\r
+            "en_GI",\r
+            "en_GM",\r
+            "en_GY",\r
+            "en_HK",\r
+            "en_IE",\r
+            "en_IL",\r
+            "en_IM",\r
+            "en_IN",\r
+            "en_IO",\r
+            "en_JE",\r
+            "en_JM",\r
+            "en_KE",\r
+            "en_KI",\r
+            "en_KN",\r
+            "en_KY",\r
+            "en_LC",\r
+            "en_LR",\r
+            "en_LS",\r
+            "en_MG",\r
+            "en_MO",\r
+            "en_MS",\r
+            "en_MT",\r
+            "en_MU",\r
+            "en_MW",\r
+            "en_MY",\r
+            "en_NA",\r
+            "en_NF",\r
+            "en_NG",\r
+            "en_NR",\r
+            "en_NU",\r
+            "en_NZ",\r
+            "en_PG",\r
+            "en_PH",\r
+            "en_PK",\r
+            "en_PN",\r
+            "en_PW",\r
+            "en_RW",\r
+            "en_SB",\r
+            "en_SC",\r
+            "en_SD",\r
+            "en_SG",\r
+            "en_SH",\r
+            "en_SL",\r
+            "en_SS",\r
+            "en_SX",\r
+            "en_SZ",\r
+            "en_TC",\r
+            "en_TK",\r
+            "en_TO",\r
+            "en_TT",\r
+            "en_TV",\r
+            "en_TZ",\r
+            "en_UG",\r
+            "en_VC",\r
+            "en_VG",\r
+            "en_VU",\r
+            "en_WS",\r
+            "en_ZA",\r
+            "en_ZM",\r
+            "en_ZW",\r
         }\r
-        GR-D{\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
+        en_150{\r
+            "en_AT",\r
+            "en_CH",\r
+            "en_DE",\r
+            "en_DK",\r
+            "en_FI",\r
+            "en_NL",\r
+            "en_SE",\r
+            "en_SI",\r
         }\r
-        GR-E{\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
+        es_419{\r
+            "es_AR",\r
+            "es_BO",\r
+            "es_BR",\r
+            "es_BZ",\r
+            "es_CL",\r
+            "es_CO",\r
+            "es_CR",\r
+            "es_CU",\r
+            "es_DO",\r
+            "es_EC",\r
+            "es_GT",\r
+            "es_HN",\r
+            "es_MX",\r
+            "es_NI",\r
+            "es_PA",\r
+            "es_PE",\r
+            "es_PR",\r
+            "es_PY",\r
+            "es_SV",\r
+            "es_US",\r
+            "es_UY",\r
+            "es_VE",\r
         }\r
-        GR-F{\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-        }\r
-        GR-G{\r
-            "01",\r
-            "13",\r
-            "14",\r
-        }\r
-        GR-H{\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-        }\r
-        GR-I{"A1"}\r
-        GR-J{\r
-            "11",\r
-            "12",\r
-            "15",\r
-            "16",\r
-            "17",\r
+        pt_PT{\r
+            "pt_AO",\r
+            "pt_CH",\r
+            "pt_CV",\r
+            "pt_GQ",\r
+            "pt_GW",\r
+            "pt_LU",\r
+            "pt_MO",\r
+            "pt_MZ",\r
+            "pt_ST",\r
+            "pt_TL",\r
         }\r
-        GR-K{\r
-            "83",\r
-            "84",\r
-            "85",\r
+        root{\r
+            "az_Arab",\r
+            "az_Cyrl",\r
+            "bm_Nkoo",\r
+            "bs_Cyrl",\r
+            "en_Dsrt",\r
+            "en_Shaw",\r
+            "ha_Arab",\r
+            "iu_Latn",\r
+            "mn_Mong",\r
+            "ms_Arab",\r
+            "pa_Arab",\r
+            "shi_Latn",\r
+            "sr_Latn",\r
+            "uz_Arab",\r
+            "uz_Cyrl",\r
+            "vai_Latn",\r
+            "zh_Hant",\r
+            "yue_Hans",\r
         }\r
-        GR-L{\r
-            "81",\r
-            "82",\r
+        zh_Hant_HK{"zh_Hant_MO"}\r
+    }\r
+    subdivisionContainment{\r
+        AD{\r
+            "ad02",\r
+            "ad03",\r
+            "ad04",\r
+            "ad05",\r
+            "ad06",\r
+            "ad07",\r
+            "ad08",\r
         }\r
-        GR-M{\r
-            "91",\r
-            "92",\r
-            "93",\r
-            "94",\r
+        AE{\r
+            "aeaj",\r
+            "aeaz",\r
+            "aedu",\r
+            "aefu",\r
+            "aerk",\r
+            "aesh",\r
+            "aeuq",\r
         }\r
-        GT{\r
-            "AV",\r
-            "BV",\r
-            "CM",\r
-            "CQ",\r
-            "ES",\r
-            "GU",\r
-            "HU",\r
-            "IZ",\r
-            "JA",\r
-            "JU",\r
-            "PE",\r
-            "PR",\r
-            "QC",\r
-            "QZ",\r
-            "RE",\r
-            "SA",\r
-            "SM",\r
-            "SO",\r
-            "SR",\r
-            "SU",\r
-            "TO",\r
-            "ZA",\r
+        AF{\r
+            "afbal",\r
+            "afbam",\r
+            "afbdg",\r
+            "afbds",\r
+            "afbgl",\r
+            "afday",\r
+            "affra",\r
+            "affyb",\r
+            "afgha",\r
+            "afgho",\r
+            "afhel",\r
+            "afher",\r
+            "afjow",\r
+            "afkab",\r
+            "afkan",\r
+            "afkap",\r
+            "afkdz",\r
+            "afkho",\r
+            "afknr",\r
+            "aflag",\r
+            "aflog",\r
+            "afnan",\r
+            "afnim",\r
+            "afnur",\r
+            "afpan",\r
+            "afpar",\r
+            "afpia",\r
+            "afpka",\r
+            "afsam",\r
+            "afsar",\r
+            "aftak",\r
+            "afuru",\r
+            "afwar",\r
+            "afzab",\r
         }\r
-        GW{\r
-            "BS",\r
-            "L",\r
-            "N",\r
-            "S",\r
+        AG{\r
+            "ag03",\r
+            "ag04",\r
+            "ag05",\r
+            "ag06",\r
+            "ag07",\r
+            "ag08",\r
+            "ag10",\r
+            "ag11",\r
         }\r
-        GW-L{\r
-            "BA",\r
-            "GA",\r
+        AL{\r
+            "al01",\r
+            "al02",\r
+            "al03",\r
+            "al04",\r
+            "al05",\r
+            "al06",\r
+            "al07",\r
+            "al08",\r
+            "al09",\r
+            "al10",\r
+            "al11",\r
+            "al12",\r
         }\r
-        GW-N{\r
-            "BM",\r
-            "CA",\r
-            "OI",\r
+        AM{\r
+            "amag",\r
+            "amar",\r
+            "amav",\r
+            "amer",\r
+            "amgr",\r
+            "amkt",\r
+            "amlo",\r
+            "amsh",\r
+            "amsu",\r
+            "amtv",\r
+            "amvd",\r
         }\r
-        GW-S{\r
-            "BL",\r
-            "QU",\r
-            "TO",\r
+        AO{\r
+            "aobgo",\r
+            "aobgu",\r
+            "aobie",\r
+            "aocab",\r
+            "aoccu",\r
+            "aocnn",\r
+            "aocno",\r
+            "aocus",\r
+            "aohua",\r
+            "aohui",\r
+            "aolno",\r
+            "aolsu",\r
+            "aolua",\r
+            "aomal",\r
+            "aomox",\r
+            "aonam",\r
+            "aouig",\r
+            "aozai",\r
         }\r
-        GY{\r
-            "BA",\r
-            "CU",\r
-            "DE",\r
-            "EB",\r
-            "ES",\r
-            "MA",\r
-            "PM",\r
-            "PT",\r
-            "UD",\r
-            "UT",\r
+        AR{\r
+            "ara",\r
+            "arb",\r
+            "arc",\r
+            "ard",\r
+            "are",\r
+            "arf",\r
+            "arg",\r
+            "arh",\r
+            "arj",\r
+            "ark",\r
+            "arl",\r
+            "arm",\r
+            "arn",\r
+            "arp",\r
+            "arq",\r
+            "arr",\r
+            "ars",\r
+            "art",\r
+            "aru",\r
+            "arv",\r
+            "arw",\r
+            "arx",\r
+            "ary",\r
+            "arz",\r
         }\r
-        HN{\r
-            "AT",\r
-            "CH",\r
-            "CL",\r
-            "CM",\r
-            "CP",\r
-            "CR",\r
-            "EP",\r
-            "FM",\r
-            "GD",\r
-            "IB",\r
-            "IN",\r
-            "LE",\r
-            "LP",\r
-            "OC",\r
-            "OL",\r
-            "SB",\r
-            "VA",\r
-            "YO",\r
+        AT{\r
+            "at1",\r
+            "at2",\r
+            "at3",\r
+            "at4",\r
+            "at5",\r
+            "at6",\r
+            "at7",\r
+            "at8",\r
+            "at9",\r
         }\r
-        HR{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
+        AU{\r
+            "auact",\r
+            "aunsw",\r
+            "aunt",\r
+            "auqld",\r
+            "ausa",\r
+            "autas",\r
+            "auvic",\r
+            "auwa",\r
         }\r
-        HT{\r
-            "AR",\r
-            "CE",\r
-            "GA",\r
-            "ND",\r
-            "NE",\r
-            "NI",\r
-            "NO",\r
-            "OU",\r
-            "SD",\r
-            "SE",\r
+        AZ{\r
+            "azabs",\r
+            "azaga",\r
+            "azagc",\r
+            "azagm",\r
+            "azags",\r
+            "azagu",\r
+            "azast",\r
+            "azba",\r
+            "azbal",\r
+            "azbar",\r
+            "azbey",\r
+            "azbil",\r
+            "azcab",\r
+            "azcal",\r
+            "azdas",\r
+            "azfuz",\r
+            "azga",\r
+            "azgad",\r
+            "azgor",\r
+            "azgoy",\r
+            "azgyg",\r
+            "azhac",\r
+            "azimi",\r
+            "azism",\r
+            "azkal",\r
+            "azkur",\r
+            "azla",\r
+            "azlac",\r
+            "azlan",\r
+            "azler",\r
+            "azmas",\r
+            "azmi",\r
+            "azna",\r
+            "aznef",\r
+            "aznx",\r
+            "azogu",\r
+            "azqab",\r
+            "azqax",\r
+            "azqaz",\r
+            "azqba",\r
+            "azqbi",\r
+            "azqob",\r
+            "azqus",\r
+            "azsa",\r
+            "azsab",\r
+            "azsak",\r
+            "azsal",\r
+            "azsat",\r
+            "azsbn",\r
+            "azsiy",\r
+            "azskr",\r
+            "azsm",\r
+            "azsmi",\r
+            "azsmx",\r
+            "azsr",\r
+            "azsus",\r
+            "aztar",\r
+            "aztov",\r
+            "azuca",\r
+            "azxa",\r
+            "azxac",\r
+            "azxci",\r
+            "azxiz",\r
+            "azxvd",\r
+            "azyar",\r
+            "azye",\r
+            "azyev",\r
+            "azzan",\r
+            "azzaq",\r
+            "azzar",\r
         }\r
-        HU{\r
-            "BA",\r
-            "BC",\r
-            "BE",\r
-            "BK",\r
-            "BU",\r
-            "BZ",\r
-            "CS",\r
-            "DE",\r
-            "DU",\r
-            "EG",\r
-            "ER",\r
-            "FE",\r
-            "GS",\r
-            "GY",\r
-            "HB",\r
-            "HE",\r
-            "HV",\r
-            "JN",\r
-            "KE",\r
-            "KM",\r
-            "KV",\r
-            "MI",\r
-            "NK",\r
-            "NO",\r
-            "NY",\r
-            "PE",\r
-            "PS",\r
-            "SD",\r
-            "SF",\r
-            "SH",\r
-            "SK",\r
-            "SN",\r
-            "SO",\r
-            "SS",\r
-            "ST",\r
-            "SZ",\r
-            "TB",\r
-            "TO",\r
-            "VA",\r
-            "VE",\r
-            "VM",\r
-            "ZA",\r
-            "ZE",\r
+        BA{\r
+            "babih",\r
+            "babrc",\r
+            "basrp",\r
         }\r
-        ID{\r
-            "JW",\r
-            "KA",\r
-            "ML",\r
-            "NU",\r
-            "PP",\r
-            "SL",\r
-            "SM",\r
+        BB{\r
+            "bb01",\r
+            "bb02",\r
+            "bb03",\r
+            "bb04",\r
+            "bb05",\r
+            "bb06",\r
+            "bb07",\r
+            "bb08",\r
+            "bb09",\r
+            "bb10",\r
+            "bb11",\r
         }\r
-        ID-JW{\r
-            "BT",\r
-            "JB",\r
-            "JI",\r
-            "JK",\r
-            "JT",\r
-            "YO",\r
-        }\r
-        ID-KA{\r
-            "KB",\r
-            "KI",\r
-            "KS",\r
-            "KT",\r
-            "KU",\r
+        BD{\r
+            "bda",\r
+            "bdb",\r
+            "bdc",\r
+            "bdd",\r
+            "bde",\r
+            "bdf",\r
+            "bdg",\r
+            "bdh",\r
         }\r
-        ID-ML{\r
-            "MA",\r
-            "MU",\r
+        BE{\r
+            "bebru",\r
+            "bevlg",\r
+            "bewal",\r
         }\r
-        ID-NU{\r
-            "BA",\r
-            "NB",\r
-            "NT",\r
+        BF{\r
+            "bf01",\r
+            "bf02",\r
+            "bf03",\r
+            "bf04",\r
+            "bf05",\r
+            "bf06",\r
+            "bf07",\r
+            "bf08",\r
+            "bf09",\r
+            "bf10",\r
+            "bf11",\r
+            "bf12",\r
+            "bf13",\r
         }\r
-        ID-PP{\r
-            "PA",\r
-            "PB",\r
+        BG{\r
+            "bg01",\r
+            "bg02",\r
+            "bg03",\r
+            "bg04",\r
+            "bg05",\r
+            "bg06",\r
+            "bg07",\r
+            "bg08",\r
+            "bg09",\r
+            "bg10",\r
+            "bg11",\r
+            "bg12",\r
+            "bg13",\r
+            "bg14",\r
+            "bg15",\r
+            "bg16",\r
+            "bg17",\r
+            "bg18",\r
+            "bg19",\r
+            "bg20",\r
+            "bg21",\r
+            "bg22",\r
+            "bg23",\r
+            "bg24",\r
+            "bg25",\r
+            "bg26",\r
+            "bg27",\r
+            "bg28",\r
         }\r
-        ID-SL{\r
-            "GO",\r
-            "SA",\r
-            "SG",\r
-            "SN",\r
-            "SR",\r
-            "ST",\r
+        BH{\r
+            "bh13",\r
+            "bh14",\r
+            "bh15",\r
+            "bh17",\r
         }\r
-        ID-SM{\r
-            "AC",\r
-            "BB",\r
-            "BE",\r
-            "JA",\r
-            "KR",\r
-            "LA",\r
-            "RI",\r
-            "SB",\r
-            "SS",\r
-            "SU",\r
+        BI{\r
+            "bibb",\r
+            "bibl",\r
+            "bibm",\r
+            "bibr",\r
+            "bica",\r
+            "bici",\r
+            "bigi",\r
+            "biki",\r
+            "bikr",\r
+            "biky",\r
+            "bima",\r
+            "bimu",\r
+            "bimw",\r
+            "bimy",\r
+            "bing",\r
+            "birm",\r
+            "birt",\r
+            "biry",\r
         }\r
-        IE{\r
-            "C",\r
-            "L",\r
-            "M",\r
-            "U",\r
-        }\r
-        IE-C{\r
-            "G",\r
-            "LM",\r
-            "MO",\r
-            "RN",\r
-            "SO",\r
+        BJ{\r
+            "bjak",\r
+            "bjal",\r
+            "bjaq",\r
+            "bjbo",\r
+            "bjco",\r
+            "bjdo",\r
+            "bjko",\r
+            "bjli",\r
+            "bjmo",\r
+            "bjou",\r
+            "bjpl",\r
+            "bjzo",\r
         }\r
-        IE-L{\r
-            "CW",\r
-            "D",\r
-            "KE",\r
-            "KK",\r
-            "LD",\r
-            "LH",\r
-            "LS",\r
-            "MH",\r
-            "OY",\r
-            "WH",\r
-            "WW",\r
-            "WX",\r
+        BN{\r
+            "bnbe",\r
+            "bnbm",\r
+            "bnte",\r
+            "bntu",\r
         }\r
-        IE-M{\r
-            "CE",\r
-            "CO",\r
-            "KY",\r
-            "LK",\r
-            "TA",\r
-            "WD",\r
+        BO{\r
+            "bob",\r
+            "boc",\r
+            "boh",\r
+            "bol",\r
+            "bon",\r
+            "boo",\r
+            "bop",\r
+            "bos",\r
+            "bot",\r
         }\r
-        IE-U{\r
-            "CN",\r
-            "DL",\r
-            "MN",\r
+        BQ{\r
+            "bqbo",\r
+            "bqsa",\r
+            "bqse",\r
         }\r
-        IL{\r
-            "D",\r
-            "HA",\r
-            "JM",\r
-            "M",\r
-            "TA",\r
-            "Z",\r
+        BR{\r
+            "brac",\r
+            "bral",\r
+            "bram",\r
+            "brap",\r
+            "brba",\r
+            "brce",\r
+            "brdf",\r
+            "bres",\r
+            "brgo",\r
+            "brma",\r
+            "brmg",\r
+            "brms",\r
+            "brmt",\r
+            "brpa",\r
+            "brpb",\r
+            "brpe",\r
+            "brpi",\r
+            "brpr",\r
+            "brrj",\r
+            "brrn",\r
+            "brro",\r
+            "brrr",\r
+            "brrs",\r
+            "brsc",\r
+            "brse",\r
+            "brsp",\r
+            "brto",\r
         }\r
-        IN{\r
-            "AN",\r
-            "AP",\r
-            "AR",\r
-            "AS",\r
-            "BR",\r
-            "CH",\r
-            "CT",\r
-            "DD",\r
-            "DL",\r
-            "DN",\r
-            "GA",\r
-            "GJ",\r
-            "HP",\r
-            "HR",\r
-            "JH",\r
-            "JK",\r
-            "KA",\r
-            "KL",\r
-            "LD",\r
-            "MH",\r
-            "ML",\r
-            "MN",\r
-            "MP",\r
-            "MZ",\r
-            "NL",\r
-            "OR",\r
-            "PB",\r
-            "PY",\r
-            "RJ",\r
-            "SK",\r
-            "TG",\r
-            "TN",\r
-            "TR",\r
-            "UP",\r
-            "UT",\r
-            "WB",\r
+        BS{\r
+            "bsak",\r
+            "bsbi",\r
+            "bsbp",\r
+            "bsby",\r
+            "bsce",\r
+            "bsci",\r
+            "bsck",\r
+            "bsco",\r
+            "bscs",\r
+            "bseg",\r
+            "bsex",\r
+            "bsfp",\r
+            "bsgc",\r
+            "bshi",\r
+            "bsht",\r
+            "bsin",\r
+            "bsli",\r
+            "bsmc",\r
+            "bsmg",\r
+            "bsmi",\r
+            "bsne",\r
+            "bsno",\r
+            "bsns",\r
+            "bsrc",\r
+            "bsri",\r
+            "bssa",\r
+            "bsse",\r
+            "bsso",\r
+            "bsss",\r
+            "bssw",\r
+            "bswg",\r
         }\r
-        IQ{\r
-            "AN",\r
-            "AR",\r
-            "BA",\r
-            "BB",\r
-            "BG",\r
-            "DA",\r
-            "DI",\r
-            "DQ",\r
-            "KA",\r
-            "KI",\r
-            "MA",\r
-            "MU",\r
-            "NA",\r
-            "NI",\r
-            "QA",\r
-            "SD",\r
-            "SU",\r
-            "WA",\r
+        BT{\r
+            "bt11",\r
+            "bt12",\r
+            "bt13",\r
+            "bt14",\r
+            "bt15",\r
+            "bt21",\r
+            "bt22",\r
+            "bt23",\r
+            "bt24",\r
+            "bt31",\r
+            "bt32",\r
+            "bt33",\r
+            "bt34",\r
+            "bt41",\r
+            "bt42",\r
+            "bt43",\r
+            "bt44",\r
+            "bt45",\r
+            "btga",\r
+            "btty",\r
         }\r
-        IR{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
-            "31",\r
-            "32",\r
+        BW{\r
+            "bwce",\r
+            "bwch",\r
+            "bwfr",\r
+            "bwga",\r
+            "bwgh",\r
+            "bwjw",\r
+            "bwkg",\r
+            "bwkl",\r
+            "bwkw",\r
+            "bwlo",\r
+            "bwne",\r
+            "bwnw",\r
+            "bwse",\r
+            "bwso",\r
+            "bwsp",\r
+            "bwst",\r
         }\r
-        IS{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-            "6",\r
-            "7",\r
-            "8",\r
+        BY{\r
+            "bybr",\r
+            "byhm",\r
+            "byho",\r
+            "byhr",\r
+            "byma",\r
+            "bymi",\r
+            "byvi",\r
         }\r
-        IT{\r
-            "21",\r
-            "23",\r
-            "25",\r
-            "32",\r
-            "34",\r
-            "36",\r
-            "42",\r
-            "45",\r
-            "52",\r
-            "55",\r
-            "57",\r
-            "62",\r
-            "65",\r
-            "67",\r
-            "72",\r
-            "75",\r
-            "77",\r
-            "78",\r
-            "82",\r
-            "88",\r
+        BZ{\r
+            "bzbz",\r
+            "bzcy",\r
+            "bzczl",\r
+            "bzow",\r
+            "bzsc",\r
+            "bztol",\r
         }\r
-        IT-21{\r
-            "AL",\r
-            "AT",\r
-            "BI",\r
-            "CN",\r
-            "NO",\r
-            "TO",\r
-            "VB",\r
-            "VC",\r
+        CA{\r
+            "caab",\r
+            "cabc",\r
+            "camb",\r
+            "canb",\r
+            "canl",\r
+            "cans",\r
+            "cant",\r
+            "canu",\r
+            "caon",\r
+            "cape",\r
+            "caqc",\r
+            "cask",\r
+            "cayt",\r
         }\r
-        IT-23{"AO"}\r
-        IT-25{\r
-            "BG",\r
-            "BS",\r
-            "CO",\r
-            "CR",\r
-            "LC",\r
-            "LO",\r
-            "MB",\r
-            "MI",\r
-            "MN",\r
-            "PV",\r
-            "SO",\r
-            "VA",\r
+        CD{\r
+            "cdbc",\r
+            "cdbu",\r
+            "cdeq",\r
+            "cdhk",\r
+            "cdhl",\r
+            "cdhu",\r
+            "cdit",\r
+            "cdkc",\r
+            "cdke",\r
+            "cdkg",\r
+            "cdkl",\r
+            "cdkn",\r
+            "cdks",\r
+            "cdlo",\r
+            "cdlu",\r
+            "cdma",\r
+            "cdmn",\r
+            "cdmo",\r
+            "cdnk",\r
+            "cdnu",\r
+            "cdsa",\r
+            "cdsk",\r
+            "cdsu",\r
+            "cdta",\r
+            "cdto",\r
+            "cdtu",\r
         }\r
-        IT-32{\r
-            "BZ",\r
-            "TN",\r
+        CF{\r
+            "cfac",\r
+            "cfbb",\r
+            "cfbgf",\r
+            "cfbk",\r
+            "cfhk",\r
+            "cfhm",\r
+            "cfhs",\r
+            "cfkb",\r
+            "cfkg",\r
+            "cflb",\r
+            "cfmb",\r
+            "cfmp",\r
+            "cfnm",\r
+            "cfop",\r
+            "cfse",\r
+            "cfuk",\r
+            "cfvk",\r
         }\r
-        IT-34{\r
-            "BL",\r
-            "PD",\r
-            "RO",\r
-            "TV",\r
-            "VE",\r
-            "VI",\r
-            "VR",\r
+        CG{\r
+            "cg2",\r
+            "cg5",\r
+            "cg7",\r
+            "cg8",\r
+            "cg9",\r
+            "cg11",\r
+            "cg12",\r
+            "cg13",\r
+            "cg14",\r
+            "cg15",\r
+            "cg16",\r
+            "cgbzv",\r
         }\r
-        IT-36{\r
-            "GO",\r
-            "PN",\r
-            "TS",\r
-            "UD",\r
+        CH{\r
+            "chag",\r
+            "chai",\r
+            "char",\r
+            "chbe",\r
+            "chbl",\r
+            "chbs",\r
+            "chfr",\r
+            "chge",\r
+            "chgl",\r
+            "chgr",\r
+            "chju",\r
+            "chlu",\r
+            "chne",\r
+            "chnw",\r
+            "chow",\r
+            "chsg",\r
+            "chsh",\r
+            "chso",\r
+            "chsz",\r
+            "chtg",\r
+            "chti",\r
+            "chur",\r
+            "chvd",\r
+            "chvs",\r
+            "chzg",\r
+            "chzh",\r
         }\r
-        IT-42{\r
-            "GE",\r
-            "IM",\r
-            "SP",\r
-            "SV",\r
+        CI{\r
+            "ciab",\r
+            "cibs",\r
+            "cicm",\r
+            "cidn",\r
+            "cigd",\r
+            "cilc",\r
+            "cilg",\r
+            "cimg",\r
+            "cism",\r
+            "cisv",\r
+            "civb",\r
+            "ciwr",\r
+            "ciym",\r
+            "cizz",\r
         }\r
-        IT-45{\r
-            "BO",\r
-            "FC",\r
-            "FE",\r
-            "MO",\r
-            "PC",\r
-            "PR",\r
-            "RA",\r
-            "RE",\r
-            "RN",\r
+        CL{\r
+            "clai",\r
+            "clan",\r
+            "clap",\r
+            "clar",\r
+            "clat",\r
+            "clbi",\r
+            "clco",\r
+            "clli",\r
+            "clll",\r
+            "cllr",\r
+            "clma",\r
+            "clml",\r
+            "clrm",\r
+            "clta",\r
+            "clvs",\r
         }\r
-        IT-52{\r
-            "AR",\r
-            "FI",\r
-            "GR",\r
-            "LI",\r
-            "LU",\r
-            "MS",\r
-            "PI",\r
-            "PO",\r
-            "PT",\r
-            "SI",\r
+        CM{\r
+            "cmad",\r
+            "cmce",\r
+            "cmen",\r
+            "cmes",\r
+            "cmlt",\r
+            "cmno",\r
+            "cmnw",\r
+            "cmou",\r
+            "cmsu",\r
+            "cmsw",\r
         }\r
-        IT-55{\r
-            "PG",\r
-            "TR",\r
+        CN{\r
+            "cn11",\r
+            "cn12",\r
+            "cn13",\r
+            "cn14",\r
+            "cn15",\r
+            "cn21",\r
+            "cn22",\r
+            "cn23",\r
+            "cn31",\r
+            "cn32",\r
+            "cn33",\r
+            "cn34",\r
+            "cn35",\r
+            "cn36",\r
+            "cn37",\r
+            "cn41",\r
+            "cn42",\r
+            "cn43",\r
+            "cn44",\r
+            "cn45",\r
+            "cn46",\r
+            "cn50",\r
+            "cn51",\r
+            "cn52",\r
+            "cn53",\r
+            "cn54",\r
+            "cn61",\r
+            "cn62",\r
+            "cn63",\r
+            "cn64",\r
+            "cn65",\r
+            "cn71",\r
+            "cn91",\r
+            "cn92",\r
         }\r
-        IT-57{\r
-            "AN",\r
-            "AP",\r
-            "FM",\r
-            "MC",\r
-            "PU",\r
+        CO{\r
+            "coama",\r
+            "coant",\r
+            "coara",\r
+            "coatl",\r
+            "cobol",\r
+            "coboy",\r
+            "cocal",\r
+            "cocaq",\r
+            "cocas",\r
+            "cocau",\r
+            "coces",\r
+            "cocho",\r
+            "cocor",\r
+            "cocun",\r
+            "codc",\r
+            "cogua",\r
+            "coguv",\r
+            "cohui",\r
+            "colag",\r
+            "comag",\r
+            "comet",\r
+            "conar",\r
+            "consa",\r
+            "coput",\r
+            "coqui",\r
+            "coris",\r
+            "cosan",\r
+            "cosap",\r
+            "cosuc",\r
+            "cotol",\r
+            "covac",\r
+            "covau",\r
+            "covid",\r
         }\r
-        IT-62{\r
-            "FR",\r
-            "LT",\r
-            "RI",\r
-            "RM",\r
-            "VT",\r
+        CR{\r
+            "cra",\r
+            "crc",\r
+            "crg",\r
+            "crh",\r
+            "crl",\r
+            "crp",\r
+            "crsj",\r
         }\r
-        IT-65{\r
-            "AQ",\r
-            "CH",\r
-            "PE",\r
-            "TE",\r
+        CU{\r
+            "cu01",\r
+            "cu03",\r
+            "cu04",\r
+            "cu05",\r
+            "cu06",\r
+            "cu07",\r
+            "cu08",\r
+            "cu09",\r
+            "cu10",\r
+            "cu11",\r
+            "cu12",\r
+            "cu13",\r
+            "cu14",\r
+            "cu15",\r
+            "cu16",\r
+            "cu99",\r
         }\r
-        IT-67{\r
-            "CB",\r
-            "IS",\r
+        CV{\r
+            "cvb",\r
+            "cvs",\r
         }\r
-        IT-72{\r
-            "AV",\r
-            "BN",\r
-            "CE",\r
-            "NA",\r
-            "SA",\r
+        CY{\r
+            "cy01",\r
+            "cy02",\r
+            "cy03",\r
+            "cy04",\r
+            "cy05",\r
+            "cy06",\r
         }\r
-        IT-75{\r
-            "BA",\r
-            "BR",\r
-            "BT",\r
-            "FG",\r
-            "LE",\r
-            "TA",\r
+        CZ{\r
+            "cz10",\r
+            "cz20",\r
+            "cz31",\r
+            "cz32",\r
+            "cz41",\r
+            "cz42",\r
+            "cz51",\r
+            "cz52",\r
+            "cz53",\r
+            "cz63",\r
+            "cz64",\r
+            "cz71",\r
+            "cz72",\r
+            "cz80",\r
         }\r
-        IT-77{\r
-            "MT",\r
-            "PZ",\r
+        DE{\r
+            "debb",\r
+            "debe",\r
+            "debw",\r
+            "deby",\r
+            "dehb",\r
+            "dehe",\r
+            "dehh",\r
+            "demv",\r
+            "deni",\r
+            "denw",\r
+            "derp",\r
+            "desh",\r
+            "desl",\r
+            "desn",\r
+            "dest",\r
+            "deth",\r
         }\r
-        IT-78{\r
-            "CS",\r
-            "CZ",\r
-            "KR",\r
-            "RC",\r
-            "VV",\r
+        DJ{\r
+            "djar",\r
+            "djas",\r
+            "djdi",\r
+            "djdj",\r
+            "djob",\r
+            "djta",\r
         }\r
-        IT-82{\r
-            "AG",\r
-            "CL",\r
-            "CT",\r
-            "EN",\r
-            "ME",\r
-            "PA",\r
-            "RG",\r
-            "SR",\r
-            "TP",\r
+        DK{\r
+            "dk81",\r
+            "dk82",\r
+            "dk83",\r
+            "dk84",\r
+            "dk85",\r
         }\r
-        IT-88{\r
-            "CA",\r
-            "CI",\r
-            "NU",\r
-            "OG",\r
-            "OR",\r
-            "OT",\r
-            "SS",\r
-            "VS",\r
+        DM{\r
+            "dm02",\r
+            "dm03",\r
+            "dm04",\r
+            "dm05",\r
+            "dm06",\r
+            "dm07",\r
+            "dm08",\r
+            "dm09",\r
+            "dm10",\r
+            "dm11",\r
         }\r
-        JM{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
+        DO{\r
+            "do33",\r
+            "do34",\r
+            "do35",\r
+            "do36",\r
+            "do37",\r
+            "do38",\r
+            "do39",\r
+            "do40",\r
+            "do41",\r
+            "do42",\r
         }\r
-        JO{\r
-            "AJ",\r
-            "AM",\r
-            "AQ",\r
-            "AT",\r
-            "AZ",\r
-            "BA",\r
-            "IR",\r
-            "JA",\r
-            "KA",\r
-            "MA",\r
-            "MD",\r
-            "MN",\r
+        DZ{\r
+            "dz01",\r
+            "dz02",\r
+            "dz03",\r
+            "dz04",\r
+            "dz05",\r
+            "dz06",\r
+            "dz07",\r
+            "dz08",\r
+            "dz09",\r
+            "dz10",\r
+            "dz11",\r
+            "dz12",\r
+            "dz13",\r
+            "dz14",\r
+            "dz15",\r
+            "dz16",\r
+            "dz17",\r
+            "dz18",\r
+            "dz19",\r
+            "dz20",\r
+            "dz21",\r
+            "dz22",\r
+            "dz23",\r
+            "dz24",\r
+            "dz25",\r
+            "dz26",\r
+            "dz27",\r
+            "dz28",\r
+            "dz29",\r
+            "dz30",\r
+            "dz31",\r
+            "dz32",\r
+            "dz33",\r
+            "dz34",\r
+            "dz35",\r
+            "dz36",\r
+            "dz37",\r
+            "dz38",\r
+            "dz39",\r
+            "dz40",\r
+            "dz41",\r
+            "dz42",\r
+            "dz43",\r
+            "dz44",\r
+            "dz45",\r
+            "dz46",\r
+            "dz47",\r
+            "dz48",\r
         }\r
-        JP{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "38",\r
-            "39",\r
-            "40",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
+        EC{\r
+            "eca",\r
+            "ecb",\r
+            "ecc",\r
+            "ecd",\r
+            "ece",\r
+            "ecf",\r
+            "ecg",\r
+            "ech",\r
+            "eci",\r
+            "ecl",\r
+            "ecm",\r
+            "ecn",\r
+            "eco",\r
+            "ecp",\r
+            "ecr",\r
+            "ecs",\r
+            "ecsd",\r
+            "ecse",\r
+            "ect",\r
+            "ecu",\r
+            "ecw",\r
+            "ecx",\r
+            "ecy",\r
+            "ecz",\r
         }\r
-        KE{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "38",\r
-            "39",\r
-            "40",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
+        EE{\r
+            "ee37",\r
+            "ee39",\r
+            "ee44",\r
+            "ee49",\r
+            "ee51",\r
+            "ee57",\r
+            "ee59",\r
+            "ee65",\r
+            "ee67",\r
+            "ee70",\r
+            "ee74",\r
+            "ee78",\r
+            "ee82",\r
+            "ee84",\r
+            "ee86",\r
         }\r
-        KG{\r
-            "B",\r
-            "C",\r
-            "GB",\r
-            "GO",\r
-            "J",\r
-            "N",\r
-            "O",\r
-            "T",\r
-            "Y",\r
+        EG{\r
+            "egalx",\r
+            "egasn",\r
+            "egast",\r
+            "egba",\r
+            "egbh",\r
+            "egbns",\r
+            "egc",\r
+            "egdk",\r
+            "egdt",\r
+            "egfym",\r
+            "eggh",\r
+            "eggz",\r
+            "egis",\r
+            "egjs",\r
+            "egkb",\r
+            "egkfs",\r
+            "egkn",\r
+            "eglx",\r
+            "egmn",\r
+            "egmnf",\r
+            "egmt",\r
+            "egpts",\r
+            "egshg",\r
+            "egshr",\r
+            "egsin",\r
+            "egsuz",\r
+            "egwad",\r
         }\r
-        KH{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-            "6",\r
-            "7",\r
-            "8",\r
-            "9",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
+        ER{\r
+            "eran",\r
+            "erdk",\r
+            "erdu",\r
+            "ergb",\r
+            "erma",\r
+            "ersk",\r
         }\r
-        KI{\r
-            "G",\r
-            "L",\r
-            "P",\r
+        ES{\r
+            "esan",\r
+            "esar",\r
+            "esas",\r
+            "escb",\r
+            "esce",\r
+            "escl",\r
+            "escm",\r
+            "escn",\r
+            "esct",\r
+            "esex",\r
+            "esga",\r
+            "esib",\r
+            "esmc",\r
+            "esmd",\r
+            "esml",\r
+            "esnc",\r
+            "espv",\r
+            "esri",\r
+            "esvc",\r
         }\r
-        KM{\r
-            "A",\r
-            "G",\r
-            "M",\r
+        ET{\r
+            "etaa",\r
+            "etaf",\r
+            "etam",\r
+            "etbe",\r
+            "etdd",\r
+            "etga",\r
+            "etha",\r
+            "etor",\r
+            "etsn",\r
+            "etso",\r
+            "etti",\r
         }\r
-        KN{\r
-            "K",\r
-            "N",\r
-        }\r
-        KN-K{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "06",\r
-            "08",\r
-            "09",\r
-            "11",\r
-            "13",\r
-            "15",\r
-        }\r
-        KN-N{\r
-            "04",\r
-            "05",\r
-            "07",\r
-            "10",\r
-            "12",\r
+        FI{\r
+            "fi01",\r
+            "fi02",\r
+            "fi03",\r
+            "fi04",\r
+            "fi05",\r
+            "fi06",\r
+            "fi07",\r
+            "fi08",\r
+            "fi09",\r
+            "fi10",\r
+            "fi11",\r
+            "fi12",\r
+            "fi13",\r
+            "fi14",\r
+            "fi15",\r
+            "fi16",\r
+            "fi17",\r
+            "fi18",\r
+            "fi19",\r
         }\r
-        KP{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "13",\r
+        FJ{\r
+            "fjc",\r
+            "fje",\r
+            "fjn",\r
+            "fjr",\r
+            "fjw",\r
         }\r
-        KR{\r
-            "11",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
-            "31",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
-            "48",\r
-            "49",\r
-            "50",\r
+        FM{\r
+            "fmksa",\r
+            "fmpni",\r
+            "fmtrk",\r
+            "fmyap",\r
         }\r
-        KW{\r
-            "AH",\r
-            "FA",\r
-            "HA",\r
-            "JA",\r
-            "KU",\r
-            "MU",\r
+        FR{\r
+            "frara",\r
+            "frbfc",\r
+            "frbl",\r
+            "frbre",\r
+            "frcor",\r
+            "frcp",\r
+            "frcvl",\r
+            "frges",\r
+            "frgf",\r
+            "frgua",\r
+            "frhdf",\r
+            "fridf",\r
+            "frlre",\r
+            "frmay",\r
+            "frmf",\r
+            "frmq",\r
+            "frnaq",\r
+            "frnc",\r
+            "frnor",\r
+            "frocc",\r
+            "frpac",\r
+            "frpdl",\r
+            "frpf",\r
+            "frpm",\r
+            "frtf",\r
+            "frwf",\r
         }\r
-        KZ{\r
-            "AKM",\r
-            "AKT",\r
-            "ALA",\r
-            "ALM",\r
-            "AST",\r
-            "ATY",\r
-            "KAR",\r
-            "KUS",\r
-            "KZY",\r
-            "MAN",\r
-            "PAV",\r
-            "SEV",\r
-            "VOS",\r
-            "YUZ",\r
-            "ZAP",\r
-            "ZHA",\r
+        GA{\r
+            "ga1",\r
+            "ga2",\r
+            "ga3",\r
+            "ga4",\r
+            "ga5",\r
+            "ga6",\r
+            "ga7",\r
+            "ga8",\r
+            "ga9",\r
         }\r
-        LA{\r
-            "AT",\r
-            "BK",\r
-            "BL",\r
-            "CH",\r
-            "HO",\r
-            "KH",\r
-            "LM",\r
-            "LP",\r
-            "OU",\r
-            "PH",\r
-            "SL",\r
-            "SV",\r
-            "VI",\r
-            "VT",\r
-            "XA",\r
-            "XE",\r
-            "XI",\r
-            "XS",\r
+        GB{\r
+            "gbeaw",\r
+            "gbeng",\r
+            "gbgbn",\r
+            "gbnir",\r
+            "gbsct",\r
+            "gbukm",\r
+            "gbwls",\r
         }\r
-        LB{\r
-            "AK",\r
-            "AS",\r
-            "BA",\r
-            "BH",\r
-            "BI",\r
-            "JA",\r
-            "JL",\r
-            "NA",\r
+        GD{\r
+            "gd01",\r
+            "gd02",\r
+            "gd03",\r
+            "gd04",\r
+            "gd05",\r
+            "gd06",\r
+            "gd10",\r
         }\r
-        LC{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "10",\r
-            "11",\r
-            "12",\r
+        GE{\r
+            "geab",\r
+            "geaj",\r
+            "gegu",\r
+            "geim",\r
+            "geka",\r
+            "gekk",\r
+            "gemm",\r
+            "gerl",\r
+            "gesj",\r
+            "gesk",\r
+            "gesz",\r
+            "getb",\r
         }\r
-        LI{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
+        GH{\r
+            "ghaa",\r
+            "ghah",\r
+            "ghba",\r
+            "ghcp",\r
+            "ghep",\r
+            "ghnp",\r
+            "ghtv",\r
+            "ghue",\r
+            "ghuw",\r
+            "ghwp",\r
         }\r
-        LK{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-            "6",\r
-            "7",\r
-            "8",\r
-            "9",\r
+        GL{\r
+            "glku",\r
+            "glqa",\r
+            "glqe",\r
+            "glsm",\r
         }\r
-        LK-1{\r
-            "52",\r
-            "71",\r
-            "81",\r
+        GM{\r
+            "gmb",\r
+            "gml",\r
+            "gmm",\r
+            "gmn",\r
+            "gmu",\r
+            "gmw",\r
         }\r
-        LK-2{\r
-            "11",\r
-            "31",\r
-            "51",\r
+        GN{\r
+            "gnb",\r
+            "gnc",\r
+            "gnd",\r
+            "gnf",\r
+            "gnk",\r
+            "gnl",\r
+            "gnm",\r
+            "gnn",\r
         }\r
-        LK-3{\r
-            "12",\r
-            "33",\r
-            "41",\r
-        }\r
-        LK-4{\r
-            "13",\r
-            "21",\r
-            "42",\r
-            "61",\r
-            "92",\r
-        }\r
-        LK-5{\r
-            "22",\r
-            "32",\r
-            "43",\r
+        GQ{\r
+            "gqc",\r
+            "gqi",\r
         }\r
-        LK-6{\r
-            "45",\r
-            "82",\r
+        GR{\r
+            "gr69",\r
+            "gra",\r
+            "grb",\r
+            "grc",\r
+            "grd",\r
+            "gre",\r
+            "grf",\r
+            "grg",\r
+            "grh",\r
+            "gri",\r
+            "grj",\r
+            "grk",\r
+            "grl",\r
+            "grm",\r
         }\r
-        LK-7{\r
-            "23",\r
-            "72",\r
+        GT{\r
+            "gtav",\r
+            "gtbv",\r
+            "gtcm",\r
+            "gtcq",\r
+            "gtes",\r
+            "gtgu",\r
+            "gthu",\r
+            "gtiz",\r
+            "gtja",\r
+            "gtju",\r
+            "gtpe",\r
+            "gtpr",\r
+            "gtqc",\r
+            "gtqz",\r
+            "gtre",\r
+            "gtsa",\r
+            "gtsm",\r
+            "gtso",\r
+            "gtsr",\r
+            "gtsu",\r
+            "gtto",\r
+            "gtza",\r
         }\r
-        LK-8{\r
-            "62",\r
-            "91",\r
+        GW{\r
+            "gwbs",\r
+            "gwl",\r
+            "gwn",\r
+            "gws",\r
         }\r
-        LK-9{\r
-            "44",\r
-            "53",\r
+        GY{\r
+            "gyba",\r
+            "gycu",\r
+            "gyde",\r
+            "gyeb",\r
+            "gyes",\r
+            "gyma",\r
+            "gypm",\r
+            "gypt",\r
+            "gyud",\r
+            "gyut",\r
         }\r
-        LR{\r
-            "BG",\r
-            "BM",\r
-            "CM",\r
-            "GB",\r
-            "GG",\r
-            "GK",\r
-            "GP",\r
-            "LO",\r
-            "MG",\r
-            "MO",\r
-            "MY",\r
-            "NI",\r
-            "RG",\r
-            "RI",\r
-            "SI",\r
+        HN{\r
+            "hnat",\r
+            "hnch",\r
+            "hncl",\r
+            "hncm",\r
+            "hncp",\r
+            "hncr",\r
+            "hnep",\r
+            "hnfm",\r
+            "hngd",\r
+            "hnib",\r
+            "hnin",\r
+            "hnle",\r
+            "hnlp",\r
+            "hnoc",\r
+            "hnol",\r
+            "hnsb",\r
+            "hnva",\r
+            "hnyo",\r
         }\r
-        LS{\r
-            "A",\r
-            "B",\r
-            "C",\r
-            "D",\r
-            "E",\r
-            "F",\r
-            "G",\r
-            "H",\r
-            "J",\r
-            "K",\r
+        HR{\r
+            "hr01",\r
+            "hr02",\r
+            "hr03",\r
+            "hr04",\r
+            "hr05",\r
+            "hr06",\r
+            "hr07",\r
+            "hr08",\r
+            "hr09",\r
+            "hr10",\r
+            "hr11",\r
+            "hr12",\r
+            "hr13",\r
+            "hr14",\r
+            "hr15",\r
+            "hr16",\r
+            "hr17",\r
+            "hr18",\r
+            "hr19",\r
+            "hr20",\r
+            "hr21",\r
         }\r
-        LT{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "38",\r
-            "39",\r
-            "40",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
-            "48",\r
-            "49",\r
-            "50",\r
-            "51",\r
-            "52",\r
-            "53",\r
-            "54",\r
-            "55",\r
-            "56",\r
-            "57",\r
-            "58",\r
-            "59",\r
-            "60",\r
-            "AL",\r
-            "KL",\r
-            "KU",\r
-            "MR",\r
-            "PN",\r
-            "SA",\r
-            "TA",\r
-            "TE",\r
-            "UT",\r
-            "VL",\r
+        HT{\r
+            "htar",\r
+            "htce",\r
+            "htga",\r
+            "htnd",\r
+            "htne",\r
+            "htni",\r
+            "htno",\r
+            "htou",\r
+            "htsd",\r
+            "htse",\r
         }\r
-        LU{\r
-            "CA",\r
-            "CL",\r
-            "DI",\r
-            "EC",\r
-            "ES",\r
-            "GR",\r
-            "LU",\r
-            "ME",\r
-            "RD",\r
-            "RM",\r
-            "VD",\r
-            "WI",\r
+        HU{\r
+            "huba",\r
+            "hubc",\r
+            "hube",\r
+            "hubk",\r
+            "hubu",\r
+            "hubz",\r
+            "hucs",\r
+            "hude",\r
+            "hudu",\r
+            "hueg",\r
+            "huer",\r
+            "hufe",\r
+            "hugs",\r
+            "hugy",\r
+            "huhb",\r
+            "huhe",\r
+            "huhv",\r
+            "hujn",\r
+            "huke",\r
+            "hukm",\r
+            "hukv",\r
+            "humi",\r
+            "hunk",\r
+            "huno",\r
+            "huny",\r
+            "hupe",\r
+            "hups",\r
+            "husd",\r
+            "husf",\r
+            "hush",\r
+            "husk",\r
+            "husn",\r
+            "huso",\r
+            "huss",\r
+            "hust",\r
+            "husz",\r
+            "hutb",\r
+            "huto",\r
+            "huva",\r
+            "huve",\r
+            "huvm",\r
+            "huza",\r
+            "huze",\r
         }\r
-        LV{\r
-            "001",\r
-            "002",\r
-            "003",\r
-            "004",\r
-            "005",\r
-            "006",\r
-            "007",\r
-            "008",\r
-            "009",\r
-            "010",\r
-            "011",\r
-            "012",\r
-            "013",\r
-            "014",\r
-            "015",\r
-            "016",\r
-            "017",\r
-            "018",\r
-            "019",\r
-            "020",\r
-            "021",\r
-            "022",\r
-            "023",\r
-            "024",\r
-            "025",\r
-            "026",\r
-            "027",\r
-            "028",\r
-            "029",\r
-            "030",\r
-            "031",\r
-            "032",\r
-            "033",\r
-            "034",\r
-            "035",\r
-            "036",\r
-            "037",\r
-            "038",\r
-            "039",\r
-            "040",\r
-            "041",\r
-            "042",\r
-            "043",\r
-            "044",\r
-            "045",\r
-            "046",\r
-            "047",\r
-            "048",\r
-            "049",\r
-            "050",\r
-            "051",\r
-            "052",\r
-            "053",\r
-            "054",\r
-            "055",\r
-            "056",\r
-            "057",\r
-            "058",\r
-            "059",\r
-            "060",\r
-            "061",\r
-            "062",\r
-            "063",\r
-            "064",\r
-            "065",\r
-            "066",\r
-            "067",\r
-            "068",\r
-            "069",\r
-            "070",\r
-            "071",\r
-            "072",\r
-            "073",\r
-            "074",\r
-            "075",\r
-            "076",\r
-            "077",\r
-            "078",\r
-            "079",\r
-            "080",\r
-            "081",\r
-            "082",\r
-            "083",\r
-            "084",\r
-            "085",\r
-            "086",\r
-            "087",\r
-            "088",\r
-            "089",\r
-            "090",\r
-            "091",\r
-            "092",\r
-            "093",\r
-            "094",\r
-            "095",\r
-            "096",\r
-            "097",\r
-            "098",\r
-            "099",\r
-            "100",\r
-            "101",\r
-            "102",\r
-            "103",\r
-            "104",\r
-            "105",\r
-            "106",\r
-            "107",\r
-            "108",\r
-            "109",\r
-            "110",\r
-            "DGV",\r
-            "JEL",\r
-            "JKB",\r
-            "JUR",\r
-            "LPX",\r
-            "REZ",\r
-            "RIX",\r
-            "VEN",\r
-            "VMR",\r
+        ID{\r
+            "idjw",\r
+            "idka",\r
+            "idml",\r
+            "idnu",\r
+            "idpp",\r
+            "idsl",\r
+            "idsm",\r
         }\r
-        LY{\r
-            "BA",\r
-            "BU",\r
-            "DR",\r
-            "GT",\r
-            "JA",\r
-            "JG",\r
-            "JI",\r
-            "JU",\r
-            "KF",\r
-            "MB",\r
-            "MI",\r
-            "MJ",\r
-            "MQ",\r
-            "NL",\r
-            "NQ",\r
-            "SB",\r
-            "SR",\r
-            "TB",\r
-            "WA",\r
-            "WD",\r
-            "WS",\r
-            "ZA",\r
+        IE{\r
+            "iec",\r
+            "iel",\r
+            "iem",\r
+            "ieu",\r
         }\r
-        MA{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
+        IL{\r
+            "ild",\r
+            "ilha",\r
+            "iljm",\r
+            "ilm",\r
+            "ilta",\r
+            "ilz",\r
         }\r
-        MA-01{\r
-            "CHE",\r
-            "FAH",\r
-            "LAR",\r
-            "TET",\r
-            "TNG",\r
+        IN{\r
+            "inan",\r
+            "inap",\r
+            "inar",\r
+            "inas",\r
+            "inbr",\r
+            "inch",\r
+            "inct",\r
+            "indd",\r
+            "indl",\r
+            "indn",\r
+            "inga",\r
+            "ingj",\r
+            "inhp",\r
+            "inhr",\r
+            "injh",\r
+            "injk",\r
+            "inka",\r
+            "inkl",\r
+            "inld",\r
+            "inmh",\r
+            "inml",\r
+            "inmn",\r
+            "inmp",\r
+            "inmz",\r
+            "innl",\r
+            "inor",\r
+            "inpb",\r
+            "inpy",\r
+            "inrj",\r
+            "insk",\r
+            "intg",\r
+            "intn",\r
+            "intr",\r
+            "inup",\r
+            "inut",\r
+            "inwb",\r
         }\r
-        MA-02{\r
-            "KEN",\r
-            "SIK",\r
+        IQ{\r
+            "iqan",\r
+            "iqar",\r
+            "iqba",\r
+            "iqbb",\r
+            "iqbg",\r
+            "iqda",\r
+            "iqdi",\r
+            "iqdq",\r
+            "iqka",\r
+            "iqki",\r
+            "iqma",\r
+            "iqmu",\r
+            "iqna",\r
+            "iqni",\r
+            "iqqa",\r
+            "iqsd",\r
+            "iqsu",\r
+            "iqwa",\r
         }\r
-        MA-03{\r
-            "HOC",\r
-            "TAO",\r
-            "TAZ",\r
+        IR{\r
+            "ir01",\r
+            "ir02",\r
+            "ir03",\r
+            "ir04",\r
+            "ir05",\r
+            "ir06",\r
+            "ir07",\r
+            "ir08",\r
+            "ir10",\r
+            "ir11",\r
+            "ir12",\r
+            "ir13",\r
+            "ir14",\r
+            "ir15",\r
+            "ir16",\r
+            "ir17",\r
+            "ir18",\r
+            "ir19",\r
+            "ir20",\r
+            "ir21",\r
+            "ir22",\r
+            "ir23",\r
+            "ir24",\r
+            "ir25",\r
+            "ir26",\r
+            "ir27",\r
+            "ir28",\r
+            "ir29",\r
+            "ir30",\r
+            "ir31",\r
+            "ir32",\r
         }\r
-        MA-04{\r
-            "BER",\r
-            "FIG",\r
-            "JRA",\r
-            "NAD",\r
-            "OUJ",\r
-            "TAI",\r
-        }\r
-        MA-05{\r
-            "BOM",\r
-            "FES",\r
-            "MOU",\r
-            "SEF",\r
-        }\r
-        MA-06{\r
-            "ERR",\r
-            "HAJ",\r
-            "IFR",\r
-            "KHN",\r
-            "MEK",\r
-        }\r
-        MA-07{\r
-            "KHE",\r
-            "RAB",\r
-            "SAL",\r
-            "SKH",\r
-        }\r
-        MA-08{\r
-            "CAS",\r
-            "MED",\r
-            "MOH",\r
-            "NOU",\r
-        }\r
-        MA-09{\r
-            "BES",\r
-            "KHO",\r
-            "SET",\r
+        IS{\r
+            "is1",\r
+            "is2",\r
+            "is3",\r
+            "is4",\r
+            "is5",\r
+            "is6",\r
+            "is7",\r
+            "is8",\r
         }\r
-        MA-10{\r
-            "JDI",\r
-            "SAF",\r
+        IT{\r
+            "it21",\r
+            "it23",\r
+            "it25",\r
+            "it32",\r
+            "it34",\r
+            "it36",\r
+            "it42",\r
+            "it45",\r
+            "it52",\r
+            "it55",\r
+            "it57",\r
+            "it62",\r
+            "it65",\r
+            "it67",\r
+            "it72",\r
+            "it75",\r
+            "it77",\r
+            "it78",\r
+            "it82",\r
+            "it88",\r
         }\r
-        MA-11{\r
-            "CHI",\r
-            "ESI",\r
-            "HAO",\r
-            "KES",\r
-            "MMD",\r
-            "MMN",\r
-            "SYB",\r
-        }\r
-        MA-12{\r
-            "AZI",\r
-            "BEM",\r
-        }\r
-        MA-13{\r
-            "AGD",\r
-            "CHT",\r
-            "INE",\r
-            "OUA",\r
-            "TAR",\r
-            "TIZ",\r
-            "ZAG",\r
-        }\r
-        MA-14{\r
-            "ASZ",\r
-            "ESM",\r
-            "GUE",\r
-            "TAT",\r
-            "TNT",\r
-        }\r
-        MA-15{\r
-            "BOD",\r
-            "LAA",\r
-        }\r
-        MA-16{\r
-            "AOU",\r
-            "OUD",\r
+        JM{\r
+            "jm01",\r
+            "jm02",\r
+            "jm03",\r
+            "jm04",\r
+            "jm05",\r
+            "jm06",\r
+            "jm07",\r
+            "jm08",\r
+            "jm09",\r
+            "jm10",\r
+            "jm11",\r
+            "jm12",\r
+            "jm13",\r
+            "jm14",\r
+        }\r
+        JO{\r
+            "joaj",\r
+            "joam",\r
+            "joaq",\r
+            "joat",\r
+            "joaz",\r
+            "joba",\r
+            "joir",\r
+            "joja",\r
+            "joka",\r
+            "joma",\r
+            "jomd",\r
+            "jomn",\r
+        }\r
+        JP{\r
+            "jp01",\r
+            "jp02",\r
+            "jp03",\r
+            "jp04",\r
+            "jp05",\r
+            "jp06",\r
+            "jp07",\r
+            "jp08",\r
+            "jp09",\r
+            "jp10",\r
+            "jp11",\r
+            "jp12",\r
+            "jp13",\r
+            "jp14",\r
+            "jp15",\r
+            "jp16",\r
+            "jp17",\r
+            "jp18",\r
+            "jp19",\r
+            "jp20",\r
+            "jp21",\r
+            "jp22",\r
+            "jp23",\r
+            "jp24",\r
+            "jp25",\r
+            "jp26",\r
+            "jp27",\r
+            "jp28",\r
+            "jp29",\r
+            "jp30",\r
+            "jp31",\r
+            "jp32",\r
+            "jp33",\r
+            "jp34",\r
+            "jp35",\r
+            "jp36",\r
+            "jp37",\r
+            "jp38",\r
+            "jp39",\r
+            "jp40",\r
+            "jp41",\r
+            "jp42",\r
+            "jp43",\r
+            "jp44",\r
+            "jp45",\r
+            "jp46",\r
+            "jp47",\r
+        }\r
+        KE{\r
+            "ke01",\r
+            "ke02",\r
+            "ke03",\r
+            "ke04",\r
+            "ke05",\r
+            "ke06",\r
+            "ke07",\r
+            "ke08",\r
+            "ke09",\r
+            "ke10",\r
+            "ke11",\r
+            "ke12",\r
+            "ke13",\r
+            "ke14",\r
+            "ke15",\r
+            "ke16",\r
+            "ke17",\r
+            "ke18",\r
+            "ke19",\r
+            "ke20",\r
+            "ke21",\r
+            "ke22",\r
+            "ke23",\r
+            "ke24",\r
+            "ke25",\r
+            "ke26",\r
+            "ke27",\r
+            "ke28",\r
+            "ke29",\r
+            "ke30",\r
+            "ke31",\r
+            "ke32",\r
+            "ke33",\r
+            "ke34",\r
+            "ke35",\r
+            "ke36",\r
+            "ke37",\r
+            "ke38",\r
+            "ke39",\r
+            "ke40",\r
+            "ke41",\r
+            "ke42",\r
+            "ke43",\r
+            "ke44",\r
+            "ke45",\r
+            "ke46",\r
+            "ke47",\r
+        }\r
+        KG{\r
+            "kgb",\r
+            "kgc",\r
+            "kggb",\r
+            "kggo",\r
+            "kgj",\r
+            "kgn",\r
+            "kgo",\r
+            "kgt",\r
+            "kgy",\r
+        }\r
+        KH{\r
+            "kh1",\r
+            "kh2",\r
+            "kh3",\r
+            "kh4",\r
+            "kh5",\r
+            "kh6",\r
+            "kh7",\r
+            "kh8",\r
+            "kh9",\r
+            "kh10",\r
+            "kh11",\r
+            "kh12",\r
+            "kh13",\r
+            "kh14",\r
+            "kh15",\r
+            "kh16",\r
+            "kh17",\r
+            "kh18",\r
+            "kh19",\r
+            "kh20",\r
+            "kh21",\r
+            "kh22",\r
+            "kh23",\r
+            "kh24",\r
+            "kh25",\r
+        }\r
+        KI{\r
+            "kig",\r
+            "kil",\r
+            "kip",\r
+        }\r
+        KM{\r
+            "kma",\r
+            "kmg",\r
+            "kmm",\r
+        }\r
+        KN{\r
+            "knk",\r
+            "knn",\r
+        }\r
+        KP{\r
+            "kp01",\r
+            "kp02",\r
+            "kp03",\r
+            "kp04",\r
+            "kp05",\r
+            "kp06",\r
+            "kp07",\r
+            "kp08",\r
+            "kp09",\r
+            "kp10",\r
+            "kp13",\r
+        }\r
+        KR{\r
+            "kr11",\r
+            "kr26",\r
+            "kr27",\r
+            "kr28",\r
+            "kr29",\r
+            "kr30",\r
+            "kr31",\r
+            "kr41",\r
+            "kr42",\r
+            "kr43",\r
+            "kr44",\r
+            "kr45",\r
+            "kr46",\r
+            "kr47",\r
+            "kr48",\r
+            "kr49",\r
+            "kr50",\r
+        }\r
+        KW{\r
+            "kwah",\r
+            "kwfa",\r
+            "kwha",\r
+            "kwja",\r
+            "kwku",\r
+            "kwmu",\r
+        }\r
+        KZ{\r
+            "kzakm",\r
+            "kzakt",\r
+            "kzala",\r
+            "kzalm",\r
+            "kzast",\r
+            "kzaty",\r
+            "kzbay",\r
+            "kzkar",\r
+            "kzkus",\r
+            "kzkzy",\r
+            "kzman",\r
+            "kzpav",\r
+            "kzsev",\r
+            "kzvos",\r
+            "kzyuz",\r
+            "kzzap",\r
+            "kzzha",\r
+        }\r
+        LA{\r
+            "laat",\r
+            "labk",\r
+            "labl",\r
+            "lach",\r
+            "laho",\r
+            "lakh",\r
+            "lalm",\r
+            "lalp",\r
+            "laou",\r
+            "laph",\r
+            "lasl",\r
+            "lasv",\r
+            "lavi",\r
+            "lavt",\r
+            "laxa",\r
+            "laxe",\r
+            "laxi",\r
+            "laxs",\r
+        }\r
+        LB{\r
+            "lbak",\r
+            "lbas",\r
+            "lbba",\r
+            "lbbh",\r
+            "lbbi",\r
+            "lbja",\r
+            "lbjl",\r
+            "lbna",\r
+        }\r
+        LC{\r
+            "lc01",\r
+            "lc02",\r
+            "lc03",\r
+            "lc05",\r
+            "lc06",\r
+            "lc07",\r
+            "lc08",\r
+            "lc10",\r
+            "lc11",\r
+            "lc12",\r
+        }\r
+        LI{\r
+            "li01",\r
+            "li02",\r
+            "li03",\r
+            "li04",\r
+            "li05",\r
+            "li06",\r
+            "li07",\r
+            "li08",\r
+            "li09",\r
+            "li10",\r
+            "li11",\r
+        }\r
+        LK{\r
+            "lk1",\r
+            "lk2",\r
+            "lk3",\r
+            "lk4",\r
+            "lk5",\r
+            "lk6",\r
+            "lk7",\r
+            "lk8",\r
+            "lk9",\r
+        }\r
+        LR{\r
+            "lrbg",\r
+            "lrbm",\r
+            "lrcm",\r
+            "lrgb",\r
+            "lrgg",\r
+            "lrgk",\r
+            "lrgp",\r
+            "lrlo",\r
+            "lrmg",\r
+            "lrmo",\r
+            "lrmy",\r
+            "lrni",\r
+            "lrrg",\r
+            "lrri",\r
+            "lrsi",\r
+        }\r
+        LS{\r
+            "lsa",\r
+            "lsb",\r
+            "lsc",\r
+            "lsd",\r
+            "lse",\r
+            "lsf",\r
+            "lsg",\r
+            "lsh",\r
+            "lsj",\r
+            "lsk",\r
+        }\r
+        LT{\r
+            "lt01",\r
+            "lt02",\r
+            "lt03",\r
+            "lt04",\r
+            "lt05",\r
+            "lt06",\r
+            "lt07",\r
+            "lt08",\r
+            "lt09",\r
+            "lt10",\r
+            "lt11",\r
+            "lt12",\r
+            "lt13",\r
+            "lt14",\r
+            "lt15",\r
+            "lt16",\r
+            "lt17",\r
+            "lt18",\r
+            "lt19",\r
+            "lt20",\r
+            "lt21",\r
+            "lt22",\r
+            "lt23",\r
+            "lt24",\r
+            "lt25",\r
+            "lt26",\r
+            "lt27",\r
+            "lt28",\r
+            "lt29",\r
+            "lt30",\r
+            "lt31",\r
+            "lt32",\r
+            "lt33",\r
+            "lt34",\r
+            "lt35",\r
+            "lt36",\r
+            "lt37",\r
+            "lt38",\r
+            "lt39",\r
+            "lt40",\r
+            "lt41",\r
+            "lt42",\r
+            "lt43",\r
+            "lt44",\r
+            "lt45",\r
+            "lt46",\r
+            "lt47",\r
+            "lt48",\r
+            "lt49",\r
+            "lt50",\r
+            "lt51",\r
+            "lt52",\r
+            "lt53",\r
+            "lt54",\r
+            "lt55",\r
+            "lt56",\r
+            "lt57",\r
+            "lt58",\r
+            "lt59",\r
+            "lt60",\r
+            "ltal",\r
+            "ltkl",\r
+            "ltku",\r
+            "ltmr",\r
+            "ltpn",\r
+            "ltsa",\r
+            "ltta",\r
+            "ltte",\r
+            "ltut",\r
+            "ltvl",\r
+        }\r
+        LU{\r
+            "luca",\r
+            "lucl",\r
+            "ludi",\r
+            "luec",\r
+            "lues",\r
+            "lugr",\r
+            "lulu",\r
+            "lume",\r
+            "lurd",\r
+            "lurm",\r
+            "luvd",\r
+            "luwi",\r
+        }\r
+        LV{\r
+            "lv001",\r
+            "lv002",\r
+            "lv003",\r
+            "lv004",\r
+            "lv005",\r
+            "lv006",\r
+            "lv007",\r
+            "lv008",\r
+            "lv009",\r
+            "lv010",\r
+            "lv011",\r
+            "lv012",\r
+            "lv013",\r
+            "lv014",\r
+            "lv015",\r
+            "lv016",\r
+            "lv017",\r
+            "lv018",\r
+            "lv019",\r
+            "lv020",\r
+            "lv021",\r
+            "lv022",\r
+            "lv023",\r
+            "lv024",\r
+            "lv025",\r
+            "lv026",\r
+            "lv027",\r
+            "lv028",\r
+            "lv029",\r
+            "lv030",\r
+            "lv031",\r
+            "lv032",\r
+            "lv033",\r
+            "lv034",\r
+            "lv035",\r
+            "lv036",\r
+            "lv037",\r
+            "lv038",\r
+            "lv039",\r
+            "lv040",\r
+            "lv041",\r
+            "lv042",\r
+            "lv043",\r
+            "lv044",\r
+            "lv045",\r
+            "lv046",\r
+            "lv047",\r
+            "lv048",\r
+            "lv049",\r
+            "lv050",\r
+            "lv051",\r
+            "lv052",\r
+            "lv053",\r
+            "lv054",\r
+            "lv055",\r
+            "lv056",\r
+            "lv057",\r
+            "lv058",\r
+            "lv059",\r
+            "lv060",\r
+            "lv061",\r
+            "lv062",\r
+            "lv063",\r
+            "lv064",\r
+            "lv065",\r
+            "lv066",\r
+            "lv067",\r
+            "lv068",\r
+            "lv069",\r
+            "lv070",\r
+            "lv071",\r
+            "lv072",\r
+            "lv073",\r
+            "lv074",\r
+            "lv075",\r
+            "lv076",\r
+            "lv077",\r
+            "lv078",\r
+            "lv079",\r
+            "lv080",\r
+            "lv081",\r
+            "lv082",\r
+            "lv083",\r
+            "lv084",\r
+            "lv085",\r
+            "lv086",\r
+            "lv087",\r
+            "lv088",\r
+            "lv089",\r
+            "lv090",\r
+            "lv091",\r
+            "lv092",\r
+            "lv093",\r
+            "lv094",\r
+            "lv095",\r
+            "lv096",\r
+            "lv097",\r
+            "lv098",\r
+            "lv099",\r
+            "lv100",\r
+            "lv101",\r
+            "lv102",\r
+            "lv103",\r
+            "lv104",\r
+            "lv105",\r
+            "lv106",\r
+            "lv107",\r
+            "lv108",\r
+            "lv109",\r
+            "lv110",\r
+            "lvdgv",\r
+            "lvjel",\r
+            "lvjkb",\r
+            "lvjur",\r
+            "lvlpx",\r
+            "lvrez",\r
+            "lvrix",\r
+            "lvven",\r
+            "lvvmr",\r
+        }\r
+        LY{\r
+            "lyba",\r
+            "lybu",\r
+            "lydr",\r
+            "lygt",\r
+            "lyja",\r
+            "lyjg",\r
+            "lyji",\r
+            "lyju",\r
+            "lykf",\r
+            "lymb",\r
+            "lymi",\r
+            "lymj",\r
+            "lymq",\r
+            "lynl",\r
+            "lynq",\r
+            "lysb",\r
+            "lysr",\r
+            "lytb",\r
+            "lywa",\r
+            "lywd",\r
+            "lyws",\r
+            "lyza",\r
+        }\r
+        MA{\r
+            "ma01",\r
+            "ma02",\r
+            "ma03",\r
+            "ma04",\r
+            "ma05",\r
+            "ma06",\r
+            "ma07",\r
+            "ma08",\r
+            "ma09",\r
+            "ma10",\r
+            "ma11",\r
+            "ma12",\r
+            "ma13",\r
+            "ma14",\r
+            "ma15",\r
+            "ma16",\r
         }\r
         MC{\r
-            "CL",\r
-            "CO",\r
-            "FO",\r
-            "GA",\r
-            "JE",\r
-            "LA",\r
-            "MA",\r
-            "MC",\r
-            "MG",\r
-            "MO",\r
-            "MU",\r
-            "PH",\r
-            "SD",\r
-            "SO",\r
-            "SP",\r
-            "SR",\r
-            "VR",\r
+            "mccl",\r
+            "mcco",\r
+            "mcfo",\r
+            "mcga",\r
+            "mcje",\r
+            "mcla",\r
+            "mcma",\r
+            "mcmc",\r
+            "mcmg",\r
+            "mcmo",\r
+            "mcmu",\r
+            "mcph",\r
+            "mcsd",\r
+            "mcso",\r
+            "mcsp",\r
+            "mcsr",\r
+            "mcvr",\r
         }\r
         MD{\r
-            "AN",\r
-            "BA",\r
-            "BD",\r
-            "BR",\r
-            "BS",\r
-            "CA",\r
-            "CL",\r
-            "CM",\r
-            "CR",\r
-            "CS",\r
-            "CT",\r
-            "CU",\r
-            "DO",\r
-            "DR",\r
-            "DU",\r
-            "ED",\r
-            "FA",\r
-            "FL",\r
-            "GA",\r
-            "GL",\r
-            "HI",\r
-            "IA",\r
-            "LE",\r
-            "NI",\r
-            "OC",\r
-            "OR",\r
-            "RE",\r
-            "RI",\r
-            "SD",\r
-            "SI",\r
-            "SN",\r
-            "SO",\r
-            "ST",\r
-            "SV",\r
-            "TA",\r
-            "TE",\r
-            "UN",\r
+            "mdan",\r
+            "mdba",\r
+            "mdbd",\r
+            "mdbr",\r
+            "mdbs",\r
+            "mdca",\r
+            "mdcl",\r
+            "mdcm",\r
+            "mdcr",\r
+            "mdcs",\r
+            "mdct",\r
+            "mdcu",\r
+            "mddo",\r
+            "mddr",\r
+            "mddu",\r
+            "mded",\r
+            "mdfa",\r
+            "mdfl",\r
+            "mdga",\r
+            "mdgl",\r
+            "mdhi",\r
+            "mdia",\r
+            "mdle",\r
+            "mdni",\r
+            "mdoc",\r
+            "mdor",\r
+            "mdre",\r
+            "mdri",\r
+            "mdsd",\r
+            "mdsi",\r
+            "mdsn",\r
+            "mdso",\r
+            "mdst",\r
+            "mdsv",\r
+            "mdta",\r
+            "mdte",\r
+            "mdun",\r
         }\r
         ME{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
+            "me01",\r
+            "me02",\r
+            "me03",\r
+            "me04",\r
+            "me05",\r
+            "me06",\r
+            "me07",\r
+            "me08",\r
+            "me09",\r
+            "me10",\r
+            "me11",\r
+            "me12",\r
+            "me13",\r
+            "me14",\r
+            "me15",\r
+            "me16",\r
+            "me17",\r
+            "me18",\r
+            "me19",\r
+            "me20",\r
+            "me21",\r
+            "me22",\r
+            "me23",\r
         }\r
         MG{\r
-            "A",\r
-            "D",\r
-            "F",\r
-            "M",\r
-            "T",\r
-            "U",\r
+            "mga",\r
+            "mgd",\r
+            "mgf",\r
+            "mgm",\r
+            "mgt",\r
+            "mgu",\r
         }\r
         MH{\r
-            "L",\r
-            "T",\r
-        }\r
-        MH-L{\r
-            "ALL",\r
-            "EBO",\r
-            "ENI",\r
-            "JAB",\r
-            "JAL",\r
-            "KIL",\r
-            "KWA",\r
-            "LAE",\r
-            "LIB",\r
-            "NMK",\r
-            "NMU",\r
-            "RON",\r
-            "UJA",\r
-            "WTH",\r
-        }\r
-        MH-T{\r
-            "ALK",\r
-            "ARN",\r
-            "AUR",\r
-            "LIK",\r
-            "MAJ",\r
-            "MAL",\r
-            "MEJ",\r
-            "MIL",\r
-            "UTI",\r
-            "WTJ",\r
+            "mhl",\r
+            "mht",\r
         }\r
         MK{\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "16",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "30",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "40",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
-            "48",\r
-            "49",\r
-            "50",\r
-            "51",\r
-            "52",\r
-            "53",\r
-            "54",\r
-            "55",\r
-            "56",\r
-            "58",\r
-            "59",\r
-            "60",\r
-            "61",\r
-            "62",\r
-            "63",\r
-            "64",\r
-            "65",\r
-            "66",\r
-            "67",\r
-            "69",\r
-            "70",\r
-            "71",\r
-            "72",\r
-            "73",\r
-            "74",\r
-            "75",\r
-            "76",\r
-            "78",\r
-            "80",\r
-            "81",\r
-            "82",\r
-            "83",\r
-            "85",\r
+            "mk02",\r
+            "mk03",\r
+            "mk04",\r
+            "mk05",\r
+            "mk06",\r
+            "mk07",\r
+            "mk08",\r
+            "mk10",\r
+            "mk11",\r
+            "mk12",\r
+            "mk13",\r
+            "mk14",\r
+            "mk16",\r
+            "mk18",\r
+            "mk19",\r
+            "mk20",\r
+            "mk21",\r
+            "mk22",\r
+            "mk23",\r
+            "mk24",\r
+            "mk25",\r
+            "mk26",\r
+            "mk27",\r
+            "mk30",\r
+            "mk32",\r
+            "mk33",\r
+            "mk34",\r
+            "mk35",\r
+            "mk36",\r
+            "mk37",\r
+            "mk40",\r
+            "mk41",\r
+            "mk42",\r
+            "mk43",\r
+            "mk44",\r
+            "mk45",\r
+            "mk46",\r
+            "mk47",\r
+            "mk48",\r
+            "mk49",\r
+            "mk50",\r
+            "mk51",\r
+            "mk52",\r
+            "mk53",\r
+            "mk54",\r
+            "mk55",\r
+            "mk56",\r
+            "mk58",\r
+            "mk59",\r
+            "mk60",\r
+            "mk61",\r
+            "mk62",\r
+            "mk63",\r
+            "mk64",\r
+            "mk65",\r
+            "mk66",\r
+            "mk67",\r
+            "mk69",\r
+            "mk70",\r
+            "mk71",\r
+            "mk72",\r
+            "mk73",\r
+            "mk74",\r
+            "mk75",\r
+            "mk76",\r
+            "mk78",\r
+            "mk80",\r
+            "mk81",\r
+            "mk82",\r
+            "mk83",\r
+            "mk85",\r
         }\r
         ML{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-            "6",\r
-            "7",\r
-            "8",\r
-            "BKO",\r
+            "ml1",\r
+            "ml2",\r
+            "ml3",\r
+            "ml4",\r
+            "ml5",\r
+            "ml6",\r
+            "ml7",\r
+            "ml8",\r
+            "mlbko",\r
         }\r
         MM{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
+            "mm01",\r
+            "mm02",\r
+            "mm03",\r
+            "mm04",\r
+            "mm05",\r
+            "mm06",\r
+            "mm07",\r
+            "mm11",\r
+            "mm12",\r
+            "mm13",\r
+            "mm14",\r
+            "mm15",\r
+            "mm16",\r
+            "mm17",\r
+            "mm18",\r
         }\r
         MN{\r
-            "1",\r
-            "035",\r
-            "037",\r
-            "039",\r
-            "041",\r
-            "043",\r
-            "046",\r
-            "047",\r
-            "049",\r
-            "051",\r
-            "053",\r
-            "055",\r
-            "057",\r
-            "059",\r
-            "061",\r
-            "063",\r
-            "064",\r
-            "065",\r
-            "067",\r
-            "069",\r
-            "071",\r
-            "073",\r
+            "mn1",\r
+            "mn035",\r
+            "mn037",\r
+            "mn039",\r
+            "mn041",\r
+            "mn043",\r
+            "mn046",\r
+            "mn047",\r
+            "mn049",\r
+            "mn051",\r
+            "mn053",\r
+            "mn055",\r
+            "mn057",\r
+            "mn059",\r
+            "mn061",\r
+            "mn063",\r
+            "mn064",\r
+            "mn065",\r
+            "mn067",\r
+            "mn069",\r
+            "mn071",\r
+            "mn073",\r
         }\r
         MR{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
+            "mr01",\r
+            "mr02",\r
+            "mr03",\r
+            "mr04",\r
+            "mr05",\r
+            "mr06",\r
+            "mr07",\r
+            "mr08",\r
+            "mr09",\r
+            "mr10",\r
+            "mr11",\r
+            "mr12",\r
+            "mr13",\r
+            "mr14",\r
+            "mr15",\r
         }\r
         MT{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "38",\r
-            "39",\r
-            "40",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
-            "48",\r
-            "49",\r
-            "50",\r
-            "51",\r
-            "52",\r
-            "53",\r
-            "54",\r
-            "55",\r
-            "56",\r
-            "57",\r
-            "58",\r
-            "59",\r
-            "60",\r
-            "61",\r
-            "62",\r
-            "63",\r
-            "64",\r
-            "65",\r
-            "66",\r
-            "67",\r
-            "68",\r
+            "mt01",\r
+            "mt02",\r
+            "mt03",\r
+            "mt04",\r
+            "mt05",\r
+            "mt06",\r
+            "mt07",\r
+            "mt08",\r
+            "mt09",\r
+            "mt10",\r
+            "mt11",\r
+            "mt12",\r
+            "mt13",\r
+            "mt14",\r
+            "mt15",\r
+            "mt16",\r
+            "mt17",\r
+            "mt18",\r
+            "mt19",\r
+            "mt20",\r
+            "mt21",\r
+            "mt22",\r
+            "mt23",\r
+            "mt24",\r
+            "mt25",\r
+            "mt26",\r
+            "mt27",\r
+            "mt28",\r
+            "mt29",\r
+            "mt30",\r
+            "mt31",\r
+            "mt32",\r
+            "mt33",\r
+            "mt34",\r
+            "mt35",\r
+            "mt36",\r
+            "mt37",\r
+            "mt38",\r
+            "mt39",\r
+            "mt40",\r
+            "mt41",\r
+            "mt42",\r
+            "mt43",\r
+            "mt44",\r
+            "mt45",\r
+            "mt46",\r
+            "mt47",\r
+            "mt48",\r
+            "mt49",\r
+            "mt50",\r
+            "mt51",\r
+            "mt52",\r
+            "mt53",\r
+            "mt54",\r
+            "mt55",\r
+            "mt56",\r
+            "mt57",\r
+            "mt58",\r
+            "mt59",\r
+            "mt60",\r
+            "mt61",\r
+            "mt62",\r
+            "mt63",\r
+            "mt64",\r
+            "mt65",\r
+            "mt66",\r
+            "mt67",\r
+            "mt68",\r
         }\r
         MU{\r
-            "AG",\r
-            "BL",\r
-            "BR",\r
-            "CC",\r
-            "CU",\r
-            "FL",\r
-            "GP",\r
-            "MO",\r
-            "PA",\r
-            "PL",\r
-            "PU",\r
-            "PW",\r
-            "QB",\r
-            "RO",\r
-            "RR",\r
-            "SA",\r
-            "VP",\r
+            "muag",\r
+            "mubl",\r
+            "mubr",\r
+            "mucc",\r
+            "mucu",\r
+            "mufl",\r
+            "mugp",\r
+            "mumo",\r
+            "mupa",\r
+            "mupl",\r
+            "mupu",\r
+            "mupw",\r
+            "muqb",\r
+            "muro",\r
+            "murr",\r
+            "musa",\r
+            "muvp",\r
         }\r
         MV{\r
-            "CE",\r
-            "MLE",\r
-            "NC",\r
-            "NO",\r
-            "SC",\r
-            "SU",\r
-            "UN",\r
-            "US",\r
-        }\r
-        MV-CE{\r
-            "12",\r
-            "14",\r
-            "17",\r
-        }\r
-        MV-NC{\r
-            "00",\r
-            "02",\r
-            "04",\r
-            "26",\r
-        }\r
-        MV-NO{\r
-            "03",\r
-            "13",\r
-            "20",\r
-            "25",\r
-        }\r
-        MV-SC{\r
-            "27",\r
-            "28",\r
-        }\r
-        MV-SU{\r
-            "01",\r
-            "29",\r
-        }\r
-        MV-UN{\r
-            "07",\r
-            "23",\r
-            "24",\r
-        }\r
-        MV-US{\r
-            "05",\r
-            "08",\r
+            "mvce",\r
+            "mvmle",\r
+            "mvnc",\r
+            "mvno",\r
+            "mvsc",\r
+            "mvsu",\r
+            "mvun",\r
+            "mvus",\r
         }\r
         MW{\r
-            "C",\r
-            "N",\r
-            "S",\r
-        }\r
-        MW-C{\r
-            "DE",\r
-            "DO",\r
-            "KS",\r
-            "LI",\r
-            "MC",\r
-            "NI",\r
-            "NK",\r
-            "NU",\r
-            "SA",\r
-        }\r
-        MW-N{\r
-            "CT",\r
-            "KR",\r
-            "LK",\r
-            "MZ",\r
-            "NB",\r
-            "RU",\r
-        }\r
-        MW-S{\r
-            "BA",\r
-            "BL",\r
-            "CK",\r
-            "CR",\r
-            "MG",\r
-            "MH",\r
-            "MU",\r
-            "MW",\r
-            "NE",\r
-            "NS",\r
-            "PH",\r
-            "TH",\r
-            "ZO",\r
+            "mwc",\r
+            "mwn",\r
+            "mws",\r
         }\r
         MX{\r
-            "AGU",\r
-            "BCN",\r
-            "BCS",\r
-            "CAM",\r
-            "CHH",\r
-            "CHP",\r
-            "COA",\r
-            "COL",\r
-            "DIF",\r
-            "DUR",\r
-            "GRO",\r
-            "GUA",\r
-            "HID",\r
-            "JAL",\r
-            "MEX",\r
-            "MIC",\r
-            "MOR",\r
-            "NAY",\r
-            "NLE",\r
-            "OAX",\r
-            "PUE",\r
-            "QUE",\r
-            "ROO",\r
-            "SIN",\r
-            "SLP",\r
-            "SON",\r
-            "TAB",\r
-            "TAM",\r
-            "TLA",\r
-            "VER",\r
-            "YUC",\r
-            "ZAC",\r
+            "mxagu",\r
+            "mxbcn",\r
+            "mxbcs",\r
+            "mxcam",\r
+            "mxchh",\r
+            "mxchp",\r
+            "mxcmx",\r
+            "mxcoa",\r
+            "mxcol",\r
+            "mxdur",\r
+            "mxgro",\r
+            "mxgua",\r
+            "mxhid",\r
+            "mxjal",\r
+            "mxmex",\r
+            "mxmic",\r
+            "mxmor",\r
+            "mxnay",\r
+            "mxnle",\r
+            "mxoax",\r
+            "mxpue",\r
+            "mxque",\r
+            "mxroo",\r
+            "mxsin",\r
+            "mxslp",\r
+            "mxson",\r
+            "mxtab",\r
+            "mxtam",\r
+            "mxtla",\r
+            "mxver",\r
+            "mxyuc",\r
+            "mxzac",\r
         }\r
         MY{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
+            "my01",\r
+            "my02",\r
+            "my03",\r
+            "my04",\r
+            "my05",\r
+            "my06",\r
+            "my07",\r
+            "my08",\r
+            "my09",\r
+            "my10",\r
+            "my11",\r
+            "my12",\r
+            "my13",\r
+            "my14",\r
+            "my15",\r
+            "my16",\r
         }\r
         MZ{\r
-            "A",\r
-            "B",\r
-            "G",\r
-            "I",\r
-            "L",\r
-            "MPM",\r
-            "N",\r
-            "P",\r
-            "Q",\r
-            "S",\r
-            "T",\r
+            "mza",\r
+            "mzb",\r
+            "mzg",\r
+            "mzi",\r
+            "mzl",\r
+            "mzmpm",\r
+            "mzn",\r
+            "mzp",\r
+            "mzq",\r
+            "mzs",\r
+            "mzt",\r
         }\r
         NA{\r
-            "CA",\r
-            "ER",\r
-            "HA",\r
-            "KA",\r
-            "KE",\r
-            "KH",\r
-            "KU",\r
-            "KW",\r
-            "OD",\r
-            "OH",\r
-            "ON",\r
-            "OS",\r
-            "OT",\r
-            "OW",\r
+            "naca",\r
+            "naer",\r
+            "naha",\r
+            "naka",\r
+            "nake",\r
+            "nakh",\r
+            "naku",\r
+            "nakw",\r
+            "naod",\r
+            "naoh",\r
+            "naon",\r
+            "naos",\r
+            "naot",\r
+            "naow",\r
         }\r
         NE{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-            "6",\r
-            "7",\r
-            "8",\r
+            "ne1",\r
+            "ne2",\r
+            "ne3",\r
+            "ne4",\r
+            "ne5",\r
+            "ne6",\r
+            "ne7",\r
+            "ne8",\r
         }\r
         NG{\r
-            "AB",\r
-            "AD",\r
-            "AK",\r
-            "AN",\r
-            "BA",\r
-            "BE",\r
-            "BO",\r
-            "BY",\r
-            "CR",\r
-            "DE",\r
-            "EB",\r
-            "ED",\r
-            "EK",\r
-            "EN",\r
-            "FC",\r
-            "GO",\r
-            "IM",\r
-            "JI",\r
-            "KD",\r
-            "KE",\r
-            "KN",\r
-            "KO",\r
-            "KT",\r
-            "KW",\r
-            "LA",\r
-            "NA",\r
-            "NI",\r
-            "OG",\r
-            "ON",\r
-            "OS",\r
-            "OY",\r
-            "PL",\r
-            "RI",\r
-            "SO",\r
-            "TA",\r
-            "YO",\r
-            "ZA",\r
+            "ngab",\r
+            "ngad",\r
+            "ngak",\r
+            "ngan",\r
+            "ngba",\r
+            "ngbe",\r
+            "ngbo",\r
+            "ngby",\r
+            "ngcr",\r
+            "ngde",\r
+            "ngeb",\r
+            "nged",\r
+            "ngek",\r
+            "ngen",\r
+            "ngfc",\r
+            "nggo",\r
+            "ngim",\r
+            "ngji",\r
+            "ngkd",\r
+            "ngke",\r
+            "ngkn",\r
+            "ngko",\r
+            "ngkt",\r
+            "ngkw",\r
+            "ngla",\r
+            "ngna",\r
+            "ngni",\r
+            "ngog",\r
+            "ngon",\r
+            "ngos",\r
+            "ngoy",\r
+            "ngpl",\r
+            "ngri",\r
+            "ngso",\r
+            "ngta",\r
+            "ngyo",\r
+            "ngza",\r
         }\r
         NI{\r
-            "AN",\r
-            "AS",\r
-            "BO",\r
-            "CA",\r
-            "CI",\r
-            "CO",\r
-            "ES",\r
-            "GR",\r
-            "JI",\r
-            "LE",\r
-            "MD",\r
-            "MN",\r
-            "MS",\r
-            "MT",\r
-            "NS",\r
-            "RI",\r
-            "SJ",\r
+            "nian",\r
+            "nias",\r
+            "nibo",\r
+            "nica",\r
+            "nici",\r
+            "nico",\r
+            "nies",\r
+            "nigr",\r
+            "niji",\r
+            "nile",\r
+            "nimd",\r
+            "nimn",\r
+            "nims",\r
+            "nimt",\r
+            "nins",\r
+            "niri",\r
+            "nisj",\r
         }\r
         NL{\r
-            "AW",\r
-            "BQ1",\r
-            "BQ2",\r
-            "BQ3",\r
-            "CW",\r
-            "DR",\r
-            "FL",\r
-            "FR",\r
-            "GE",\r
-            "GR",\r
-            "LI",\r
-            "NB",\r
-            "NH",\r
-            "OV",\r
-            "SX",\r
-            "UT",\r
-            "ZE",\r
-            "ZH",\r
-        }\r
-        NO{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-        }\r
-        NP{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-        }\r
-        NP-1{\r
-            "BA",\r
-            "JA",\r
-            "NA",\r
-        }\r
-        NP-2{\r
-            "BH",\r
-            "KA",\r
-            "RA",\r
-        }\r
-        NP-3{\r
-            "DH",\r
-            "GA",\r
-            "LU",\r
+            "nlaw",\r
+            "nlbq1",\r
+            "nlbq2",\r
+            "nlbq3",\r
+            "nlcw",\r
+            "nldr",\r
+            "nlfl",\r
+            "nlfr",\r
+            "nlge",\r
+            "nlgr",\r
+            "nlli",\r
+            "nlnb",\r
+            "nlnh",\r
+            "nlov",\r
+            "nlsx",\r
+            "nlut",\r
+            "nlze",\r
+            "nlzh",\r
         }\r
-        NP-4{\r
-            "KO",\r
-            "ME",\r
-            "SA",\r
+        NO{\r
+            "no01",\r
+            "no02",\r
+            "no03",\r
+            "no04",\r
+            "no05",\r
+            "no06",\r
+            "no07",\r
+            "no08",\r
+            "no09",\r
+            "no10",\r
+            "no11",\r
+            "no12",\r
+            "no14",\r
+            "no15",\r
+            "no16",\r
+            "no17",\r
+            "no18",\r
+            "no19",\r
+            "no20",\r
+            "no21",\r
+            "no22",\r
         }\r
-        NP-5{\r
-            "MA",\r
-            "SE",\r
+        NP{\r
+            "np1",\r
+            "np2",\r
+            "np3",\r
+            "np4",\r
+            "np5",\r
         }\r
         NR{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
+            "nr01",\r
+            "nr02",\r
+            "nr03",\r
+            "nr04",\r
+            "nr05",\r
+            "nr06",\r
+            "nr07",\r
+            "nr08",\r
+            "nr09",\r
+            "nr10",\r
+            "nr11",\r
+            "nr12",\r
+            "nr13",\r
+            "nr14",\r
         }\r
         NZ{\r
-            "AUK",\r
-            "BOP",\r
-            "CAN",\r
-            "CIT",\r
-            "GIS",\r
-            "HKB",\r
-            "MBH",\r
-            "MWT",\r
-            "NSN",\r
-            "NTL",\r
-            "OTA",\r
-            "STL",\r
-            "TAS",\r
-            "TKI",\r
-            "WGN",\r
-            "WKO",\r
-            "WTC",\r
+            "nzauk",\r
+            "nzbop",\r
+            "nzcan",\r
+            "nzcit",\r
+            "nzgis",\r
+            "nzhkb",\r
+            "nzmbh",\r
+            "nzmwt",\r
+            "nznsn",\r
+            "nzntl",\r
+            "nzota",\r
+            "nzstl",\r
+            "nztas",\r
+            "nztki",\r
+            "nzwgn",\r
+            "nzwko",\r
+            "nzwtc",\r
         }\r
         OM{\r
-            "BJ",\r
-            "BS",\r
-            "BU",\r
-            "DA",\r
-            "MA",\r
-            "MU",\r
-            "SJ",\r
-            "SS",\r
-            "WU",\r
-            "ZA",\r
-            "ZU",\r
+            "ombj",\r
+            "ombs",\r
+            "ombu",\r
+            "omda",\r
+            "omma",\r
+            "ommu",\r
+            "omsj",\r
+            "omss",\r
+            "omwu",\r
+            "omza",\r
+            "omzu",\r
         }\r
         PA{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-            "6",\r
-            "7",\r
-            "8",\r
-            "9",\r
-            "10",\r
-            "EM",\r
-            "KY",\r
-            "NB",\r
+            "pa1",\r
+            "pa2",\r
+            "pa3",\r
+            "pa4",\r
+            "pa5",\r
+            "pa6",\r
+            "pa7",\r
+            "pa8",\r
+            "pa9",\r
+            "pa10",\r
+            "paem",\r
+            "paky",\r
+            "panb",\r
         }\r
         PE{\r
-            "AMA",\r
-            "ANC",\r
-            "APU",\r
-            "ARE",\r
-            "AYA",\r
-            "CAJ",\r
-            "CAL",\r
-            "CUS",\r
-            "HUC",\r
-            "HUV",\r
-            "ICA",\r
-            "JUN",\r
-            "LAL",\r
-            "LAM",\r
-            "LIM",\r
-            "LMA",\r
-            "LOR",\r
-            "MDD",\r
-            "MOQ",\r
-            "PAS",\r
-            "PIU",\r
-            "PUN",\r
-            "SAM",\r
-            "TAC",\r
-            "TUM",\r
-            "UCA",\r
+            "peama",\r
+            "peanc",\r
+            "peapu",\r
+            "peare",\r
+            "peaya",\r
+            "pecaj",\r
+            "pecal",\r
+            "pecus",\r
+            "pehuc",\r
+            "pehuv",\r
+            "peica",\r
+            "pejun",\r
+            "pelal",\r
+            "pelam",\r
+            "pelim",\r
+            "pelma",\r
+            "pelor",\r
+            "pemdd",\r
+            "pemoq",\r
+            "pepas",\r
+            "pepiu",\r
+            "pepun",\r
+            "pesam",\r
+            "petac",\r
+            "petum",\r
+            "peuca",\r
         }\r
         PG{\r
-            "CPK",\r
-            "CPM",\r
-            "EBR",\r
-            "EHG",\r
-            "EPW",\r
-            "ESW",\r
-            "GPK",\r
-            "HLA",\r
-            "JWK",\r
-            "MBA",\r
-            "MPL",\r
-            "MPM",\r
-            "MRL",\r
-            "NCD",\r
-            "NIK",\r
-            "NPP",\r
-            "NSB",\r
-            "SAN",\r
-            "SHM",\r
-            "WBK",\r
-            "WHM",\r
-            "WPD",\r
+            "pgcpk",\r
+            "pgcpm",\r
+            "pgebr",\r
+            "pgehg",\r
+            "pgepw",\r
+            "pgesw",\r
+            "pggpk",\r
+            "pghla",\r
+            "pgjwk",\r
+            "pgmba",\r
+            "pgmpl",\r
+            "pgmpm",\r
+            "pgmrl",\r
+            "pgncd",\r
+            "pgnik",\r
+            "pgnpp",\r
+            "pgnsb",\r
+            "pgsan",\r
+            "pgshm",\r
+            "pgwbk",\r
+            "pgwhm",\r
+            "pgwpd",\r
         }\r
         PH{\r
-            "00",\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "40",\r
-            "41",\r
-        }\r
-        PH-01{\r
-            "ILN",\r
-            "ILS",\r
-            "LUN",\r
-            "PAN",\r
-        }\r
-        PH-02{\r
-            "BTN",\r
-            "CAG",\r
-            "ISA",\r
-            "NUV",\r
-            "QUI",\r
-        }\r
-        PH-03{\r
-            "AUR",\r
-            "BAN",\r
-            "BUL",\r
-            "NUE",\r
-            "PAM",\r
-            "TAR",\r
-            "ZMB",\r
-        }\r
-        PH-05{\r
-            "ALB",\r
-            "CAN",\r
-            "CAS",\r
-            "CAT",\r
-            "MAS",\r
-            "SOR",\r
-        }\r
-        PH-06{\r
-            "AKL",\r
-            "ANT",\r
-            "CAP",\r
-            "GUI",\r
-            "ILI",\r
-            "NEC",\r
-        }\r
-        PH-07{\r
-            "BOH",\r
-            "CEB",\r
-            "NER",\r
-            "SIG",\r
-        }\r
-        PH-08{\r
-            "BIL",\r
-            "EAS",\r
-            "LEY",\r
-            "NSA",\r
-            "SLE",\r
-            "WSA",\r
-        }\r
-        PH-09{\r
-            "BAS",\r
-            "ZAN",\r
-            "ZAS",\r
-            "ZSI",\r
-        }\r
-        PH-10{\r
-            "BUK",\r
-            "CAM",\r
-            "MSC",\r
-            "MSR",\r
-        }\r
-        PH-11{\r
-            "COM",\r
-            "DAO",\r
-            "DAS",\r
-            "DAV",\r
-            "DVO",\r
-            "SAR",\r
-            "SCO",\r
-        }\r
-        PH-12{\r
-            "LAN",\r
-            "NCO",\r
-            "SUK",\r
-        }\r
-        PH-13{\r
-            "AGN",\r
-            "AGS",\r
-            "DIN",\r
-            "SUN",\r
-            "SUR",\r
-        }\r
-        PH-14{\r
-            "LAS",\r
-            "MAG",\r
-            "SLU",\r
-            "TAW",\r
-        }\r
-        PH-15{\r
-            "ABR",\r
-            "APA",\r
-            "BEN",\r
-            "IFU",\r
-            "KAL",\r
-            "MOU",\r
-        }\r
-        PH-40{\r
-            "BTG",\r
-            "CAV",\r
-            "LAG",\r
-            "QUE",\r
-            "RIZ",\r
-        }\r
-        PH-41{\r
-            "MAD",\r
-            "MDC",\r
-            "MDR",\r
-            "PLW",\r
-            "ROM",\r
+            "ph00",\r
+            "ph01",\r
+            "ph02",\r
+            "ph03",\r
+            "ph05",\r
+            "ph06",\r
+            "ph07",\r
+            "ph08",\r
+            "ph09",\r
+            "ph10",\r
+            "ph11",\r
+            "ph12",\r
+            "ph13",\r
+            "ph14",\r
+            "ph15",\r
+            "ph40",\r
+            "ph41",\r
         }\r
         PK{\r
-            "BA",\r
-            "GB",\r
-            "IS",\r
-            "JK",\r
-            "KP",\r
-            "PB",\r
-            "SD",\r
-            "TA",\r
+            "pkba",\r
+            "pkgb",\r
+            "pkis",\r
+            "pkjk",\r
+            "pkkp",\r
+            "pkpb",\r
+            "pksd",\r
+            "pkta",\r
         }\r
         PL{\r
-            "DS",\r
-            "KP",\r
-            "LB",\r
-            "LD",\r
-            "LU",\r
-            "MA",\r
-            "MZ",\r
-            "OP",\r
-            "PD",\r
-            "PK",\r
-            "PM",\r
-            "SK",\r
-            "SL",\r
-            "WN",\r
-            "WP",\r
-            "ZP",\r
+            "plds",\r
+            "plkp",\r
+            "pllb",\r
+            "plld",\r
+            "pllu",\r
+            "plma",\r
+            "plmz",\r
+            "plop",\r
+            "plpd",\r
+            "plpk",\r
+            "plpm",\r
+            "plsk",\r
+            "plsl",\r
+            "plwn",\r
+            "plwp",\r
+            "plzp",\r
         }\r
         PS{\r
-            "BTH",\r
-            "DEB",\r
-            "GZA",\r
-            "HBN",\r
-            "JEM",\r
-            "JEN",\r
-            "JRH",\r
-            "KYS",\r
-            "NBS",\r
-            "NGZ",\r
-            "QQA",\r
-            "RBH",\r
-            "RFH",\r
-            "SLT",\r
-            "TBS",\r
-            "TKM",\r
+            "psbth",\r
+            "psdeb",\r
+            "psgza",\r
+            "pshbn",\r
+            "psjem",\r
+            "psjen",\r
+            "psjrh",\r
+            "pskys",\r
+            "psnbs",\r
+            "psngz",\r
+            "psqqa",\r
+            "psrbh",\r
+            "psrfh",\r
+            "psslt",\r
+            "pstbs",\r
+            "pstkm",\r
         }\r
         PT{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "20",\r
-            "30",\r
+            "pt01",\r
+            "pt02",\r
+            "pt03",\r
+            "pt04",\r
+            "pt05",\r
+            "pt06",\r
+            "pt07",\r
+            "pt08",\r
+            "pt09",\r
+            "pt10",\r
+            "pt11",\r
+            "pt12",\r
+            "pt13",\r
+            "pt14",\r
+            "pt15",\r
+            "pt16",\r
+            "pt17",\r
+            "pt18",\r
+            "pt20",\r
+            "pt30",\r
         }\r
         PW{\r
-            "002",\r
-            "004",\r
-            "010",\r
-            "050",\r
-            "100",\r
-            "150",\r
-            "212",\r
-            "214",\r
-            "218",\r
-            "222",\r
-            "224",\r
-            "226",\r
-            "227",\r
-            "228",\r
-            "350",\r
-            "370",\r
+            "pw002",\r
+            "pw004",\r
+            "pw010",\r
+            "pw050",\r
+            "pw100",\r
+            "pw150",\r
+            "pw212",\r
+            "pw214",\r
+            "pw218",\r
+            "pw222",\r
+            "pw224",\r
+            "pw226",\r
+            "pw227",\r
+            "pw228",\r
+            "pw350",\r
+            "pw370",\r
         }\r
         PY{\r
-            "1",\r
-            "2",\r
-            "3",\r
-            "4",\r
-            "5",\r
-            "6",\r
-            "7",\r
-            "8",\r
-            "9",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "19",\r
-            "ASU",\r
+            "py1",\r
+            "py2",\r
+            "py3",\r
+            "py4",\r
+            "py5",\r
+            "py6",\r
+            "py7",\r
+            "py8",\r
+            "py9",\r
+            "py10",\r
+            "py11",\r
+            "py12",\r
+            "py13",\r
+            "py14",\r
+            "py15",\r
+            "py16",\r
+            "py19",\r
+            "pyasu",\r
         }\r
         QA{\r
-            "DA",\r
-            "KH",\r
-            "MS",\r
-            "RA",\r
-            "US",\r
-            "WA",\r
-            "ZA",\r
+            "qada",\r
+            "qakh",\r
+            "qams",\r
+            "qara",\r
+            "qaus",\r
+            "qawa",\r
+            "qaza",\r
         }\r
         RO{\r
-            "AB",\r
-            "AG",\r
-            "AR",\r
-            "B",\r
-            "BC",\r
-            "BH",\r
-            "BN",\r
-            "BR",\r
-            "BT",\r
-            "BV",\r
-            "BZ",\r
-            "CJ",\r
-            "CL",\r
-            "CS",\r
-            "CT",\r
-            "CV",\r
-            "DB",\r
-            "DJ",\r
-            "GJ",\r
-            "GL",\r
-            "GR",\r
-            "HD",\r
-            "HR",\r
-            "IF",\r
-            "IL",\r
-            "IS",\r
-            "MH",\r
-            "MM",\r
-            "MS",\r
-            "NT",\r
-            "OT",\r
-            "PH",\r
-            "SB",\r
-            "SJ",\r
-            "SM",\r
-            "SV",\r
-            "TL",\r
-            "TM",\r
-            "TR",\r
-            "VL",\r
-            "VN",\r
-            "VS",\r
+            "roab",\r
+            "roag",\r
+            "roar",\r
+            "rob",\r
+            "robc",\r
+            "robh",\r
+            "robn",\r
+            "robr",\r
+            "robt",\r
+            "robv",\r
+            "robz",\r
+            "rocj",\r
+            "rocl",\r
+            "rocs",\r
+            "roct",\r
+            "rocv",\r
+            "rodb",\r
+            "rodj",\r
+            "rogj",\r
+            "rogl",\r
+            "rogr",\r
+            "rohd",\r
+            "rohr",\r
+            "roif",\r
+            "roil",\r
+            "rois",\r
+            "romh",\r
+            "romm",\r
+            "roms",\r
+            "ront",\r
+            "root",\r
+            "roph",\r
+            "rosb",\r
+            "rosj",\r
+            "rosm",\r
+            "rosv",\r
+            "rotl",\r
+            "rotm",\r
+            "rotr",\r
+            "rovl",\r
+            "rovn",\r
+            "rovs",\r
         }\r
         RS{\r
-            "00",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "KM",\r
-            "VO",\r
-        }\r
-        RS-KM{\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-        }\r
-        RS-VO{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
+            "rs00",\r
+            "rs08",\r
+            "rs09",\r
+            "rs10",\r
+            "rs11",\r
+            "rs12",\r
+            "rs13",\r
+            "rs14",\r
+            "rs15",\r
+            "rs16",\r
+            "rs17",\r
+            "rs18",\r
+            "rs19",\r
+            "rs20",\r
+            "rs21",\r
+            "rs22",\r
+            "rs23",\r
+            "rs24",\r
+            "rskm",\r
+            "rsvo",\r
         }\r
         RU{\r
-            "AD",\r
-            "AL",\r
-            "ALT",\r
-            "AMU",\r
-            "ARK",\r
-            "AST",\r
-            "BA",\r
-            "BEL",\r
-            "BRY",\r
-            "BU",\r
-            "CE",\r
-            "CHE",\r
-            "CHU",\r
-            "CU",\r
-            "DA",\r
-            "IN",\r
-            "IRK",\r
-            "IVA",\r
-            "KAM",\r
-            "KB",\r
-            "KC",\r
-            "KDA",\r
-            "KEM",\r
-            "KGD",\r
-            "KGN",\r
-            "KHA",\r
-            "KHM",\r
-            "KIR",\r
-            "KK",\r
-            "KL",\r
-            "KLU",\r
-            "KO",\r
-            "KOS",\r
-            "KR",\r
-            "KRS",\r
-            "KYA",\r
-            "LEN",\r
-            "LIP",\r
-            "MAG",\r
-            "ME",\r
-            "MO",\r
-            "MOS",\r
-            "MOW",\r
-            "MUR",\r
-            "NEN",\r
-            "NGR",\r
-            "NIZ",\r
-            "NVS",\r
-            "OMS",\r
-            "ORE",\r
-            "ORL",\r
-            "PER",\r
-            "PNZ",\r
-            "PRI",\r
-            "PSK",\r
-            "ROS",\r
-            "RYA",\r
-            "SA",\r
-            "SAK",\r
-            "SAM",\r
-            "SAR",\r
-            "SE",\r
-            "SMO",\r
-            "SPE",\r
-            "STA",\r
-            "SVE",\r
-            "TA",\r
-            "TAM",\r
-            "TOM",\r
-            "TUL",\r
-            "TVE",\r
-            "TY",\r
-            "TYU",\r
-            "UD",\r
-            "ULY",\r
-            "VGG",\r
-            "VLA",\r
-            "VLG",\r
-            "VOR",\r
-            "YAN",\r
-            "YAR",\r
-            "YEV",\r
-            "ZAB",\r
+            "ruad",\r
+            "rual",\r
+            "rualt",\r
+            "ruamu",\r
+            "ruark",\r
+            "ruast",\r
+            "ruba",\r
+            "rubel",\r
+            "rubry",\r
+            "rubu",\r
+            "ruce",\r
+            "ruche",\r
+            "ruchu",\r
+            "rucu",\r
+            "ruda",\r
+            "ruin",\r
+            "ruirk",\r
+            "ruiva",\r
+            "rukam",\r
+            "rukb",\r
+            "rukc",\r
+            "rukda",\r
+            "rukem",\r
+            "rukgd",\r
+            "rukgn",\r
+            "rukha",\r
+            "rukhm",\r
+            "rukir",\r
+            "rukk",\r
+            "rukl",\r
+            "ruklu",\r
+            "ruko",\r
+            "rukos",\r
+            "rukr",\r
+            "rukrs",\r
+            "rukya",\r
+            "rulen",\r
+            "rulip",\r
+            "rumag",\r
+            "rume",\r
+            "rumo",\r
+            "rumos",\r
+            "rumow",\r
+            "rumur",\r
+            "runen",\r
+            "rungr",\r
+            "runiz",\r
+            "runvs",\r
+            "ruoms",\r
+            "ruore",\r
+            "ruorl",\r
+            "ruper",\r
+            "rupnz",\r
+            "rupri",\r
+            "rupsk",\r
+            "ruros",\r
+            "rurya",\r
+            "rusa",\r
+            "rusak",\r
+            "rusam",\r
+            "rusar",\r
+            "ruse",\r
+            "rusmo",\r
+            "ruspe",\r
+            "rusta",\r
+            "rusve",\r
+            "ruta",\r
+            "rutam",\r
+            "rutom",\r
+            "rutul",\r
+            "rutve",\r
+            "ruty",\r
+            "rutyu",\r
+            "ruud",\r
+            "ruuly",\r
+            "ruvgg",\r
+            "ruvla",\r
+            "ruvlg",\r
+            "ruvor",\r
+            "ruyan",\r
+            "ruyar",\r
+            "ruyev",\r
+            "ruzab",\r
         }\r
         RW{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
+            "rw01",\r
+            "rw02",\r
+            "rw03",\r
+            "rw04",\r
+            "rw05",\r
         }\r
         SA{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "14",\r
+            "sa01",\r
+            "sa02",\r
+            "sa03",\r
+            "sa04",\r
+            "sa05",\r
+            "sa06",\r
+            "sa07",\r
+            "sa08",\r
+            "sa09",\r
+            "sa10",\r
+            "sa11",\r
+            "sa12",\r
+            "sa14",\r
         }\r
         SB{\r
-            "CE",\r
-            "CH",\r
-            "CT",\r
-            "GU",\r
-            "IS",\r
-            "MK",\r
-            "ML",\r
-            "RB",\r
-            "TE",\r
-            "WE",\r
+            "sbce",\r
+            "sbch",\r
+            "sbct",\r
+            "sbgu",\r
+            "sbis",\r
+            "sbmk",\r
+            "sbml",\r
+            "sbrb",\r
+            "sbte",\r
+            "sbwe",\r
         }\r
         SC{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
+            "sc01",\r
+            "sc02",\r
+            "sc03",\r
+            "sc04",\r
+            "sc05",\r
+            "sc06",\r
+            "sc07",\r
+            "sc08",\r
+            "sc09",\r
+            "sc10",\r
+            "sc11",\r
+            "sc12",\r
+            "sc13",\r
+            "sc14",\r
+            "sc15",\r
+            "sc16",\r
+            "sc17",\r
+            "sc18",\r
+            "sc19",\r
+            "sc20",\r
+            "sc21",\r
+            "sc22",\r
+            "sc23",\r
+            "sc24",\r
+            "sc25",\r
         }\r
         SD{\r
-            "DC",\r
-            "DE",\r
-            "DN",\r
-            "DS",\r
-            "DW",\r
-            "GD",\r
-            "GK",\r
-            "GZ",\r
-            "KA",\r
-            "KH",\r
-            "KN",\r
-            "KS",\r
-            "NB",\r
-            "NO",\r
-            "NR",\r
-            "NW",\r
-            "RS",\r
-            "SI",\r
+            "sddc",\r
+            "sdde",\r
+            "sddn",\r
+            "sdds",\r
+            "sddw",\r
+            "sdgd",\r
+            "sdgk",\r
+            "sdgz",\r
+            "sdka",\r
+            "sdkh",\r
+            "sdkn",\r
+            "sdks",\r
+            "sdnb",\r
+            "sdno",\r
+            "sdnr",\r
+            "sdnw",\r
+            "sdrs",\r
+            "sdsi",\r
         }\r
         SE{\r
-            "AB",\r
-            "AC",\r
-            "BD",\r
-            "C",\r
-            "D",\r
-            "E",\r
-            "F",\r
-            "G",\r
-            "H",\r
-            "I",\r
-            "K",\r
-            "M",\r
-            "N",\r
-            "O",\r
-            "S",\r
-            "T",\r
-            "U",\r
-            "W",\r
-            "X",\r
-            "Y",\r
-            "Z",\r
+            "seab",\r
+            "seac",\r
+            "sebd",\r
+            "sec",\r
+            "sed",\r
+            "see",\r
+            "sef",\r
+            "seg",\r
+            "seh",\r
+            "sei",\r
+            "sek",\r
+            "sem",\r
+            "sen",\r
+            "seo",\r
+            "ses",\r
+            "set",\r
+            "seu",\r
+            "sew",\r
+            "sex",\r
+            "sey",\r
+            "sez",\r
         }\r
         SG{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
+            "sg01",\r
+            "sg02",\r
+            "sg03",\r
+            "sg04",\r
+            "sg05",\r
         }\r
         SH{\r
-            "AC",\r
-            "HL",\r
-            "TA",\r
+            "shac",\r
+            "shhl",\r
+            "shta",\r
         }\r
         SI{\r
-            "001",\r
-            "002",\r
-            "003",\r
-            "004",\r
-            "005",\r
-            "006",\r
-            "007",\r
-            "008",\r
-            "009",\r
-            "010",\r
-            "011",\r
-            "012",\r
-            "013",\r
-            "014",\r
-            "015",\r
-            "016",\r
-            "017",\r
-            "018",\r
-            "019",\r
-            "020",\r
-            "021",\r
-            "022",\r
-            "023",\r
-            "024",\r
-            "025",\r
-            "026",\r
-            "027",\r
-            "028",\r
-            "029",\r
-            "030",\r
-            "031",\r
-            "032",\r
-            "033",\r
-            "034",\r
-            "035",\r
-            "036",\r
-            "037",\r
-            "038",\r
-            "039",\r
-            "040",\r
-            "041",\r
-            "042",\r
-            "043",\r
-            "044",\r
-            "045",\r
-            "046",\r
-            "047",\r
-            "048",\r
-            "049",\r
-            "050",\r
-            "051",\r
-            "052",\r
-            "053",\r
-            "054",\r
-            "055",\r
-            "056",\r
-            "057",\r
-            "058",\r
-            "059",\r
-            "060",\r
-            "061",\r
-            "062",\r
-            "063",\r
-            "064",\r
-            "065",\r
-            "066",\r
-            "067",\r
-            "068",\r
-            "069",\r
-            "070",\r
-            "071",\r
-            "072",\r
-            "073",\r
-            "074",\r
-            "075",\r
-            "076",\r
-            "077",\r
-            "078",\r
-            "079",\r
-            "080",\r
-            "081",\r
-            "082",\r
-            "083",\r
-            "084",\r
-            "085",\r
-            "086",\r
-            "087",\r
-            "088",\r
-            "089",\r
-            "090",\r
-            "091",\r
-            "092",\r
-            "093",\r
-            "094",\r
-            "095",\r
-            "096",\r
-            "097",\r
-            "098",\r
-            "099",\r
-            "100",\r
-            "101",\r
-            "102",\r
-            "103",\r
-            "104",\r
-            "105",\r
-            "106",\r
-            "107",\r
-            "108",\r
-            "109",\r
-            "110",\r
-            "111",\r
-            "112",\r
-            "113",\r
-            "114",\r
-            "115",\r
-            "116",\r
-            "117",\r
-            "118",\r
-            "119",\r
-            "120",\r
-            "121",\r
-            "122",\r
-            "123",\r
-            "124",\r
-            "125",\r
-            "126",\r
-            "127",\r
-            "128",\r
-            "129",\r
-            "130",\r
-            "131",\r
-            "132",\r
-            "133",\r
-            "134",\r
-            "135",\r
-            "136",\r
-            "137",\r
-            "138",\r
-            "139",\r
-            "140",\r
-            "141",\r
-            "142",\r
-            "143",\r
-            "144",\r
-            "146",\r
-            "147",\r
-            "148",\r
-            "149",\r
-            "150",\r
-            "151",\r
-            "152",\r
-            "153",\r
-            "154",\r
-            "155",\r
-            "156",\r
-            "157",\r
-            "158",\r
-            "159",\r
-            "160",\r
-            "161",\r
-            "162",\r
-            "163",\r
-            "164",\r
-            "165",\r
-            "166",\r
-            "167",\r
-            "168",\r
-            "169",\r
-            "170",\r
-            "171",\r
-            "172",\r
-            "173",\r
-            "174",\r
-            "175",\r
-            "176",\r
-            "177",\r
-            "178",\r
-            "179",\r
-            "180",\r
-            "181",\r
-            "182",\r
-            "183",\r
-            "184",\r
-            "185",\r
-            "186",\r
-            "187",\r
-            "188",\r
-            "189",\r
-            "190",\r
-            "191",\r
-            "192",\r
-            "193",\r
-            "194",\r
-            "195",\r
-            "196",\r
-            "197",\r
-            "198",\r
-            "199",\r
-            "200",\r
-            "201",\r
-            "202",\r
-            "203",\r
-            "204",\r
-            "205",\r
-            "206",\r
-            "207",\r
-            "208",\r
-            "209",\r
-            "210",\r
-            "211",\r
-            "212",\r
+            "si001",\r
+            "si002",\r
+            "si003",\r
+            "si004",\r
+            "si005",\r
+            "si006",\r
+            "si007",\r
+            "si008",\r
+            "si009",\r
+            "si010",\r
+            "si011",\r
+            "si012",\r
+            "si013",\r
+            "si014",\r
+            "si015",\r
+            "si016",\r
+            "si017",\r
+            "si018",\r
+            "si019",\r
+            "si020",\r
+            "si021",\r
+            "si022",\r
+            "si023",\r
+            "si024",\r
+            "si025",\r
+            "si026",\r
+            "si027",\r
+            "si028",\r
+            "si029",\r
+            "si030",\r
+            "si031",\r
+            "si032",\r
+            "si033",\r
+            "si034",\r
+            "si035",\r
+            "si036",\r
+            "si037",\r
+            "si038",\r
+            "si039",\r
+            "si040",\r
+            "si041",\r
+            "si042",\r
+            "si043",\r
+            "si044",\r
+            "si045",\r
+            "si046",\r
+            "si047",\r
+            "si048",\r
+            "si049",\r
+            "si050",\r
+            "si051",\r
+            "si052",\r
+            "si053",\r
+            "si054",\r
+            "si055",\r
+            "si056",\r
+            "si057",\r
+            "si058",\r
+            "si059",\r
+            "si060",\r
+            "si061",\r
+            "si062",\r
+            "si063",\r
+            "si064",\r
+            "si065",\r
+            "si066",\r
+            "si067",\r
+            "si068",\r
+            "si069",\r
+            "si070",\r
+            "si071",\r
+            "si072",\r
+            "si073",\r
+            "si074",\r
+            "si075",\r
+            "si076",\r
+            "si077",\r
+            "si078",\r
+            "si079",\r
+            "si080",\r
+            "si081",\r
+            "si082",\r
+            "si083",\r
+            "si084",\r
+            "si085",\r
+            "si086",\r
+            "si087",\r
+            "si088",\r
+            "si089",\r
+            "si090",\r
+            "si091",\r
+            "si092",\r
+            "si093",\r
+            "si094",\r
+            "si095",\r
+            "si096",\r
+            "si097",\r
+            "si098",\r
+            "si099",\r
+            "si100",\r
+            "si101",\r
+            "si102",\r
+            "si103",\r
+            "si104",\r
+            "si105",\r
+            "si106",\r
+            "si107",\r
+            "si108",\r
+            "si109",\r
+            "si110",\r
+            "si111",\r
+            "si112",\r
+            "si113",\r
+            "si114",\r
+            "si115",\r
+            "si116",\r
+            "si117",\r
+            "si118",\r
+            "si119",\r
+            "si120",\r
+            "si121",\r
+            "si122",\r
+            "si123",\r
+            "si124",\r
+            "si125",\r
+            "si126",\r
+            "si127",\r
+            "si128",\r
+            "si129",\r
+            "si130",\r
+            "si131",\r
+            "si132",\r
+            "si133",\r
+            "si134",\r
+            "si135",\r
+            "si136",\r
+            "si137",\r
+            "si138",\r
+            "si139",\r
+            "si140",\r
+            "si141",\r
+            "si142",\r
+            "si143",\r
+            "si144",\r
+            "si146",\r
+            "si147",\r
+            "si148",\r
+            "si149",\r
+            "si150",\r
+            "si151",\r
+            "si152",\r
+            "si153",\r
+            "si154",\r
+            "si155",\r
+            "si156",\r
+            "si157",\r
+            "si158",\r
+            "si159",\r
+            "si160",\r
+            "si161",\r
+            "si162",\r
+            "si163",\r
+            "si164",\r
+            "si165",\r
+            "si166",\r
+            "si167",\r
+            "si168",\r
+            "si169",\r
+            "si170",\r
+            "si171",\r
+            "si172",\r
+            "si173",\r
+            "si174",\r
+            "si175",\r
+            "si176",\r
+            "si177",\r
+            "si178",\r
+            "si179",\r
+            "si180",\r
+            "si181",\r
+            "si182",\r
+            "si183",\r
+            "si184",\r
+            "si185",\r
+            "si186",\r
+            "si187",\r
+            "si188",\r
+            "si189",\r
+            "si190",\r
+            "si191",\r
+            "si192",\r
+            "si193",\r
+            "si194",\r
+            "si195",\r
+            "si196",\r
+            "si197",\r
+            "si198",\r
+            "si199",\r
+            "si200",\r
+            "si201",\r
+            "si202",\r
+            "si203",\r
+            "si204",\r
+            "si205",\r
+            "si206",\r
+            "si207",\r
+            "si208",\r
+            "si209",\r
+            "si210",\r
+            "si211",\r
+            "si212",\r
+            "si213",\r
         }\r
         SK{\r
-            "BC",\r
-            "BL",\r
-            "KI",\r
-            "NI",\r
-            "PV",\r
-            "TA",\r
-            "TC",\r
-            "ZI",\r
-        }\r
-        SL{\r
-            "E",\r
-            "N",\r
-            "S",\r
-            "W",\r
-        }\r
-        SM{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-        }\r
-        SN{\r
-            "DB",\r
-            "DK",\r
-            "FK",\r
-            "KA",\r
-            "KD",\r
-            "KE",\r
-            "KL",\r
-            "LG",\r
-            "MT",\r
-            "SE",\r
-            "SL",\r
-            "TC",\r
-            "TH",\r
-            "ZG",\r
+            "skbc",\r
+            "skbl",\r
+            "skki",\r
+            "skni",\r
+            "skpv",\r
+            "skta",\r
+            "sktc",\r
+            "skzi",\r
+        }\r
+        SL{\r
+            "sle",\r
+            "sln",\r
+            "sls",\r
+            "slw",\r
+        }\r
+        SM{\r
+            "sm01",\r
+            "sm02",\r
+            "sm03",\r
+            "sm04",\r
+            "sm05",\r
+            "sm06",\r
+            "sm07",\r
+            "sm08",\r
+            "sm09",\r
+        }\r
+        SN{\r
+            "sndb",\r
+            "sndk",\r
+            "snfk",\r
+            "snka",\r
+            "snkd",\r
+            "snke",\r
+            "snkl",\r
+            "snlg",\r
+            "snmt",\r
+            "snse",\r
+            "snsl",\r
+            "sntc",\r
+            "snth",\r
+            "snzg",\r
         }\r
         SO{\r
-            "AW",\r
-            "BK",\r
-            "BN",\r
-            "BR",\r
-            "BY",\r
-            "GA",\r
-            "GE",\r
-            "HI",\r
-            "JD",\r
-            "JH",\r
-            "MU",\r
-            "NU",\r
-            "SA",\r
-            "SD",\r
-            "SH",\r
-            "SO",\r
-            "TO",\r
-            "WO",\r
+            "soaw",\r
+            "sobk",\r
+            "sobn",\r
+            "sobr",\r
+            "soby",\r
+            "soga",\r
+            "soge",\r
+            "sohi",\r
+            "sojd",\r
+            "sojh",\r
+            "somu",\r
+            "sonu",\r
+            "sosa",\r
+            "sosd",\r
+            "sosh",\r
+            "soso",\r
+            "soto",\r
+            "sowo",\r
         }\r
         SR{\r
-            "BR",\r
-            "CM",\r
-            "CR",\r
-            "MA",\r
-            "NI",\r
-            "PM",\r
-            "PR",\r
-            "SA",\r
-            "SI",\r
-            "WA",\r
+            "srbr",\r
+            "srcm",\r
+            "srcr",\r
+            "srma",\r
+            "srni",\r
+            "srpm",\r
+            "srpr",\r
+            "srsa",\r
+            "srsi",\r
+            "srwa",\r
         }\r
         SS{\r
-            "BN",\r
-            "BW",\r
-            "EC",\r
-            "EE",\r
-            "EW",\r
-            "JG",\r
-            "LK",\r
-            "NU",\r
-            "UY",\r
-            "WR",\r
+            "ssbn",\r
+            "ssbw",\r
+            "ssec",\r
+            "ssee",\r
+            "ssew",\r
+            "ssjg",\r
+            "sslk",\r
+            "ssnu",\r
+            "ssuy",\r
+            "sswr",\r
         }\r
         ST{\r
-            "P",\r
-            "S",\r
+            "stp",\r
+            "sts",\r
         }\r
         SV{\r
-            "AH",\r
-            "CA",\r
-            "CH",\r
-            "CU",\r
-            "LI",\r
-            "MO",\r
-            "PA",\r
-            "SA",\r
-            "SM",\r
-            "SO",\r
-            "SS",\r
-            "SV",\r
-            "UN",\r
-            "US",\r
+            "svah",\r
+            "svca",\r
+            "svch",\r
+            "svcu",\r
+            "svli",\r
+            "svmo",\r
+            "svpa",\r
+            "svsa",\r
+            "svsm",\r
+            "svso",\r
+            "svss",\r
+            "svsv",\r
+            "svun",\r
+            "svus",\r
         }\r
         SY{\r
-            "DI",\r
-            "DR",\r
-            "DY",\r
-            "HA",\r
-            "HI",\r
-            "HL",\r
-            "HM",\r
-            "ID",\r
-            "LA",\r
-            "QU",\r
-            "RA",\r
-            "RD",\r
-            "SU",\r
-            "TA",\r
+            "sydi",\r
+            "sydr",\r
+            "sydy",\r
+            "syha",\r
+            "syhi",\r
+            "syhl",\r
+            "syhm",\r
+            "syid",\r
+            "syla",\r
+            "syqu",\r
+            "syra",\r
+            "syrd",\r
+            "sysu",\r
+            "syta",\r
         }\r
         SZ{\r
-            "HH",\r
-            "LU",\r
-            "MA",\r
-            "SH",\r
+            "szhh",\r
+            "szlu",\r
+            "szma",\r
+            "szsh",\r
         }\r
         TD{\r
-            "BA",\r
-            "BG",\r
-            "BO",\r
-            "CB",\r
-            "EE",\r
-            "EO",\r
-            "GR",\r
-            "HL",\r
-            "KA",\r
-            "LC",\r
-            "LO",\r
-            "LR",\r
-            "MA",\r
-            "MC",\r
-            "ME",\r
-            "MO",\r
-            "ND",\r
-            "OD",\r
-            "SA",\r
-            "SI",\r
-            "TA",\r
-            "TI",\r
-            "WF",\r
+            "tdba",\r
+            "tdbg",\r
+            "tdbo",\r
+            "tdcb",\r
+            "tdee",\r
+            "tdeo",\r
+            "tdgr",\r
+            "tdhl",\r
+            "tdka",\r
+            "tdlc",\r
+            "tdlo",\r
+            "tdlr",\r
+            "tdma",\r
+            "tdmc",\r
+            "tdme",\r
+            "tdmo",\r
+            "tdnd",\r
+            "tdod",\r
+            "tdsa",\r
+            "tdsi",\r
+            "tdta",\r
+            "tdti",\r
+            "tdwf",\r
         }\r
         TG{\r
-            "C",\r
-            "K",\r
-            "M",\r
-            "P",\r
-            "S",\r
+            "tgc",\r
+            "tgk",\r
+            "tgm",\r
+            "tgp",\r
+            "tgs",\r
         }\r
         TH{\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "30",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "38",\r
-            "39",\r
-            "40",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
-            "48",\r
-            "49",\r
-            "50",\r
-            "51",\r
-            "52",\r
-            "53",\r
-            "54",\r
-            "55",\r
-            "56",\r
-            "57",\r
-            "58",\r
-            "60",\r
-            "61",\r
-            "62",\r
-            "63",\r
-            "64",\r
-            "65",\r
-            "66",\r
-            "67",\r
-            "70",\r
-            "71",\r
-            "72",\r
-            "73",\r
-            "74",\r
-            "75",\r
-            "76",\r
-            "77",\r
-            "80",\r
-            "81",\r
-            "82",\r
-            "83",\r
-            "84",\r
-            "85",\r
-            "86",\r
-            "90",\r
-            "91",\r
-            "92",\r
-            "93",\r
-            "94",\r
-            "95",\r
-            "96",\r
-            "S",\r
+            "th10",\r
+            "th11",\r
+            "th12",\r
+            "th13",\r
+            "th14",\r
+            "th15",\r
+            "th16",\r
+            "th17",\r
+            "th18",\r
+            "th19",\r
+            "th20",\r
+            "th21",\r
+            "th22",\r
+            "th23",\r
+            "th24",\r
+            "th25",\r
+            "th26",\r
+            "th27",\r
+            "th30",\r
+            "th31",\r
+            "th32",\r
+            "th33",\r
+            "th34",\r
+            "th35",\r
+            "th36",\r
+            "th37",\r
+            "th38",\r
+            "th39",\r
+            "th40",\r
+            "th41",\r
+            "th42",\r
+            "th43",\r
+            "th44",\r
+            "th45",\r
+            "th46",\r
+            "th47",\r
+            "th48",\r
+            "th49",\r
+            "th50",\r
+            "th51",\r
+            "th52",\r
+            "th53",\r
+            "th54",\r
+            "th55",\r
+            "th56",\r
+            "th57",\r
+            "th58",\r
+            "th60",\r
+            "th61",\r
+            "th62",\r
+            "th63",\r
+            "th64",\r
+            "th65",\r
+            "th66",\r
+            "th67",\r
+            "th70",\r
+            "th71",\r
+            "th72",\r
+            "th73",\r
+            "th74",\r
+            "th75",\r
+            "th76",\r
+            "th77",\r
+            "th80",\r
+            "th81",\r
+            "th82",\r
+            "th83",\r
+            "th84",\r
+            "th85",\r
+            "th86",\r
+            "th90",\r
+            "th91",\r
+            "th92",\r
+            "th93",\r
+            "th94",\r
+            "th95",\r
+            "th96",\r
+            "ths",\r
         }\r
         TJ{\r
-            "DU",\r
-            "GB",\r
-            "KT",\r
-            "SU",\r
+            "tjdu",\r
+            "tjgb",\r
+            "tjkt",\r
+            "tjra",\r
+            "tjsu",\r
         }\r
         TL{\r
-            "AL",\r
-            "AN",\r
-            "BA",\r
-            "BO",\r
-            "CO",\r
-            "DI",\r
-            "ER",\r
-            "LA",\r
-            "LI",\r
-            "MF",\r
-            "MT",\r
-            "OE",\r
-            "VI",\r
+            "tlal",\r
+            "tlan",\r
+            "tlba",\r
+            "tlbo",\r
+            "tlco",\r
+            "tldi",\r
+            "tler",\r
+            "tlla",\r
+            "tlli",\r
+            "tlmf",\r
+            "tlmt",\r
+            "tloe",\r
+            "tlvi",\r
         }\r
         TM{\r
-            "A",\r
-            "B",\r
-            "D",\r
-            "L",\r
-            "M",\r
-            "S",\r
+            "tma",\r
+            "tmb",\r
+            "tmd",\r
+            "tml",\r
+            "tmm",\r
+            "tms",\r
         }\r
         TN{\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "51",\r
-            "52",\r
-            "53",\r
-            "61",\r
-            "71",\r
-            "72",\r
-            "73",\r
-            "81",\r
-            "82",\r
-            "83",\r
+            "tn11",\r
+            "tn12",\r
+            "tn13",\r
+            "tn14",\r
+            "tn21",\r
+            "tn22",\r
+            "tn23",\r
+            "tn31",\r
+            "tn32",\r
+            "tn33",\r
+            "tn34",\r
+            "tn41",\r
+            "tn42",\r
+            "tn43",\r
+            "tn51",\r
+            "tn52",\r
+            "tn53",\r
+            "tn61",\r
+            "tn71",\r
+            "tn72",\r
+            "tn73",\r
+            "tn81",\r
+            "tn82",\r
+            "tn83",\r
         }\r
         TO{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
+            "to01",\r
+            "to02",\r
+            "to03",\r
+            "to04",\r
+            "to05",\r
         }\r
         TR{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "38",\r
-            "39",\r
-            "40",\r
-            "41",\r
-            "42",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
-            "48",\r
-            "49",\r
-            "50",\r
-            "51",\r
-            "52",\r
-            "53",\r
-            "54",\r
-            "55",\r
-            "56",\r
-            "57",\r
-            "58",\r
-            "59",\r
-            "60",\r
-            "61",\r
-            "62",\r
-            "63",\r
-            "64",\r
-            "65",\r
-            "66",\r
-            "67",\r
-            "68",\r
-            "69",\r
-            "70",\r
-            "71",\r
-            "72",\r
-            "73",\r
-            "74",\r
-            "75",\r
-            "76",\r
-            "77",\r
-            "78",\r
-            "79",\r
-            "80",\r
-            "81",\r
+            "tr01",\r
+            "tr02",\r
+            "tr03",\r
+            "tr04",\r
+            "tr05",\r
+            "tr06",\r
+            "tr07",\r
+            "tr08",\r
+            "tr09",\r
+            "tr10",\r
+            "tr11",\r
+            "tr12",\r
+            "tr13",\r
+            "tr14",\r
+            "tr15",\r
+            "tr16",\r
+            "tr17",\r
+            "tr18",\r
+            "tr19",\r
+            "tr20",\r
+            "tr21",\r
+            "tr22",\r
+            "tr23",\r
+            "tr24",\r
+            "tr25",\r
+            "tr26",\r
+            "tr27",\r
+            "tr28",\r
+            "tr29",\r
+            "tr30",\r
+            "tr31",\r
+            "tr32",\r
+            "tr33",\r
+            "tr34",\r
+            "tr35",\r
+            "tr36",\r
+            "tr37",\r
+            "tr38",\r
+            "tr39",\r
+            "tr40",\r
+            "tr41",\r
+            "tr42",\r
+            "tr43",\r
+            "tr44",\r
+            "tr45",\r
+            "tr46",\r
+            "tr47",\r
+            "tr48",\r
+            "tr49",\r
+            "tr50",\r
+            "tr51",\r
+            "tr52",\r
+            "tr53",\r
+            "tr54",\r
+            "tr55",\r
+            "tr56",\r
+            "tr57",\r
+            "tr58",\r
+            "tr59",\r
+            "tr60",\r
+            "tr61",\r
+            "tr62",\r
+            "tr63",\r
+            "tr64",\r
+            "tr65",\r
+            "tr66",\r
+            "tr67",\r
+            "tr68",\r
+            "tr69",\r
+            "tr70",\r
+            "tr71",\r
+            "tr72",\r
+            "tr73",\r
+            "tr74",\r
+            "tr75",\r
+            "tr76",\r
+            "tr77",\r
+            "tr78",\r
+            "tr79",\r
+            "tr80",\r
+            "tr81",\r
         }\r
         TT{\r
-            "ARI",\r
-            "CHA",\r
-            "CTT",\r
-            "DMN",\r
-            "MRC",\r
-            "PED",\r
-            "POS",\r
-            "PRT",\r
-            "PTF",\r
-            "SFO",\r
-            "SGE",\r
-            "SIP",\r
-            "SJL",\r
-            "TOB",\r
-            "TUP",\r
+            "ttari",\r
+            "ttcha",\r
+            "ttctt",\r
+            "ttdmn",\r
+            "ttmrc",\r
+            "ttped",\r
+            "ttpos",\r
+            "ttprt",\r
+            "ttptf",\r
+            "ttsfo",\r
+            "ttsge",\r
+            "ttsip",\r
+            "ttsjl",\r
+            "tttob",\r
+            "tttup",\r
         }\r
         TV{\r
-            "FUN",\r
-            "NIT",\r
-            "NKF",\r
-            "NKL",\r
-            "NMA",\r
-            "NMG",\r
-            "NUI",\r
-            "VAI",\r
+            "tvfun",\r
+            "tvnit",\r
+            "tvnkf",\r
+            "tvnkl",\r
+            "tvnma",\r
+            "tvnmg",\r
+            "tvnui",\r
+            "tvvai",\r
         }\r
         TW{\r
-            "CHA",\r
-            "CYI",\r
-            "CYQ",\r
-            "HSQ",\r
-            "HSZ",\r
-            "HUA",\r
-            "ILA",\r
-            "KEE",\r
-            "KHH",\r
-            "KIN",\r
-            "LIE",\r
-            "MIA",\r
-            "NAN",\r
-            "NWT",\r
-            "PEN",\r
-            "PIF",\r
-            "TAO",\r
-            "TNN",\r
-            "TPE",\r
-            "TTT",\r
-            "TXG",\r
-            "YUN",\r
+            "twcha",\r
+            "twcyi",\r
+            "twcyq",\r
+            "twhsq",\r
+            "twhsz",\r
+            "twhua",\r
+            "twila",\r
+            "twkee",\r
+            "twkhh",\r
+            "twkin",\r
+            "twlie",\r
+            "twmia",\r
+            "twnan",\r
+            "twnwt",\r
+            "twpen",\r
+            "twpif",\r
+            "twtao",\r
+            "twtnn",\r
+            "twtpe",\r
+            "twttt",\r
+            "twtxg",\r
+            "twyun",\r
         }\r
         TZ{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
-            "11",\r
-            "12",\r
-            "13",\r
-            "14",\r
-            "15",\r
-            "16",\r
-            "17",\r
-            "18",\r
-            "19",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
+            "tz01",\r
+            "tz02",\r
+            "tz03",\r
+            "tz04",\r
+            "tz05",\r
+            "tz06",\r
+            "tz07",\r
+            "tz08",\r
+            "tz09",\r
+            "tz10",\r
+            "tz11",\r
+            "tz12",\r
+            "tz13",\r
+            "tz14",\r
+            "tz15",\r
+            "tz16",\r
+            "tz17",\r
+            "tz18",\r
+            "tz19",\r
+            "tz20",\r
+            "tz21",\r
+            "tz22",\r
+            "tz23",\r
+            "tz24",\r
+            "tz25",\r
+            "tz26",\r
+            "tz27",\r
+            "tz28",\r
+            "tz29",\r
+            "tz30",\r
         }\r
         UA{\r
-            "05",\r
-            "07",\r
-            "09",\r
-            "12",\r
-            "14",\r
-            "18",\r
-            "21",\r
-            "23",\r
-            "26",\r
-            "30",\r
-            "32",\r
-            "35",\r
-            "40",\r
-            "43",\r
-            "46",\r
-            "48",\r
-            "51",\r
-            "53",\r
-            "56",\r
-            "59",\r
-            "61",\r
-            "63",\r
-            "65",\r
-            "68",\r
-            "71",\r
-            "74",\r
-            "77",\r
+            "ua05",\r
+            "ua07",\r
+            "ua09",\r
+            "ua12",\r
+            "ua14",\r
+            "ua18",\r
+            "ua21",\r
+            "ua23",\r
+            "ua26",\r
+            "ua30",\r
+            "ua32",\r
+            "ua35",\r
+            "ua40",\r
+            "ua43",\r
+            "ua46",\r
+            "ua48",\r
+            "ua51",\r
+            "ua53",\r
+            "ua56",\r
+            "ua59",\r
+            "ua61",\r
+            "ua63",\r
+            "ua65",\r
+            "ua68",\r
+            "ua71",\r
+            "ua74",\r
+            "ua77",\r
         }\r
         UG{\r
-            "C",\r
-            "E",\r
-            "N",\r
-            "W",\r
-        }\r
-        UG-C{\r
-            "101",\r
-            "102",\r
-            "103",\r
-            "104",\r
-            "105",\r
-            "106",\r
-            "107",\r
-            "108",\r
-            "109",\r
-            "110",\r
-            "111",\r
-            "112",\r
-            "113",\r
-            "114",\r
-            "115",\r
-            "116",\r
-            "117",\r
-            "118",\r
-            "119",\r
-            "120",\r
-            "121",\r
-            "122",\r
-            "123",\r
-            "124",\r
-        }\r
-        UG-E{\r
-            "201",\r
-            "202",\r
-            "203",\r
-            "204",\r
-            "205",\r
-            "206",\r
-            "207",\r
-            "208",\r
-            "209",\r
-            "210",\r
-            "211",\r
-            "212",\r
-            "213",\r
-            "214",\r
-            "215",\r
-            "216",\r
-            "217",\r
-            "218",\r
-            "219",\r
-            "220",\r
-            "221",\r
-            "222",\r
-            "223",\r
-            "224",\r
-            "225",\r
-            "226",\r
-            "227",\r
-            "228",\r
-            "229",\r
-            "230",\r
-            "231",\r
-            "232",\r
-        }\r
-        UG-N{\r
-            "301",\r
-            "302",\r
-            "303",\r
-            "304",\r
-            "305",\r
-            "306",\r
-            "307",\r
-            "308",\r
-            "309",\r
-            "310",\r
-            "311",\r
-            "312",\r
-            "313",\r
-            "314",\r
-            "315",\r
-            "316",\r
-            "317",\r
-            "318",\r
-            "319",\r
-            "320",\r
-            "321",\r
-            "322",\r
-            "323",\r
-            "324",\r
-            "325",\r
-            "326",\r
-            "327",\r
-            "328",\r
-            "329",\r
-            "330",\r
-            "331",\r
-        }\r
-        UG-W{\r
-            "401",\r
-            "402",\r
-            "403",\r
-            "404",\r
-            "405",\r
-            "406",\r
-            "407",\r
-            "408",\r
-            "409",\r
-            "410",\r
-            "411",\r
-            "412",\r
-            "413",\r
-            "414",\r
-            "415",\r
-            "416",\r
-            "417",\r
-            "418",\r
-            "419",\r
-            "420",\r
-            "421",\r
-            "422",\r
-            "423",\r
-            "424",\r
-            "425",\r
+            "ugc",\r
+            "uge",\r
+            "ugn",\r
+            "ugw",\r
         }\r
         UM{\r
-            "67",\r
-            "71",\r
-            "76",\r
-            "79",\r
-            "81",\r
-            "84",\r
-            "86",\r
-            "89",\r
-            "95",\r
+            "um67",\r
+            "um71",\r
+            "um76",\r
+            "um79",\r
+            "um81",\r
+            "um84",\r
+            "um86",\r
+            "um89",\r
+            "um95",\r
         }\r
         US{\r
-            "AK",\r
-            "AL",\r
-            "AR",\r
-            "AS",\r
-            "AZ",\r
-            "CA",\r
-            "CO",\r
-            "CT",\r
-            "DC",\r
-            "DE",\r
-            "FL",\r
-            "GA",\r
-            "GU",\r
-            "HI",\r
-            "IA",\r
-            "ID",\r
-            "IL",\r
-            "IN",\r
-            "KS",\r
-            "KY",\r
-            "LA",\r
-            "MA",\r
-            "MD",\r
-            "ME",\r
-            "MI",\r
-            "MN",\r
-            "MO",\r
-            "MP",\r
-            "MS",\r
-            "MT",\r
-            "NC",\r
-            "ND",\r
-            "NE",\r
-            "NH",\r
-            "NJ",\r
-            "NM",\r
-            "NV",\r
-            "NY",\r
-            "OH",\r
-            "OK",\r
-            "OR",\r
-            "PA",\r
-            "PR",\r
-            "RI",\r
-            "SC",\r
-            "SD",\r
-            "TN",\r
-            "TX",\r
-            "UM",\r
-            "UT",\r
-            "VA",\r
-            "VI",\r
-            "VT",\r
-            "WA",\r
-            "WI",\r
-            "WV",\r
-            "WY",\r
+            "usak",\r
+            "usal",\r
+            "usar",\r
+            "usas",\r
+            "usaz",\r
+            "usca",\r
+            "usco",\r
+            "usct",\r
+            "usdc",\r
+            "usde",\r
+            "usfl",\r
+            "usga",\r
+            "usgu",\r
+            "ushi",\r
+            "usia",\r
+            "usid",\r
+            "usil",\r
+            "usin",\r
+            "usks",\r
+            "usky",\r
+            "usla",\r
+            "usma",\r
+            "usmd",\r
+            "usme",\r
+            "usmi",\r
+            "usmn",\r
+            "usmo",\r
+            "usmp",\r
+            "usms",\r
+            "usmt",\r
+            "usnc",\r
+            "usnd",\r
+            "usne",\r
+            "usnh",\r
+            "usnj",\r
+            "usnm",\r
+            "usnv",\r
+            "usny",\r
+            "usoh",\r
+            "usok",\r
+            "usor",\r
+            "uspa",\r
+            "uspr",\r
+            "usri",\r
+            "ussc",\r
+            "ussd",\r
+            "ustn",\r
+            "ustx",\r
+            "usum",\r
+            "usut",\r
+            "usva",\r
+            "usvi",\r
+            "usvt",\r
+            "uswa",\r
+            "uswi",\r
+            "uswv",\r
+            "uswy",\r
         }\r
         UY{\r
-            "AR",\r
-            "CA",\r
-            "CL",\r
-            "CO",\r
-            "DU",\r
-            "FD",\r
-            "FS",\r
-            "LA",\r
-            "MA",\r
-            "MO",\r
-            "PA",\r
-            "RN",\r
-            "RO",\r
-            "RV",\r
-            "SA",\r
-            "SJ",\r
-            "SO",\r
-            "TA",\r
-            "TT",\r
+            "uyar",\r
+            "uyca",\r
+            "uycl",\r
+            "uyco",\r
+            "uydu",\r
+            "uyfd",\r
+            "uyfs",\r
+            "uyla",\r
+            "uyma",\r
+            "uymo",\r
+            "uypa",\r
+            "uyrn",\r
+            "uyro",\r
+            "uyrv",\r
+            "uysa",\r
+            "uysj",\r
+            "uyso",\r
+            "uyta",\r
+            "uytt",\r
         }\r
         UZ{\r
-            "AN",\r
-            "BU",\r
-            "FA",\r
-            "JI",\r
-            "NG",\r
-            "NW",\r
-            "QA",\r
-            "QR",\r
-            "SA",\r
-            "SI",\r
-            "SU",\r
-            "TK",\r
-            "TO",\r
-            "XO",\r
+            "uzan",\r
+            "uzbu",\r
+            "uzfa",\r
+            "uzji",\r
+            "uzng",\r
+            "uznw",\r
+            "uzqa",\r
+            "uzqr",\r
+            "uzsa",\r
+            "uzsi",\r
+            "uzsu",\r
+            "uztk",\r
+            "uzto",\r
+            "uzxo",\r
         }\r
         VC{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
+            "vc01",\r
+            "vc02",\r
+            "vc03",\r
+            "vc04",\r
+            "vc05",\r
+            "vc06",\r
         }\r
         VE{\r
-            "A",\r
-            "B",\r
-            "C",\r
-            "D",\r
-            "E",\r
-            "F",\r
-            "G",\r
-            "H",\r
-            "I",\r
-            "J",\r
-            "K",\r
-            "L",\r
-            "M",\r
-            "N",\r
-            "O",\r
-            "P",\r
-            "R",\r
-            "S",\r
-            "T",\r
-            "U",\r
-            "V",\r
-            "W",\r
-            "X",\r
-            "Y",\r
-            "Z",\r
+            "vea",\r
+            "veb",\r
+            "vec",\r
+            "ved",\r
+            "vee",\r
+            "vef",\r
+            "veg",\r
+            "veh",\r
+            "vei",\r
+            "vej",\r
+            "vek",\r
+            "vel",\r
+            "vem",\r
+            "ven",\r
+            "veo",\r
+            "vep",\r
+            "ver",\r
+            "ves",\r
+            "vet",\r
+            "veu",\r
+            "vev",\r
+            "vew",\r
+            "vex",\r
+            "vey",\r
+            "vez",\r
         }\r
         VN{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "09",\r
-            "13",\r
-            "14",\r
-            "18",\r
-            "20",\r
-            "21",\r
-            "22",\r
-            "23",\r
-            "24",\r
-            "25",\r
-            "26",\r
-            "27",\r
-            "28",\r
-            "29",\r
-            "30",\r
-            "31",\r
-            "32",\r
-            "33",\r
-            "34",\r
-            "35",\r
-            "36",\r
-            "37",\r
-            "39",\r
-            "40",\r
-            "41",\r
-            "43",\r
-            "44",\r
-            "45",\r
-            "46",\r
-            "47",\r
-            "49",\r
-            "50",\r
-            "51",\r
-            "52",\r
-            "53",\r
-            "54",\r
-            "55",\r
-            "56",\r
-            "57",\r
-            "58",\r
-            "59",\r
-            "61",\r
-            "63",\r
-            "66",\r
-            "67",\r
-            "68",\r
-            "69",\r
-            "70",\r
-            "71",\r
-            "72",\r
-            "73",\r
-            "CT",\r
-            "DN",\r
-            "HN",\r
-            "HP",\r
-            "SG",\r
+            "vn01",\r
+            "vn02",\r
+            "vn03",\r
+            "vn04",\r
+            "vn05",\r
+            "vn06",\r
+            "vn07",\r
+            "vn09",\r
+            "vn13",\r
+            "vn14",\r
+            "vn18",\r
+            "vn20",\r
+            "vn21",\r
+            "vn22",\r
+            "vn23",\r
+            "vn24",\r
+            "vn25",\r
+            "vn26",\r
+            "vn27",\r
+            "vn28",\r
+            "vn29",\r
+            "vn30",\r
+            "vn31",\r
+            "vn32",\r
+            "vn33",\r
+            "vn34",\r
+            "vn35",\r
+            "vn36",\r
+            "vn37",\r
+            "vn39",\r
+            "vn40",\r
+            "vn41",\r
+            "vn43",\r
+            "vn44",\r
+            "vn45",\r
+            "vn46",\r
+            "vn47",\r
+            "vn49",\r
+            "vn50",\r
+            "vn51",\r
+            "vn52",\r
+            "vn53",\r
+            "vn54",\r
+            "vn55",\r
+            "vn56",\r
+            "vn57",\r
+            "vn58",\r
+            "vn59",\r
+            "vn61",\r
+            "vn63",\r
+            "vn66",\r
+            "vn67",\r
+            "vn68",\r
+            "vn69",\r
+            "vn70",\r
+            "vn71",\r
+            "vn72",\r
+            "vn73",\r
+            "vnct",\r
+            "vndn",\r
+            "vnhn",\r
+            "vnhp",\r
+            "vnsg",\r
         }\r
         VU{\r
-            "MAP",\r
-            "PAM",\r
-            "SAM",\r
-            "SEE",\r
-            "TAE",\r
-            "TOB",\r
+            "vumap",\r
+            "vupam",\r
+            "vusam",\r
+            "vusee",\r
+            "vutae",\r
+            "vutob",\r
         }\r
         WF{\r
-            "AL",\r
-            "SG",\r
-            "UV",\r
+            "wfal",\r
+            "wfsg",\r
+            "wfuv",\r
         }\r
         WS{\r
-            "AA",\r
-            "AL",\r
-            "AT",\r
-            "FA",\r
-            "GE",\r
-            "GI",\r
-            "PA",\r
-            "SA",\r
-            "TU",\r
-            "VF",\r
-            "VS",\r
+            "wsaa",\r
+            "wsal",\r
+            "wsat",\r
+            "wsfa",\r
+            "wsge",\r
+            "wsgi",\r
+            "wspa",\r
+            "wssa",\r
+            "wstu",\r
+            "wsvf",\r
+            "wsvs",\r
         }\r
         YE{\r
-            "AB",\r
-            "AD",\r
-            "AM",\r
-            "BA",\r
-            "DA",\r
-            "DH",\r
-            "HD",\r
-            "HJ",\r
-            "HU",\r
-            "IB",\r
-            "JA",\r
-            "LA",\r
-            "MA",\r
-            "MR",\r
-            "MW",\r
-            "RA",\r
-            "SA",\r
-            "SD",\r
-            "SH",\r
-            "SN",\r
-            "SU",\r
-            "TA",\r
+            "yeab",\r
+            "yead",\r
+            "yeam",\r
+            "yeba",\r
+            "yeda",\r
+            "yedh",\r
+            "yehd",\r
+            "yehj",\r
+            "yehu",\r
+            "yeib",\r
+            "yeja",\r
+            "yela",\r
+            "yema",\r
+            "yemr",\r
+            "yemw",\r
+            "yera",\r
+            "yesa",\r
+            "yesd",\r
+            "yesh",\r
+            "yesn",\r
+            "yesu",\r
+            "yeta",\r
         }\r
-        ZA{\r
-            "EC",\r
-            "FS",\r
-            "GT",\r
-            "LP",\r
-            "MP",\r
-            "NC",\r
-            "NL",\r
-            "NW",\r
-            "WC",\r
+        ZA{\r
+            "zaec",\r
+            "zafs",\r
+            "zagt",\r
+            "zalp",\r
+            "zamp",\r
+            "zanc",\r
+            "zanl",\r
+            "zanw",\r
+            "zawc",\r
         }\r
         ZM{\r
-            "01",\r
-            "02",\r
-            "03",\r
-            "04",\r
-            "05",\r
-            "06",\r
-            "07",\r
-            "08",\r
-            "09",\r
-            "10",\r
+            "zm01",\r
+            "zm02",\r
+            "zm03",\r
+            "zm04",\r
+            "zm05",\r
+            "zm06",\r
+            "zm07",\r
+            "zm08",\r
+            "zm09",\r
+            "zm10",\r
         }\r
         ZW{\r
-            "BU",\r
-            "HA",\r
-            "MA",\r
-            "MC",\r
-            "ME",\r
-            "MI",\r
-            "MN",\r
-            "MS",\r
-            "MV",\r
-            "MW",\r
+            "zwbu",\r
+            "zwha",\r
+            "zwma",\r
+            "zwmc",\r
+            "zwme",\r
+            "zwmi",\r
+            "zwmn",\r
+            "zwms",\r
+            "zwmv",\r
+            "zwmw",\r
+        }\r
+        aznx{\r
+            "azbab",\r
+            "azcul",\r
+            "azkan",\r
+            "aznv",\r
+            "azord",\r
+            "azsad",\r
+            "azsah",\r
+            "azsar",\r
+        }\r
+        bda{\r
+            "bd02",\r
+            "bd06",\r
+            "bd07",\r
+            "bd25",\r
+            "bd50",\r
+            "bd51",\r
+        }\r
+        bdb{\r
+            "bd01",\r
+            "bd04",\r
+            "bd08",\r
+            "bd09",\r
+            "bd10",\r
+            "bd11",\r
+            "bd16",\r
+            "bd29",\r
+            "bd31",\r
+            "bd47",\r
+            "bd56",\r
+        }\r
+        bdc{\r
+            "bd13",\r
+            "bd15",\r
+            "bd17",\r
+            "bd18",\r
+            "bd26",\r
+            "bd33",\r
+            "bd35",\r
+            "bd36",\r
+            "bd40",\r
+            "bd42",\r
+            "bd53",\r
+            "bd62",\r
+            "bd63",\r
+        }\r
+        bdd{\r
+            "bd05",\r
+            "bd12",\r
+            "bd22",\r
+            "bd23",\r
+            "bd27",\r
+            "bd30",\r
+            "bd37",\r
+            "bd39",\r
+            "bd43",\r
+            "bd58",\r
+        }\r
+        bde{\r
+            "bd03",\r
+            "bd24",\r
+            "bd44",\r
+            "bd45",\r
+            "bd48",\r
+            "bd49",\r
+            "bd54",\r
+            "bd59",\r
+        }\r
+        bdf{\r
+            "bd14",\r
+            "bd19",\r
+            "bd28",\r
+            "bd32",\r
+            "bd46",\r
+            "bd52",\r
+            "bd55",\r
+            "bd64",\r
+        }\r
+        bdg{\r
+            "bd20",\r
+            "bd38",\r
+            "bd60",\r
+            "bd61",\r
+        }\r
+        bdh{\r
+            "bd21",\r
+            "bd34",\r
+            "bd41",\r
+            "bd57",\r
+        }\r
+        bevlg{\r
+            "bevan",\r
+            "bevbr",\r
+            "bevli",\r
+            "bevov",\r
+            "bevwv",\r
+        }\r
+        bewal{\r
+            "bewbr",\r
+            "bewht",\r
+            "bewlg",\r
+            "bewlx",\r
+            "bewna",\r
+        }\r
+        bf01{\r
+            "bfbal",\r
+            "bfban",\r
+            "bfkos",\r
+            "bfmou",\r
+            "bfnay",\r
+            "bfsor",\r
+        }\r
+        bf02{\r
+            "bfcom",\r
+            "bfler",\r
+        }\r
+        bf03{"bfkad"}\r
+        bf04{\r
+            "bfblg",\r
+            "bfkop",\r
+            "bfkot",\r
+        }\r
+        bf05{\r
+            "bfbam",\r
+            "bfnam",\r
+            "bfsmt",\r
+        }\r
+        bf06{\r
+            "bfblk",\r
+            "bfsis",\r
+            "bfsng",\r
+            "bfzir",\r
+        }\r
+        bf07{\r
+            "bfbaz",\r
+            "bfnao",\r
+            "bfzou",\r
+        }\r
+        bf08{\r
+            "bfgna",\r
+            "bfgou",\r
+            "bfkmd",\r
+            "bfkmp",\r
+            "bftap",\r
+        }\r
+        bf09{\r
+            "bfhou",\r
+            "bfken",\r
+            "bftui",\r
+        }\r
+        bf10{\r
+            "bflor",\r
+            "bfpas",\r
+            "bfyat",\r
+            "bfzon",\r
+        }\r
+        bf11{\r
+            "bfgan",\r
+            "bfkow",\r
+            "bfoub",\r
+        }\r
+        bf12{\r
+            "bfoud",\r
+            "bfsen",\r
+            "bfsom",\r
+            "bfyag",\r
+        }\r
+        bf13{\r
+            "bfbgr",\r
+            "bfiob",\r
+            "bfnou",\r
+            "bfpon",\r
+        }\r
+        cvb{\r
+            "cvbv",\r
+            "cvpa",\r
+            "cvpn",\r
+            "cvrb",\r
+            "cvrg",\r
+            "cvsl",\r
+            "cvsv",\r
+            "cvts",\r
+        }\r
+        cvs{\r
+            "cvbr",\r
+            "cvca",\r
+            "cvcf",\r
+            "cvcr",\r
+            "cvma",\r
+            "cvmo",\r
+            "cvpr",\r
+            "cvrs",\r
+            "cvsd",\r
+            "cvsf",\r
+            "cvsm",\r
+            "cvso",\r
+            "cvss",\r
+            "cvta",\r
+        }\r
+        cz10{\r
+            "cz101",\r
+            "cz102",\r
+            "cz103",\r
+            "cz104",\r
+            "cz105",\r
+            "cz106",\r
+            "cz107",\r
+            "cz108",\r
+            "cz109",\r
+            "cz110",\r
+            "cz111",\r
+            "cz112",\r
+            "cz113",\r
+            "cz114",\r
+            "cz115",\r
+            "cz116",\r
+            "cz117",\r
+            "cz118",\r
+            "cz119",\r
+            "cz120",\r
+            "cz121",\r
+            "cz122",\r
+        }\r
+        cz20{\r
+            "cz20a",\r
+            "cz20b",\r
+            "cz20c",\r
+            "cz201",\r
+            "cz202",\r
+            "cz203",\r
+            "cz204",\r
+            "cz205",\r
+            "cz206",\r
+            "cz207",\r
+            "cz208",\r
+            "cz209",\r
+        }\r
+        cz31{\r
+            "cz311",\r
+            "cz312",\r
+            "cz313",\r
+            "cz314",\r
+            "cz315",\r
+            "cz316",\r
+            "cz317",\r
+        }\r
+        cz32{\r
+            "cz321",\r
+            "cz322",\r
+            "cz323",\r
+            "cz324",\r
+            "cz325",\r
+            "cz326",\r
+            "cz327",\r
+        }\r
+        cz41{\r
+            "cz411",\r
+            "cz412",\r
+            "cz413",\r
+        }\r
+        cz42{\r
+            "cz421",\r
+            "cz422",\r
+            "cz423",\r
+            "cz424",\r
+            "cz425",\r
+            "cz426",\r
+            "cz427",\r
+        }\r
+        cz51{\r
+            "cz511",\r
+            "cz512",\r
+            "cz513",\r
+            "cz514",\r
+        }\r
+        cz52{\r
+            "cz521",\r
+            "cz522",\r
+            "cz523",\r
+            "cz524",\r
+            "cz525",\r
+        }\r
+        cz53{\r
+            "cz531",\r
+            "cz532",\r
+            "cz533",\r
+            "cz534",\r
+        }\r
+        cz63{\r
+            "cz631",\r
+            "cz632",\r
+            "cz633",\r
+            "cz634",\r
+            "cz635",\r
+        }\r
+        cz64{\r
+            "cz641",\r
+            "cz642",\r
+            "cz643",\r
+            "cz644",\r
+            "cz645",\r
+            "cz646",\r
+            "cz647",\r
+        }\r
+        cz71{\r
+            "cz711",\r
+            "cz712",\r
+            "cz713",\r
+            "cz714",\r
+            "cz715",\r
+        }\r
+        cz72{\r
+            "cz721",\r
+            "cz722",\r
+            "cz723",\r
+            "cz724",\r
+        }\r
+        cz80{\r
+            "cz801",\r
+            "cz802",\r
+            "cz803",\r
+            "cz804",\r
+            "cz805",\r
+            "cz806",\r
+        }\r
+        do33{\r
+            "do06",\r
+            "do14",\r
+            "do19",\r
+            "do20",\r
+        }\r
+        do34{\r
+            "do05",\r
+            "do15",\r
+            "do26",\r
+            "do27",\r
+        }\r
+        do35{\r
+            "do09",\r
+            "do18",\r
+            "do25",\r
+        }\r
+        do36{\r
+            "do13",\r
+            "do24",\r
+            "do28",\r
+        }\r
+        do37{\r
+            "do07",\r
+            "do22",\r
+        }\r
+        do38{\r
+            "do03",\r
+            "do04",\r
+            "do10",\r
+            "do16",\r
+        }\r
+        do39{\r
+            "do23",\r
+            "do29",\r
+            "do30",\r
+        }\r
+        do40{\r
+            "do01",\r
+            "do32",\r
+        }\r
+        do41{\r
+            "do02",\r
+            "do17",\r
+            "do21",\r
+            "do31",\r
+        }\r
+        do42{\r
+            "do08",\r
+            "do11",\r
+            "do12",\r
+        }\r
+        esan{\r
+            "esal",\r
+            "esca",\r
+            "esco",\r
+            "esgr",\r
+            "esh",\r
+            "esj",\r
+            "esma",\r
+            "esse",\r
+        }\r
+        esar{\r
+            "eshu",\r
+            "este",\r
+            "esz",\r
+        }\r
+        esas{"eso"}\r
+        escb{"ess"}\r
+        escl{\r
+            "esav",\r
+            "esbu",\r
+            "esle",\r
+            "esp",\r
+            "essa",\r
+            "essg",\r
+            "esso",\r
+            "esva",\r
+            "esza",\r
+        }\r
+        escm{\r
+            "esab",\r
+            "escr",\r
+            "escu",\r
+            "esgu",\r
+            "esto",\r
+        }\r
+        escn{\r
+            "esgc",\r
+            "estf",\r
+        }\r
+        esct{\r
+            "esb",\r
+            "esgi",\r
+            "esl",\r
+            "est",\r
+        }\r
+        esex{\r
+            "esba",\r
+            "escc",\r
+        }\r
+        esga{\r
+            "esc",\r
+            "eslu",\r
+            "esor",\r
+            "espo",\r
+        }\r
+        esib{"espm"}\r
+        esmc{"esmu"}\r
+        esmd{"esm"}\r
+        esnc{"esna"}\r
+        espv{\r
+            "esbi",\r
+            "esss",\r
+            "esvi",\r
+        }\r
+        esri{"eslo"}\r
+        esvc{\r
+            "esa",\r
+            "escs",\r
+            "esv",\r
+        }\r
+        fjc{\r
+            "fj09",\r
+            "fj10",\r
+            "fj12",\r
+            "fj13",\r
+            "fj14",\r
+        }\r
+        fje{\r
+            "fj04",\r
+            "fj05",\r
+            "fj06",\r
+        }\r
+        fjn{\r
+            "fj02",\r
+            "fj03",\r
+            "fj07",\r
+        }\r
+        fjw{\r
+            "fj01",\r
+            "fj08",\r
+            "fj11",\r
+        }\r
+        frara{\r
+            "fr01",\r
+            "fr03",\r
+            "fr07",\r
+            "fr15",\r
+            "fr26",\r
+            "fr38",\r
+            "fr42",\r
+            "fr43",\r
+            "fr63",\r
+            "fr69",\r
+            "fr73",\r
+            "fr74",\r
+        }\r
+        frbfc{\r
+            "fr21",\r
+            "fr25",\r
+            "fr39",\r
+            "fr58",\r
+            "fr70",\r
+            "fr71",\r
+            "fr89",\r
+            "fr90",\r
+        }\r
+        frbre{\r
+            "fr22",\r
+            "fr29",\r
+            "fr35",\r
+            "fr56",\r
+        }\r
+        frcor{\r
+            "fr2a",\r
+            "fr2b",\r
+        }\r
+        frcvl{\r
+            "fr18",\r
+            "fr28",\r
+            "fr36",\r
+            "fr37",\r
+            "fr41",\r
+            "fr45",\r
+        }\r
+        frges{\r
+            "fr08",\r
+            "fr10",\r
+            "fr51",\r
+            "fr52",\r
+            "fr54",\r
+            "fr55",\r
+            "fr57",\r
+            "fr67",\r
+            "fr68",\r
+            "fr88",\r
+        }\r
+        frgua{"frgp"}\r
+        frhdf{\r
+            "fr02",\r
+            "fr59",\r
+            "fr60",\r
+            "fr62",\r
+            "fr80",\r
+        }\r
+        fridf{\r
+            "fr75",\r
+            "fr77",\r
+            "fr78",\r
+            "fr91",\r
+            "fr92",\r
+            "fr93",\r
+            "fr94",\r
+            "fr95",\r
+        }\r
+        frlre{"frre"}\r
+        frmay{"fryt"}\r
+        frnaq{\r
+            "fr16",\r
+            "fr17",\r
+            "fr19",\r
+            "fr23",\r
+            "fr24",\r
+            "fr33",\r
+            "fr40",\r
+            "fr47",\r
+            "fr64",\r
+            "fr79",\r
+            "fr86",\r
+            "fr87",\r
+        }\r
+        frnor{\r
+            "fr14",\r
+            "fr27",\r
+            "fr50",\r
+            "fr61",\r
+            "fr76",\r
+        }\r
+        frocc{\r
+            "fr09",\r
+            "fr11",\r
+            "fr12",\r
+            "fr30",\r
+            "fr31",\r
+            "fr32",\r
+            "fr34",\r
+            "fr46",\r
+            "fr48",\r
+            "fr65",\r
+            "fr66",\r
+            "fr81",\r
+            "fr82",\r
+        }\r
+        frpac{\r
+            "fr04",\r
+            "fr05",\r
+            "fr06",\r
+            "fr13",\r
+            "fr83",\r
+            "fr84",\r
+        }\r
+        frpdl{\r
+            "fr44",\r
+            "fr49",\r
+            "fr53",\r
+            "fr72",\r
+            "fr85",\r
+        }\r
+        gbeng{\r
+            "gbbas",\r
+            "gbbbd",\r
+            "gbbdf",\r
+            "gbbdg",\r
+            "gbben",\r
+            "gbbex",\r
+            "gbbir",\r
+            "gbbkm",\r
+            "gbbmh",\r
+            "gbbne",\r
+            "gbbnh",\r
+            "gbbns",\r
+            "gbbol",\r
+            "gbbpl",\r
+            "gbbrc",\r
+            "gbbrd",\r
+            "gbbry",\r
+            "gbbst",\r
+            "gbbur",\r
+            "gbcam",\r
+            "gbcbf",\r
+            "gbche",\r
+            "gbchw",\r
+            "gbcld",\r
+            "gbcma",\r
+            "gbcmd",\r
+            "gbcon",\r
+            "gbcov",\r
+            "gbcry",\r
+            "gbdal",\r
+            "gbdby",\r
+            "gbder",\r
+            "gbdev",\r
+            "gbdnc",\r
+            "gbdor",\r
+            "gbdud",\r
+            "gbdur",\r
+            "gbeal",\r
+            "gbenf",\r
+            "gbery",\r
+            "gbess",\r
+            "gbesx",\r
+            "gbgat",\r
+            "gbgls",\r
+            "gbgre",\r
+            "gbhal",\r
+            "gbham",\r
+            "gbhav",\r
+            "gbhck",\r
+            "gbhef",\r
+            "gbhil",\r
+            "gbhmf",\r
+            "gbhns",\r
+            "gbhpl",\r
+            "gbhrt",\r
+            "gbhrw",\r
+            "gbhry",\r
+            "gbios",\r
+            "gbiow",\r
+            "gbisl",\r
+            "gbkec",\r
+            "gbken",\r
+            "gbkhl",\r
+            "gbkir",\r
+            "gbktt",\r
+            "gbkwl",\r
+            "gblan",\r
+            "gblbh",\r
+            "gblce",\r
+            "gblds",\r
+            "gblec",\r
+            "gblew",\r
+            "gblin",\r
+            "gbliv",\r
+            "gblnd",\r
+            "gblut",\r
+            "gbman",\r
+            "gbmdb",\r
+            "gbmdw",\r
+            "gbmik",\r
+            "gbmrt",\r
+            "gbnbl",\r
+            "gbnel",\r
+            "gbnet",\r
+            "gbnfk",\r
+            "gbngm",\r
+            "gbnln",\r
+            "gbnsm",\r
+            "gbnth",\r
+            "gbntt",\r
+            "gbnty",\r
+            "gbnwm",\r
+            "gbnyk",\r
+            "gbold",\r
+            "gboxf",\r
+            "gbply",\r
+            "gbpol",\r
+            "gbpor",\r
+            "gbpte",\r
+            "gbrcc",\r
+            "gbrch",\r
+            "gbrdb",\r
+            "gbrdg",\r
+            "gbric",\r
+            "gbrot",\r
+            "gbrut",\r
+            "gbsaw",\r
+            "gbsfk",\r
+            "gbsft",\r
+            "gbsgc",\r
+            "gbshf",\r
+            "gbshn",\r
+            "gbshr",\r
+            "gbskp",\r
+            "gbslf",\r
+            "gbslg",\r
+            "gbsnd",\r
+            "gbsol",\r
+            "gbsom",\r
+            "gbsos",\r
+            "gbsry",\r
+            "gbste",\r
+            "gbsth",\r
+            "gbstn",\r
+            "gbsts",\r
+            "gbstt",\r
+            "gbsty",\r
+            "gbswd",\r
+            "gbswk",\r
+            "gbtam",\r
+            "gbtfw",\r
+            "gbthr",\r
+            "gbtob",\r
+            "gbtrf",\r
+            "gbtwh",\r
+            "gbwar",\r
+            "gbwbk",\r
+            "gbwft",\r
+            "gbwgn",\r
+            "gbwil",\r
+            "gbwkf",\r
+            "gbwll",\r
+            "gbwlv",\r
+            "gbwnd",\r
+            "gbwnm",\r
+            "gbwok",\r
+            "gbwor",\r
+            "gbwrl",\r
+            "gbwrt",\r
+            "gbwsm",\r
+            "gbwsx",\r
+            "gbyor",\r
+        }\r
+        gbnir{\r
+            "gbabc",\r
+            "gband",\r
+            "gbann",\r
+            "gbbfs",\r
+            "gbccg",\r
+            "gbdrs",\r
+            "gbfmo",\r
+            "gblbc",\r
+            "gbmea",\r
+            "gbmul",\r
+            "gbnmd",\r
+        }\r
+        gbsct{\r
+            "gbabd",\r
+            "gbabe",\r
+            "gbagb",\r
+            "gbans",\r
+            "gbclk",\r
+            "gbdgy",\r
+            "gbdnd",\r
+            "gbeay",\r
+            "gbedh",\r
+            "gbedu",\r
+            "gbeln",\r
+            "gbels",\r
+            "gberw",\r
+            "gbfal",\r
+            "gbfif",\r
+            "gbglg",\r
+            "gbhld",\r
+            "gbivc",\r
+            "gbmln",\r
+            "gbmry",\r
+            "gbnay",\r
+            "gbnlk",\r
+            "gbork",\r
+            "gbpkn",\r
+            "gbrfw",\r
+            "gbsay",\r
+            "gbscb",\r
+            "gbslk",\r
+            "gbstg",\r
+            "gbwdu",\r
+            "gbwln",\r
+            "gbzet",\r
+        }\r
+        gbwls{\r
+            "gbagy",\r
+            "gbbge",\r
+            "gbbgw",\r
+            "gbcay",\r
+            "gbcgn",\r
+            "gbcmn",\r
+            "gbcrf",\r
+            "gbcwy",\r
+            "gbden",\r
+            "gbfln",\r
+            "gbgwn",\r
+            "gbmon",\r
+            "gbmty",\r
+            "gbntl",\r
+            "gbnwp",\r
+            "gbpem",\r
+            "gbpow",\r
+            "gbrct",\r
+            "gbswa",\r
+            "gbtof",\r
+            "gbvgl",\r
+            "gbwrx",\r
+        }\r
+        gnb{\r
+            "gnbf",\r
+            "gnbk",\r
+            "gnfr",\r
+            "gnga",\r
+            "gnkn",\r
+        }\r
+        gnd{\r
+            "gnco",\r
+            "gndu",\r
+            "gnfo",\r
+            "gnkd",\r
+            "gnte",\r
+        }\r
+        gnf{\r
+            "gndb",\r
+            "gndi",\r
+            "gnfa",\r
+            "gnks",\r
+        }\r
+        gnk{\r
+            "gnka",\r
+            "gnke",\r
+            "gnko",\r
+            "gnmd",\r
+            "gnsi",\r
+        }\r
+        gnl{\r
+            "gnkb",\r
+            "gnla",\r
+            "gnle",\r
+            "gnml",\r
+            "gnto",\r
+        }\r
+        gnm{\r
+            "gndl",\r
+            "gnmm",\r
+            "gnpi",\r
+        }\r
+        gnn{\r
+            "gnbe",\r
+            "gngu",\r
+            "gnlo",\r
+            "gnmc",\r
+            "gnnz",\r
+            "gnyo",\r
+        }\r
+        gqc{\r
+            "gqcs",\r
+            "gqkn",\r
+            "gqli",\r
+            "gqwn",\r
+        }\r
+        gqi{\r
+            "gqan",\r
+            "gqbn",\r
+            "gqbs",\r
+        }\r
+        gwl{\r
+            "gwba",\r
+            "gwga",\r
+        }\r
+        gwn{\r
+            "gwbm",\r
+            "gwca",\r
+            "gwoi",\r
+        }\r
+        gws{\r
+            "gwbl",\r
+            "gwqu",\r
+            "gwto",\r
+        }\r
+        idjw{\r
+            "idbt",\r
+            "idjb",\r
+            "idji",\r
+            "idjk",\r
+            "idjt",\r
+            "idyo",\r
+        }\r
+        idka{\r
+            "idkb",\r
+            "idki",\r
+            "idks",\r
+            "idkt",\r
+            "idku",\r
+        }\r
+        idml{\r
+            "idma",\r
+            "idmu",\r
+        }\r
+        idnu{\r
+            "idba",\r
+            "idnb",\r
+            "idnt",\r
+        }\r
+        idpp{\r
+            "idpa",\r
+            "idpb",\r
+        }\r
+        idsl{\r
+            "idgo",\r
+            "idsa",\r
+            "idsg",\r
+            "idsn",\r
+            "idsr",\r
+            "idst",\r
+        }\r
+        idsm{\r
+            "idac",\r
+            "idbb",\r
+            "idbe",\r
+            "idja",\r
+            "idkr",\r
+            "idla",\r
+            "idri",\r
+            "idsb",\r
+            "idss",\r
+            "idsu",\r
+        }\r
+        iec{\r
+            "ieg",\r
+            "ielm",\r
+            "iemo",\r
+            "iern",\r
+            "ieso",\r
+        }\r
+        iel{\r
+            "iecw",\r
+            "ied",\r
+            "ieke",\r
+            "iekk",\r
+            "ield",\r
+            "ielh",\r
+            "iels",\r
+            "iemh",\r
+            "ieoy",\r
+            "iewh",\r
+            "ieww",\r
+            "iewx",\r
+        }\r
+        iem{\r
+            "iece",\r
+            "ieco",\r
+            "ieky",\r
+            "ielk",\r
+            "ieta",\r
+            "iewd",\r
+        }\r
+        ieu{\r
+            "iecn",\r
+            "iedl",\r
+            "iemn",\r
+        }\r
+        it21{\r
+            "ital",\r
+            "itat",\r
+            "itbi",\r
+            "itcn",\r
+            "itno",\r
+            "itto",\r
+            "itvb",\r
+            "itvc",\r
+        }\r
+        it23{"itao"}\r
+        it25{\r
+            "itbg",\r
+            "itbs",\r
+            "itco",\r
+            "itcr",\r
+            "itlc",\r
+            "itlo",\r
+            "itmb",\r
+            "itmi",\r
+            "itmn",\r
+            "itpv",\r
+            "itso",\r
+            "itva",\r
+        }\r
+        it32{\r
+            "itbz",\r
+            "ittn",\r
+        }\r
+        it34{\r
+            "itbl",\r
+            "itpd",\r
+            "itro",\r
+            "ittv",\r
+            "itve",\r
+            "itvi",\r
+            "itvr",\r
+        }\r
+        it36{\r
+            "itgo",\r
+            "itpn",\r
+            "itts",\r
+            "itud",\r
+        }\r
+        it42{\r
+            "itge",\r
+            "itim",\r
+            "itsp",\r
+            "itsv",\r
+        }\r
+        it45{\r
+            "itbo",\r
+            "itfc",\r
+            "itfe",\r
+            "itmo",\r
+            "itpc",\r
+            "itpr",\r
+            "itra",\r
+            "itre",\r
+            "itrn",\r
+        }\r
+        it52{\r
+            "itar",\r
+            "itfi",\r
+            "itgr",\r
+            "itli",\r
+            "itlu",\r
+            "itms",\r
+            "itpi",\r
+            "itpo",\r
+            "itpt",\r
+            "itsi",\r
+        }\r
+        it55{\r
+            "itpg",\r
+            "ittr",\r
+        }\r
+        it57{\r
+            "itan",\r
+            "itap",\r
+            "itfm",\r
+            "itmc",\r
+            "itpu",\r
+        }\r
+        it62{\r
+            "itfr",\r
+            "itlt",\r
+            "itri",\r
+            "itrm",\r
+            "itvt",\r
+        }\r
+        it65{\r
+            "itaq",\r
+            "itch",\r
+            "itpe",\r
+            "itte",\r
+        }\r
+        it67{\r
+            "itcb",\r
+            "itis",\r
+        }\r
+        it72{\r
+            "itav",\r
+            "itbn",\r
+            "itce",\r
+            "itna",\r
+            "itsa",\r
+        }\r
+        it75{\r
+            "itba",\r
+            "itbr",\r
+            "itbt",\r
+            "itfg",\r
+            "itle",\r
+            "itta",\r
+        }\r
+        it77{\r
+            "itmt",\r
+            "itpz",\r
+        }\r
+        it78{\r
+            "itcs",\r
+            "itcz",\r
+            "itkr",\r
+            "itrc",\r
+            "itvv",\r
+        }\r
+        it82{\r
+            "itag",\r
+            "itcl",\r
+            "itct",\r
+            "iten",\r
+            "itme",\r
+            "itpa",\r
+            "itrg",\r
+            "itsr",\r
+            "ittp",\r
+        }\r
+        it88{\r
+            "itca",\r
+            "itci",\r
+            "itnu",\r
+            "itog",\r
+            "itor",\r
+            "itot",\r
+            "itss",\r
+            "itvs",\r
+        }\r
+        knk{\r
+            "kn01",\r
+            "kn02",\r
+            "kn03",\r
+            "kn06",\r
+            "kn08",\r
+            "kn09",\r
+            "kn11",\r
+            "kn13",\r
+            "kn15",\r
+        }\r
+        knn{\r
+            "kn04",\r
+            "kn05",\r
+            "kn07",\r
+            "kn10",\r
+            "kn12",\r
+        }\r
+        lk1{\r
+            "lk52",\r
+            "lk71",\r
+            "lk81",\r
+        }\r
+        lk2{\r
+            "lk11",\r
+            "lk31",\r
+            "lk51",\r
+        }\r
+        lk3{\r
+            "lk12",\r
+            "lk33",\r
+            "lk41",\r
+        }\r
+        lk4{\r
+            "lk13",\r
+            "lk21",\r
+            "lk42",\r
+            "lk61",\r
+            "lk92",\r
+        }\r
+        lk5{\r
+            "lk22",\r
+            "lk32",\r
+            "lk43",\r
+        }\r
+        lk6{\r
+            "lk45",\r
+            "lk82",\r
+        }\r
+        lk7{\r
+            "lk23",\r
+            "lk72",\r
+        }\r
+        lk8{\r
+            "lk62",\r
+            "lk91",\r
+        }\r
+        lk9{\r
+            "lk44",\r
+            "lk53",\r
+        }\r
+        ma01{\r
+            "mache",\r
+            "mafah",\r
+            "malar",\r
+            "matet",\r
+            "matng",\r
+        }\r
+        ma02{\r
+            "maken",\r
+            "masik",\r
+        }\r
+        ma03{\r
+            "mahoc",\r
+            "matao",\r
+            "mataz",\r
+        }\r
+        ma04{\r
+            "maber",\r
+            "mafig",\r
+            "majra",\r
+            "manad",\r
+            "maouj",\r
+            "matai",\r
+        }\r
+        ma05{\r
+            "mabom",\r
+            "mafes",\r
+            "mamou",\r
+            "masef",\r
+        }\r
+        ma06{\r
+            "maerr",\r
+            "mahaj",\r
+            "maifr",\r
+            "makhn",\r
+            "mamek",\r
+        }\r
+        ma07{\r
+            "makhe",\r
+            "marab",\r
+            "masal",\r
+            "maskh",\r
+        }\r
+        ma08{\r
+            "macas",\r
+            "mamed",\r
+            "mamoh",\r
+            "manou",\r
+        }\r
+        ma09{\r
+            "mabes",\r
+            "makho",\r
+            "maset",\r
+        }\r
+        ma10{\r
+            "majdi",\r
+            "masaf",\r
+        }\r
+        ma11{\r
+            "machi",\r
+            "maesi",\r
+            "mahao",\r
+            "makes",\r
+            "mammd",\r
+            "mammn",\r
+            "masyb",\r
+        }\r
+        ma12{\r
+            "maazi",\r
+            "mabem",\r
+        }\r
+        ma13{\r
+            "maagd",\r
+            "macht",\r
+            "maine",\r
+            "maoua",\r
+            "matar",\r
+            "matiz",\r
+            "mazag",\r
+        }\r
+        ma14{\r
+            "maasz",\r
+            "maesm",\r
+            "mague",\r
+            "matat",\r
+            "matnt",\r
+        }\r
+        ma15{\r
+            "mabod",\r
+            "malaa",\r
+        }\r
+        ma16{\r
+            "maaou",\r
+            "maoud",\r
+        }\r
+        mhl{\r
+            "mhall",\r
+            "mhebo",\r
+            "mheni",\r
+            "mhjab",\r
+            "mhjal",\r
+            "mhkil",\r
+            "mhkwa",\r
+            "mhlae",\r
+            "mhlib",\r
+            "mhnmk",\r
+            "mhnmu",\r
+            "mhron",\r
+            "mhuja",\r
+            "mhwth",\r
+        }\r
+        mht{\r
+            "mhalk",\r
+            "mharn",\r
+            "mhaur",\r
+            "mhlik",\r
+            "mhmaj",\r
+            "mhmal",\r
+            "mhmej",\r
+            "mhmil",\r
+            "mhuti",\r
+            "mhwtj",\r
+        }\r
+        mvce{\r
+            "mv12",\r
+            "mv14",\r
+            "mv17",\r
+        }\r
+        mvnc{\r
+            "mv00",\r
+            "mv02",\r
+            "mv04",\r
+            "mv26",\r
+        }\r
+        mvno{\r
+            "mv03",\r
+            "mv13",\r
+            "mv20",\r
+            "mv25",\r
+        }\r
+        mvsc{\r
+            "mv27",\r
+            "mv28",\r
+        }\r
+        mvsu{\r
+            "mv01",\r
+            "mv29",\r
+        }\r
+        mvun{\r
+            "mv07",\r
+            "mv23",\r
+            "mv24",\r
+        }\r
+        mvus{\r
+            "mv05",\r
+            "mv08",\r
+        }\r
+        mwc{\r
+            "mwde",\r
+            "mwdo",\r
+            "mwks",\r
+            "mwli",\r
+            "mwmc",\r
+            "mwni",\r
+            "mwnk",\r
+            "mwnu",\r
+            "mwsa",\r
+        }\r
+        mwn{\r
+            "mwct",\r
+            "mwkr",\r
+            "mwlk",\r
+            "mwmz",\r
+            "mwnb",\r
+            "mwru",\r
+        }\r
+        mws{\r
+            "mwba",\r
+            "mwbl",\r
+            "mwck",\r
+            "mwcr",\r
+            "mwmg",\r
+            "mwmh",\r
+            "mwmu",\r
+            "mwmw",\r
+            "mwne",\r
+            "mwns",\r
+            "mwph",\r
+            "mwth",\r
+            "mwzo",\r
+        }\r
+        np1{\r
+            "npba",\r
+            "npja",\r
+            "npna",\r
+        }\r
+        np2{\r
+            "npbh",\r
+            "npka",\r
+            "npra",\r
+        }\r
+        np3{\r
+            "npdh",\r
+            "npga",\r
+            "nplu",\r
+        }\r
+        np4{\r
+            "npko",\r
+            "npme",\r
+            "npsa",\r
+        }\r
+        np5{\r
+            "npma",\r
+            "npse",\r
+        }\r
+        ph01{\r
+            "philn",\r
+            "phils",\r
+            "phlun",\r
+            "phpan",\r
+        }\r
+        ph02{\r
+            "phbtn",\r
+            "phcag",\r
+            "phisa",\r
+            "phnuv",\r
+            "phqui",\r
+        }\r
+        ph03{\r
+            "phaur",\r
+            "phban",\r
+            "phbul",\r
+            "phnue",\r
+            "phpam",\r
+            "phtar",\r
+            "phzmb",\r
+        }\r
+        ph05{\r
+            "phalb",\r
+            "phcan",\r
+            "phcas",\r
+            "phcat",\r
+            "phmas",\r
+            "phsor",\r
+        }\r
+        ph06{\r
+            "phakl",\r
+            "phant",\r
+            "phcap",\r
+            "phgui",\r
+            "phili",\r
+            "phnec",\r
+        }\r
+        ph07{\r
+            "phboh",\r
+            "phceb",\r
+            "phner",\r
+            "phsig",\r
+        }\r
+        ph08{\r
+            "phbil",\r
+            "pheas",\r
+            "phley",\r
+            "phnsa",\r
+            "phsle",\r
+            "phwsa",\r
+        }\r
+        ph09{\r
+            "phbas",\r
+            "phzan",\r
+            "phzas",\r
+            "phzsi",\r
+        }\r
+        ph10{\r
+            "phbuk",\r
+            "phcam",\r
+            "phmsc",\r
+            "phmsr",\r
+        }\r
+        ph11{\r
+            "phcom",\r
+            "phdao",\r
+            "phdas",\r
+            "phdav",\r
+            "phdvo",\r
+            "phsar",\r
+            "phsco",\r
+        }\r
+        ph12{\r
+            "phlan",\r
+            "phnco",\r
+            "phsuk",\r
+        }\r
+        ph13{\r
+            "phagn",\r
+            "phags",\r
+            "phdin",\r
+            "phsun",\r
+            "phsur",\r
+        }\r
+        ph14{\r
+            "phlas",\r
+            "phmag",\r
+            "phslu",\r
+            "phtaw",\r
+        }\r
+        ph15{\r
+            "phabr",\r
+            "phapa",\r
+            "phben",\r
+            "phifu",\r
+            "phkal",\r
+            "phmou",\r
+        }\r
+        ph40{\r
+            "phbtg",\r
+            "phcav",\r
+            "phlag",\r
+            "phque",\r
+            "phriz",\r
+        }\r
+        ph41{\r
+            "phmad",\r
+            "phmdc",\r
+            "phmdr",\r
+            "phplw",\r
+            "phrom",\r
+        }\r
+        rskm{\r
+            "rs25",\r
+            "rs26",\r
+            "rs27",\r
+            "rs28",\r
+            "rs29",\r
+        }\r
+        rsvo{\r
+            "rs01",\r
+            "rs02",\r
+            "rs03",\r
+            "rs04",\r
+            "rs05",\r
+            "rs06",\r
+            "rs07",\r
+        }\r
+        ugc{\r
+            "ug101",\r
+            "ug102",\r
+            "ug103",\r
+            "ug104",\r
+            "ug105",\r
+            "ug106",\r
+            "ug107",\r
+            "ug108",\r
+            "ug109",\r
+            "ug110",\r
+            "ug111",\r
+            "ug112",\r
+            "ug113",\r
+            "ug114",\r
+            "ug115",\r
+            "ug116",\r
+            "ug117",\r
+            "ug118",\r
+            "ug119",\r
+            "ug120",\r
+            "ug121",\r
+            "ug122",\r
+            "ug123",\r
+            "ug124",\r
+        }\r
+        uge{\r
+            "ug201",\r
+            "ug202",\r
+            "ug203",\r
+            "ug204",\r
+            "ug205",\r
+            "ug206",\r
+            "ug207",\r
+            "ug208",\r
+            "ug209",\r
+            "ug210",\r
+            "ug211",\r
+            "ug212",\r
+            "ug213",\r
+            "ug214",\r
+            "ug215",\r
+            "ug216",\r
+            "ug217",\r
+            "ug218",\r
+            "ug219",\r
+            "ug220",\r
+            "ug221",\r
+            "ug222",\r
+            "ug223",\r
+            "ug224",\r
+            "ug225",\r
+            "ug226",\r
+            "ug227",\r
+            "ug228",\r
+            "ug229",\r
+            "ug230",\r
+            "ug231",\r
+            "ug232",\r
+        }\r
+        ugn{\r
+            "ug301",\r
+            "ug302",\r
+            "ug303",\r
+            "ug304",\r
+            "ug305",\r
+            "ug306",\r
+            "ug307",\r
+            "ug308",\r
+            "ug309",\r
+            "ug310",\r
+            "ug311",\r
+            "ug312",\r
+            "ug313",\r
+            "ug314",\r
+            "ug315",\r
+            "ug316",\r
+            "ug317",\r
+            "ug318",\r
+            "ug319",\r
+            "ug320",\r
+            "ug321",\r
+            "ug322",\r
+            "ug323",\r
+            "ug324",\r
+            "ug325",\r
+            "ug326",\r
+            "ug327",\r
+            "ug328",\r
+            "ug329",\r
+            "ug330",\r
+        }\r
+        ugw{\r
+            "ug401",\r
+            "ug402",\r
+            "ug403",\r
+            "ug404",\r
+            "ug405",\r
+            "ug406",\r
+            "ug407",\r
+            "ug408",\r
+            "ug409",\r
+            "ug410",\r
+            "ug411",\r
+            "ug412",\r
+            "ug413",\r
+            "ug414",\r
+            "ug415",\r
+            "ug416",\r
+            "ug417",\r
+            "ug418",\r
+            "ug419",\r
+            "ug420",\r
+            "ug421",\r
+            "ug422",\r
+            "ug423",\r
+            "ug424",\r
+            "ug425",\r
+            "ug426",\r
         }\r
     }\r
     telephoneCodeData{\r
@@ -24785,6 +25726,9 @@ supplementalData:table(nofallback){
                 code{"381"}\r
             }\r
             {\r
+                code{"383"}\r
+            }\r
+            {\r
                 code{"386"}\r
             }\r
         }\r
@@ -25204,7 +26148,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49990000}\r
             }\r
             territoryF:intvector{\r
-                57376800,\r
+                57406800,\r
                 49990000,\r
                 52940000,\r
             }\r
@@ -25218,12 +26162,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{49430000}\r
             }\r
             fr{\r
-                populationShareF:int{48680000}\r
+                populationShareF:int{48670000}\r
             }\r
             territoryF:intvector{\r
                 59316300,\r
                 50100000,\r
-                54855800,\r
+                54856600,\r
             }\r
         }\r
         AE{\r
@@ -25244,9 +26188,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48290000}\r
             }\r
             territoryF:intvector{\r
-                61617100,\r
+                61667200,\r
                 49900000,\r
-                56577976,\r
+                56592748,\r
             }\r
         }\r
         AF{\r
@@ -25266,7 +26210,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48590000}\r
             }\r
             kk_Arab{\r
-                populationShareF:int{45610000}\r
+                populationShareF:int{45600000}\r
             }\r
             prd{\r
                 populationShareF:int{48120000}\r
@@ -25276,16 +26220,16 @@ supplementalData:table(nofallback){
                 populationShareF:int{49430000}\r
             }\r
             territoryF:intvector{\r
-                60608100,\r
+                60640800,\r
                 49281000,\r
-                57325643,\r
+                57333320,\r
             }\r
-            tk_Latn{\r
+            tk{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48170000}\r
             }\r
-            ug_Arab{\r
-                populationShareF:int{45920000}\r
+            ug{\r
+                populationShareF:int{45900000}\r
             }\r
             uz_Arab{\r
                 officialStatus{"official_regional"}\r
@@ -25301,9 +26245,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48170000}\r
             }\r
             territoryF:intvector{\r
-                59203200,\r
+                59217100,\r
                 49990000,\r
-                54924360,\r
+                54935810,\r
             }\r
         }\r
         AI{\r
@@ -25314,7 +26258,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58175400,\r
                 49950000,\r
-                54164180,\r
+                54167520,\r
             }\r
         }\r
         AL{\r
@@ -25329,32 +26273,32 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                60315900,\r
+                60342100,\r
                 49968000,\r
-                56302928,\r
+                56303859,\r
             }\r
         }\r
         AM{\r
-            az_Latn{\r
+            az{\r
                 populationShareF:int{0}\r
             }\r
             hy{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49980000}\r
             }\r
-            ku_Latn{\r
+            ku{\r
                 populationShareF:int{48330000}\r
             }\r
             territoryF:intvector{\r
-                60243700,\r
+                60265600,\r
                 49996000,\r
-                56305638,\r
+                56305125,\r
             }\r
         }\r
         AO{\r
             kmb{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{49250000}\r
-                writingShareF:int{49100000}\r
             }\r
             ln{\r
                 populationShareF:int{47670000}\r
@@ -25364,9 +26308,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49670000}\r
             }\r
             territoryF:intvector{\r
-                61177300,\r
+                61187300,\r
                 49704000,\r
-                57196254,\r
+                57201723,\r
             }\r
             umb{\r
                 populationShareF:int{49290000}\r
@@ -25374,7 +26318,7 @@ supplementalData:table(nofallback){
         }\r
         AQ{\r
             territoryF:intvector{\r
-                57162000,\r
+                57171900,\r
                 49990000,\r
                 52300000,\r
             }\r
@@ -25397,9 +26341,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46470000}\r
             }\r
             territoryF:intvector{\r
-                61951000,\r
+                61879400,\r
                 49979000,\r
-                57434319,\r
+                57438867,\r
             }\r
         }\r
         AS{\r
@@ -25414,7 +26358,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58711000,\r
                 49970000,\r
-                54543430,\r
+                54541940,\r
             }\r
         }\r
         AT{\r
@@ -25428,6 +26372,9 @@ supplementalData:table(nofallback){
             en{\r
                 populationShareF:int{49730000}\r
             }\r
+            fr{\r
+                populationShareF:int{49110000}\r
+            }\r
             hr{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48120000}\r
@@ -25436,14 +26383,17 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47270000}\r
             }\r
+            it{\r
+                populationShareF:int{48900000}\r
+            }\r
             sl{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47370000}\r
             }\r
             territoryF:intvector{\r
-                61396800,\r
+                61415900,\r
                 49980000,\r
-                56866555,\r
+                56871177,\r
             }\r
         }\r
         AU{\r
@@ -25455,9 +26405,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48190000}\r
             }\r
             territoryF:intvector{\r
-                62110000,\r
+                62118900,\r
                 49990000,\r
-                57227510,\r
+                57229927,\r
             }\r
             wbp{\r
                 populationShareF:int{46110000}\r
@@ -25468,7 +26418,7 @@ supplementalData:table(nofallback){
         }\r
         AW{\r
             en{\r
-                populationShareF:int{48270000}\r
+                populationShareF:int{48260000}\r
             }\r
             nl{\r
                 officialStatus{"official"}\r
@@ -25481,7 +26431,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59251600,\r
                 49968000,\r
-                55112162,\r
+                55113648,\r
             }\r
         }\r
         AX{\r
@@ -25496,41 +26446,41 @@ supplementalData:table(nofallback){
             }\r
         }\r
         AZ{\r
-            az_Cyrl{\r
+            az{\r
                 officialStatus{"official"}\r
-                populationShareF:int{48990000}\r
+                populationShareF:int{49890000}\r
             }\r
-            az_Latn{\r
+            az_Cyrl{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49890000}\r
+                populationShareF:int{48990000}\r
             }\r
-            ku_Latn{\r
+            ku{\r
                 populationShareF:int{47240000}\r
             }\r
             territoryF:intvector{\r
-                61165900,\r
+                61167900,\r
                 49998000,\r
-                56978078,\r
+                56987277,\r
             }\r
-            tkr_Latn{\r
+            tkr{\r
                 populationShareF:int{47160000}\r
             }\r
-            tly_Latn{\r
+            tly{\r
                 populationShareF:int{48980000}\r
             }\r
-            ttt_Latn{\r
+            ttt{\r
                 populationShareF:int{47220000}\r
             }\r
         }\r
         BA{\r
-            bs_Cyrl{\r
+            bs{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49990000}\r
-                writingShareF:int{48500000}\r
             }\r
-            bs_Latn{\r
+            bs_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49990000}\r
+                writingShareF:int{48500000}\r
             }\r
             en{\r
                 populationShareF:int{49450000}\r
@@ -25539,7 +26489,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49120000}\r
             }\r
-            sr_Cyrl{\r
+            sr{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49100000}\r
             }\r
@@ -25549,9 +26499,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60382900,\r
+                60425300,\r
                 49980000,\r
-                56386706,\r
+                56386191,\r
             }\r
         }\r
         BB{\r
@@ -25560,9 +26510,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59456700,\r
+                59480400,\r
                 49997000,\r
-                55290604,\r
+                55291495,\r
             }\r
         }\r
         BD{\r
@@ -25589,23 +26539,23 @@ supplementalData:table(nofallback){
                 populationShareF:int{47210000}\r
             }\r
             rkt{\r
+                literacyShareF:int{49200000}\r
                 populationShareF:int{48650000}\r
-                writingShareF:int{49200000}\r
             }\r
             syl{\r
+                literacyShareF:int{49350000}\r
                 populationShareF:int{48500000}\r
-                writingShareF:int{49350000}\r
             }\r
             territoryF:intvector{\r
-                61536500,\r
+                61628400,\r
                 49577000,\r
-                58168958,\r
+                58156187,\r
             }\r
         }\r
         BE{\r
             de{\r
                 officialStatus{"official"}\r
-                populationShareF:int{48140000}\r
+                populationShareF:int{49220000}\r
             }\r
             en{\r
                 populationShareF:int{49590000}\r
@@ -25619,9 +26569,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49550000}\r
             }\r
             territoryF:intvector{\r
-                61483300,\r
+                61508600,\r
                 49990000,\r
-                57113240,\r
+                57114091,\r
             }\r
             vls{\r
                 populationShareF:int{49100000}\r
@@ -25643,9 +26593,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49400000}\r
             }\r
             territoryF:intvector{\r
-                60294200,\r
+                60329900,\r
                 49287000,\r
-                57189317,\r
+                57195125,\r
             }\r
         }\r
         BG{\r
@@ -25653,13 +26603,19 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
             }\r
+            de{\r
+                populationShareF:int{48800000}\r
+            }\r
             en{\r
                 populationShareF:int{49250000}\r
             }\r
+            ru{\r
+                populationShareF:int{49230000}\r
+            }\r
             territoryF:intvector{\r
-                61129100,\r
+                61143100,\r
                 49984000,\r
-                56718689,\r
+                56714465,\r
             }\r
             tr{\r
                 populationShareF:int{49110000}\r
@@ -25674,15 +26630,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{48330000}\r
             }\r
             territoryF:intvector{\r
-                60621700,\r
+                60663700,\r
                 49946000,\r
-                56134661,\r
+                56137890,\r
             }\r
         }\r
         BI{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{46580000}\r
+                populationShareF:int{46560000}\r
             }\r
             fr{\r
                 officialStatus{"official"}\r
@@ -25693,12 +26649,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{49630000}\r
             }\r
             sw{\r
-                populationShareF:int{46590000}\r
+                populationShareF:int{46570000}\r
             }\r
             territoryF:intvector{\r
-                59840900,\r
+                59789200,\r
                 49672000,\r
-                57107423,\r
+                57110993,\r
             }\r
         }\r
         BJ{\r
@@ -25710,9 +26666,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49350000}\r
             }\r
             territoryF:intvector{\r
-                60198600,\r
+                60243100,\r
                 49424000,\r
-                57104486,\r
+                57107415,\r
             }\r
             yo{\r
                 populationShareF:int{48670000}\r
@@ -25726,7 +26682,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58255000,\r
                 49990000,\r
-                53723700,\r
+                53720900,\r
             }\r
         }\r
         BM{\r
@@ -25737,25 +26693,25 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59519800,\r
                 49980000,\r
-                54701960,\r
+                54705370,\r
             }\r
         }\r
         BN{\r
             en{\r
-                populationShareF:int{48190000}\r
+                populationShareF:int{48180000}\r
             }\r
-            ms_Arab{\r
+            ms{\r
                 officialStatus{"official"}\r
-                populationShareF:int{48500000}\r
+                populationShareF:int{49930000}\r
             }\r
-            ms_Latn{\r
+            ms_Arab{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49930000}\r
+                populationShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60329600,\r
+                60337300,\r
                 49954000,\r
-                55429646,\r
+                55436620,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{49110000}\r
@@ -25781,9 +26737,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49320000}\r
             }\r
             territoryF:intvector{\r
-                60702800,\r
+                60783500,\r
                 49912000,\r
-                57108009,\r
+                57109696,\r
             }\r
         }\r
         BQ{\r
@@ -25795,8 +26751,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{49810000}\r
             }\r
             territoryF:intvector{\r
-                58426100,\r
-                49965000,\r
+                58419800,\r
+                49990000,\r
                 54200000,\r
             }\r
         }\r
@@ -25830,9 +26786,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49910000}\r
             }\r
             territoryF:intvector{\r
-                62327600,\r
+                62313500,\r
                 49904000,\r
-                58204260,\r
+                58205824,\r
             }\r
             xav{\r
                 populationShareF:int{45490000}\r
@@ -25847,9 +26803,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59903100,\r
+                59906600,\r
                 49956000,\r
-                55324597,\r
+                55327316,\r
             }\r
         }\r
         BT{\r
@@ -25867,9 +26823,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49170000}\r
             }\r
             territoryF:intvector{\r
-                59587100,\r
+                59643200,\r
                 49528000,\r
-                55741919,\r
+                55750125,\r
             }\r
             tsj{\r
                 populationShareF:int{49150000}\r
@@ -25877,7 +26833,7 @@ supplementalData:table(nofallback){
         }\r
         BV{\r
             territoryF:intvector{\r
-                54400900,\r
+                54432700,\r
                 49990000,\r
                 50100000,\r
             }\r
@@ -25894,9 +26850,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49810000}\r
             }\r
             territoryF:intvector{\r
-                60358700,\r
+                60365100,\r
                 49851000,\r
-                56218272,\r
+                56220921,\r
             }\r
             tn{\r
                 officialStatus{"official"}\r
@@ -25913,9 +26869,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49120000}\r
             }\r
             territoryF:intvector{\r
-                61172800,\r
+                61165400,\r
                 49996000,\r
-                56958969,\r
+                56957038,\r
             }\r
         }\r
         BZ{\r
@@ -25927,9 +26883,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49280000}\r
             }\r
             territoryF:intvector{\r
-                59297500,\r
+                59308800,\r
                 49769000,\r
-                55347369,\r
+                55353858,\r
             }\r
         }\r
         CA{\r
@@ -25939,7 +26895,7 @@ supplementalData:table(nofallback){
             chp{\r
                 populationShareF:int{45220000}\r
             }\r
-            cr_Cans{\r
+            cr{\r
                 populationShareF:int{47110000}\r
             }\r
             crj{\r
@@ -25961,7 +26917,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48190000}\r
             }\r
             den{\r
-                populationShareF:int{45660000}\r
+                populationShareF:int{45650000}\r
             }\r
             dgr{\r
                 populationShareF:int{45750000}\r
@@ -25978,31 +26934,31 @@ supplementalData:table(nofallback){
                 populationShareF:int{45160000}\r
             }\r
             ikt{\r
+                literacyShareF:int{49300000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46110000}\r
-                writingShareF:int{49300000}\r
             }\r
             it{\r
                 populationShareF:int{48200000}\r
             }\r
-            iu_Cans{\r
+            iu{\r
+                literacyShareF:int{49300000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46420000}\r
-                writingShareF:int{49300000}\r
             }\r
             iu_Latn{\r
+                literacyShareF:int{49300000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46420000}\r
-                writingShareF:int{49300000}\r
             }\r
             moe{\r
                 populationShareF:int{46330000}\r
             }\r
             moh{\r
-                populationShareF:int{46100000}\r
+                populationShareF:int{45990000}\r
             }\r
             nsk{\r
-                populationShareF:int{45340000}\r
+                populationShareF:int{45330000}\r
             }\r
             pdt{\r
                 populationShareF:int{47240000}\r
@@ -26011,9 +26967,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{45350000}\r
             }\r
             territoryF:intvector{\r
-                62159600,\r
+                62167400,\r
                 49990000,\r
-                57350998,\r
+                57353629,\r
             }\r
             yi{\r
                 populationShareF:int{46450000}\r
@@ -26028,7 +26984,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49830000}\r
             }\r
             territoryF:intvector{\r
-                57288200,\r
+                57308200,\r
                 49990000,\r
                 52596000,\r
             }\r
@@ -26064,9 +27020,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49500000}\r
             }\r
             territoryF:intvector{\r
-                60577800,\r
+                60660100,\r
                 49668000,\r
-                57793751,\r
+                57813311,\r
             }\r
         }\r
         CF{\r
@@ -26082,9 +27038,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49490000}\r
             }\r
             territoryF:intvector{\r
-                59286500,\r
+                59320600,\r
                 49566000,\r
-                56539154,\r
+                56550726,\r
             }\r
         }\r
         CG{\r
@@ -26096,9 +27052,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48240000}\r
             }\r
             territoryF:intvector{\r
-                60283600,\r
+                60302700,\r
                 49838000,\r
-                56475510,\r
+                56485241,\r
             }\r
         }\r
         CH{\r
@@ -26137,9 +27093,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47290000}\r
             }\r
             territoryF:intvector{\r
-                61473300,\r
+                61494300,\r
                 49990000,\r
-                56812183,\r
+                56817929,\r
             }\r
             wae{\r
                 populationShareF:int{47120000}\r
@@ -26147,16 +27103,16 @@ supplementalData:table(nofallback){
         }\r
         CI{\r
             bci{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{49110000}\r
-                writingShareF:int{49100000}\r
             }\r
             bqv{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{47170000}\r
-                writingShareF:int{49100000}\r
             }\r
             dnj{\r
+                literacyShareF:int{48100000}\r
                 populationShareF:int{48400000}\r
-                writingShareF:int{48100000}\r
             }\r
             fr{\r
                 officialStatus{"official"}\r
@@ -26170,20 +27126,20 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60716700,\r
+                60871200,\r
                 49569000,\r
-                57232953,\r
+                57237404,\r
             }\r
         }\r
         CK{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49980000}\r
+                populationShareF:int{49950000}\r
             }\r
             territoryF:intvector{\r
-                58183200,\r
+                58244100,\r
                 49950000,\r
-                53983800,\r
+                53955600,\r
             }\r
         }\r
         CL{\r
@@ -26198,60 +27154,60 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                61410900,\r
+                61436100,\r
                 49986000,\r
-                57175083,\r
+                57176501,\r
             }\r
         }\r
         CM{\r
             agq{\r
+                literacyShareF:int{49200000}\r
                 populationShareF:int{47140000}\r
-                writingShareF:int{49200000}\r
             }\r
             ar{\r
                 populationShareF:int{47390000}\r
             }\r
             bas{\r
+                literacyShareF:int{49250000}\r
                 populationShareF:int{48120000}\r
-                writingShareF:int{49250000}\r
             }\r
             bax{\r
                 populationShareF:int{48120000}\r
             }\r
             bbj{\r
+                literacyShareF:int{49250000}\r
                 populationShareF:int{48140000}\r
-                writingShareF:int{49250000}\r
             }\r
             bfd{\r
+                literacyShareF:int{49300000}\r
                 populationShareF:int{47570000}\r
-                writingShareF:int{49300000}\r
             }\r
             bkm{\r
                 populationShareF:int{48130000}\r
                 writingShareF:int{48500000}\r
             }\r
             bss{\r
+                literacyShareF:int{49300000}\r
                 populationShareF:int{47540000}\r
-                writingShareF:int{49300000}\r
             }\r
             bum{\r
                 populationShareF:int{48460000}\r
             }\r
             byv{\r
+                literacyShareF:int{49150000}\r
                 populationShareF:int{48110000}\r
-                writingShareF:int{49150000}\r
             }\r
             dua{\r
+                literacyShareF:int{49250000}\r
                 populationShareF:int{47480000}\r
-                writingShareF:int{49250000}\r
             }\r
             en{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49380000}\r
             }\r
             ewo{\r
+                literacyShareF:int{49150000}\r
                 populationShareF:int{48310000}\r
-                writingShareF:int{49150000}\r
             }\r
             ff{\r
                 populationShareF:int{48360000}\r
@@ -26264,8 +27220,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47140000}\r
             }\r
             jgo{\r
+                literacyShareF:int{49300000}\r
                 populationShareF:int{47340000}\r
-                writingShareF:int{49300000}\r
             }\r
             kkj{\r
                 populationShareF:int{47540000}\r
@@ -26284,24 +27240,24 @@ supplementalData:table(nofallback){
                 populationShareF:int{48100000}\r
             }\r
             nmg{\r
-                populationShareF:int{46380000}\r
-                writingShareF:int{49100000}\r
+                literacyShareF:int{49100000}\r
+                populationShareF:int{46370000}\r
             }\r
             nnh{\r
+                literacyShareF:int{48800000}\r
                 populationShareF:int{48140000}\r
-                writingShareF:int{48800000}\r
             }\r
             territoryF:intvector{\r
-                60677800,\r
+                60772400,\r
                 49713000,\r
-                57237392,\r
+                57243608,\r
             }\r
             yav{\r
-                populationShareF:int{45970000}\r
+                populationShareF:int{45940000}\r
             }\r
             ybb{\r
+                literacyShareF:int{48200000}\r
                 populationShareF:int{48160000}\r
-                writingShareF:int{48200000}\r
             }\r
         }\r
         CN{\r
@@ -26322,8 +27278,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{48290000}\r
             }\r
             ii{\r
+                literacyShareF:int{49600000}\r
                 populationShareF:int{47600000}\r
-                writingShareF:int{49600000}\r
             }\r
             khb{\r
                 populationShareF:int{46190000}\r
@@ -26364,11 +27320,11 @@ supplementalData:table(nofallback){
                 populationShareF:int{46190000}\r
             }\r
             territoryF:intvector{\r
-                63180900,\r
+                63212700,\r
                 49951000,\r
-                59136749,\r
+                59137354,\r
             }\r
-            ug_Arab{\r
+            ug{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47550000}\r
             }\r
@@ -26388,7 +27344,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47310000}\r
             }\r
-            zh_Hans{\r
+            zh{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49900000}\r
             }\r
@@ -26402,14 +27358,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{47270000}\r
             }\r
             territoryF:intvector{\r
-                61642500,\r
+                61690400,\r
                 49936000,\r
-                57467367,\r
+                57472209,\r
             }\r
         }\r
         CP{\r
             territoryF:intvector{\r
-                54389300,\r
+                54409500,\r
                 49990000,\r
                 50100000,\r
             }\r
@@ -26423,9 +27379,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49950000}\r
             }\r
             territoryF:intvector{\r
-                60712300,\r
+                60792600,\r
                 49963000,\r
-                56481414,\r
+                56487254,\r
             }\r
         }\r
         CU{\r
@@ -26436,7 +27392,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 61128500,\r
                 49998000,\r
-                57110314,\r
+                57111800,\r
             }\r
         }\r
         CV{\r
@@ -26448,14 +27404,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{49760000}\r
             }\r
             territoryF:intvector{\r
-                59333000,\r
+                59358300,\r
                 49849000,\r
-                55545993,\r
+                55553432,\r
             }\r
         }\r
         CW{\r
             es{\r
-                populationShareF:int{48390000}\r
+                populationShareF:int{48380000}\r
             }\r
             nl{\r
                 officialStatus{"official"}\r
@@ -26467,19 +27423,19 @@ supplementalData:table(nofallback){
             }\r
             territoryF:intvector{\r
                 59312800,\r
-                49965000,\r
-                55146836,\r
+                49990000,\r
+                55149035,\r
             }\r
         }\r
         CX{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49920000}\r
+                populationShareF:int{49630000}\r
             }\r
             territoryF:intvector{\r
-                57739700,\r
+                58114000,\r
                 49990000,\r
-                53153000,\r
+                53220500,\r
             }\r
         }\r
         CY{\r
@@ -26488,18 +27444,21 @@ supplementalData:table(nofallback){
             }\r
             el{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49750000}\r
+                populationShareF:int{49950000}\r
             }\r
             en{\r
                 populationShareF:int{49730000}\r
             }\r
+            fr{\r
+                populationShareF:int{48700000}\r
+            }\r
             hy{\r
                 populationShareF:int{47230000}\r
             }\r
             territoryF:intvector{\r
-                60275200,\r
+                60292600,\r
                 49987000,\r
-                56118920,\r
+                56120558,\r
             }\r
             tr{\r
                 officialStatus{"official"}\r
@@ -26512,7 +27471,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             de{\r
-                populationShareF:int{47490000}\r
+                populationShareF:int{49150000}\r
             }\r
             en{\r
                 populationShareF:int{49270000}\r
@@ -26520,8 +27479,11 @@ supplementalData:table(nofallback){
             pl{\r
                 populationShareF:int{47490000}\r
             }\r
+            sk{\r
+                populationShareF:int{49160000}\r
+            }\r
             territoryF:intvector{\r
-                61315900,\r
+                61350900,\r
                 49990000,\r
                 57106448,\r
             }\r
@@ -26560,6 +27522,10 @@ supplementalData:table(nofallback){
             frs{\r
                 populationShareF:int{45250000}\r
             }\r
+            gsw{\r
+                populationShareF:int{48230000}\r
+                writingShareF:int{48500000}\r
+            }\r
             hr{\r
                 populationShareF:int{47790000}\r
             }\r
@@ -26573,7 +27539,7 @@ supplementalData:table(nofallback){
             ksh{\r
                 populationShareF:int{47300000}\r
             }\r
-            ku_Latn{\r
+            ku{\r
                 populationShareF:int{47660000}\r
             }\r
             nds{\r
@@ -26600,9 +27566,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                62374800,\r
+                62397900,\r
                 49990000,\r
-                57808544,\r
+                57807228,\r
             }\r
             tr{\r
                 populationShareF:int{48250000}\r
@@ -26617,7 +27583,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49990000}\r
             }\r
             territoryF:intvector{\r
-                57200400,\r
+                57216400,\r
                 49990000,\r
                 52500000,\r
             }\r
@@ -26638,9 +27604,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49410000}\r
             }\r
             territoryF:intvector{\r
-                59287600,\r
+                59334500,\r
                 49679000,\r
-                55828324,\r
+                55846687,\r
             }\r
         }\r
         DK{\r
@@ -26650,7 +27616,7 @@ supplementalData:table(nofallback){
             }\r
             de{\r
                 officialStatus{"official_regional"}\r
-                populationShareF:int{47430000}\r
+                populationShareF:int{49470000}\r
             }\r
             en{\r
                 populationShareF:int{49860000}\r
@@ -26665,10 +27631,13 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47130000}\r
             }\r
+            sv{\r
+                populationShareF:int{49130000}\r
+            }\r
             territoryF:intvector{\r
-                61250700,\r
+                61264800,\r
                 49990000,\r
-                56558150,\r
+                56559379,\r
             }\r
         }\r
         DM{\r
@@ -26677,23 +27646,23 @@ supplementalData:table(nofallback){
                 populationShareF:int{49940000}\r
             }\r
             territoryF:intvector{\r
-                58790000,\r
+                58812000,\r
                 49940000,\r
-                54736070,\r
+                54737570,\r
             }\r
         }\r
         DO{\r
             en{\r
-                populationShareF:int{46760000}\r
+                populationShareF:int{46750000}\r
             }\r
             es{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49780000}\r
             }\r
             territoryF:intvector{\r
-                61138500,\r
+                61160900,\r
                 49901000,\r
-                57104788,\r
+                57106069,\r
             }\r
         }\r
         DZ{\r
@@ -26712,13 +27681,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{49200000}\r
             }\r
             kab{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{48780000}\r
-                writingShareF:int{49100000}\r
             }\r
             territoryF:intvector{\r
-                61548600,\r
+                61609400,\r
                 49726000,\r
-                57395422,\r
+                57402637,\r
             }\r
         }\r
         EA{\r
@@ -26727,7 +27696,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                59489800,\r
+                59522000,\r
                 49977000,\r
                 55150000,\r
             }\r
@@ -26745,23 +27714,29 @@ supplementalData:table(nofallback){
                 populationShareF:int{48570000}\r
             }\r
             territoryF:intvector{\r
-                61181200,\r
+                61182400,\r
                 49916000,\r
-                57158684,\r
+                57160808,\r
             }\r
         }\r
         EE{\r
+            en{\r
+                populationShareF:int{49500000}\r
+            }\r
             et{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49710000}\r
             }\r
+            fi{\r
+                populationShareF:int{49210000}\r
+            }\r
             ru{\r
-                populationShareF:int{49300000}\r
+                populationShareF:int{49560000}\r
             }\r
             territoryF:intvector{\r
-                60367800,\r
+                60387000,\r
                 49998000,\r
-                56126542,\r
+                56125855,\r
             }\r
             vro{\r
                 populationShareF:int{48570000}\r
@@ -26782,9 +27757,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49350000}\r
             }\r
             territoryF:intvector{\r
-                61946600,\r
+                62110500,\r
                 49739000,\r
-                57884874,\r
+                57946670,\r
             }\r
         }\r
         EH{\r
@@ -26795,7 +27770,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58906500,\r
                 49500000,\r
-                55570866,\r
+                55587020,\r
             }\r
         }\r
         ER{\r
@@ -26818,9 +27793,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48360000}\r
             }\r
             territoryF:intvector{\r
-                59784200,\r
+                59916900,\r
                 49689000,\r
-                56652769,\r
+                56586987,\r
             }\r
             ti{\r
                 officialStatus{"de_facto_official"}\r
@@ -26858,9 +27833,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48700000}\r
             }\r
             territoryF:intvector{\r
-                62157200,\r
+                62169000,\r
                 49977000,\r
-                57481461,\r
+                57485635,\r
             }\r
         }\r
         ET{\r
@@ -26884,9 +27859,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48600000}\r
             }\r
             territoryF:intvector{\r
-                61145100,\r
+                61174700,\r
                 49390000,\r
-                57994658,\r
+                58102374,\r
             }\r
             ti{\r
                 populationShareF:int{48600000}\r
@@ -26896,6 +27871,9 @@ supplementalData:table(nofallback){
             }\r
         }\r
         FI{\r
+            de{\r
+                populationShareF:int{49180000}\r
+            }\r
             en{\r
                 populationShareF:int{49700000}\r
             }\r
@@ -26913,7 +27891,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{47810000}\r
             }\r
             se{\r
-                populationShareF:int{46370000}\r
+                populationShareF:int{46360000}\r
             }\r
             smn{\r
                 populationShareF:int{46110000}\r
@@ -26923,12 +27901,12 @@ supplementalData:table(nofallback){
             }\r
             sv{\r
                 officialStatus{"official"}\r
-                populationShareF:int{48570000}\r
+                populationShareF:int{49440000}\r
             }\r
             territoryF:intvector{\r
-                61221700,\r
+                61230000,\r
                 50100000,\r
-                56547692,\r
+                56549821,\r
             }\r
         }\r
         FJ{\r
@@ -26943,7 +27921,7 @@ supplementalData:table(nofallback){
             hi{\r
                 populationShareF:int{49440000}\r
             }\r
-            hif_Latn{\r
+            hif{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49410000}\r
             }\r
@@ -26951,20 +27929,20 @@ supplementalData:table(nofallback){
                 populationShareF:int{47270000}\r
             }\r
             territoryF:intvector{\r
-                59740400,\r
+                59837400,\r
                 49937000,\r
-                55909389,\r
+                55915303,\r
             }\r
         }\r
         FK{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49840000}\r
+                populationShareF:int{49960000}\r
             }\r
             territoryF:intvector{\r
                 58164500,\r
                 49990000,\r
-                53336100,\r
+                53293100,\r
             }\r
         }\r
         FM{\r
@@ -26982,9 +27960,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49230000}\r
             }\r
             territoryF:intvector{\r
-                58308000,\r
+                58314000,\r
                 49890000,\r
-                55105216,\r
+                55104719,\r
             }\r
             uli{\r
                 populationShareF:int{48290000}\r
@@ -26999,26 +27977,32 @@ supplementalData:table(nofallback){
                 populationShareF:int{49950000}\r
             }\r
             territoryF:intvector{\r
-                59147100,\r
+                59183100,\r
                 49990000,\r
-                54501960,\r
+                54504560,\r
             }\r
         }\r
         FR{\r
             br{\r
+                literacyShareF:int{48300000}\r
                 populationShareF:int{47830000}\r
-                writingShareF:int{48300000}\r
             }\r
             ca{\r
                 populationShareF:int{47170000}\r
             }\r
             co{\r
-                populationShareF:int{47570000}\r
+                populationShareF:int{47240000}\r
                 writingShareF:int{48500000}\r
             }\r
+            de{\r
+                populationShareF:int{48500000}\r
+            }\r
             en{\r
                 populationShareF:int{49390000}\r
             }\r
+            es{\r
+                populationShareF:int{49130000}\r
+            }\r
             eu{\r
                 populationShareF:int{47130000}\r
             }\r
@@ -27053,9 +28037,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48130000}\r
             }\r
             territoryF:intvector{\r
-                62259100,\r
+                62273700,\r
                 49990000,\r
-                57665538,\r
+                57668362,\r
             }\r
         }\r
         GA{\r
@@ -27067,9 +28051,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48900000}\r
             }\r
             territoryF:intvector{\r
-                60329100,\r
+                60362200,\r
                 49890000,\r
-                56170534,\r
+                56173854,\r
             }\r
         }\r
         GB{\r
@@ -27080,6 +28064,9 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47770000}\r
             }\r
+            de{\r
+                populationShareF:int{48600000}\r
+            }\r
             el{\r
                 populationShareF:int{47340000}\r
             }\r
@@ -27088,7 +28075,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49990000}\r
             }\r
             fr{\r
-                populationShareF:int{46240000}\r
+                populationShareF:int{49190000}\r
             }\r
             ga{\r
                 officialStatus{"official_regional"}\r
@@ -27102,7 +28089,7 @@ supplementalData:table(nofallback){
             it{\r
                 populationShareF:int{47340000}\r
             }\r
-            ks_Arab{\r
+            ks{\r
                 populationShareF:int{47190000}\r
             }\r
             kw{\r
@@ -27111,7 +28098,7 @@ supplementalData:table(nofallback){
             ml{\r
                 populationShareF:int{46350000}\r
             }\r
-            pa_Guru{\r
+            pa{\r
                 populationShareF:int{47790000}\r
             }\r
             sco{\r
@@ -27122,9 +28109,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47510000}\r
             }\r
             territoryF:intvector{\r
-                62256900,\r
+                62278800,\r
                 49990000,\r
-                57640882,\r
+                57644304,\r
             }\r
             yi{\r
                 populationShareF:int{46490000}\r
@@ -27139,9 +28126,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49960000}\r
             }\r
             territoryF:intvector{\r
-                59132600,\r
+                59151100,\r
                 49960000,\r
-                55110694,\r
+                55111219,\r
             }\r
         }\r
         GE{\r
@@ -27156,7 +28143,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49860000}\r
             }\r
-            ku_Latn{\r
+            ku{\r
                 populationShareF:int{47890000}\r
             }\r
             os{\r
@@ -27167,9 +28154,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48900000}\r
             }\r
             territoryF:intvector{\r
-                60343500,\r
+                60373800,\r
                 49997000,\r
-                56493123,\r
+                56492805,\r
             }\r
             xmf{\r
                 populationShareF:int{49110000}\r
@@ -27198,9 +28185,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59342000,\r
+                59345100,\r
                 50100000,\r
-                54660800,\r
+                54662970,\r
             }\r
         }\r
         GH{\r
@@ -27229,7 +28216,7 @@ supplementalData:table(nofallback){
             gur{\r
                 populationShareF:int{48350000}\r
             }\r
-            ha_Latn{\r
+            ha{\r
                 populationShareF:int{47870000}\r
             }\r
             nzi{\r
@@ -27239,9 +28226,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46150000}\r
             }\r
             territoryF:intvector{\r
-                61108500,\r
+                61120800,\r
                 49715000,\r
-                57263276,\r
+                57269083,\r
             }\r
         }\r
         GI{\r
@@ -27255,7 +28242,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59185000,\r
                 49800000,\r
-                54292580,\r
+                54293280,\r
             }\r
         }\r
         GL{\r
@@ -27267,9 +28254,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49840000}\r
             }\r
             territoryF:intvector{\r
-                59213300,\r
+                59217300,\r
                 50100000,\r
-                54577330,\r
+                54577280,\r
             }\r
         }\r
         GM{\r
@@ -27277,13 +28264,13 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49400000}\r
             }\r
-            man_Latn{\r
+            man{\r
                 populationShareF:int{49290000}\r
             }\r
             territoryF:intvector{\r
-                59309300,\r
+                59338700,\r
                 49511000,\r
-                56196771,\r
+                56200965,\r
             }\r
         }\r
         GN{\r
@@ -27307,9 +28294,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49110000}\r
             }\r
             territoryF:intvector{\r
-                60151300,\r
+                60160800,\r
                 49410000,\r
-                57117802,\r
+                57120933,\r
             }\r
         }\r
         GP{\r
@@ -27343,15 +28330,18 @@ supplementalData:table(nofallback){
                 populationShareF:int{44100000}\r
             }\r
             territoryF:intvector{\r
-                60286200,\r
+                60317700,\r
                 49942000,\r
-                55740743,\r
+                55759451,\r
             }\r
         }\r
         GR{\r
             bg{\r
                 populationShareF:int{47270000}\r
             }\r
+            de{\r
+                populationShareF:int{48500000}\r
+            }\r
             el{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49990000}\r
@@ -27359,19 +28349,22 @@ supplementalData:table(nofallback){
             en{\r
                 populationShareF:int{49510000}\r
             }\r
+            fr{\r
+                populationShareF:int{48900000}\r
+            }\r
             mk{\r
                 populationShareF:int{48160000}\r
             }\r
-            pnt_Grek{\r
+            pnt{\r
                 populationShareF:int{48370000}\r
             }\r
             sq{\r
                 populationShareF:int{46930000}\r
             }\r
             territoryF:intvector{\r
-                61285300,\r
+                61290500,\r
                 49973000,\r
-                57107756,\r
+                57107733,\r
             }\r
             tr{\r
                 populationShareF:int{48120000}\r
@@ -27382,13 +28375,13 @@ supplementalData:table(nofallback){
         }\r
         GS{\r
             territoryF:intvector{\r
-                55801700,\r
+                55865400,\r
                 49990000,\r
                 51200000,\r
             }\r
             und{\r
+                literacyShareF:int{50100000}\r
                 populationShareF:int{50100000}\r
-                writingShareF:int{50100000}\r
             }\r
         }\r
         GT{\r
@@ -27401,9 +28394,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48700000}\r
             }\r
             territoryF:intvector{\r
-                61119800,\r
+                61132300,\r
                 49759000,\r
-                57149190,\r
+                57151900,\r
             }\r
         }\r
         GU{\r
@@ -27418,7 +28411,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59488200,\r
                 49990000,\r
-                55161785,\r
+                55162742,\r
             }\r
         }\r
         GW{\r
@@ -27427,9 +28420,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59253200,\r
+                59285100,\r
                 49553000,\r
-                56172617,\r
+                56175916,\r
             }\r
         }\r
         GY{\r
@@ -27438,9 +28431,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59553400,\r
+                59609300,\r
                 49918000,\r
-                55735222,\r
+                55735909,\r
             }\r
         }\r
         HK{\r
@@ -27449,14 +28442,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{49510000}\r
             }\r
             territoryF:intvector{\r
-                61400400,\r
+                61427400,\r
                 49935000,\r
-                56714111,\r
+                56716740,\r
             }\r
             yue{\r
-                populationShareF:int{49890000}\r
+                populationShareF:int{49900000}\r
             }\r
-            zh_Hans{\r
+            zh{\r
                 populationShareF:int{48500000}\r
             }\r
             zh_Hant{\r
@@ -27466,13 +28459,13 @@ supplementalData:table(nofallback){
         }\r
         HM{\r
             territoryF:intvector{\r
-                54483500,\r
+                54517100,\r
                 49990000,\r
                 50100000,\r
             }\r
             und{\r
+                literacyShareF:int{50100000}\r
                 populationShareF:int{50100000}\r
-                writingShareF:int{50100000}\r
             }\r
         }\r
         HN{\r
@@ -27484,9 +28477,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49780000}\r
             }\r
             territoryF:intvector{\r
-                60392200,\r
+                60431900,\r
                 49851000,\r
-                56874667,\r
+                56889326,\r
             }\r
         }\r
         HR{\r
@@ -27502,34 +28495,37 @@ supplementalData:table(nofallback){
                 populationShareF:int{48160000}\r
             }\r
             territoryF:intvector{\r
-                60887300,\r
+                60942400,\r
                 49989000,\r
-                56446484,\r
+                56431371,\r
             }\r
         }\r
         HT{\r
             fr{\r
+                literacyShareF:int{50100000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{48470000}\r
-                writingShareF:int{50100000}\r
             }\r
             ht{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49810000}\r
             }\r
             territoryF:intvector{\r
-                60183800,\r
+                60193600,\r
                 49487000,\r
-                57101100,\r
+                57104858,\r
             }\r
         }\r
         HU{\r
             de{\r
-                populationShareF:int{48250000}\r
+                populationShareF:int{49180000}\r
             }\r
             en{\r
                 populationShareF:int{49200000}\r
             }\r
+            fr{\r
+                populationShareF:int{48300000}\r
+            }\r
             hr{\r
                 populationShareF:int{47320000}\r
             }\r
@@ -27547,9 +28543,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46500000}\r
             }\r
             territoryF:intvector{\r
-                61247100,\r
+                61267600,\r
                 49990000,\r
-                56989754,\r
+                56987478,\r
             }\r
         }\r
         IC{\r
@@ -27558,7 +28554,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                60685200,\r
+                60730300,\r
                 49977000,\r
                 56209859,\r
             }\r
@@ -27571,8 +28567,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47270000}\r
             }\r
             ban{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{48180000}\r
-                writingShareF:int{49100000}\r
             }\r
             bbc{\r
                 populationShareF:int{47920000}\r
@@ -27581,12 +28577,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{48210000}\r
             }\r
             bjn{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{48150000}\r
-                writingShareF:int{49100000}\r
             }\r
             bug{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{48160000}\r
-                writingShareF:int{49100000}\r
             }\r
             gay{\r
                 populationShareF:int{47120000}\r
@@ -27599,8 +28595,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{49640000}\r
             }\r
             jv{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{49340000}\r
-                writingShareF:int{49100000}\r
             }\r
             kge{\r
                 populationShareF:int{47320000}\r
@@ -27615,8 +28611,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47690000}\r
             }\r
             mad{\r
+                literacyShareF:int{49400000}\r
                 populationShareF:int{48630000}\r
-                writingShareF:int{49400000}\r
             }\r
             mak{\r
                 populationShareF:int{47730000}\r
@@ -27625,8 +28621,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{46920000}\r
             }\r
             min{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{48300000}\r
-                writingShareF:int{49100000}\r
             }\r
             ms_Arab{\r
                 populationShareF:int{48460000}\r
@@ -27656,9 +28652,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46920000}\r
             }\r
             territoryF:intvector{\r
-                62268600,\r
+                62302800,\r
                 49928000,\r
-                58255994,\r
+                58258316,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{47920000}\r
@@ -27669,14 +28665,17 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49980000}\r
             }\r
+            fr{\r
+                populationShareF:int{49170000}\r
+            }\r
             ga{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49110000}\r
+                populationShareF:int{49220000}\r
             }\r
             territoryF:intvector{\r
-                61236400,\r
+                61324300,\r
                 49990000,\r
-                56489231,\r
+                56495247,\r
             }\r
         }\r
         IL{\r
@@ -27701,7 +28700,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48130000}\r
             }\r
             ml{\r
-                populationShareF:int{46990000}\r
+                populationShareF:int{46980000}\r
             }\r
             pl{\r
                 populationShareF:int{48150000}\r
@@ -27713,9 +28712,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49110000}\r
             }\r
             territoryF:intvector{\r
-                61272100,\r
+                61297000,\r
                 49971000,\r
-                56804931,\r
+                56817453,\r
             }\r
             ti{\r
                 populationShareF:int{47120000}\r
@@ -27736,7 +28735,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59629800,\r
                 49990000,\r
-                54875450,\r
+                54881950,\r
             }\r
         }\r
         IN{\r
@@ -27758,8 +28757,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{46370000}\r
             }\r
             bgc{\r
+                literacyShareF:int{49550000}\r
                 populationShareF:int{48120000}\r
-                writingShareF:int{49550000}\r
             }\r
             bhb{\r
                 populationShareF:int{47120000}\r
@@ -27768,12 +28767,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{46920000}\r
             }\r
             bho{\r
+                literacyShareF:int{49300000}\r
                 populationShareF:int{48230000}\r
-                writingShareF:int{49300000}\r
             }\r
             bjj{\r
+                literacyShareF:int{49600000}\r
                 populationShareF:int{47560000}\r
-                writingShareF:int{49600000}\r
             }\r
             bn{\r
                 officialStatus{"official_regional"}\r
@@ -27819,7 +28818,7 @@ supplementalData:table(nofallback){
             gom{\r
                 populationShareF:int{47320000}\r
             }\r
-            gon_Telu{\r
+            gon{\r
                 populationShareF:int{47240000}\r
             }\r
             grt{\r
@@ -27849,9 +28848,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47220000}\r
             }\r
             kha{\r
+                literacyShareF:int{49290000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46800000}\r
-                writingShareF:int{49290000}\r
             }\r
             khn{\r
                 populationShareF:int{47150000}\r
@@ -27870,7 +28869,7 @@ supplementalData:table(nofallback){
             kru{\r
                 populationShareF:int{47190000}\r
             }\r
-            ks_Arab{\r
+            ks{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47410000}\r
             }\r
@@ -27880,15 +28879,15 @@ supplementalData:table(nofallback){
             lep{\r
                 populationShareF:int{45350000}\r
             }\r
-            lif_Deva{\r
+            lif{\r
                 populationShareF:int{45260000}\r
             }\r
             lmn{\r
                 populationShareF:int{47270000}\r
             }\r
             mag{\r
+                literacyShareF:int{49300000}\r
                 populationShareF:int{48120000}\r
-                writingShareF:int{49300000}\r
             }\r
             mai{\r
                 officialStatus{"official_regional"}\r
@@ -27925,7 +28924,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48320000}\r
             }\r
-            pa_Guru{\r
+            pa{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48280000}\r
             }\r
@@ -27936,8 +28935,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{46130000}\r
             }\r
             rkt{\r
+                literacyShareF:int{49200000}\r
                 populationShareF:int{47440000}\r
-                writingShareF:int{49200000}\r
             }\r
             sa{\r
                 officialStatus{"official_regional"}\r
@@ -27953,7 +28952,7 @@ supplementalData:table(nofallback){
             sck{\r
                 populationShareF:int{47180000}\r
             }\r
-            sd_Arab{\r
+            sd{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47260000}\r
             }\r
@@ -27979,14 +28978,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{48720000}\r
             }\r
             territoryF:intvector{\r
-                62741100,\r
+                62872100,\r
                 49628000,\r
-                59125170,\r
+                59126688,\r
             }\r
-            unr_Beng{\r
+            unr{\r
                 populationShareF:int{46950000}\r
             }\r
-            unx_Beng{\r
+            unx{\r
                 populationShareF:int{46480000}\r
             }\r
             ur{\r
@@ -28000,8 +28999,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47150000}\r
             }\r
             wtm{\r
+                literacyShareF:int{49250000}\r
                 populationShareF:int{47460000}\r
-                writingShareF:int{49250000}\r
             }\r
             xnr{\r
                 populationShareF:int{47160000}\r
@@ -28009,12 +29008,12 @@ supplementalData:table(nofallback){
         }\r
         IO{\r
             en{\r
+                literacyShareF:int{50100000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
-                writingShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                58140300,\r
+                58151500,\r
                 49990000,\r
                 53350000,\r
             }\r
@@ -28045,9 +29044,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47500000}\r
             }\r
             territoryF:intvector{\r
-                61526100,\r
+                61596700,\r
                 49785000,\r
-                57370562,\r
+                57381460,\r
             }\r
         }\r
         IR{\r
@@ -28075,7 +29074,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49750000}\r
             }\r
             gbz{\r
-                populationShareF:int{45980000}\r
+                populationShareF:int{45970000}\r
             }\r
             glk{\r
                 populationShareF:int{48460000}\r
@@ -28087,14 +29086,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{46710000}\r
             }\r
             kk_Arab{\r
-                populationShareF:int{45370000}\r
+                populationShareF:int{45360000}\r
             }\r
             lki{\r
                 populationShareF:int{47760000}\r
             }\r
             lrc{\r
+                literacyShareF:int{49100000}\r
                 populationShareF:int{48210000}\r
-                writingShareF:int{49100000}\r
             }\r
             luz{\r
                 populationShareF:int{48120000}\r
@@ -28109,33 +29108,33 @@ supplementalData:table(nofallback){
                 populationShareF:int{47160000}\r
             }\r
             rmt{\r
+                literacyShareF:int{48100000}\r
                 populationShareF:int{48190000}\r
-                writingShareF:int{48100000}\r
             }\r
             sdh{\r
                 populationShareF:int{48370000}\r
             }\r
             territoryF:intvector{\r
-                62135700,\r
+                62145900,\r
                 49850000,\r
-                57818243,\r
+                57828016,\r
             }\r
-            tk_Latn{\r
+            tk{\r
                 populationShareF:int{48280000}\r
             }\r
         }\r
         IS{\r
             da{\r
-                populationShareF:int{47680000}\r
+                populationShareF:int{47670000}\r
             }\r
             is{\r
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                60143400,\r
+                60161500,\r
                 49990000,\r
-                55331918,\r
+                55335878,\r
             }\r
         }\r
         IT{\r
@@ -28163,7 +29162,7 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             hr{\r
-                populationShareF:int{45570000}\r
+                populationShareF:int{45560000}\r
             }\r
             it{\r
                 officialStatus{"official"}\r
@@ -28180,7 +29179,7 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             pms{\r
-                populationShareF:int{46100000}\r
+                populationShareF:int{45990000}\r
             }\r
             rgn{\r
                 populationShareF:int{0}\r
@@ -28199,9 +29198,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47170000}\r
             }\r
             territoryF:intvector{\r
-                62213500,\r
+                62222100,\r
                 49990000,\r
-                57618551,\r
+                57620075,\r
             }\r
             vec{\r
                 populationShareF:int{48130000}\r
@@ -28215,7 +29214,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59577100,\r
                 49990000,\r
-                54972940,\r
+                54980690,\r
             }\r
         }\r
         JM{\r
@@ -28227,9 +29226,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49950000}\r
             }\r
             territoryF:intvector{\r
-                60241000,\r
+                60253900,\r
                 49870000,\r
-                56295021,\r
+                56297034,\r
             }\r
         }\r
         JO{\r
@@ -28241,9 +29240,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49450000}\r
             }\r
             territoryF:intvector{\r
-                60799100,\r
+                60861900,\r
                 49959000,\r
-                56811756,\r
+                56818538,\r
             }\r
         }\r
         JP{\r
@@ -28259,9 +29258,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                62476700,\r
+                62493200,\r
                 49990000,\r
-                58126920,\r
+                58126702,\r
             }\r
         }\r
         KE{\r
@@ -28273,8 +29272,8 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             ebu{\r
+                literacyShareF:int{48100000}\r
                 populationShareF:int{48150000}\r
-                writingShareF:int{48100000}\r
             }\r
             en{\r
                 officialStatus{"official"}\r
@@ -28302,8 +29301,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{49110000}\r
             }\r
             mas{\r
+                literacyShareF:int{49500000}\r
                 populationShareF:int{48160000}\r
-                writingShareF:int{49500000}\r
             }\r
             mer{\r
                 populationShareF:int{48400000}\r
@@ -28311,16 +29310,16 @@ supplementalData:table(nofallback){
             om{\r
                 populationShareF:int{47470000}\r
             }\r
-            pa_Guru{\r
-                populationShareF:int{46220000}\r
+            pa{\r
+                populationShareF:int{46210000}\r
             }\r
             pko{\r
+                literacyShareF:int{48100000}\r
                 populationShareF:int{47700000}\r
-                writingShareF:int{48100000}\r
             }\r
             saq{\r
+                literacyShareF:int{48100000}\r
                 populationShareF:int{47460000}\r
-                writingShareF:int{48100000}\r
             }\r
             so{\r
                 populationShareF:int{48130000}\r
@@ -28333,13 +29332,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{47740000}\r
             }\r
             territoryF:intvector{\r
-                61133000,\r
+                61152700,\r
                 49874000,\r
-                57459253,\r
+                57467908,\r
             }\r
         }\r
         KG{\r
-            ky_Cyrl{\r
+            ky{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49480000}\r
             }\r
@@ -28348,9 +29347,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49360000}\r
             }\r
             territoryF:intvector{\r
-                60192300,\r
+                60210100,\r
                 49992000,\r
-                56566494,\r
+                56572755,\r
             }\r
         }\r
         KH{\r
@@ -28365,9 +29364,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49890000}\r
             }\r
             territoryF:intvector{\r
-                60501600,\r
+                60589400,\r
                 49739000,\r
-                57157088,\r
+                57159572,\r
             }\r
         }\r
         KI{\r
@@ -28380,9 +29379,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49600000}\r
             }\r
             territoryF:intvector{\r
-                58189000,\r
+                58211000,\r
                 49900000,\r
-                55105711,\r
+                55106925,\r
             }\r
         }\r
         KM{\r
@@ -28395,9 +29394,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49560000}\r
             }\r
             territoryF:intvector{\r
-                59119000,\r
+                59125900,\r
                 49755000,\r
-                55780971,\r
+                55794678,\r
             }\r
             wni{\r
                 officialStatus{"official"}\r
@@ -28414,9 +29413,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                59128100,\r
+                59142700,\r
                 49978000,\r
-                54519360,\r
+                54523290,\r
             }\r
         }\r
         KP{\r
@@ -28427,7 +29426,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 60400000,\r
                 50100000,\r
-                57249832,\r
+                57251153,\r
             }\r
         }\r
         KR{\r
@@ -28436,9 +29435,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                62178400,\r
+                62192900,\r
                 49979000,\r
-                57491152,\r
+                57509242,\r
             }\r
         }\r
         KW{\r
@@ -28447,9 +29446,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                61282600,\r
+                61301100,\r
                 49939000,\r
-                56278853,\r
+                56283278,\r
             }\r
         }\r
         KY{\r
@@ -28460,7 +29459,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59250700,\r
                 49989000,\r
-                54560920,\r
+                54572680,\r
             }\r
         }\r
         KZ{\r
@@ -28470,7 +29469,7 @@ supplementalData:table(nofallback){
             en{\r
                 populationShareF:int{49150000}\r
             }\r
-            kk_Cyrl{\r
+            kk{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49640000}\r
             }\r
@@ -28479,9 +29478,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49720000}\r
             }\r
             territoryF:intvector{\r
-                61420000,\r
+                61460700,\r
                 49997000,\r
-                57181571,\r
+                57183604,\r
             }\r
             ug_Cyrl{\r
                 populationShareF:int{48200000}\r
@@ -28499,9 +29498,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49690000}\r
             }\r
             territoryF:intvector{\r
-                60345300,\r
+                60409600,\r
                 49727000,\r
-                56691154,\r
+                56701907,\r
             }\r
         }\r
         LB{\r
@@ -28522,9 +29521,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48160000}\r
             }\r
             territoryF:intvector{\r
-                60814200,\r
+                60851600,\r
                 49896000,\r
-                56618470,\r
+                56623774,\r
             }\r
         }\r
         LC{\r
@@ -28533,9 +29532,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             territoryF:intvector{\r
-                59197800,\r
+                59208300,\r
                 49901000,\r
-                55163922,\r
+                55164464,\r
             }\r
         }\r
         LI{\r
@@ -28551,10 +29550,10 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59320000,\r
                 50100000,\r
-                54376240,\r
+                54379370,\r
             }\r
             wae{\r
-                populationShareF:int{48350000}\r
+                populationShareF:int{48340000}\r
             }\r
         }\r
         LK{\r
@@ -28570,9 +29569,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49150000}\r
             }\r
             territoryF:intvector{\r
-                61218200,\r
+                61237800,\r
                 49912000,\r
-                57220535,\r
+                57222350,\r
             }\r
         }\r
         LR{\r
@@ -28587,16 +29586,16 @@ supplementalData:table(nofallback){
                 populationShareF:int{47480000}\r
             }\r
             territoryF:intvector{\r
-                59371100,\r
+                59388100,\r
                 49608000,\r
-                56419567,\r
+                56429994,\r
+            }\r
+            vai{\r
+                populationShareF:int{48260000}\r
             }\r
             vai_Latn{\r
                 populationShareF:int{0}\r
             }\r
-            vai_Vaii{\r
-                populationShareF:int{48260000}\r
-            }\r
         }\r
         LS{\r
             en{\r
@@ -28611,9 +29610,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                59557500,\r
+                59601900,\r
                 49896000,\r
-                56194770,\r
+                56195307,\r
             }\r
             xh{\r
                 populationShareF:int{47990000}\r
@@ -28623,6 +29622,9 @@ supplementalData:table(nofallback){
             }\r
         }\r
         LT{\r
+            de{\r
+                populationShareF:int{49140000}\r
+            }\r
             en{\r
                 populationShareF:int{49380000}\r
             }\r
@@ -28631,15 +29633,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{49860000}\r
             }\r
             ru{\r
-                populationShareF:int{48800000}\r
+                populationShareF:int{49800000}\r
             }\r
             sgs{\r
                 populationShareF:int{0}\r
             }\r
             territoryF:intvector{\r
-                60799300,\r
+                60857900,\r
                 49997000,\r
-                56288443,\r
+                56285424,\r
             }\r
         }\r
         LU{\r
@@ -28647,6 +29649,9 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49630000}\r
             }\r
+            en{\r
+                populationShareF:int{49560000}\r
+            }\r
             fr{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49870000}\r
@@ -28660,12 +29665,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{49160000}\r
             }\r
             territoryF:intvector{\r
-                60536700,\r
+                60587400,\r
                 50100000,\r
-                55570252,\r
+                55582291,\r
             }\r
         }\r
         LV{\r
+            en{\r
+                populationShareF:int{49460000}\r
+            }\r
             ltg{\r
                 populationShareF:int{48890000}\r
             }\r
@@ -28677,9 +29685,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49380000}\r
             }\r
             territoryF:intvector{\r
-                60483600,\r
+                60508700,\r
                 49998000,\r
-                56198671,\r
+                56196569,\r
             }\r
         }\r
         LY{\r
@@ -28688,9 +29696,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49740000}\r
             }\r
             territoryF:intvector{\r
-                60979400,\r
+                60908900,\r
                 49895000,\r
-                56641178,\r
+                56654195,\r
             }\r
         }\r
         MA{\r
@@ -28711,29 +29719,29 @@ supplementalData:table(nofallback){
                 officialStatus{"de_facto_official"}\r
                 populationShareF:int{49200000}\r
             }\r
-            rif_Latn{\r
+            rif{\r
                 populationShareF:int{48490000}\r
                 writingShareF:int{48500000}\r
             }\r
-            rif_Tfng{\r
+            rif_Latn{\r
                 populationShareF:int{48490000}\r
                 writingShareF:int{48500000}\r
             }\r
-            shi_Latn{\r
+            shi{\r
                 populationShareF:int{48870000}\r
             }\r
-            shi_Tfng{\r
+            shi_Latn{\r
                 populationShareF:int{48870000}\r
             }\r
             territoryF:intvector{\r
-                61259200,\r
+                61282800,\r
                 49671000,\r
-                57333227,\r
+                57336558,\r
             }\r
-            tzm_Latn{\r
+            tzm{\r
+                literacyShareF:int{49250000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{48980000}\r
-                writingShareF:int{49250000}\r
             }\r
             zgh{\r
                 populationShareF:int{49220000}\r
@@ -28747,7 +29755,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59679000,\r
                 49990000,\r
-                54305350,\r
+                54305810,\r
             }\r
         }\r
         MD{\r
@@ -28765,9 +29773,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48300000}\r
             }\r
             territoryF:intvector{\r
-                60177800,\r
+                60185400,\r
                 49990000,\r
-                56354685,\r
+                56351049,\r
             }\r
             uk{\r
                 populationShareF:int{49140000}\r
@@ -28777,7 +29785,7 @@ supplementalData:table(nofallback){
             sq{\r
                 populationShareF:int{48790000}\r
             }\r
-            sr_Cyrl{\r
+            sr{\r
                 populationShareF:int{48500000}\r
             }\r
             sr_Latn{\r
@@ -28785,9 +29793,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59942800,\r
+                60106100,\r
                 49985000,\r
-                55647073,\r
+                55644578,\r
             }\r
         }\r
         MF{\r
@@ -28798,7 +29806,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58561500,\r
                 49990000,\r
-                54317540,\r
+                54319490,\r
             }\r
         }\r
         MG{\r
@@ -28815,9 +29823,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             territoryF:intvector{\r
-                60340500,\r
+                60374900,\r
                 49645000,\r
-                57238127,\r
+                57244303,\r
             }\r
         }\r
         MH{\r
@@ -28830,9 +29838,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49730000}\r
             }\r
             territoryF:intvector{\r
-                58182000,\r
+                58180000,\r
                 49937000,\r
-                54721910,\r
+                54733760,\r
             }\r
         }\r
         MK{\r
@@ -28845,9 +29853,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49250000}\r
             }\r
             territoryF:intvector{\r
-                60277200,\r
+                60301300,\r
                 49974000,\r
-                56209602,\r
+                56210003,\r
             }\r
             tr{\r
                 populationShareF:int{48350000}\r
@@ -28857,7 +29865,7 @@ supplementalData:table(nofallback){
             ar{\r
                 populationShareF:int{47890000}\r
             }\r
-            bm_Latn{\r
+            bm{\r
                 populationShareF:int{49460000}\r
             }\r
             bm_Nkoo{\r
@@ -28895,9 +29903,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48590000}\r
             }\r
             territoryF:intvector{\r
-                60275000,\r
+                60380900,\r
                 49334000,\r
-                57169555,\r
+                57174671,\r
             }\r
             tmh{\r
                 populationShareF:int{48210000}\r
@@ -28921,16 +29929,16 @@ supplementalData:table(nofallback){
                 populationShareF:int{48640000}\r
             }\r
             territoryF:intvector{\r
-                61244400,\r
+                61311100,\r
                 49927000,\r
-                57563202,\r
+                57568904,\r
             }\r
         }\r
         MN{\r
             kk_Arab{\r
                 populationShareF:int{48720000}\r
             }\r
-            mn_Cyrl{\r
+            mn{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49930000}\r
             }\r
@@ -28938,14 +29946,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{47130000}\r
             }\r
             territoryF:intvector{\r
-                60348700,\r
+                60366500,\r
                 49974000,\r
-                56299291,\r
+                56303133,\r
             }\r
             ug_Cyrl{\r
                 populationShareF:int{46330000}\r
             }\r
-            zh_Hans{\r
+            zh{\r
                 populationShareF:int{48140000}\r
             }\r
         }\r
@@ -28958,11 +29966,11 @@ supplementalData:table(nofallback){
                 populationShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60516800,\r
+                60632200,\r
                 49956000,\r
-                55592731,\r
+                55597425,\r
             }\r
-            zh_Hans{\r
+            zh{\r
                 populationShareF:int{48500000}\r
             }\r
             zh_Hant{\r
@@ -28972,7 +29980,7 @@ supplementalData:table(nofallback){
         }\r
         MP{\r
             ch{\r
-                populationShareF:int{49180000}\r
+                populationShareF:int{49170000}\r
             }\r
             en{\r
                 officialStatus{"de_facto_official"}\r
@@ -28981,7 +29989,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58682000,\r
                 49970000,\r
-                54523440,\r
+                54534670,\r
             }\r
         }\r
         MQ{\r
@@ -29007,23 +30015,23 @@ supplementalData:table(nofallback){
                 populationShareF:int{49170000}\r
             }\r
             territoryF:intvector{\r
-                60156200,\r
+                60167100,\r
                 49586000,\r
-                56359670,\r
+                56367729,\r
             }\r
             wo{\r
-                populationShareF:int{47280000}\r
+                populationShareF:int{47270000}\r
             }\r
         }\r
         MS{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49670000}\r
+                populationShareF:int{49660000}\r
             }\r
             territoryF:intvector{\r
                 57437800,\r
                 49970000,\r
-                53524100,\r
+                53526700,\r
             }\r
         }\r
         MT{\r
@@ -29031,14 +30039,20 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49880000}\r
             }\r
+            fr{\r
+                populationShareF:int{49110000}\r
+            }\r
+            it{\r
+                populationShareF:int{49560000}\r
+            }\r
             mt{\r
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                60141200,\r
+                60163200,\r
                 49924000,\r
-                55413965,\r
+                55415196,\r
             }\r
         }\r
         MU{\r
@@ -29060,9 +30074,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48250000}\r
             }\r
             territoryF:intvector{\r
-                60235300,\r
+                60258500,\r
                 49888000,\r
-                56133983,\r
+                56134824,\r
             }\r
             ur{\r
                 populationShareF:int{48520000}\r
@@ -29074,9 +30088,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49940000}\r
             }\r
             territoryF:intvector{\r
-                59455400,\r
+                59540700,\r
                 49984000,\r
-                55393253,\r
+                55392960,\r
             }\r
         }\r
         MW{\r
@@ -29089,9 +30103,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49630000}\r
             }\r
             territoryF:intvector{\r
-                60195800,\r
+                60212300,\r
                 49748000,\r
-                57179647,\r
+                57185703,\r
             }\r
             tog{\r
                 populationShareF:int{47980000}\r
@@ -29127,9 +30141,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{44700000}\r
             }\r
             territoryF:intvector{\r
-                62214900,\r
+                62230700,\r
                 49935000,\r
-                58121737,\r
+                58123167,\r
             }\r
             yua{\r
                 populationShareF:int{47670000}\r
@@ -29157,7 +30171,7 @@ supplementalData:table(nofallback){
             ml{\r
                 populationShareF:int{47150000}\r
             }\r
-            ms_Latn{\r
+            ms{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49750000}\r
             }\r
@@ -29165,9 +30179,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48420000}\r
             }\r
             territoryF:intvector{\r
-                61769400,\r
+                61863800,\r
                 49931000,\r
-                57305138,\r
+                57309500,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{49170000}\r
@@ -29203,9 +30217,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46360000}\r
             }\r
             territoryF:intvector{\r
-                60312100,\r
+                60353100,\r
                 49561000,\r
-                57253031,\r
+                57259302,\r
             }\r
             ts{\r
                 populationShareF:int{48790000}\r
@@ -29217,7 +30231,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48240000}\r
             }\r
             zu{\r
-                populationShareF:int{45710000}\r
+                populationShareF:int{45690000}\r
             }\r
         }\r
         NA{\r
@@ -29244,9 +30258,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49210000}\r
             }\r
             territoryF:intvector{\r
-                60234800,\r
+                60270400,\r
                 49888000,\r
-                56221231,\r
+                56243647,\r
             }\r
             tn{\r
                 populationShareF:int{47560000}\r
@@ -29260,7 +30274,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 60111000,\r
                 49962000,\r
-                55271615,\r
+                55275355,\r
             }\r
         }\r
         NE{\r
@@ -29277,19 +30291,19 @@ supplementalData:table(nofallback){
             fuq{\r
                 populationShareF:int{48700000}\r
             }\r
-            ha_Latn{\r
+            ha{\r
                 populationShareF:int{49410000}\r
             }\r
             territoryF:intvector{\r
-                60180000,\r
+                60202700,\r
                 49287000,\r
-                57180457,\r
+                57186386,\r
             }\r
             tmh{\r
                 populationShareF:int{48600000}\r
             }\r
             twq{\r
-                populationShareF:int{46440000}\r
+                populationShareF:int{46430000}\r
             }\r
         }\r
         NF{\r
@@ -29298,7 +30312,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49760000}\r
             }\r
             territoryF:intvector{\r
-                58106900,\r
+                58114300,\r
                 49990000,\r
                 53221000,\r
             }\r
@@ -29324,15 +30338,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{49530000}\r
             }\r
             fuv{\r
+                literacyShareF:int{49200000}\r
                 populationShareF:int{48670000}\r
-                writingShareF:int{49200000}\r
+            }\r
+            ha{\r
+                populationShareF:int{49130000}\r
             }\r
             ha_Arab{\r
                 populationShareF:int{48100000}\r
             }\r
-            ha_Latn{\r
-                populationShareF:int{49130000}\r
-            }\r
             ibb{\r
                 populationShareF:int{48140000}\r
             }\r
@@ -29349,13 +30363,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{49210000}\r
             }\r
             territoryF:intvector{\r
-                62105300,\r
+                62108900,\r
                 49613000,\r
-                58181562,\r
+                58186053,\r
             }\r
             tiv{\r
+                literacyShareF:int{49250000}\r
                 populationShareF:int{48160000}\r
-                writingShareF:int{49250000}\r
             }\r
             yo{\r
                 officialStatus{"official"}\r
@@ -29368,9 +30382,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49780000}\r
             }\r
             territoryF:intvector{\r
-                60296900,\r
+                60334900,\r
                 49780000,\r
-                56590788,\r
+                56596680,\r
             }\r
         }\r
         NL{\r
@@ -29411,9 +30425,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48120000}\r
             }\r
             territoryF:intvector{\r
-                61808800,\r
+                61865900,\r
                 49990000,\r
-                57169479,\r
+                57170170,\r
             }\r
             tr{\r
                 populationShareF:int{48120000}\r
@@ -29436,9 +30450,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48330000}\r
             }\r
             territoryF:intvector{\r
-                61346300,\r
+                61364700,\r
                 50100000,\r
-                56520769,\r
+                56526516,\r
             }\r
         }\r
         NP{\r
@@ -29479,9 +30493,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48320000}\r
             }\r
             lep{\r
-                populationShareF:int{45900000}\r
+                populationShareF:int{45970000}\r
             }\r
-            lif_Deva{\r
+            lif{\r
                 populationShareF:int{48110000}\r
             }\r
             mai{\r
@@ -29501,8 +30515,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{48330000}\r
             }\r
             rjs{\r
+                literacyShareF:int{49670000}\r
                 populationShareF:int{47440000}\r
-                writingShareF:int{49670000}\r
             }\r
             taj{\r
                 populationShareF:int{48300000}\r
@@ -29514,9 +30528,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47120000}\r
             }\r
             territoryF:intvector{\r
-                60671400,\r
+                60715200,\r
                 49574000,\r
-                57315513,\r
+                57290339,\r
             }\r
             thl{\r
                 populationShareF:int{48200000}\r
@@ -29534,7 +30548,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{47430000}\r
             }\r
             unr_Deva{\r
-                populationShareF:int{46180000}\r
+                populationShareF:int{46200000}\r
             }\r
             xsr{\r
                 populationShareF:int{47520000}\r
@@ -29552,7 +30566,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58150800,\r
                 49990000,\r
-                53954000,\r
+                53959100,\r
             }\r
         }\r
         NU{\r
@@ -29577,12 +30591,12 @@ supplementalData:table(nofallback){
             }\r
             mi{\r
                 officialStatus{"official"}\r
-                populationShareF:int{48250000}\r
+                populationShareF:int{48280000}\r
             }\r
             territoryF:intvector{\r
-                61160800,\r
+                61174800,\r
                 49990000,\r
-                56443839,\r
+                56447455,\r
             }\r
         }\r
         OM{\r
@@ -29597,9 +30611,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47940000}\r
             }\r
             territoryF:intvector{\r
-                61163000,\r
+                61173100,\r
                 49869000,\r
-                56328694,\r
+                56335526,\r
             }\r
         }\r
         PA{\r
@@ -29611,9 +30625,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49690000}\r
             }\r
             territoryF:intvector{\r
-                60767700,\r
+                60931200,\r
                 49941000,\r
-                56365702,\r
+                56370525,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{47160000}\r
@@ -29632,9 +30646,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49150000}\r
             }\r
             territoryF:intvector{\r
-                61372700,\r
+                61409900,\r
                 49896000,\r
-                57304450,\r
+                57307411,\r
             }\r
         }\r
         PF{\r
@@ -29645,7 +30659,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59715000,\r
                 49980000,\r
-                55282703,\r
+                55285321,\r
             }\r
             ty{\r
                 officialStatus{"official"}\r
@@ -29666,14 +30680,14 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60186000,\r
+                60280200,\r
                 49624000,\r
-                56667243,\r
+                56679132,\r
             }\r
             tpi{\r
+                literacyShareF:int{49450000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49710000}\r
-                writingShareF:int{49450000}\r
             }\r
         }\r
         PH{\r
@@ -29684,15 +30698,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{48300000}\r
             }\r
             bku{\r
-                populationShareF:int{45790000}\r
+                populationShareF:int{45780000}\r
             }\r
             bto{\r
                 populationShareF:int{47280000}\r
             }\r
             ceb{\r
+                literacyShareF:int{49130000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49240000}\r
-                writingShareF:int{49130000}\r
             }\r
             cps{\r
                 populationShareF:int{47670000}\r
@@ -29709,17 +30723,17 @@ supplementalData:table(nofallback){
                 populationShareF:int{49600000}\r
             }\r
             hil{\r
+                literacyShareF:int{48800000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48840000}\r
-                writingShareF:int{48800000}\r
             }\r
             hnn{\r
                 populationShareF:int{46160000}\r
             }\r
             ilo{\r
+                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48960000}\r
-                writingShareF:int{49100000}\r
             }\r
             krj{\r
                 populationShareF:int{47390000}\r
@@ -29736,13 +30750,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{48230000}\r
             }\r
             tbw{\r
-                populationShareF:int{45990000}\r
-                writingShareF:int{49360000}\r
+                literacyShareF:int{49360000}\r
+                populationShareF:int{45970000}\r
             }\r
             territoryF:intvector{\r
-                61693400,\r
+                61801900,\r
                 49954000,\r
-                58100998,\r
+                58102624,\r
             }\r
             tsg{\r
                 officialStatus{"official_regional"}\r
@@ -29795,7 +30809,7 @@ supplementalData:table(nofallback){
             khw{\r
                 populationShareF:int{47150000}\r
             }\r
-            ks_Arab{\r
+            ks{\r
                 populationShareF:int{46690000}\r
             }\r
             kvx{\r
@@ -29816,17 +30830,17 @@ supplementalData:table(nofallback){
             ps{\r
                 populationShareF:int{49150000}\r
             }\r
-            sd_Arab{\r
+            sd{\r
                 populationShareF:int{49120000}\r
             }\r
             skr{\r
+                literacyShareF:int{48100000}\r
                 populationShareF:int{48910000}\r
-                writingShareF:int{48100000}\r
             }\r
             territoryF:intvector{\r
-                61884200,\r
+                61988200,\r
                 49549000,\r
-                58199086,\r
+                58201996,\r
             }\r
             tg_Arab{\r
                 populationShareF:int{47330000}\r
@@ -29846,7 +30860,7 @@ supplementalData:table(nofallback){
             }\r
             de{\r
                 officialStatus{"official_regional"}\r
-                populationShareF:int{46960000}\r
+                populationShareF:int{49190000}\r
             }\r
             en{\r
                 populationShareF:int{49330000}\r
@@ -29859,6 +30873,9 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49960000}\r
             }\r
+            ru{\r
+                populationShareF:int{49180000}\r
+            }\r
             sli{\r
                 populationShareF:int{46310000}\r
             }\r
@@ -29866,9 +30883,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48130000}\r
             }\r
             territoryF:intvector{\r
-                61959800,\r
+                62105200,\r
                 49997000,\r
-                57385622,\r
+                57385233,\r
             }\r
             uk{\r
                 populationShareF:int{47390000}\r
@@ -29876,27 +30893,27 @@ supplementalData:table(nofallback){
         }\r
         PM{\r
             en{\r
-                populationShareF:int{48330000}\r
+                populationShareF:int{48340000}\r
             }\r
             fr{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49900000}\r
+                populationShareF:int{49910000}\r
             }\r
             territoryF:intvector{\r
                 58215300,\r
                 49990000,\r
-                53565700,\r
+                53559500,\r
             }\r
         }\r
         PN{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49960000}\r
+                populationShareF:int{49850000}\r
             }\r
             territoryF:intvector{\r
-                56192400,\r
+                56233700,\r
                 49990000,\r
-                51480000,\r
+                51540000,\r
             }\r
         }\r
         PR{\r
@@ -29909,9 +30926,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49870000}\r
             }\r
             territoryF:intvector{\r
-                60614600,\r
+                61131000,\r
                 49903000,\r
-                56359836,\r
+                56357806,\r
             }\r
         }\r
         PS{\r
@@ -29920,9 +30937,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                60201200,\r
+                60212200,\r
                 49953000,\r
-                56465442,\r
+                56445101,\r
             }\r
         }\r
         PT{\r
@@ -29930,7 +30947,10 @@ supplementalData:table(nofallback){
                 populationShareF:int{49270000}\r
             }\r
             es{\r
-                populationShareF:int{46970000}\r
+                populationShareF:int{49100000}\r
+            }\r
+            fr{\r
+                populationShareF:int{49150000}\r
             }\r
             gl{\r
                 populationShareF:int{47140000}\r
@@ -29940,9 +30960,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49960000}\r
             }\r
             territoryF:intvector{\r
-                61281400,\r
+                61297100,\r
                 49954000,\r
-                57108253,\r
+                57108338,\r
             }\r
         }\r
         PW{\r
@@ -29955,9 +30975,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49740000}\r
             }\r
             territoryF:intvector{\r
-                58250000,\r
+                58276000,\r
                 49920000,\r
-                54212650,\r
+                54213470,\r
             }\r
         }\r
         PY{\r
@@ -29973,9 +30993,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49800000}\r
             }\r
             territoryF:intvector{\r
-                60584900,\r
+                60641200,\r
                 49939000,\r
-                56678327,\r
+                56686281,\r
             }\r
         }\r
         QA{\r
@@ -29987,12 +31007,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{49110000}\r
             }\r
             ml{\r
-                populationShareF:int{47300000}\r
+                populationShareF:int{47290000}\r
             }\r
             territoryF:intvector{\r
-                61306600,\r
+                61334500,\r
                 49963000,\r
-                56219482,\r
+                56225828,\r
             }\r
         }\r
         RE{\r
@@ -30025,6 +31045,12 @@ supplementalData:table(nofallback){
             en{\r
                 populationShareF:int{49310000}\r
             }\r
+            es{\r
+                populationShareF:int{49100000}\r
+            }\r
+            fr{\r
+                populationShareF:int{49170000}\r
+            }\r
             hu{\r
                 populationShareF:int{48660000}\r
             }\r
@@ -30039,9 +31065,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47120000}\r
             }\r
             territoryF:intvector{\r
-                61393800,\r
+                61441000,\r
                 49977000,\r
-                57216664,\r
+                57215997,\r
             }\r
             tr{\r
                 populationShareF:int{47130000}\r
@@ -30067,7 +31093,7 @@ supplementalData:table(nofallback){
             sq{\r
                 populationShareF:int{49190000}\r
             }\r
-            sr_Cyrl{\r
+            sr{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49990000}\r
             }\r
@@ -30077,9 +31103,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60958400,\r
+                61101500,\r
                 49980000,\r
-                56717679,\r
+                56714392,\r
             }\r
             uk{\r
                 officialStatus{"official_regional"}\r
@@ -30129,8 +31155,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{46120000}\r
             }\r
             hy{\r
+                literacyShareF:int{49500000}\r
                 populationShareF:int{47840000}\r
-                writingShareF:int{49500000}\r
             }\r
             inh{\r
                 officialStatus{"official_regional"}\r
@@ -30174,7 +31200,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47210000}\r
             }\r
-            mn_Cyrl{\r
+            mn{\r
                 populationShareF:int{45150000}\r
             }\r
             mrj{\r
@@ -30199,9 +31225,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{45350000}\r
             }\r
             territoryF:intvector{\r
-                62357700,\r
+                62374500,\r
                 49997000,\r
-                58142424,\r
+                58142355,\r
             }\r
             tt{\r
                 officialStatus{"official_regional"}\r
@@ -30236,9 +31262,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49770000}\r
             }\r
             territoryF:intvector{\r
-                60189000,\r
+                60219700,\r
                 49711000,\r
-                57126617,\r
+                57129884,\r
             }\r
         }\r
         SA{\r
@@ -30247,9 +31273,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                62161000,\r
+                62173100,\r
                 49872000,\r
-                57277523,\r
+                57281603,\r
             }\r
         }\r
         SB{\r
@@ -30261,9 +31287,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48160000}\r
             }\r
             territoryF:intvector{\r
-                59109400,\r
+                59119800,\r
                 49841000,\r
-                55622469,\r
+                55635027,\r
             }\r
         }\r
         SC{\r
@@ -30279,9 +31305,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49600000}\r
             }\r
             territoryF:intvector{\r
-                59242400,\r
+                59260800,\r
                 49918000,\r
-                54924300,\r
+                54931860,\r
             }\r
         }\r
         SD{\r
@@ -30309,9 +31335,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47990000}\r
             }\r
             territoryF:intvector{\r
-                61160200,\r
+                61176300,\r
                 49719000,\r
-                57361089,\r
+                57367295,\r
             }\r
             zag{\r
                 populationShareF:int{47510000}\r
@@ -30332,14 +31358,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{0}\r
             }\r
             rmu{\r
-                populationShareF:int{46970000}\r
+                populationShareF:int{46960000}\r
             }\r
             se{\r
                 populationShareF:int{47330000}\r
             }\r
             sma{\r
-                populationShareF:int{45310000}\r
-                writingShareF:int{49750000}\r
+                literacyShareF:int{49750000}\r
+                populationShareF:int{45300000}\r
             }\r
             smj{\r
                 populationShareF:int{46150000}\r
@@ -30349,12 +31375,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{49950000}\r
             }\r
             territoryF:intvector{\r
-                61450500,\r
+                61498100,\r
                 49990000,\r
-                56980162,\r
+                56988060,\r
             }\r
             yi{\r
-                populationShareF:int{46310000}\r
+                populationShareF:int{46300000}\r
             }\r
         }\r
         SG{\r
@@ -30363,25 +31389,25 @@ supplementalData:table(nofallback){
                 populationShareF:int{49930000}\r
             }\r
             ml{\r
-                populationShareF:int{47180000}\r
+                populationShareF:int{47170000}\r
             }\r
-            ms_Latn{\r
+            ms{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49140000}\r
             }\r
-            pa_Guru{\r
-                populationShareF:int{47170000}\r
+            pa{\r
+                populationShareF:int{47160000}\r
             }\r
             ta{\r
                 officialStatus{"official"}\r
                 populationShareF:int{48210000}\r
             }\r
             territoryF:intvector{\r
-                61454300,\r
+                61486900,\r
                 49959000,\r
-                56567447,\r
+                56578173,\r
             }\r
-            zh_Hans{\r
+            zh{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49770000}\r
             }\r
@@ -30398,9 +31424,15 @@ supplementalData:table(nofallback){
             }\r
         }\r
         SI{\r
+            de{\r
+                populationShareF:int{49420000}\r
+            }\r
             en{\r
                 populationShareF:int{49590000}\r
             }\r
+            hr{\r
+                populationShareF:int{49610000}\r
+            }\r
             hu{\r
                 populationShareF:int{47470000}\r
             }\r
@@ -30412,9 +31444,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49870000}\r
             }\r
             territoryF:intvector{\r
-                60615600,\r
+                60661300,\r
                 49997000,\r
-                56198341,\r
+                56197803,\r
             }\r
         }\r
         SJ{\r
@@ -30426,14 +31458,17 @@ supplementalData:table(nofallback){
                 populationShareF:int{49640000}\r
             }\r
             territoryF:intvector{\r
-                58124500,\r
+                58129700,\r
                 50100000,\r
                 53187200,\r
             }\r
         }\r
         SK{\r
+            cs{\r
+                populationShareF:int{49470000}\r
+            }\r
             de{\r
-                populationShareF:int{47280000}\r
+                populationShareF:int{49220000}\r
             }\r
             en{\r
                 populationShareF:int{49260000}\r
@@ -30449,9 +31484,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             territoryF:intvector{\r
-                61153200,\r
+                61169100,\r
                 49996000,\r
-                56544503,\r
+                56544580,\r
             }\r
             uk{\r
                 populationShareF:int{48190000}\r
@@ -30469,91 +31504,91 @@ supplementalData:table(nofallback){
                 populationShareF:int{49270000}\r
             }\r
             tem{\r
+                literacyShareF:int{48600000}\r
                 populationShareF:int{49260000}\r
-                writingShareF:int{48600000}\r
             }\r
             territoryF:intvector{\r
-                60128000,\r
+                60106400,\r
                 49433000,\r
-                56587910,\r
+                56601889,\r
             }\r
         }\r
         SM{\r
             eo{\r
-                populationShareF:int{47910000}\r
+                populationShareF:int{47900000}\r
             }\r
             it{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49890000}\r
             }\r
             territoryF:intvector{\r
-                59191400,\r
+                59202300,\r
                 49960000,\r
-                54330200,\r
+                54332850,\r
             }\r
         }\r
         SN{\r
             bjt{\r
+                literacyShareF:int{50100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47610000}\r
-                writingShareF:int{50100000}\r
             }\r
             bsc{\r
+                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46980000}\r
-                writingShareF:int{49100000}\r
             }\r
             dyo{\r
+                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48260000}\r
-                writingShareF:int{49100000}\r
             }\r
             ff{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49210000}\r
             }\r
             fr{\r
+                literacyShareF:int{50100000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49390000}\r
-                writingShareF:int{50100000}\r
             }\r
             knf{\r
+                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47210000}\r
-                writingShareF:int{49100000}\r
             }\r
             mey{\r
+                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
-                populationShareF:int{46510000}\r
-                writingShareF:int{49100000}\r
+                populationShareF:int{46500000}\r
             }\r
             mfv{\r
+                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47770000}\r
-                writingShareF:int{49100000}\r
             }\r
             sav{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48150000}\r
             }\r
             snf{\r
+                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47240000}\r
-                writingShareF:int{49100000}\r
             }\r
             srr{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49110000}\r
             }\r
             territoryF:intvector{\r
-                60342000,\r
+                60397200,\r
                 49497000,\r
-                57139758,\r
+                57143201,\r
             }\r
             tnr{\r
+                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46240000}\r
-                writingShareF:int{49100000}\r
             }\r
             wo{\r
                 officialStatus{"de_facto_official"}\r
@@ -30562,9 +31597,9 @@ supplementalData:table(nofallback){
         }\r
         SO{\r
             ar{\r
+                literacyShareF:int{49990000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49340000}\r
-                writingShareF:int{49990000}\r
             }\r
             om{\r
                 populationShareF:int{47420000}\r
@@ -30577,9 +31612,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48200000}\r
             }\r
             territoryF:intvector{\r
-                59589600,\r
+                59443100,\r
                 49378000,\r
-                57106164,\r
+                57108174,\r
             }\r
         }\r
         SR{\r
@@ -30588,13 +31623,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             srn{\r
+                literacyShareF:int{49750000}\r
                 populationShareF:int{49680000}\r
-                writingShareF:int{49750000}\r
             }\r
             territoryF:intvector{\r
-                59898700,\r
+                59854700,\r
                 49947000,\r
-                55579633,\r
+                55585824,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{48120000}\r
@@ -30612,9 +31647,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48560000}\r
             }\r
             territoryF:intvector{\r
-                60235000,\r
+                60208800,\r
                 49270000,\r
-                57120429,\r
+                57125307,\r
             }\r
         }\r
         ST{\r
@@ -30623,9 +31658,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49850000}\r
             }\r
             territoryF:intvector{\r
-                58626000,\r
+                58694000,\r
                 49695000,\r
-                55194006,\r
+                55197541,\r
             }\r
         }\r
         SV{\r
@@ -30634,9 +31669,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49890000}\r
             }\r
             territoryF:intvector{\r
-                60511900,\r
+                60547900,\r
                 49845000,\r
-                56614135,\r
+                56615667,\r
             }\r
         }\r
         SX{\r
@@ -30649,15 +31684,15 @@ supplementalData:table(nofallback){
             }\r
             nl{\r
                 officialStatus{"official"}\r
-                populationShareF:int{48400000}\r
+                populationShareF:int{48380000}\r
             }\r
             territoryF:intvector{\r
                 58365800,\r
                 49990000,\r
-                54396890,\r
+                54414860,\r
             }\r
             vic{\r
-                populationShareF:int{48780000}\r
+                populationShareF:int{48750000}\r
             }\r
         }\r
         SY{\r
@@ -30672,7 +31707,7 @@ supplementalData:table(nofallback){
             hy{\r
                 populationShareF:int{48180000}\r
             }\r
-            ku_Latn{\r
+            ku{\r
                 populationShareF:int{48800000}\r
             }\r
             syr{\r
@@ -30680,9 +31715,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                61107600,\r
+                60558000,\r
                 49841000,\r
-                57170649,\r
+                57171852,\r
             }\r
         }\r
         SZ{\r
@@ -30695,9 +31730,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49580000}\r
             }\r
             territoryF:intvector{\r
-                60105600,\r
+                60110600,\r
                 49878000,\r
-                56143561,\r
+                56145143,\r
             }\r
             ts{\r
                 populationShareF:int{48170000}\r
@@ -30711,7 +31746,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49990000}\r
             }\r
             territoryF:intvector{\r
-                57110200,\r
+                57119000,\r
                 49990000,\r
                 52275000,\r
             }\r
@@ -30724,7 +31759,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58632000,\r
                 49980000,\r
-                54502800,\r
+                54514300,\r
             }\r
         }\r
         TD{\r
@@ -30737,18 +31772,18 @@ supplementalData:table(nofallback){
                 populationShareF:int{49260000}\r
             }\r
             territoryF:intvector{\r
-                60296400,\r
+                60305900,\r
                 49354000,\r
-                57116315,\r
+                57118525,\r
             }\r
         }\r
         TF{\r
             fr{\r
+                literacyShareF:int{50100000}\r
                 populationShareF:int{50100000}\r
-                writingShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                56545000,\r
+                56573300,\r
                 49990000,\r
                 52140000,\r
             }\r
@@ -30761,10 +31796,14 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49610000}\r
             }\r
+            ife{\r
+                literacyShareF:int{49150000}\r
+                populationShareF:int{48130000}\r
+            }\r
             territoryF:intvector{\r
-                60101600,\r
+                60116100,\r
                 49604000,\r
-                56755232,\r
+                56775694,\r
             }\r
         }\r
         TH{\r
@@ -30772,15 +31811,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{49270000}\r
             }\r
             kdt{\r
+                literacyShareF:int{49500000}\r
                 populationShareF:int{47480000}\r
-                writingShareF:int{49500000}\r
             }\r
             kxm{\r
                 populationShareF:int{48170000}\r
             }\r
             lcp{\r
+                literacyShareF:int{49250000}\r
                 populationShareF:int{46100000}\r
-                writingShareF:int{49250000}\r
             }\r
             lwl{\r
                 populationShareF:int{46100000}\r
@@ -30803,14 +31842,14 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                62107000,\r
+                62116100,\r
                 49935000,\r
-                57679764,\r
+                57682008,\r
             }\r
             th{\r
+                literacyShareF:int{49930000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49800000}\r
-                writingShareF:int{49930000}\r
             }\r
             tts{\r
                 populationShareF:int{49240000}\r
@@ -30831,11 +31870,11 @@ supplementalData:table(nofallback){
                 populationShareF:int{49120000}\r
             }\r
             territoryF:intvector{\r
-                60224000,\r
+                60258100,\r
                 49997000,\r
-                56819196,\r
+                56833095,\r
             }\r
-            tg_Cyrl{\r
+            tg{\r
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
             }\r
@@ -30858,14 +31897,14 @@ supplementalData:table(nofallback){
         }\r
         TL{\r
             pt{\r
+                literacyShareF:int{50100000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49590000}\r
-                writingShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59674500,\r
+                59497500,\r
                 49583000,\r
-                56123112,\r
+                56126107,\r
             }\r
             tet{\r
                 officialStatus{"official"}\r
@@ -30873,22 +31912,22 @@ supplementalData:table(nofallback){
             }\r
         }\r
         TM{\r
-            ku_Latn{\r
+            ku{\r
                 populationShareF:int{47410000}\r
             }\r
             ru{\r
                 populationShareF:int{49120000}\r
             }\r
             territoryF:intvector{\r
-                60824000,\r
+                60947700,\r
                 49996000,\r
-                56523142,\r
+                56529132,\r
             }\r
-            tk_Latn{\r
+            tk{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49700000}\r
             }\r
-            uz_Latn{\r
+            uz{\r
                 populationShareF:int{48900000}\r
             }\r
         }\r
@@ -30905,9 +31944,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49740000}\r
             }\r
             territoryF:intvector{\r
-                61124700,\r
+                61130800,\r
                 49791000,\r
-                57110372,\r
+                57111346,\r
             }\r
         }\r
         TO{\r
@@ -30916,9 +31955,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49280000}\r
             }\r
             territoryF:intvector{\r
-                58502000,\r
+                58557000,\r
                 49990000,\r
-                55106501,\r
+                55106513,\r
             }\r
             to{\r
                 officialStatus{"official"}\r
@@ -30935,12 +31974,12 @@ supplementalData:table(nofallback){
             ar{\r
                 populationShareF:int{47560000}\r
             }\r
+            az{\r
+                populationShareF:int{47740000}\r
+            }\r
             az_Arab{\r
                 populationShareF:int{47650000}\r
             }\r
-            az_Latn{\r
-                populationShareF:int{47740000}\r
-            }\r
             bg{\r
                 populationShareF:int{47420000}\r
             }\r
@@ -30965,16 +32004,16 @@ supplementalData:table(nofallback){
             kiu{\r
                 populationShareF:int{47190000}\r
             }\r
-            kk_Cyrl{\r
-                populationShareF:int{44800000}\r
+            kk{\r
+                populationShareF:int{44700000}\r
             }\r
-            ku_Latn{\r
+            ku{\r
                 populationShareF:int{48550000}\r
             }\r
             ky_Latn{\r
                 populationShareF:int{45140000}\r
             }\r
-            lzz_Latn{\r
+            lzz{\r
                 populationShareF:int{46280000}\r
             }\r
             sq{\r
@@ -30985,18 +32024,18 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                62151500,\r
+                62167000,\r
                 49941000,\r
-                57794143,\r
+                57802746,\r
             }\r
             tr{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49930000}\r
             }\r
             tru{\r
-                populationShareF:int{45380000}\r
+                populationShareF:int{45370000}\r
             }\r
-            uz_Latn{\r
+            uz{\r
                 populationShareF:int{45250000}\r
             }\r
             zza{\r
@@ -31012,9 +32051,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47340000}\r
             }\r
             territoryF:intvector{\r
-                60434600,\r
+                60435700,\r
                 49988000,\r
-                56122236,\r
+                56122048,\r
             }\r
         }\r
         TV{\r
@@ -31023,9 +32062,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48980000}\r
             }\r
             territoryF:intvector{\r
-                57350000,\r
+                57390000,\r
                 49950000,\r
-                54108690,\r
+                54109590,\r
             }\r
             tvl{\r
                 officialStatus{"official"}\r
@@ -31034,9 +32073,9 @@ supplementalData:table(nofallback){
         }\r
         TW{\r
             territoryF:intvector{\r
-                62107900,\r
+                62112500,\r
                 49961000,\r
-                57234151,\r
+                57234648,\r
             }\r
             trv{\r
                 populationShareF:int{46200000}\r
@@ -31070,8 +32109,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47870000}\r
             }\r
             mas{\r
+                literacyShareF:int{49500000}\r
                 populationShareF:int{48150000}\r
-                writingShareF:int{49500000}\r
             }\r
             mgy{\r
                 populationShareF:int{48140000}\r
@@ -31086,8 +32125,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47220000}\r
             }\r
             sbp{\r
+                literacyShareF:int{48100000}\r
                 populationShareF:int{47200000}\r
-                writingShareF:int{48100000}\r
             }\r
             suk{\r
                 populationShareF:int{48870000}\r
@@ -31097,9 +32136,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             territoryF:intvector{\r
-                61128200,\r
+                61150600,\r
                 49678000,\r
-                57510459,\r
+                57524827,\r
             }\r
             vun{\r
                 populationShareF:int{47750000}\r
@@ -31112,6 +32151,9 @@ supplementalData:table(nofallback){
             bg{\r
                 populationShareF:int{47490000}\r
             }\r
+            crh{\r
+                populationShareF:int{47560000}\r
+            }\r
             el{\r
                 populationShareF:int{46160000}\r
             }\r
@@ -31132,9 +32174,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48120000}\r
             }\r
             territoryF:intvector{\r
-                61371800,\r
+                61349800,\r
                 49997000,\r
-                57444295,\r
+                57442097,\r
             }\r
             tr{\r
                 populationShareF:int{47420000}\r
@@ -31159,7 +32201,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48390000}\r
             }\r
             hi{\r
-                populationShareF:int{45590000}\r
+                populationShareF:int{45570000}\r
             }\r
             laj{\r
                 populationShareF:int{48380000}\r
@@ -31184,9 +32226,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48390000}\r
             }\r
             territoryF:intvector{\r
-                60750800,\r
+                60849300,\r
                 49732000,\r
-                57371017,\r
+                57383192,\r
             }\r
             ttj{\r
                 populationShareF:int{48190000}\r
@@ -31201,7 +32243,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                57170600,\r
+                57181000,\r
                 49990000,\r
                 52316000,\r
             }\r
@@ -31270,9 +32312,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47240000}\r
             }\r
             territoryF:intvector{\r
-                63173500,\r
+                63185600,\r
                 49990000,\r
-                58321369,\r
+                58323996,\r
             }\r
             vi{\r
                 populationShareF:int{47340000}\r
@@ -31290,9 +32332,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49880000}\r
             }\r
             territoryF:intvector{\r
-                60716800,\r
+                60739300,\r
                 49981000,\r
-                56334189,\r
+                56335102,\r
             }\r
         }\r
         UZ{\r
@@ -31303,33 +32345,34 @@ supplementalData:table(nofallback){
                 populationShareF:int{49140000}\r
             }\r
             territoryF:intvector{\r
-                61172300,\r
+                61202300,\r
                 49994000,\r
-                57291999,\r
+                57294736,\r
             }\r
             tr{\r
                 populationShareF:int{47760000}\r
             }\r
-            uz_Cyrl{\r
+            uz{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49150000}\r
+                populationShareF:int{49850000}\r
             }\r
-            uz_Latn{\r
+            uz_Cyrl{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49850000}\r
+                populationShareF:int{49150000}\r
             }\r
         }\r
         VA{\r
             it{\r
-                populationShareF:int{49980000}\r
+                officialStatus{"de_facto_official"}\r
+                populationShareF:int{49820000}\r
             }\r
             la{\r
-                populationShareF:int{49980000}\r
+                populationShareF:int{49820000}\r
             }\r
             territoryF:intvector{\r
-                57290600,\r
+                57358200,\r
                 50100000,\r
-                52842000,\r
+                53100000,\r
             }\r
         }\r
         VC{\r
@@ -31338,9 +32381,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49960000}\r
             }\r
             territoryF:intvector{\r
-                59117400,\r
+                59124100,\r
                 49960000,\r
-                55102627,\r
+                55102350,\r
             }\r
         }\r
         VE{\r
@@ -31349,9 +32392,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49820000}\r
             }\r
             territoryF:intvector{\r
-                61540900,\r
+                61468600,\r
                 49955000,\r
-                57292755,\r
+                57309123,\r
             }\r
         }\r
         VG{\r
@@ -31362,7 +32405,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58500000,\r
                 49978000,\r
-                54334540,\r
+                54342320,\r
             }\r
         }\r
         VI{\r
@@ -31373,18 +32416,18 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59379200,\r
                 49990000,\r
-                55103574,\r
+                55102951,\r
             }\r
         }\r
         VN{\r
             cjm{\r
+                literacyShareF:int{49600000}\r
                 populationShareF:int{46890000}\r
-                writingShareF:int{49600000}\r
             }\r
             territoryF:intvector{\r
-                61512600,\r
+                61594900,\r
                 49934000,\r
-                57943488,\r
+                57952610,\r
             }\r
             vi{\r
                 officialStatus{"official"}\r
@@ -31408,9 +32451,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49500000}\r
             }\r
             territoryF:intvector{\r
-                58683000,\r
+                58723000,\r
                 49832000,\r
-                55272264,\r
+                55277554,\r
             }\r
         }\r
         WF{\r
@@ -31424,7 +32467,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 57600000,\r
                 49500000,\r
-                54156130,\r
+                54156640,\r
             }\r
             wls{\r
                 populationShareF:int{49600000}\r
@@ -31440,9 +32483,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                58997000,\r
+                59104600,\r
                 49988000,\r
-                55197773,\r
+                55198926,\r
             }\r
         }\r
         XK{\r
@@ -31453,7 +32496,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49920000}\r
             }\r
-            sr_Cyrl{\r
+            sr{\r
                 officialStatus{"official"}\r
                 populationShareF:int{48500000}\r
             }\r
@@ -31462,9 +32505,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60169200,\r
+                60184900,\r
                 49919000,\r
-                56187098,\r
+                56188302,\r
             }\r
         }\r
         YE{\r
@@ -31476,9 +32519,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48900000}\r
             }\r
             territoryF:intvector{\r
-                61104000,\r
+                60734500,\r
                 49653000,\r
-                57267373,\r
+                57273928,\r
             }\r
         }\r
         YT{\r
@@ -31503,72 +32546,72 @@ supplementalData:table(nofallback){
         }\r
         ZA{\r
             af{\r
+                literacyShareF:int{49990000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49130000}\r
-                writingShareF:int{49990000}\r
             }\r
             en{\r
+                literacyShareF:int{49990000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49310000}\r
-                writingShareF:int{49990000}\r
             }\r
             hi{\r
+                literacyShareF:int{49690000}\r
                 populationShareF:int{48200000}\r
-                writingShareF:int{49690000}\r
             }\r
             nr{\r
+                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48160000}\r
-                writingShareF:int{49500000}\r
             }\r
             nso{\r
+                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48940000}\r
-                writingShareF:int{49500000}\r
             }\r
             ss{\r
+                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48270000}\r
-                writingShareF:int{49500000}\r
             }\r
             st{\r
+                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48790000}\r
-                writingShareF:int{49500000}\r
             }\r
             sw{\r
-                populationShareF:int{45190000}\r
-                writingShareF:int{49500000}\r
+                literacyShareF:int{49500000}\r
+                populationShareF:int{45180000}\r
             }\r
             territoryF:intvector{\r
-                61707100,\r
+                61736300,\r
                 49930000,\r
-                57536756,\r
+                57543007,\r
             }\r
             tn{\r
+                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48820000}\r
-                writingShareF:int{49500000}\r
             }\r
             ts{\r
+                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48440000}\r
-                writingShareF:int{49500000}\r
             }\r
             ve{\r
+                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48230000}\r
-                writingShareF:int{49500000}\r
             }\r
             xh{\r
+                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49180000}\r
-                writingShareF:int{49500000}\r
             }\r
             zu{\r
+                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49240000}\r
-                writingShareF:int{49500000}\r
             }\r
         }\r
         ZM{\r
@@ -31586,9 +32629,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49150000}\r
             }\r
             territoryF:intvector{\r
-                60613900,\r
+                60651700,\r
                 49614000,\r
-                57150663,\r
+                57155107,\r
             }\r
         }\r
         ZW{\r
@@ -31617,9 +32660,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49810000}\r
             }\r
             territoryF:intvector{\r
-                60272600,\r
+                60283300,\r
                 49836000,\r
-                57142295,\r
+                57145470,\r
             }\r
             tn{\r
                 populationShareF:int{47220000}\r
index af9e67d..c85fd3d 100644 (file)
@@ -80,10 +80,9 @@ timezoneTypes:table(nofallback){
             "Etc:GMT-0"{"Etc/GMT"}\r
             "Etc:GMT0"{"Etc/GMT"}\r
             "Etc:Greenwich"{"Etc/GMT"}\r
-            "Etc:UCT"{"Etc/GMT"}\r
-            "Etc:UTC"{"Etc/GMT"}\r
-            "Etc:Universal"{"Etc/GMT"}\r
-            "Etc:Zulu"{"Etc/GMT"}\r
+            "Etc:UCT"{"Etc/UTC"}\r
+            "Etc:Universal"{"Etc/UTC"}\r
+            "Etc:Zulu"{"Etc/UTC"}\r
             "Europe:Belfast"{"Europe/London"}\r
             "Europe:Nicosia"{"Asia/Nicosia"}\r
             "Europe:Tiraspol"{"Europe/Chisinau"}\r
@@ -138,11 +137,11 @@ timezoneTypes:table(nofallback){
             ROK{"Asia/Seoul"}\r
             Singapore{"Asia/Singapore"}\r
             Turkey{"Europe/Istanbul"}\r
-            UCT{"Etc/GMT"}\r
-            UTC{"Etc/GMT"}\r
-            Universal{"Etc/GMT"}\r
+            UCT{"Etc/UTC"}\r
+            UTC{"Etc/UTC"}\r
+            Universal{"Etc/UTC"}\r
             W-SU{"Europe/Moscow"}\r
-            Zulu{"Etc/GMT"}\r
+            Zulu{"Etc/UTC"}\r
         }\r
     }\r
     typeMap{\r
@@ -316,6 +315,7 @@ timezoneTypes:table(nofallback){
             "America:Port_of_Spain"{"ttpos"}\r
             "America:Porto_Velho"{"brpvh"}\r
             "America:Puerto_Rico"{"prsju"}\r
+            "America:Punta_Arenas"{"clpuq"}\r
             "America:Rainy_River"{"caffs"}\r
             "America:Rankin_Inlet"{"cayek"}\r
             "America:Recife"{"brrec"}\r
@@ -463,7 +463,7 @@ timezoneTypes:table(nofallback){
             "Australia:Melbourne"{"aumel"}\r
             "Australia:Perth"{"auper"}\r
             "Australia:Sydney"{"ausyd"}\r
-            "Etc:GMT"{"utc"}\r
+            "Etc:GMT"{"gmt"}\r
             "Etc:GMT+1"{"utcw01"}\r
             "Etc:GMT+10"{"utcw10"}\r
             "Etc:GMT+11"{"utcw11"}\r
@@ -490,6 +490,7 @@ timezoneTypes:table(nofallback){
             "Etc:GMT-7"{"utce07"}\r
             "Etc:GMT-8"{"utce08"}\r
             "Etc:GMT-9"{"utce09"}\r
+            "Etc:UTC"{"utc"}\r
             "Etc:Unknown"{"unk"}\r
             "Europe:Amsterdam"{"nlams"}\r
             "Europe:Andorra"{"adalv"}\r
index 12cb9f7..ca49b9e 100644 (file)
@@ -457,7 +457,6 @@ windowsZones:table(nofallback){
         }\r
         "Pacific SA Standard Time"{\r
             001{"America/Santiago"}\r
-            AQ{"Antarctica/Palmer"}\r
             CL{"America/Santiago"}\r
         }\r
         "Pacific Standard Time (Mexico)"{\r
@@ -504,11 +503,12 @@ windowsZones:table(nofallback){
         }\r
         "SA Eastern Standard Time"{\r
             001{"America/Cayenne"}\r
-            AQ{"Antarctica/Rothera"}\r
+            AQ{"Antarctica/Rothera Antarctica/Palmer"}\r
             BR{\r
                 "America/Fortaleza America/Belem America/Maceio America/Recife Americ"\r
                 "a/Santarem"\r
             }\r
+            CL{"America/Punta_Arenas"}\r
             FK{"Atlantic/Stanley"}\r
             GF{"America/Cayenne"}\r
             SR{"America/Paramaribo"}\r
@@ -648,6 +648,7 @@ windowsZones:table(nofallback){
         }\r
         "Turkey Standard Time"{\r
             001{"Europe/Istanbul"}\r
+            CY{"Asia/Famagusta"}\r
             TR{"Europe/Istanbul"}\r
         }\r
         "Turks And Caicos Standard Time"{\r
@@ -668,7 +669,7 @@ windowsZones:table(nofallback){
         "UTC"{\r
             001{"Etc/GMT"}\r
             GL{"America/Danmarkshavn"}\r
-            ZZ{"Etc/GMT"}\r
+            ZZ{"Etc/GMT Etc/UTC"}\r
         }\r
         "UTC+12"{\r
             001{"Etc/GMT-12"}\r
index c7d846b..41aa2ad 100644 (file)
@@ -3,20 +3,20 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 //---------------------------------------------------------\r
 // Build tool:  tz2icu\r
-// Build date:  Tue Nov 29 01:50:23 2016\r
+// Build date:  Mon Mar 20 17:49:58 2017\r
 // tz database: ftp://ftp.iana.org/tz/\r
-// tz version:  2016j\r
-// ICU version: 58.1\r
+// tz version:  2017b\r
+// ICU version: 59.1\r
 //---------------------------------------------------------\r
 // >> !!! >>   THIS IS A MACHINE-GENERATED FILE   << !!! <<\r
 // >> !!! >>>            DO NOT EDIT             <<< !!! <<\r
 //---------------------------------------------------------\r
 \r
 zoneinfo64:table(nofallback) {\r
- TZVersion { "2016j" }\r
+ TZVersion { "2017b" }\r
  Zones:array { \r
-  /* ACT */ :int { 353 } //Z#0\r
-  /* AET */ :int { 365 } //Z#1\r
+  /* ACT */ :int { 354 } //Z#0\r
+  /* AET */ :int { 366 } //Z#1\r
   /* AGT */ :int { 64 } //Z#2\r
   /* ART */ :int { 18 } //Z#3\r
   /* AST */ :int { 60 } //Z#4\r
@@ -24,7 +24,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1830383032 }\r
     typeOffsets:intvector { -968, 0, 0, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 5, 11, 13, 21, 22, 27, 38, 51, 52, 54, 55, 345 }\r
+    links:intvector { 5, 11, 13, 21, 22, 27, 38, 51, 52, 54, 55, 346 }\r
   } //Z#5\r
   /* Africa/Accra */ :table {\r
     trans:intvector { -1640995148, -1556841600, -1546388400, -1525305600, -1514852400, -1493769600, -1483316400, -1462233600, -1451780400, -1430611200, -1420158000, -1399075200, -1388622000, -1367539200, -1357086000, -1336003200, -1325550000, -1304380800, -1293927600, -1272844800, -1262391600, -1241308800, -1230855600, -1209772800, -1199319600, -1178150400, -1167697200, -1146614400, -1136161200, -1115078400, -1104625200, -1083542400, -1073089200, -1051920000, -1041466800, -1020384000, -1009930800, -988848000, -978394800, -957312000, -946858800, -925689600, -915236400, -894153600, -883700400, -862617600, -852164400 }\r
@@ -56,7 +56,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -929844000, -923108400, -906170400, -892868400, -875844000, -857790000, -844308000, -825822000, -812685600, -794199600, -779853600, -762663600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -71107200, -52707600, -39484800, -21171600, -7948800, 10364400, 23587200, 41900400, 55123200, 73522800, 86745600, 105058800, 118281600, 136594800, 149817600, 168130800, 181353600, 199753200, 212976000, 231289200, 244512000, 262825200, 276048000, 294361200, 307584000, 325983600, 339206400, 357519600, 370742400, 396399600, 402278400, 426812400, 433814400, 452214000, 465436800, 483750000, 496972800, 515286000, 528508800, 546822000, 560044800, 578444400, 591667200, 610412400, 623203200, 641516400, 654739200, 673052400, 686275200, 704674800, 717897600, 736210800, 749433600, 767746800, 780969600, 799020000, 812322000, 830469600, 843771600, 861919200, 875221200, 893368800, 906670800, 925423200, 938725200, 956872800, 970174800, 988322400, 1001624400, 1019772000, 1033074000, 1051221600, 1064523600, 1083276000, 1096578000, 1114725600, 1128027600, 1146175200, 1158872400, 1177624800, 1189112400, 1209074400, 1219957200, 1240524000, 1250802000, 1272578400, 1281474000, 1284069600, 1285880400, 1400191200, 1403816400, 1406844000, 1411678800 }\r
     typeOffsets:intvector { 7509, 0, 7200, 0, 7200, 3600 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 3, 18, 399 }\r
+    links:intvector { 3, 18, 400 }\r
   } //Z#18\r
   /* Africa/Casablanca */ :table {\r
     trans:intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1540692000, 1553997600, 1557021600, 1560045600, 1572141600, 1585447200, 1587261600, 1590285600, 1603591200, 1616896800, 1618106400, 1621130400, 1635645600, 1651975200, 1667095200, 1682215200, 1698544800, 1713060000, 1729994400, 1743904800, 1761444000, 1774749600, 1792893600, 1806199200, 1824948000, 1837648800, 1856397600, 1869098400, 1887847200, 1901152800, 1919296800, 1932602400, 1950746400, 1964052000, 1982800800, 1995501600, 2014250400, 2026951200, 2045700000, 2058400800, 2077149600, 2090455200, 2107994400, 2121904800, 2138234400 }\r
@@ -68,8 +68,8 @@ zoneinfo64:table(nofallback) {
     finalYear:int { 2039 }\r
   } //Z#19\r
   /* Africa/Ceuta */ :table {\r
-    transPre32:intvector { -1, 2117515772 }\r
-    trans:intvector { -1630112400, -1616810400, -1442451600, -1427677200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
+    transPre32:intvector { -1, 2117514496 }\r
+    trans:intvector { -1630112400, -1616810400, -1442451600, -1427673600, -1379293200, -1364774400, -1348448400, -1333324800, -1316390400, -1301270400, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -1276, 0, 0, 0, 0, 3600, 3600, 0, 3600, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201020102010304030403040304030403040304030403040304030403" }\r
     finalRule { "EU" }\r
@@ -126,13 +126,13 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -2109291020 }\r
     typeOffsets:intvector { 7820, 0, 7200, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 15, 17, 28, 29, 34, 40, 41, 43, 376 }\r
+    links:intvector { 15, 17, 28, 29, 34, 40, 41, 43, 377 }\r
   } //Z#43\r
   /* Africa/Maseru */ :int { 30 } //Z#44\r
   /* Africa/Mbabane */ :int { 30 } //Z#45\r
   /* Africa/Mogadishu */ :int { 48 } //Z#46\r
   /* Africa/Monrovia */ :table {\r
-    trans:intvector { -1604359012, 73529070 }\r
+    trans:intvector { -1604359012, 63593070 }\r
     typeOffsets:intvector { -2588, 0, -2670, 0, 0, 0 }\r
     typeMap:bin { "0102" }\r
   } //Z#47\r
@@ -140,7 +140,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1309746436, -1262314800, -946780200, -315629100 }\r
     typeOffsets:intvector { 8836, 0, 9000, 0, 9900, 0, 10800, 0 }\r
     typeMap:bin { "03010203" }\r
-    links:intvector { 7, 9, 10, 23, 24, 32, 46, 48, 394, 513, 517, 522 }\r
+    links:intvector { 7, 9, 10, 23, 24, 32, 46, 48, 395, 514, 518, 523 }\r
   } //Z#48\r
   /* Africa/Ndjamena */ :table {\r
     trans:intvector { -1830387612, 308703600, 321314400 }\r
@@ -157,7 +157,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1577926364, -574902000, -568087200, -512175600, -504928800, -449888400, -441856800, -347158800, 378684000, 386463600, 402271200, 417999600, 433807200, 449622000, 465429600, 481590000, 496965600, 512953200, 528674400, 544230000, 560037600, 575852400, 591660000, 607388400, 623196000, 641775600, 844034400, 860108400, 875916000, 1352505600, 1364515200, 1382659200 }\r
     typeOffsets:intvector { 3164, 0, 3600, 0, 3600, 3600, 7200, 0 }\r
     typeMap:bin { "0102010201020103010201020102010201020102010201020103010203010203" }\r
-    links:intvector { 56, 530 }\r
+    links:intvector { 56, 531 }\r
   } //Z#56\r
   /* Africa/Tunis */ :table {\r
     transPre32:intvector { -1, 1497764852 }\r
@@ -182,7 +182,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -36000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 59, 80, 614 }\r
+    links:intvector { 59, 80, 615 }\r
   } //Z#59\r
   /* America/Anchorage */ :table {\r
     transPre32:intvector { -1, 1069604872, -1, 2106016072 }\r
@@ -192,7 +192,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -32400 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 4, 60, 613 }\r
+    links:intvector { 4, 60, 614 }\r
   } //Z#60\r
   /* America/Anguilla */ :int { 186 } //Z#61\r
   /* America/Antigua */ :int { 186 } //Z#62\r
@@ -220,7 +220,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800, 1224385200, 1237082400 }\r
     typeOffsets:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020103040304030403040104030403020304030403" }\r
-    links:intvector { 67, 101, 196 }\r
+    links:intvector { 67, 101, 197 }\r
   } //Z#67\r
   /* America/Argentina/Jujuy */ :table {\r
     transPre32:intvector { -1, 1922870968 }\r
@@ -392,7 +392,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 98, 379, 616 }\r
+    links:intvector { 98, 380, 617 }\r
   } //Z#98\r
   /* America/Chihuahua */ :table {\r
     trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600 }\r
@@ -458,7 +458,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 109, 203, 542, 622 }\r
+    links:intvector { 109, 204, 543, 623 }\r
   } //Z#109\r
   /* America/Detroit */ :table {\r
     trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, -80499600, -68666400, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
@@ -467,7 +467,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 110, 621 }\r
+    links:intvector { 110, 622 }\r
   } //Z#110\r
   /* America/Dominica */ :int { 186 } //Z#111\r
   /* America/Edmonton */ :table {\r
@@ -477,7 +477,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 112, 386 }\r
+    links:intvector { 112, 387 }\r
   } //Z#112\r
   /* America/Eirunepe */ :table {\r
     trans:intvector { -1767208832, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 750834000, 761716800, 1214283600, 1384056000 }\r
@@ -489,7 +489,7 @@ zoneinfo64:table(nofallback) {
     typeOffsets:intvector { -21408, 0, -21600, 0, -21600, 3600 }\r
     typeMap:bin { "0102010201" }\r
   } //Z#114\r
-  /* America/Ensenada */ :int { 215 } //Z#115\r
+  /* America/Ensenada */ :int { 216 } //Z#115\r
   /* America/Fort_Nelson */ :table {\r
     transPre32:intvector { -1, 1581086343 }\r
     trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800, 1205056800, 1225616400, 1236506400, 1257066000, 1268560800, 1289120400, 1300010400, 1320570000, 1331460000, 1352019600, 1362909600, 1383469200, 1394359200, 1414918800, 1425808800 }\r
@@ -542,9 +542,9 @@ zoneinfo64:table(nofallback) {
   } //Z#125\r
   /* America/Guayaquil */ :table {\r
     transPre32:intvector { -1, 1770464856 }\r
-    trans:intvector { -1230749160 }\r
-    typeOffsets:intvector { -19160, 0, -18840, 0, -18000, 0 }\r
-    typeMap:bin { "0102" }\r
+    trans:intvector { -1230749160, 722926800, 728884800 }\r
+    typeOffsets:intvector { -19160, 0, -18840, 0, -18000, 0, -18000, 3600 }\r
+    typeMap:bin { "01020302" }\r
   } //Z#126\r
   /* America/Guyana */ :table {\r
     trans:intvector { -1730578040, 176010300, 662698800 }\r
@@ -558,7 +558,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 128, 382 }\r
+    links:intvector { 128, 383 }\r
   } //Z#128\r
   /* America/Havana */ :table {\r
     transPre32:intvector { -1, 1770465464 }\r
@@ -568,7 +568,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Cuba" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2014 }\r
-    links:intvector { 129, 393 }\r
+    links:intvector { 129, 394 }\r
   } //Z#129\r
   /* America/Hermosillo */ :table {\r
     trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400 }\r
@@ -583,7 +583,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 117, 131, 139, 510, 617 }\r
+    links:intvector { 117, 131, 139, 511, 618 }\r
   } //Z#131\r
   /* America/Indiana/Knox */ :table {\r
     transPre32:intvector { -1, 1577320096 }\r
@@ -593,7 +593,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 132, 147, 620 }\r
+    links:intvector { 132, 147, 621 }\r
   } //Z#132\r
   /* America/Indiana/Marengo */ :table {\r
     transPre32:intvector { -1, 1577320096 }\r
@@ -670,7 +670,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1827687169, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600 }\r
     typeOffsets:intvector { -18431, 0, -18000, 0, -18000, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201" }\r
-    links:intvector { 142, 527 }\r
+    links:intvector { 142, 528 }\r
   } //Z#142\r
   /* America/Jujuy */ :int { 68 } //Z#143\r
   /* America/Juneau */ :table {\r
@@ -722,7 +722,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 151, 547, 623, 624 }\r
+    links:intvector { 151, 548, 624, 625 }\r
   } //Z#151\r
   /* America/Louisville */ :int { 145 } //Z#152\r
   /* America/Lower_Princes */ :int { 105 } //Z#153\r
@@ -741,7 +741,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1767211196, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 750830400, 761713200 }\r
     typeOffsets:intvector { -14404, 0, -14400, 0, -14400, 3600 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 156, 375 }\r
+    links:intvector { 156, 376 }\r
   } //Z#156\r
   /* America/Marigot */ :int { 186 } //Z#157\r
   /* America/Martinique */ :table {\r
@@ -764,7 +764,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Mexico" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2003 }\r
-    links:intvector { 160, 536 }\r
+    links:intvector { 160, 537 }\r
   } //Z#160\r
   /* America/Mendoza */ :int { 70 } //Z#161\r
   /* America/Menominee */ :table {\r
@@ -800,7 +800,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Mexico" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2003 }\r
-    links:intvector { 165, 537 }\r
+    links:intvector { 165, 538 }\r
   } //Z#165\r
   /* America/Miquelon */ :table {\r
     trans:intvector { -1850328920, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 }\r
@@ -832,7 +832,7 @@ zoneinfo64:table(nofallback) {
     typeOffsets:intvector { -13484, 0, -12600, 0, -12600, 1800, -10800, 0, -10800, 1800, -10800, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201020102010201020105030503050305030503050304030403040305030405030503050305030503050305030503050305030503050305030503050305030503050305030503" }\r
   } //Z#169\r
-  /* America/Montreal */ :int { 216 } //Z#170\r
+  /* America/Montreal */ :int { 217 } //Z#170\r
   /* America/Montserrat */ :int { 186 } //Z#171\r
   /* America/Nassau */ :table {\r
     trans:intvector { -1825095030, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
@@ -850,7 +850,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 173, 618 }\r
+    links:intvector { 173, 619 }\r
   } //Z#173\r
   /* America/Nipigon */ :table {\r
     transPre32:intvector { -1, 1928233280 }\r
@@ -874,7 +874,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1767217820, -1206961200, -1191366000, -1175378400, -1159830000, -633823200, -622072800, -602287200, -591836400, -570751200, -560214000, -539128800, -531356400, -191368800, -184201200, -155167200, -150073200, -128901600, -121129200, -99957600, -89593200, -68421600, -57970800, 499744800, 511232400, 530589600, 540262800, 562125600, 571194000, 592970400, 602038800, 624420000, 634698000, 938916000, 951613200, 970970400, 971571600, 1003024800, 1013907600 }\r
     typeOffsets:intvector { -7780, 0, -7200, 0, -7200, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 176, 373 }\r
+    links:intvector { 176, 374 }\r
   } //Z#176\r
   /* America/North_Dakota/Beulah */ :table {\r
     transPre32:intvector { -1, 1577323696 }\r
@@ -936,21 +936,24 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -820519140, -812653140, -796845540, -84380400, -68659200 }\r
     typeOffsets:intvector { -26898, 0, -25200, 0, -25200, 3600 }\r
     typeMap:bin { "0102010201020102010201" }\r
-    links:intvector { 184, 544, 615 }\r
+    links:intvector { 184, 545, 616 }\r
   } //Z#184\r
   /* America/Port-au-Prince */ :table {\r
     transPre32:intvector { -1, 1770463056 }\r
-    trans:intvector { -1670483460, 421218000, 436334400, 452062800, 467784000, 483512400, 499233600, 514962000, 530683200, 546411600, 562132800, 576050400, 594194400, 607500000, 625644000, 638949600, 657093600, 671004000, 688543200, 702453600, 719992800, 733903200, 752047200, 765352800, 783496800, 796802400, 814946400, 828856800, 846396000, 860306400, 877845600, 1112504400, 1130644800, 1143954000, 1162094400, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600 }\r
+    trans:intvector { -1670483460, 421218000, 436334400, 452062800, 467784000, 483512400, 499233600, 514962000, 530683200, 546411600, 562132800, 576050400, 594194400, 607500000, 625644000, 638949600, 657093600, 671004000, 688543200, 702453600, 719992800, 733903200, 752047200, 765352800, 783496800, 796802400, 814946400, 828856800, 846396000, 860306400, 877845600, 1112504400, 1130644800, 1143954000, 1162094400, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600, 1489302000, 1509861600 }\r
     typeOffsets:intvector { -17360, 0, -18000, 0, -18000, 3600, -17340, 0 }\r
-    typeMap:bin { "0301020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
+    typeMap:bin { "03010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
+    finalRule { "Haiti" }\r
+    finalRaw:int { -18000 }\r
+    finalYear:int { 2018 }\r
   } //Z#185\r
   /* America/Port_of_Spain */ :table {\r
     trans:intvector { -1825098836 }\r
     typeOffsets:intvector { -14764, 0, -14400, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 61, 62, 111, 123, 124, 157, 171, 186, 205, 207, 208, 209, 210, 217, 219 }\r
+    links:intvector { 61, 62, 111, 123, 124, 157, 171, 186, 206, 208, 209, 210, 211, 218, 220 }\r
   } //Z#186\r
-  /* America/Porto_Acre */ :int { 195 } //Z#187\r
+  /* America/Porto_Acre */ :int { 196 } //Z#187\r
   /* America/Porto_Velho */ :table {\r
     trans:intvector { -1767210264, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200 }\r
     typeOffsets:intvector { -15336, 0, -14400, 0, -14400, 3600 }\r
@@ -961,8 +964,14 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -873057600, -765399600 }\r
     typeOffsets:intvector { -15865, 0, -14400, 0, -14400, 3600 }\r
     typeMap:bin { "010201" }\r
-    links:intvector { 189, 546 }\r
+    links:intvector { 189, 547 }\r
   } //Z#189\r
+  /* America/Punta_Arenas */ :table {\r
+    transPre32:intvector { -1, 1770462716 }\r
+    trans:intvector { -1892661434, -1688410800, -1619205434, -1593806400, -1335986234, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1480820400 }\r
+    typeOffsets:intvector { -17020, 0, -18000, 0, -18000, 3600, -16966, 0, -14400, 0, -14400, 3600, -10800, 0 }\r
+    typeMap:bin { "0301030403020102010201020102010401040104050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040506" }\r
+  } //Z#190\r
   /* America/Rainy_River */ :table {\r
     transPre32:intvector { -1, 1928234792 }\r
     trans:intvector { -1632067200, -1615136400, -923248800, -765392400, 136368000, 152089200, 167817600, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }\r
@@ -971,7 +980,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-  } //Z#190\r
+  } //Z#191\r
   /* America/Rankin_Inlet */ :table {\r
     trans:intvector { -410227200, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }\r
     typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -21600, 7200, -18000, 0 }\r
@@ -979,18 +988,18 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-  } //Z#191\r
+  } //Z#192\r
   /* America/Recife */ :table {\r
     trans:intvector { -1767217224, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 938919600, 951616800, 970974000, 971575200, 1003028400, 1013911200 }\r
     typeOffsets:intvector { -8376, 0, -10800, 0, -10800, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-  } //Z#192\r
+  } //Z#193\r
   /* America/Regina */ :table {\r
     trans:intvector { -2030202084, -1632063600, -1615132800, -1251651600, -1238349600, -1220202000, -1206900000, -1188752400, -1175450400, -1156698000, -1144000800, -1125248400, -1111946400, -1032714000, -1016992800, -1001264400, -986148000, -969814800, -954093600, -937760400, -922039200, -906310800, -890589600, -880210800, -765388800, -748450800, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -620838000, -608140800, -589388400, -576086400, -557938800, -544636800, -526489200, -513187200, -495039600, -481737600, -463590000, -450288000, -431535600, -418233600, -400086000, -386784000, -337186800, -321465600, -305737200 }\r
     typeOffsets:intvector { -25116, 0, -25200, 0, -25200, 3600, -21600, 0 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }\r
-    links:intvector { 193, 384, 389 }\r
-  } //Z#193\r
+    links:intvector { 194, 385, 390 }\r
+  } //Z#194\r
   /* America/Resolute */ :table {\r
     trans:intvector { -704937600, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }\r
     typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -21600, 7200, -18000, 0 }\r
@@ -998,20 +1007,20 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-  } //Z#194\r
+  } //Z#195\r
   /* America/Rio_Branco */ :table {\r
     trans:intvector { -1767209328, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 1214283600, 1384056000 }\r
     typeOffsets:intvector { -16272, 0, -18000, 0, -18000, 3600, -14400, 0 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010301" }\r
-    links:intvector { 187, 195, 372 }\r
-  } //Z#195\r
-  /* America/Rosario */ :int { 67 } //Z#196\r
-  /* America/Santa_Isabel */ :int { 215 } //Z#197\r
+    links:intvector { 187, 196, 373 }\r
+  } //Z#196\r
+  /* America/Rosario */ :int { 67 } //Z#197\r
+  /* America/Santa_Isabel */ :int { 216 } //Z#198\r
   /* America/Santarem */ :table {\r
     trans:intvector { -1767212472, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 1214280000 }\r
     typeOffsets:intvector { -13128, 0, -14400, 0, -14400, 3600, -10800, 0 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020103" }\r
-  } //Z#198\r
+  } //Z#199\r
   /* America/Santiago */ :table {\r
     trans:intvector { -1892661434, -1688410800, -1619205434, -1593806400, -1335986234, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -740520000, -736376400, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200 }\r
     typeOffsets:intvector { -16966, 0, -18000, 0, -18000, 3600, -14400, 0, -14400, 3600 }\r
@@ -1019,14 +1028,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "Chile" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 2017 }\r
-    links:intvector { 199, 391 }\r
-  } //Z#199\r
+    links:intvector { 200, 392 }\r
+  } //Z#200\r
   /* America/Santo_Domingo */ :table {\r
     transPre32:intvector { -1, 1770462472 }\r
     trans:intvector { -1159773600, -100119600, -89668800, -5770800, 4422600, 25678800, 33193800, 57733200, 64816200, 89182800, 96438600, 120632400, 127974600, 152082000, 972799200, 975823200 }\r
     typeOffsets:intvector { -16776, 0, -18000, 0, -18000, 1800, -18000, 3600, -16800, 0, -14400, 0 }\r
     typeMap:bin { "0401030102010201020102010201050105" }\r
-  } //Z#200\r
+  } //Z#201\r
   /* America/Sao_Paulo */ :table {\r
     trans:intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1540090800, 1550368800, 1571540400, 1581818400, 1602990000, 1613872800, 1634439600, 1645322400, 1665889200, 1677376800, 1697338800, 1708221600, 1729393200, 1739671200, 1760842800, 1771725600, 1792292400, 1803175200, 1823742000, 1834624800, 1855191600, 1866074400, 1887246000, 1897524000, 1918695600, 1928973600, 1950145200, 1960423200, 1981594800, 1992477600, 2013044400, 2024532000, 2044494000, 2055376800, 2076548400, 2086826400, 2107998000, 2118880800, 2139447600 }\r
     transPost32:intvector { 0, -2144636896, 0, -2124070096 }\r
@@ -1035,8 +1044,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Brazil" }\r
     finalRaw:int { -10800 }\r
     finalYear:int { 2039 }\r
-    links:intvector { 201, 370, 374 }\r
-  } //Z#201\r
+    links:intvector { 202, 371, 375 }\r
+  } //Z#202\r
   /* America/Scoresbysund */ :table {\r
     trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -5272, 0, -7200, 0, -7200, 3600, -3600, 0, -3600, 3600 }\r
@@ -1044,8 +1053,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { -3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#202\r
-  /* America/Shiprock */ :int { 109 } //Z#203\r
+  } //Z#203\r
+  /* America/Shiprock */ :int { 109 } //Z#204\r
   /* America/Sitka */ :table {\r
     transPre32:intvector { -1, 1069601369, -1, 2106012569 }\r
     trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 }\r
@@ -1054,8 +1063,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -32400 }\r
     finalYear:int { 2008 }\r
-  } //Z#204\r
-  /* America/St_Barthelemy */ :int { 186 } //Z#205\r
+  } //Z#205\r
+  /* America/St_Barthelemy */ :int { 186 } //Z#206\r
   /* America/St_Johns */ :table {\r
     trans:intvector { -1664130548, -1650137348, -1632076148, -1615145348, -1598650148, -1590100148, -1567286948, -1551565748, -1535837348, -1520116148, -1503782948, -1488666548, -1472333348, -1457216948, -1440883748, -1425767348, -1409434148, -1394317748, -1377984548, -1362263348, -1346534948, -1330813748, -1314480548, -1299364148, -1283030948, -1267914548, -1251581348, -1236464948, -1220131748, -1205015348, -1188682148, -1172960948, -1156627748, -1141511348, -1125178148, -1110061748, -1096921748, -1093728600, -1078612200, -1061670600, -1048973400, -1030221000, -1017523800, -998771400, -986074200, -966717000, -954624600, -935267400, -922570200, -903817800, -891120600, -872368200, -765401400, -746044200, -733347000, -714594600, -701897400, -683145000, -670447800, -651695400, -638998200, -619641000, -606943800, -589401000, -576099000, -557951400, -544649400, -526501800, -513199800, -495052200, -481750200, -463602600, -450300600, -431548200, -418246200, -400098600, -386796600, -368649000, -355347000, -337199400, -323897400, -305749800, -289423800, -273695400, -257974200, -242245800, -226524600, -210796200, -195075000, -179346600, -163625400, -147897000, -131571000, -116447400, -100121400, -84393000, -68671800, -52943400, -37222200, -21493800, -5772600, 9955800, 25677000, 41405400, 57731400, 73459800, 89181000, 104909400, 120630600, 136359000, 152080200, 167808600, 183529800, 199258200, 215584200, 230707800, 247033800, 262762200, 278483400, 294211800, 309933000, 325661400, 341382600, 357111000, 372832200, 388560600, 404886600, 420010200, 436336200, 452064600, 467785800, 483514200, 499235400, 514963800, 530685000, 544591860, 562127460, 576041460, 594178260, 607491060, 625631460, 638940660, 657081060, 670995060, 688530660, 702444660, 719980260, 733894260, 752034660, 765343860, 783484260, 796793460, 814933860, 828847860, 846383460, 860297460, 877833060, 891747060, 909282660, 923196660, 941337060, 954646260, 972786660, 986095860, 1004236260, 1018150260, 1035685860, 1049599860, 1067135460, 1081049460, 1099189860, 1112499060, 1130639460, 1143948660, 1162089060, 1173583860, 1194143460, 1205033460, 1225593060, 1236483060, 1257042660, 1268537460, 1289097060, 1299987060, 1320553800, 1331443800, 1352003400 }\r
     typeOffsets:intvector { -12652, 0, -12652, 3600, -12600, 0, -12600, 3600, -12600, 7200 }\r
@@ -1063,22 +1072,22 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -12600 }\r
     finalYear:int { 2013 }\r
-    links:intvector { 206, 378, 387 }\r
-  } //Z#206\r
-  /* America/St_Kitts */ :int { 186 } //Z#207\r
-  /* America/St_Lucia */ :int { 186 } //Z#208\r
-  /* America/St_Thomas */ :int { 186 } //Z#209\r
-  /* America/St_Vincent */ :int { 186 } //Z#210\r
+    links:intvector { 207, 379, 388 }\r
+  } //Z#207\r
+  /* America/St_Kitts */ :int { 186 } //Z#208\r
+  /* America/St_Lucia */ :int { 186 } //Z#209\r
+  /* America/St_Thomas */ :int { 186 } //Z#210\r
+  /* America/St_Vincent */ :int { 186 } //Z#211\r
   /* America/Swift_Current */ :table {\r
     trans:intvector { -2030201320, -1632063600, -1615132800, -880210800, -765388800, -747241200, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -400086000, -384364800, -337186800, -321465600, -305737200, -292435200, -273682800, -260985600, 73472400 }\r
     typeOffsets:intvector { -25880, 0, -25200, 0, -25200, 3600, -21600, 0 }\r
     typeMap:bin { "01020102010201020102010201020102010201020103" }\r
-  } //Z#211\r
+  } //Z#212\r
   /* America/Tegucigalpa */ :table {\r
     trans:intvector { -1538503868, 547020000, 559717200, 578469600, 591166800, 1146981600, 1154926800 }\r
     typeOffsets:intvector { -20932, 0, -21600, 0, -21600, 3600 }\r
     typeMap:bin { "01020102010201" }\r
-  } //Z#212\r
+  } //Z#213\r
   /* America/Thule */ :table {\r
     trans:intvector { -1686079492, 670399200, 686120400, 701848800, 717570000, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 }\r
     typeOffsets:intvector { -16508, 0, -14400, 0, -14400, 3600 }\r
@@ -1086,7 +1095,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Thule" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 2008 }\r
-  } //Z#213\r
+  } //Z#214\r
   /* America/Thunder_Bay */ :table {\r
     transPre32:intvector { -1, 1928233516 }\r
     trans:intvector { -1893434400, -880218000, -765396000, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
@@ -1095,7 +1104,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-  } //Z#214\r
+  } //Z#215\r
   /* America/Tijuana */ :table {\r
     trans:intvector { -1514736000, -1451667600, -1343062800, -1234803600, -1222963200, -1207242000, -873820800, -761677200, -686073600, -661539600, -495039600, -481734000, -463590000, -450284400, -431535600, -418230000, -400086000, -386780400, -368636400, -355330800, -337186800, -323881200, -305737200, -292431600, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1175421600, 1193562000, 1207476000, 1225011600, 1238925600, 1256461200, 1268560800, 1289120400 }\r
     typeOffsets:intvector { -28084, 0, -28800, 0, -28800, 3600, -25200, 0 }\r
@@ -1103,8 +1112,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2011 }\r
-    links:intvector { 115, 197, 215, 535 }\r
-  } //Z#215\r
+    links:intvector { 115, 198, 216, 536 }\r
+  } //Z#216\r
   /* America/Toronto */ :table {\r
     transPre32:intvector { -1, 1928231148 }\r
     trans:intvector { -1632070800, -1615140000, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -765396000, -747248400, -733946400, -715806000, -702504000, -684356400, -671054400, -652906800, -634161600, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
@@ -1113,9 +1122,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 170, 216, 385 }\r
-  } //Z#216\r
-  /* America/Tortola */ :int { 186 } //Z#217\r
+    links:intvector { 170, 217, 386 }\r
+  } //Z#217\r
+  /* America/Tortola */ :int { 186 } //Z#218\r
   /* America/Vancouver */ :table {\r
     transPre32:intvector { -1, 1581086444 }\r
     trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -747237600, -732726000, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }\r
@@ -1124,9 +1133,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 218, 388 }\r
-  } //Z#218\r
-  /* America/Virgin */ :int { 186 } //Z#219\r
+    links:intvector { 219, 389 }\r
+  } //Z#219\r
+  /* America/Virgin */ :int { 186 } //Z#220\r
   /* America/Whitehorse */ :table {\r
     transPre32:intvector { -1, 2105969308 }\r
     trans:intvector { -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -765381600, -147884400, -131554800, -81961200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }\r
@@ -1135,8 +1144,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 220, 390 }\r
-  } //Z#220\r
+    links:intvector { 221, 391 }\r
+  } //Z#221\r
   /* America/Winnipeg */ :table {\r
     transPre32:intvector { -1, 1692709012 }\r
     trans:intvector { -1694368800, -1681671600, -1632067200, -1615136400, -1029686400, -1018198800, -880214400, -765392400, -746035200, -732733200, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620755200, -607626000, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -321469200, -305740800, -292438800, -210787200, -198090000, -116438400, -100108800, -84384000, -68659200, -52934400, -37209600, -21484800, -5760000, 9964800, 25689600, 41414400, 57744000, 73468800, 89193600, 104918400, 120643200, 136368000, 152092800, 167817600, 183542400, 199267200, 215596800, 230716800, 247046400, 262771200, 278496000, 294220800, 309945600, 325670400, 341395200, 357120000, 372844800, 388569600, 404899200, 420019200, 436348800, 452073600, 467798400, 483523200, 499248000, 514972800, 530697600, 544608000, 562147200, 576057600, 594201600, 607507200, 625651200, 638956800, 657100800, 671011200, 688550400, 702460800, 720000000, 733910400, 752054400, 765360000, 783504000, 796809600, 814953600, 828864000, 846403200, 860313600, 877852800, 891763200, 909302400, 923212800, 941356800, 954662400, 972806400, 986112000, 1004256000, 1018166400, 1035705600, 1049616000, 1067155200, 1081065600, 1099209600, 1112515200, 1130659200, 1143964800, 1162105200, 1173600000, 1194159600 }\r
@@ -1145,8 +1154,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 221, 383 }\r
-  } //Z#221\r
+    links:intvector { 222, 384 }\r
+  } //Z#222\r
   /* America/Yakutat */ :table {\r
     transPre32:intvector { -1, 1069602431, -1, 2106013631 }\r
     trans:intvector { -880203600, -765381600, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 152100000, 162385200, 183549600, 199278000, 215604000, 230727600, 247053600, 262782000, 278503200, 294231600, 309952800, 325681200, 341402400, 357130800, 372852000, 388580400, 404906400, 420030000, 436356000, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 }\r
@@ -1155,7 +1164,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -32400 }\r
     finalYear:int { 2008 }\r
-  } //Z#222\r
+  } //Z#223\r
   /* America/Yellowknife */ :table {\r
     trans:intvector { -1104537600, -880210800, -765388800, -147891600, -131562000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }\r
     typeOffsets:intvector { 0, 0, -25200, 0, -25200, 3600, -25200, 7200 }\r
@@ -1163,53 +1172,50 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2008 }\r
-  } //Z#223\r
+  } //Z#224\r
   /* Antarctica/Casey */ :table {\r
     trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600 }\r
     typeOffsets:intvector { 0, 0, 28800, 0, 39600, 0 }\r
     typeMap:bin { "010201020102" }\r
-  } //Z#224\r
+  } //Z#225\r
   /* Antarctica/Davis */ :table {\r
     trans:intvector { -409190400, -163062000, -28857600, 1255806000, 1268251200, 1319742000, 1329854400 }\r
     typeOffsets:intvector { 0, 0, 18000, 0, 25200, 0 }\r
     typeMap:bin { "02000201020102" }\r
-  } //Z#225\r
+  } //Z#226\r
   /* Antarctica/DumontDUrville */ :table {\r
     trans:intvector { -725846400, -566992800, -415497600 }\r
     typeOffsets:intvector { 0, 0, 36000, 0 }\r
     typeMap:bin { "010001" }\r
-  } //Z#226\r
+  } //Z#227\r
   /* Antarctica/Macquarie */ :table {\r
     transPre32:intvector { -1, 2080708096 }\r
     trans:intvector { -1680508800, -1665392400, -1601719200, -687052800, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000, 1238860800, 1254585600, 1270310400 }\r
     typeOffsets:intvector { 0, 0, 36000, 0, 36000, 3600, 39600, 0 }\r
     typeMap:bin { "01020100010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" }\r
-  } //Z#227\r
+  } //Z#228\r
   /* Antarctica/Mawson */ :table {\r
     trans:intvector { -501206400, 1255809600 }\r
     typeOffsets:intvector { 0, 0, 18000, 0, 21600, 0 }\r
     typeMap:bin { "0201" }\r
-  } //Z#228\r
-  /* Antarctica/McMurdo */ :int { 550 } //Z#229\r
+  } //Z#229\r
+  /* Antarctica/McMurdo */ :int { 551 } //Z#230\r
   /* Antarctica/Palmer */ :table {\r
-    trans:intvector { -157766400, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 389070000, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200 }\r
+    trans:intvector { -157766400, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 389070000, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1480820400 }\r
     typeOffsets:intvector { 0, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }\r
-    typeMap:bin { "020102010201020102010304030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }\r
-    finalRule { "Chile" }\r
-    finalRaw:int { -14400 }\r
-    finalYear:int { 2017 }\r
-  } //Z#230\r
+    typeMap:bin { "02010201020102010201030403010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" }\r
+  } //Z#231\r
   /* Antarctica/Rothera */ :table {\r
     trans:intvector { 218246400 }\r
     typeOffsets:intvector { 0, 0, -10800, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#231\r
-  /* Antarctica/South_Pole */ :int { 550 } //Z#232\r
+  } //Z#232\r
+  /* Antarctica/South_Pole */ :int { 551 } //Z#233\r
   /* Antarctica/Syowa */ :table {\r
     trans:intvector { -407808000 }\r
     typeOffsets:intvector { 0, 0, 10800, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#233\r
+  } //Z#234\r
   /* Antarctica/Troll */ :table {\r
     trans:intvector { 1111885200, 1130634000 }\r
     typeOffsets:intvector { 0, 0, 0, 7200 }\r
@@ -1217,19 +1223,19 @@ zoneinfo64:table(nofallback) {
     finalRule { "Troll" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 2006 }\r
-  } //Z#234\r
+  } //Z#235\r
   /* Antarctica/Vostok */ :table {\r
     trans:intvector { -380073600 }\r
     typeOffsets:intvector { 0, 0, 21600, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#235\r
-  /* Arctic/Longyearbyen */ :int { 472 } //Z#236\r
-  /* Asia/Aden */ :int { 307 } //Z#237\r
+  } //Z#236\r
+  /* Arctic/Longyearbyen */ :int { 473 } //Z#237\r
+  /* Asia/Aden */ :int { 308 } //Z#238\r
   /* Asia/Almaty */ :table {\r
     trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400 }\r
     typeOffsets:intvector { 18468, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403" }\r
-  } //Z#238\r
+  } //Z#239\r
   /* Asia/Amman */ :table {\r
     trans:intvector { -1230776624, 108165600, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 215643600, 231285600, 244501200, 262735200, 275950800, 481154400, 496962000, 512949600, 528670800, 544399200, 560120400, 575848800, 592174800, 610581600, 623624400, 641167200, 655074000, 671839200, 685918800, 702856800, 717973200, 733701600, 749422800, 765151200, 779662800, 797205600, 811116000, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 930780000, 938124000, 954367200, 970178400, 985816800, 1001628000, 1017352800, 1033077600, 1048802400, 1066946400, 1080252000, 1097791200, 1112306400, 1128031200, 1143756000, 1161900000, 1175205600, 1193349600, 1206655200, 1225404000, 1238104800, 1256853600, 1269554400, 1288303200, 1301608800, 1319752800, 1333058400, 1387486800, 1395957600, 1414706400 }\r
     typeOffsets:intvector { 8624, 0, 7200, 0, 7200, 3600 }\r
@@ -1237,57 +1243,57 @@ zoneinfo64:table(nofallback) {
     finalRule { "Jordan" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2015 }\r
-  } //Z#239\r
+  } //Z#240\r
   /* Asia/Anadyr */ :table {\r
     trans:intvector { -1441194596, -1247572800, 354884400, 370692000, 386420400, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701791200, 717516000, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800, 828194400, 846338400, 859644000, 877788000, 891093600, 909237600, 922543200, 941292000, 953992800, 972741600, 985442400, 1004191200, 1017496800, 1035640800, 1048946400, 1067090400, 1080396000, 1099144800, 1111845600, 1130594400, 1143295200, 1162044000, 1174744800, 1193493600, 1206799200, 1224943200, 1238248800, 1256392800, 1269698400, 1288450800, 1301151600 }\r
     typeOffsets:intvector { 42596, 0, 39600, 0, 39600, 3600, 43200, 0, 43200, 3600, 46800, 0, 46800, 3600 }\r
     typeMap:bin { "03050605040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040304030403040304030403020103" }\r
-  } //Z#240\r
+  } //Z#241\r
   /* Asia/Aqtau */ :table {\r
     trans:intvector { -1441164064, -1247544000, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
     typeOffsets:intvector { 12064, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "0103050403040304030403040304030403040304030201030403040304010201020102010201020102010201020102010203" }\r
-  } //Z#241\r
+  } //Z#242\r
   /* Asia/Aqtobe */ :table {\r
     trans:intvector { -1441165720, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 }\r
     typeOffsets:intvector { 13720, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "010304050403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403" }\r
-  } //Z#242\r
+  } //Z#243\r
   /* Asia/Ashgabat */ :table {\r
     trans:intvector { -1441166012, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000 }\r
     typeOffsets:intvector { 14012, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103" }\r
-    links:intvector { 243, 244 }\r
-  } //Z#243\r
-  /* Asia/Ashkhabad */ :int { 243 } //Z#244\r
+    links:intvector { 244, 245 }\r
+  } //Z#244\r
+  /* Asia/Ashkhabad */ :int { 244 } //Z#245\r
   /* Asia/Atyrau */ :table {\r
-    trans:intvector { -1441164464, -1247544000, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
-    typeOffsets:intvector { 12464, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
-    typeMap:bin { "0103050403040304030403040304030403040304030201030403040304030403040304030403020102010201020102010203" }\r
-  } //Z#245\r
+    trans:intvector { -1441164464, -1247540400, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
+    typeOffsets:intvector { 12464, 0, 10800, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
+    typeMap:bin { "0104060504050405040504050405040504050405040302040504050405040504050405040504030203020302030203020304" }\r
+  } //Z#246\r
   /* Asia/Baghdad */ :table {\r
     transPre32:intvector { -1, 1770435036 }\r
     trans:intvector { -1641005856, 389048400, 402264000, 417906000, 433800000, 449614800, 465422400, 481150800, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670464000, 686275200, 702086400, 717897600, 733622400, 749433600, 765158400, 780969600, 796694400, 812505600, 828316800, 844128000, 859852800, 875664000, 891388800, 907200000, 922924800, 938736000, 954547200, 970358400, 986083200, 1001894400, 1017619200, 1033430400, 1049155200, 1064966400, 1080777600, 1096588800, 1112313600, 1128124800, 1143849600, 1159660800, 1175385600, 1191196800 }\r
     typeOffsets:intvector { 10660, 0, 10656, 0, 10800, 0, 10800, 3600 }\r
     typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
-  } //Z#246\r
-  /* Asia/Bahrain */ :int { 304 } //Z#247\r
+  } //Z#247\r
+  /* Asia/Bahrain */ :int { 305 } //Z#248\r
   /* Asia/Baku */ :table {\r
     trans:intvector { -1441163964, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701823600, 717548400, 828234000, 846378000, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1319932800, 1332633600, 1351382400, 1364688000, 1382832000, 1396137600, 1414281600, 1427587200, 1445731200 }\r
     typeOffsets:intvector { 11964, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201020304030403040304030403040304030403040304030403040304030403040304030403040304030403" }\r
-  } //Z#248\r
+  } //Z#249\r
   /* Asia/Bangkok */ :table {\r
     trans:intvector { -1570084924 }\r
     typeOffsets:intvector { 24124, 0, 25200, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 249, 301, 329 }\r
-  } //Z#249\r
+    links:intvector { 250, 302, 330 }\r
+  } //Z#250\r
   /* Asia/Barnaul */ :table {\r
     trans:intvector { -1579844100, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 801590400, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1459022400 }\r
     typeOffsets:intvector { 20100, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040201020102010201020102010201020102010201020102010201020102010201030103" }\r
-  } //Z#250\r
+  } //Z#251\r
   /* Asia/Beirut */ :table {\r
     transPre32:intvector { -1, 1454817976 }\r
     trans:intvector { -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1473645600, -1460948400, -399866400, -386650800, -368330400, -355114800, -336794400, -323578800, -305172000, -291956400, -273636000, -260420400, 78012000, 86734800, 105055200, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 212965200, 231285600, 244501200, 262735200, 275950800, 452210400, 466722000, 483746400, 498258000, 515282400, 529794000, 546818400, 561330000, 581119200, 592952400, 610754400, 624488400, 641512800, 656024400, 673048800, 687560400, 704671200, 718146000, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 906843600, 922572000, 941317200 }\r
@@ -1296,40 +1302,37 @@ zoneinfo64:table(nofallback) {
     finalRule { "Lebanon" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2000 }\r
-  } //Z#251\r
+  } //Z#252\r
   /* Asia/Bishkek */ :table {\r
     trans:intvector { -1441169904, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 683582400, 703018800, 717530400, 734468400, 748980000, 765918000, 780429600, 797367600, 811879200, 828817200, 843933600, 859671000, 877811400, 891120600, 909261000, 922570200, 941315400, 954019800, 972765000, 985469400, 1004214600, 1017523800, 1035664200, 1048973400, 1067113800, 1080423000, 1099168200, 1111872600, 1123783200 }\r
     typeOffsets:intvector { 17904, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020102010201020102010201020102010201020102010201020102010203" }\r
-  } //Z#252\r
+  } //Z#253\r
   /* Asia/Brunei */ :table {\r
     trans:intvector { -1383464380, -1167636600 }\r
     typeOffsets:intvector { 27580, 0, 27000, 0, 28800, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#253\r
-  /* Asia/Calcutta */ :int { 285 } //Z#254\r
+  } //Z#254\r
+  /* Asia/Calcutta */ :int { 286 } //Z#255\r
   /* Asia/Chita */ :table {\r
     trans:intvector { -1579419232, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1080406800, 1099155600, 1111856400, 1130605200, 1143306000, 1162054800, 1174755600, 1193504400, 1206810000, 1224954000, 1238259600, 1256403600, 1269709200, 1288458000, 1301158800, 1414252800, 1459015200 }\r
     typeOffsets:intvector { 27232, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403040304030403040304030403050103" }\r
-  } //Z#255\r
+  } //Z#256\r
   /* Asia/Choibalsan */ :table {\r
-    trans:intvector { -2032933080, 252435600, 417974400, 433778400, 449593200, 465314400, 481042800, 496764000, 512492400, 528213600, 543942000, 559663200, 575391600, 591112800, 606841200, 622562400, 638290800, 654616800, 670345200, 686066400, 701794800, 717516000, 733244400, 748965600, 764694000, 780415200, 796143600, 811864800, 828198000, 843919200, 859647600, 875368800, 891097200, 906818400, 988390800, 1001692800, 1017421200, 1033142400, 1048870800, 1064592000, 1080320400, 1096041600, 1111770000, 1127491200, 1143219600, 1159545600, 1206889200, 1427479200, 1443193200 }\r
+    trans:intvector { -2032933080, 252435600, 417974400, 433778400, 449593200, 465314400, 481042800, 496764000, 512492400, 528213600, 543942000, 559663200, 575391600, 591112800, 606841200, 622562400, 638290800, 654616800, 670345200, 686066400, 701794800, 717516000, 733244400, 748965600, 764694000, 780415200, 796143600, 811864800, 828198000, 843919200, 859647600, 875368800, 891097200, 906818400, 988390800, 1001692800, 1017421200, 1033142400, 1048870800, 1064592000, 1080320400, 1096041600, 1111770000, 1127491200, 1143219600, 1159545600, 1206889200, 1427479200, 1443193200, 1458928800, 1474642800 }\r
     typeOffsets:intvector { 27480, 0, 25200, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600 }\r
-    typeMap:bin { "01020504050405040504050405040504050405040504050405040504050405040504050405040504050405040504020302" }\r
-    finalRule { "Mongol" }\r
-    finalRaw:int { 28800 }\r
-    finalYear:int { 2016 }\r
-  } //Z#256\r
-  /* Asia/Chongqing */ :int { 312 } //Z#257\r
-  /* Asia/Chungking */ :int { 312 } //Z#258\r
+    typeMap:bin { "010205040504050405040504050405040504050405040504050405040504050405040504050405040504050405040203020302" }\r
+  } //Z#257\r
+  /* Asia/Chongqing */ :int { 313 } //Z#258\r
+  /* Asia/Chungking */ :int { 313 } //Z#259\r
   /* Asia/Colombo */ :table {\r
     transPre32:intvector { -1, 1454807332 }\r
     trans:intvector { -2019705572, -883287000, -862639200, -764051400, 832962600, 846266400, 1145039400 }\r
     typeOffsets:intvector { 19164, 0, 19172, 0, 19800, 0, 19800, 1800, 19800, 3600, 21600, 0, 23400, 0 }\r
     typeMap:bin { "0102030402060502" }\r
-  } //Z#259\r
-  /* Asia/Dacca */ :int { 262 } //Z#260\r
+  } //Z#260\r
+  /* Asia/Dacca */ :int { 263 } //Z#261\r
   /* Asia/Damascus */ :table {\r
     trans:intvector { -1577931912, -1568592000, -1554080400, -1537142400, -1522630800, -1505692800, -1491181200, -1474243200, -1459126800, -242265600, -228877200, -210556800, -197427600, -178934400, -165718800, -147398400, -134269200, -116467200, -102646800, -84326400, -71110800, -52704000, -39488400, -21168000, -7952400, 10368000, 23583600, 41904000, 55119600, 73526400, 86742000, 105062400, 118278000, 136598400, 149814000, 168134400, 181350000, 199756800, 212972400, 231292800, 241916400, 262828800, 273452400, 418694400, 433810800, 450316800, 465433200, 508896000, 529196400, 541555200, 562633200, 574387200, 594255600, 607305600, 623199600, 638928000, 654649200, 670456800, 686264400, 702684000, 717886800, 733096800, 748904400, 765151200, 780958800, 796687200, 812494800, 828309600, 844117200, 859759200, 875653200, 891208800, 907189200, 922917600, 938725200, 954540000, 970347600, 986076000, 1001883600, 1017612000, 1033419600, 1049148000, 1064955600, 1080770400, 1096578000, 1112306400, 1128114000, 1143842400, 1158872400, 1175205600, 1193950800, 1207260000, 1225486800, 1238104800, 1256850000, 1270159200, 1288299600, 1301608800, 1319749200, 1333058400, 1351198800 }\r
     typeOffsets:intvector { 8712, 0, 7200, 0, 7200, 3600 }\r
@@ -1337,35 +1340,35 @@ zoneinfo64:table(nofallback) {
     finalRule { "Syria" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2013 }\r
-  } //Z#261\r
+  } //Z#262\r
   /* Asia/Dhaka */ :table {\r
     transPre32:intvector { -1, 1770423996 }\r
     trans:intvector { -891582800, -872058600, -862637400, -576138600, 1245430800, 1262278800 }\r
     typeOffsets:intvector { 21700, 0, 19800, 0, 21200, 0, 21600, 0, 21600, 3600, 23400, 0 }\r
     typeMap:bin { "02050105030403" }\r
-    links:intvector { 260, 262, 371 }\r
-  } //Z#262\r
+    links:intvector { 261, 263, 372 }\r
+  } //Z#263\r
   /* Asia/Dili */ :table {\r
     trans:intvector { -1830414140, -879152400, 199897200, 969120000 }\r
     typeOffsets:intvector { 30140, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "01020102" }\r
-  } //Z#263\r
+  } //Z#264\r
   /* Asia/Dubai */ :table {\r
     trans:intvector { -1577936472 }\r
     typeOffsets:intvector { 13272, 0, 14400, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 264, 295 }\r
-  } //Z#264\r
+    links:intvector { 265, 296 }\r
+  } //Z#265\r
   /* Asia/Dushanbe */ :table {\r
     trans:intvector { -1441168512, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 684363600 }\r
     typeOffsets:intvector { 16512, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201" }\r
-  } //Z#265\r
+  } //Z#266\r
   /* Asia/Famagusta */ :table {\r
     trans:intvector { -1518920148, 166572000, 182293200, 200959200, 213829200, 228866400, 243982800, 260316000, 276123600, 291765600, 307486800, 323820000, 338936400, 354664800, 370386000, 386114400, 401835600, 417564000, 433285200, 449013600, 465339600, 481068000, 496789200, 512517600, 528238800, 543967200, 559688400, 575416800, 591138000, 606866400, 622587600, 638316000, 654642000, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1473282000 }\r
     typeOffsets:intvector { 8148, 0, 7200, 0, 7200, 3600, 10800, 0 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" }\r
-  } //Z#266\r
+  } //Z#267\r
   /* Asia/Gaza */ :table {\r
     transPre32:intvector { -1, 2109557424 }\r
     trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }\r
@@ -1374,8 +1377,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Palestine" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2017 }\r
-  } //Z#267\r
-  /* Asia/Harbin */ :int { 312 } //Z#268\r
+  } //Z#268\r
+  /* Asia/Harbin */ :int { 313 } //Z#269\r
   /* Asia/Hebron */ :table {\r
     transPre32:intvector { -1, 2109557273 }\r
     trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }\r
@@ -1384,43 +1387,40 @@ zoneinfo64:table(nofallback) {
     finalRule { "Palestine" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2017 }\r
-  } //Z#269\r
+  } //Z#270\r
   /* Asia/Ho_Chi_Minh */ :table {\r
     trans:intvector { -2004073600, -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 }\r
     typeOffsets:intvector { 25600, 0, 25200, 0, 25590, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "020103040103010301" }\r
-    links:intvector { 270, 308, 628 }\r
-  } //Z#270\r
+    links:intvector { 271, 309, 629 }\r
+  } //Z#271\r
   /* Asia/Hong_Kong */ :table {\r
     trans:intvector { -2056693002, -907389000, -891667800, -884246400, -766746000, -747981000, -728544600, -717049800, -694503000, -683785800, -668064600, -654755400, -636615000, -623305800, -605165400, -591856200, -573715800, -559801800, -542352600, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 }\r
     typeOffsets:intvector { 27402, 0, 28800, 0, 28800, 3600, 32400, 0 }\r
     typeMap:bin { "010201030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 271, 509 }\r
-  } //Z#271\r
+    links:intvector { 272, 510 }\r
+  } //Z#272\r
   /* Asia/Hovd */ :table {\r
-    trans:intvector { -2032927596, 252439200, 417978000, 433785600, 449600400, 465321600, 481050000, 496771200, 512499600, 528220800, 543949200, 559670400, 575398800, 591120000, 606848400, 622569600, 638298000, 654624000, 670352400, 686073600, 701802000, 717523200, 733251600, 748972800, 764701200, 780422400, 796150800, 811872000, 828205200, 843926400, 859654800, 875376000, 891104400, 906825600, 988398000, 1001700000, 1017428400, 1033149600, 1048878000, 1064599200, 1080327600, 1096048800, 1111777200, 1127498400, 1143226800, 1159552800, 1427482800, 1443196800 }\r
+    trans:intvector { -2032927596, 252439200, 417978000, 433785600, 449600400, 465321600, 481050000, 496771200, 512499600, 528220800, 543949200, 559670400, 575398800, 591120000, 606848400, 622569600, 638298000, 654624000, 670352400, 686073600, 701802000, 717523200, 733251600, 748972800, 764701200, 780422400, 796150800, 811872000, 828205200, 843926400, 859654800, 875376000, 891104400, 906825600, 988398000, 1001700000, 1017428400, 1033149600, 1048878000, 1064599200, 1080327600, 1096048800, 1111777200, 1127498400, 1143226800, 1159552800, 1427482800, 1443196800, 1458932400, 1474646400 }\r
     typeOffsets:intvector { 21996, 0, 21600, 0, 25200, 0, 25200, 3600 }\r
-    typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
-    finalRule { "Mongol" }\r
-    finalRaw:int { 25200 }\r
-    finalYear:int { 2016 }\r
-  } //Z#272\r
+    typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
+  } //Z#273\r
   /* Asia/Irkutsk */ :table {\r
     trans:intvector { -1575874625, -1247554800, 354902400, 370710000, 386438400, 402246000, 417974400, 433782000, 449596800, 465328800, 481053600, 496778400, 512503200, 528228000, 543952800, 559677600, 575402400, 591127200, 606852000, 622576800, 638301600, 654631200, 670356000, 686084400, 695761200, 701805600, 717530400, 733255200, 748980000, 764704800, 780429600, 796154400, 811879200, 828208800, 846352800, 859658400, 877802400, 891108000, 909252000, 922557600, 941306400, 954007200, 972756000, 985456800, 1004205600, 1017511200, 1035655200, 1048960800, 1067104800, 1080410400, 1099159200, 1111860000, 1130608800, 1143309600, 1162058400, 1174759200, 1193508000, 1206813600, 1224957600, 1238263200, 1256407200, 1269712800, 1288461600, 1301162400, 1414256400 }\r
     typeOffsets:intvector { 25025, 0, 25200, 0, 25200, 3600, 28800, 0, 28800, 3600, 32400, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#273\r
-  /* Asia/Istanbul */ :int { 456 } //Z#274\r
+  } //Z#274\r
+  /* Asia/Istanbul */ :int { 457 } //Z#275\r
   /* Asia/Jakarta */ :table {\r
     trans:intvector { -1451719200, -1172906400, -876641400, -766054800, -683883000, -620812800, -189415800 }\r
     typeOffsets:intvector { 25632, 0, 25200, 0, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "02030503040301" }\r
-  } //Z#275\r
+  } //Z#276\r
   /* Asia/Jayapura */ :table {\r
     trans:intvector { -1172913768, -799491600, -189423000 }\r
     typeOffsets:intvector { 33768, 0, 32400, 0, 34200, 0 }\r
     typeMap:bin { "010201" }\r
-  } //Z#276\r
+  } //Z#277\r
   /* Asia/Jerusalem */ :table {\r
     transPre32:intvector { -1, 1454818042 }\r
     trans:intvector { -1641003640, -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -681962400, -673243200, -667962000, -652327200, -636426000, -622087200, -608947200, -591847200, -572486400, -558576000, -542851200, -527731200, -514425600, -490845600, -482986800, -459475200, -451537200, -428551200, -418262400, -400032000, -387428400, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 826840800, 842821200, 858895200, 874184400, 890344800, 905029200, 923011200, 936313200, 955670400, 970783200, 986770800, 1001282400, 1017356400, 1033941600, 1048806000, 1065132000, 1081292400, 1095804000, 1112313600, 1128812400, 1143763200, 1159657200, 1175212800, 1189897200, 1206662400, 1223161200, 1238112000, 1254006000, 1269561600, 1284246000, 1301616000, 1317510000, 1333065600, 1348354800, 1364515200, 1382828400 }\r
@@ -1429,87 +1429,87 @@ zoneinfo64:table(nofallback) {
     finalRule { "Zion" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2014 }\r
-    links:intvector { 277, 319, 525 }\r
-  } //Z#277\r
+    links:intvector { 278, 320, 526 }\r
+  } //Z#278\r
   /* Asia/Kabul */ :table {\r
     transPre32:intvector { -1, 1770429088 }\r
     trans:intvector { -788932800 }\r
     typeOffsets:intvector { 16608, 0, 14400, 0, 16200, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#278\r
+  } //Z#279\r
   /* Asia/Kamchatka */ :table {\r
     trans:intvector { -1487759676, -1247569200, 354888000, 370695600, 386424000, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701791200, 717516000, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800, 828194400, 846338400, 859644000, 877788000, 891093600, 909237600, 922543200, 941292000, 953992800, 972741600, 985442400, 1004191200, 1017496800, 1035640800, 1048946400, 1067090400, 1080396000, 1099144800, 1111845600, 1130594400, 1143295200, 1162044000, 1174744800, 1193493600, 1206799200, 1224943200, 1238248800, 1256392800, 1269698400, 1288450800, 1301151600 }\r
     typeOffsets:intvector { 38076, 0, 39600, 0, 39600, 3600, 43200, 0, 43200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040304030403040304030403020103" }\r
-  } //Z#279\r
+  } //Z#280\r
   /* Asia/Karachi */ :table {\r
     trans:intvector { -1988166492, -862637400, -764145000, -576135000, 1018119600, 1033840800, 1212260400, 1225476000, 1239735600, 1257012000 }\r
     typeOffsets:intvector { 16092, 0, 18000, 0, 18000, 3600, 19800, 0, 19800, 3600 }\r
     typeMap:bin { "03040301020102010201" }\r
-    links:intvector { 280, 543 }\r
-  } //Z#280\r
-  /* Asia/Kashgar */ :int { 327 } //Z#281\r
+    links:intvector { 281, 544 }\r
+  } //Z#281\r
+  /* Asia/Kashgar */ :int { 328 } //Z#282\r
   /* Asia/Kathmandu */ :table {\r
     trans:intvector { -1577943676, 504901800 }\r
     typeOffsets:intvector { 20476, 0, 19800, 0, 20700, 0 }\r
     typeMap:bin { "0102" }\r
-    links:intvector { 282, 283 }\r
-  } //Z#282\r
-  /* Asia/Katmandu */ :int { 282 } //Z#283\r
+    links:intvector { 283, 284 }\r
+  } //Z#283\r
+  /* Asia/Katmandu */ :int { 283 } //Z#284\r
   /* Asia/Khandyga */ :table {\r
     trans:intvector { -1579424533, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1072882800, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1315832400, 1414252800 }\r
     typeOffsets:intvector { 32533, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0, 36000, 3600, 39600, 0 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403050605060506050605060506050605070503" }\r
-  } //Z#284\r
+  } //Z#285\r
   /* Asia/Kolkata */ :table {\r
     transPre32:intvector { -1, 1454805288 }\r
     trans:intvector { -891582800, -872058600, -862637400, -764145000 }\r
     typeOffsets:intvector { 21208, 0, 19800, 0, 19800, 3600, 21200, 0, 23400, 0 }\r
     typeMap:bin { "0304010201" }\r
-    links:intvector { 254, 285, 511 }\r
-  } //Z#285\r
+    links:intvector { 255, 286, 512 }\r
+  } //Z#286\r
   /* Asia/Krasnoyarsk */ :table {\r
     trans:intvector { -1577513486, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1035658800, 1048964400, 1067108400, 1080414000, 1099162800, 1111863600, 1130612400, 1143313200, 1162062000, 1174762800, 1193511600, 1206817200, 1224961200, 1238266800, 1256410800, 1269716400, 1288465200, 1301166000, 1414260000 }\r
     typeOffsets:intvector { 22286, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600, 28800, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#286\r
+  } //Z#287\r
   /* Asia/Kuala_Lumpur */ :table {\r
     transPre32:intvector { -1, 2117490090 }\r
     trans:intvector { -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, 378664200 }\r
     typeOffsets:intvector { 24406, 0, 24925, 0, 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "0102030405070506" }\r
-  } //Z#287\r
+  } //Z#288\r
   /* Asia/Kuching */ :table {\r
     trans:intvector { -1383463280, -1167636600, -1082448000, -1074586800, -1050825600, -1042964400, -1019289600, -1011428400, -987753600, -979892400, -956217600, -948356400, -924595200, -916734000, -893059200, -885198000, -879667200, -767005200 }\r
     typeOffsets:intvector { 26480, 0, 27000, 0, 28800, 0, 28800, 1200, 32400, 0 }\r
     typeMap:bin { "010203020302030203020302030203020402" }\r
-  } //Z#288\r
-  /* Asia/Kuwait */ :int { 307 } //Z#289\r
-  /* Asia/Macao */ :int { 291 } //Z#290\r
+  } //Z#289\r
+  /* Asia/Kuwait */ :int { 308 } //Z#290\r
+  /* Asia/Macao */ :int { 292 } //Z#291\r
   /* Asia/Macau */ :table {\r
     trans:intvector { -1830411260, -277360200, -257405400, -245910600, -225955800, -214473600, -194506200, -182406600, -163056600, -150969600, -131619600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72201600, 87922800, 103651200, 119977200, 135705600, 151439400, 167167800, 182889000, 198617400, 214338600, 230067000, 245788200, 261504000, 277225200, 292953600, 309279600, 325008000, 340729200 }\r
     typeOffsets:intvector { 27260, 0, 28800, 0, 28800, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 290, 291 }\r
-  } //Z#291\r
+    links:intvector { 291, 292 }\r
+  } //Z#292\r
   /* Asia/Magadan */ :table {\r
     trans:intvector { -1441188192, -1247565600, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1414245600, 1461427200 }\r
     typeOffsets:intvector { 36192, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403040304030403040304030403050103" }\r
-  } //Z#292\r
+  } //Z#293\r
   /* Asia/Makassar */ :table {\r
     trans:intvector { -1172908656, -880272000, -766054800 }\r
     typeOffsets:intvector { 28656, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "010201" }\r
-    links:intvector { 293, 324 }\r
-  } //Z#293\r
+    links:intvector { 294, 325 }\r
+  } //Z#294\r
   /* Asia/Manila */ :table {\r
     transPre32:intvector { -1, 350346256, -1, 2065645456 }\r
     trans:intvector { -1046678400, -1038733200, -873273600, -794221200, -496224000, -489315600, 259344000, 275151600 }\r
     typeOffsets:intvector { -57360, 0, 28800, 0, 28800, 3600, 29040, 0, 32400, 0 }\r
     typeMap:bin { "03010201040102010201" }\r
-  } //Z#294\r
-  /* Asia/Muscat */ :int { 264 } //Z#295\r
+  } //Z#295\r
+  /* Asia/Muscat */ :int { 265 } //Z#296\r
   /* Asia/Nicosia */ :table {\r
     trans:intvector { -1518920008, 166572000, 182293200, 200959200, 213829200, 228866400, 243982800, 260316000, 276123600, 291765600, 307486800, 323820000, 338936400, 354664800, 370386000, 386114400, 401835600, 417564000, 433285200, 449013600, 465339600, 481068000, 496789200, 512517600, 528238800, 543967200, 559688400, 575416800, 591138000, 606866400, 622587600, 638316000, 654642000, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 909277200, 922582800, 941331600 }\r
     typeOffsets:intvector { 8008, 0, 7200, 0, 7200, 3600 }\r
@@ -1517,109 +1517,109 @@ zoneinfo64:table(nofallback) {
     finalRule { "EUAsia" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2000 }\r
-    links:intvector { 296, 471 }\r
-  } //Z#296\r
+    links:intvector { 297, 472 }\r
+  } //Z#297\r
   /* Asia/Novokuznetsk */ :table {\r
     trans:intvector { -1441259328, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1035658800, 1048964400, 1067108400, 1080414000, 1099162800, 1111863600, 1130612400, 1143313200, 1162062000, 1174762800, 1193511600, 1206817200, 1224961200, 1238266800, 1256410800, 1269716400, 1288468800, 1301169600 }\r
     typeOffsets:intvector { 20928, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040304030403040304030403020103" }\r
-  } //Z#297\r
+  } //Z#298\r
   /* Asia/Novosibirsk */ :table {\r
     trans:intvector { -1579476700, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 738086400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1469304000 }\r
     typeOffsets:intvector { 19900, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304020102010201020102010201020102010201020102010201020102010201020102010201030103" }\r
-  } //Z#298\r
+  } //Z#299\r
   /* Asia/Omsk */ :table {\r
     trans:intvector { -1582088010, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600 }\r
     typeOffsets:intvector { 17610, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600, 25200, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#299\r
-  /* Asia/Oral */ :table {\r
-    trans:intvector { -1441164324, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622591200, 638316000, 654645600, 670370400, 686095200, 695772000, 701816400, 717544800, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
-    typeOffsets:intvector { 12324, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
-    typeMap:bin { "010304050403040304030403040304030403020102010201030201020102010201020102010201020102010201020102010203" }\r
   } //Z#300\r
-  /* Asia/Phnom_Penh */ :int { 249 } //Z#301\r
+  /* Asia/Oral */ :table {\r
+    trans:intvector { -1441164324, -1247540400, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622591200, 638316000, 654645600, 670370400, 686095200, 695772000, 701816400, 717544800, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
+    typeOffsets:intvector { 12324, 0, 10800, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
+    typeMap:bin { "010405060504050405040504050405040504030203020302040302030203020302030203020302030203020302030203020304" }\r
+  } //Z#301\r
+  /* Asia/Phnom_Penh */ :int { 250 } //Z#302\r
   /* Asia/Pontianak */ :table {\r
     trans:intvector { -1172906240, -881220600, -766054800, -683883000, -620812800, -189415800, 567964800 }\r
     typeOffsets:intvector { 26240, 0, 25200, 0, 27000, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "02040203020301" }\r
-  } //Z#302\r
+  } //Z#303\r
   /* Asia/Pyongyang */ :table {\r
     trans:intvector { -1948782180, -1830414600, 1439564400 }\r
     typeOffsets:intvector { 30180, 0, 30600, 0, 32400, 0 }\r
     typeMap:bin { "010201" }\r
-  } //Z#303\r
+  } //Z#304\r
   /* Asia/Qatar */ :table {\r
     trans:intvector { -1577935568, 76190400 }\r
     typeOffsets:intvector { 12368, 0, 10800, 0, 14400, 0 }\r
     typeMap:bin { "0201" }\r
-    links:intvector { 247, 304 }\r
-  } //Z#304\r
+    links:intvector { 248, 305 }\r
+  } //Z#305\r
   /* Asia/Qyzylorda */ :table {\r
     trans:intvector { -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695768400, 701812800, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 }\r
     typeOffsets:intvector { 15712, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "010304050403040304030403040304030403040304030203050403040304030403040304030403040304030403040304030405" }\r
-  } //Z#305\r
-  /* Asia/Rangoon */ :int { 332 } //Z#306\r
+  } //Z#306\r
+  /* Asia/Rangoon */ :int { 333 } //Z#307\r
   /* Asia/Riyadh */ :table {\r
     trans:intvector { -719636812 }\r
     typeOffsets:intvector { 11212, 0, 10800, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 237, 289, 307 }\r
-  } //Z#307\r
-  /* Asia/Saigon */ :int { 270 } //Z#308\r
+    links:intvector { 238, 290, 308 }\r
+  } //Z#308\r
+  /* Asia/Saigon */ :int { 271 } //Z#309\r
   /* Asia/Sakhalin */ :table {\r
     trans:intvector { -2031039048, -768560400, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 972748800, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1414249200, 1459008000 }\r
     typeOffsets:intvector { 34248, 0, 32400, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600 }\r
     typeMap:bin { "010405040504050405040504050405040504050405040302040504050405040504050403020302030203020302030203020302030203020302030203020302040204" }\r
-  } //Z#309\r
+  } //Z#310\r
   /* Asia/Samarkand */ :table {\r
     trans:intvector { -1441168073, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686091600 }\r
     typeOffsets:intvector { 16073, 0, 14400, 0, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "010203040302030203020302030203020302030203020302" }\r
-  } //Z#310\r
+  } //Z#311\r
   /* Asia/Seoul */ :table {\r
     trans:intvector { -1948782472, -1830414600, -498128400, -462702600, -451733400, -429784200, -418296600, -399544200, -387451800, -368094600, -356002200, -336645000, -324552600, -305195400, -293103000, -264933000, 547578000, 560883600, 579027600, 592333200 }\r
     typeOffsets:intvector { 30472, 0, 30600, 0, 30600, 3600, 32400, 0, 32400, 3600 }\r
     typeMap:bin { "0103010201020102010201020102010304030403" }\r
-    links:intvector { 311, 595 }\r
-  } //Z#311\r
+    links:intvector { 312, 596 }\r
+  } //Z#312\r
   /* Asia/Shanghai */ :table {\r
     transPre32:intvector { -1, 2117485353 }\r
     trans:intvector { -933494400, -923130000, -908784000, -891594000, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }\r
     typeOffsets:intvector { 29143, 0, 28800, 0, 28800, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201" }\r
-    links:intvector { 257, 258, 268, 312, 381, 545 }\r
-  } //Z#312\r
+    links:intvector { 258, 259, 269, 313, 382, 546 }\r
+  } //Z#313\r
   /* Asia/Singapore */ :table {\r
     trans:intvector { -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, 378664200 }\r
     typeOffsets:intvector { 24925, 0, 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "01020304060405" }\r
-    links:intvector { 313, 597 }\r
-  } //Z#313\r
+    links:intvector { 314, 598 }\r
+  } //Z#314\r
   /* Asia/Srednekolymsk */ :table {\r
     trans:intvector { -1441188892, -1247565600, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1414245600 }\r
     typeOffsets:intvector { 36892, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#314\r
+  } //Z#315\r
   /* Asia/Taipei */ :table {\r
     transPre32:intvector { -1, 1959718936 }\r
     trans:intvector { -1017820800, -766224000, -745833600, -733827600, -716889600, -699613200, -683884800, -670669200, -652348800, -639133200, -620812800, -607597200, -589276800, -576061200, -562924800, -541760400, -528710400, -510224400, -497174400, -478688400, -465638400, -449830800, -434016000, -418208400, -402480000, -386672400, -370944000, -355136400, -339408000, -323600400, -302515200, -291978000, -270979200, -260442000, 133977600, 149785200, 165513600, 181321200, 299606400, 307551600 }\r
     typeOffsets:intvector { 29160, 0, 28800, 0, 28800, 3600, 32400, 0 }\r
     typeMap:bin { "0103010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 315, 594 }\r
-  } //Z#315\r
+    links:intvector { 316, 595 }\r
+  } //Z#316\r
   /* Asia/Tashkent */ :table {\r
     trans:intvector { -1441168631, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600 }\r
     typeOffsets:intvector { 16631, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201" }\r
-  } //Z#316\r
+  } //Z#317\r
   /* Asia/Tbilisi */ :table {\r
     trans:intvector { -1441162751, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701816400, 717537600, 733266000, 748987200, 764715600, 780436800, 796161600, 811882800, 828216000, 877806000, 891115200, 909255600, 922564800, 941310000, 954014400, 972759600, 985464000, 1004209200, 1017518400, 1035658800, 1048968000, 1067108400, 1080417600, 1088276400, 1099177200, 1111878000 }\r
     typeOffsets:intvector { 10751, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010201020102030403040304030403040304030403040304020103" }\r
-  } //Z#317\r
+  } //Z#318\r
   /* Asia/Tehran */ :table {\r
     trans:intvector { -757394744, 247177800, 259272000, 277758000, 283982400, 290809800, 306531000, 322432200, 338499000, 673216200, 685481400, 701209800, 717103800, 732745800, 748639800, 764281800, 780175800, 795817800, 811711800, 827353800, 843247800, 858976200, 874870200, 890512200, 906406200, 922048200, 937942200, 953584200, 969478200, 985206600, 1001100600, 1016742600, 1032636600, 1048278600, 1064172600, 1079814600, 1095708600, 1111437000, 1127331000, 1206045000, 1221939000, 1237667400, 1253561400, 1269203400, 1285097400, 1300739400, 1316633400, 1332275400, 1348169400, 1363897800, 1379791800, 1395433800, 1411327800, 1426969800, 1442863800, 1458505800, 1474399800, 1490128200, 1506022200, 1521664200, 1537558200, 1553200200, 1569094200, 1584736200, 1600630200, 1616358600, 1632252600, 1647894600, 1663788600, 1679430600, 1695324600, 1710966600, 1726860600, 1742589000, 1758483000, 1774125000, 1790019000, 1805661000, 1821555000, 1837197000, 1853091000, 1868733000, 1884627000, 1900355400, 1916249400, 1931891400, 1947785400, 1963427400, 1979321400, 1994963400, 2010857400, 2026585800, 2042479800, 2058121800, 2074015800, 2089657800, 2105551800 }\r
     typeOffsets:intvector { 12344, 0, 12600, 0, 12600, 3600, 14400, 0, 14400, 3600 }\r
@@ -1627,78 +1627,75 @@ zoneinfo64:table(nofallback) {
     finalRule { "Iran" }\r
     finalRaw:int { 12600 }\r
     finalYear:int { 2037 }\r
-    links:intvector { 318, 524 }\r
-  } //Z#318\r
-  /* Asia/Tel_Aviv */ :int { 277 } //Z#319\r
-  /* Asia/Thimbu */ :int { 321 } //Z#320\r
+    links:intvector { 319, 525 }\r
+  } //Z#319\r
+  /* Asia/Tel_Aviv */ :int { 278 } //Z#320\r
+  /* Asia/Thimbu */ :int { 322 } //Z#321\r
   /* Asia/Thimphu */ :table {\r
     trans:intvector { -706341516, 560025000 }\r
     typeOffsets:intvector { 21516, 0, 19800, 0, 21600, 0 }\r
     typeMap:bin { "0102" }\r
-    links:intvector { 320, 321 }\r
-  } //Z#321\r
+    links:intvector { 321, 322 }\r
+  } //Z#322\r
   /* Asia/Tokyo */ :table {\r
     transPre32:intvector { -1, 1707254896 }\r
     trans:intvector { -683794800, -672393600, -654764400, -640944000, -620290800, -609494400, -588841200, -578044800 }\r
     typeOffsets:intvector { 33539, 0, 32400, 0, 32400, 3600 }\r
     typeMap:bin { "010201020102010201" }\r
-    links:intvector { 322, 526, 528 }\r
-  } //Z#322\r
+    links:intvector { 323, 527, 529 }\r
+  } //Z#323\r
   /* Asia/Tomsk */ :table {\r
     trans:intvector { -1578807591, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1020193200, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1464465600 }\r
     typeOffsets:intvector { 20391, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304020102010201020102010201020102010201030103" }\r
-  } //Z#323\r
-  /* Asia/Ujung_Pandang */ :int { 293 } //Z#324\r
+  } //Z#324\r
+  /* Asia/Ujung_Pandang */ :int { 294 } //Z#325\r
   /* Asia/Ulaanbaatar */ :table {\r
-    trans:intvector { -2032931252, 252435600, 417974400, 433782000, 449596800, 465318000, 481046400, 496767600, 512496000, 528217200, 543945600, 559666800, 575395200, 591116400, 606844800, 622566000, 638294400, 654620400, 670348800, 686070000, 701798400, 717519600, 733248000, 748969200, 764697600, 780418800, 796147200, 811868400, 828201600, 843922800, 859651200, 875372400, 891100800, 906822000, 988394400, 1001696400, 1017424800, 1033146000, 1048874400, 1064595600, 1080324000, 1096045200, 1111773600, 1127494800, 1143223200, 1159549200, 1427479200, 1443193200 }\r
+    trans:intvector { -2032931252, 252435600, 417974400, 433782000, 449596800, 465318000, 481046400, 496767600, 512496000, 528217200, 543945600, 559666800, 575395200, 591116400, 606844800, 622566000, 638294400, 654620400, 670348800, 686070000, 701798400, 717519600, 733248000, 748969200, 764697600, 780418800, 796147200, 811868400, 828201600, 843922800, 859651200, 875372400, 891100800, 906822000, 988394400, 1001696400, 1017424800, 1033146000, 1048874400, 1064595600, 1080324000, 1096045200, 1111773600, 1127494800, 1143223200, 1159549200, 1427479200, 1443193200, 1458928800, 1474642800 }\r
     typeOffsets:intvector { 25652, 0, 25200, 0, 28800, 0, 28800, 3600 }\r
-    typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
-    finalRule { "Mongol" }\r
-    finalRaw:int { 28800 }\r
-    finalYear:int { 2016 }\r
-    links:intvector { 325, 326 }\r
-  } //Z#325\r
-  /* Asia/Ulan_Bator */ :int { 325 } //Z#326\r
+    typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
+    links:intvector { 326, 327 }\r
+  } //Z#326\r
+  /* Asia/Ulan_Bator */ :int { 326 } //Z#327\r
   /* Asia/Urumqi */ :table {\r
     trans:intvector { -1325483420 }\r
     typeOffsets:intvector { 21020, 0, 21600, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 281, 327 }\r
-  } //Z#327\r
+    links:intvector { 282, 328 }\r
+  } //Z#328\r
   /* Asia/Ust-Nera */ :table {\r
     trans:intvector { -1579426374, -1247558400, 354898800, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1315828800, 1414249200 }\r
     typeOffsets:intvector { 34374, 0, 28800, 0, 32400, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 }\r
     typeMap:bin { "010206050605060506050605060506050605060506050403050605060506050605060506050605060506050605060506050605060506050605060506050605070503" }\r
-  } //Z#328\r
-  /* Asia/Vientiane */ :int { 249 } //Z#329\r
+  } //Z#329\r
+  /* Asia/Vientiane */ :int { 250 } //Z#330\r
   /* Asia/Vladivostok */ :table {\r
     trans:intvector { -1487321251, -1247562000, 354895200, 370702800, 386431200, 402238800, 417967200, 433774800, 449589600, 465321600, 481046400, 496771200, 512496000, 528220800, 543945600, 559670400, 575395200, 591120000, 606844800, 622569600, 638294400, 654624000, 670348800, 686077200, 695754000, 701798400, 717523200, 733248000, 748972800, 764697600, 780422400, 796147200, 811872000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 972748800, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1414249200 }\r
     typeOffsets:intvector { 31651, 0, 32400, 0, 32400, 3600, 36000, 0, 36000, 3600, 39600, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#330\r
+  } //Z#331\r
   /* Asia/Yakutsk */ :table {\r
     trans:intvector { -1579423138, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1080406800, 1099155600, 1111856400, 1130605200, 1143306000, 1162054800, 1174755600, 1193504400, 1206810000, 1224954000, 1238259600, 1256403600, 1269709200, 1288458000, 1301158800, 1414252800 }\r
     typeOffsets:intvector { 31138, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#331\r
+  } //Z#332\r
   /* Asia/Yangon */ :table {\r
     trans:intvector { -1577946280, -873268200, -778410000 }\r
     typeOffsets:intvector { 23080, 0, 23400, 0, 32400, 0 }\r
     typeMap:bin { "010201" }\r
-    links:intvector { 306, 332 }\r
-  } //Z#332\r
+    links:intvector { 307, 333 }\r
+  } //Z#333\r
   /* Asia/Yekaterinburg */ :table {\r
     trans:intvector { -1688270553, -1592610305, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1111870800, 1130619600, 1143320400, 1162069200, 1174770000, 1193518800, 1206824400, 1224968400, 1238274000, 1256418000, 1269723600, 1288472400, 1301173200, 1414267200 }\r
     typeOffsets:intvector { 14553, 0, 13505, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "010204050405040504050405040504050405040504050403020405040504050405040504050405040504050405040504050405040504050405040504050405040604" }\r
-  } //Z#333\r
+  } //Z#334\r
   /* Asia/Yerevan */ :table {\r
     trans:intvector { -1441162680, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1111874400, 1130623200, 1143324000, 1162072800, 1174773600, 1193522400, 1206828000, 1224972000, 1238277600, 1256421600, 1269727200, 1288476000, 1301176800, 1319925600 }\r
     typeOffsets:intvector { 10680, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010201020102010203040304030403040304030403040304030403040304030403040304030403" }\r
-    links:intvector { 334, 538 }\r
-  } //Z#334\r
+    links:intvector { 335, 539 }\r
+  } //Z#335\r
   /* Atlantic/Azores */ :table {\r
     transPre32:intvector { -1, 1581063056 }\r
     trans:intvector { -1830377128, -1689548400, -1677794400, -1667430000, -1647730800, -1635807600, -1616194800, -1604358000, -1584658800, -1572735600, -1553036400, -1541199600, -1521500400, -1442444400, -1426806000, -1379286000, -1364770800, -1348441200, -1333321200, -1316386800, -1301266800, -1284332400, -1269817200, -1221433200, -1206918000, -1191193200, -1175468400, -1127689200, -1111964400, -1096844400, -1080514800, -1063580400, -1049065200, -1033340400, -1017615600, -1002495600, -986166000, -969231600, -950482800, -942015600, -922662000, -906937200, -891126000, -877302000, -873676800, -864000000, -857948400, -845852400, -842832000, -831340800, -825894000, -814402800, -810777600, -799891200, -794444400, -782953200, -779328000, -768441600, -762994800, -749084400, -733359600, -717624000, -701899200, -686174400, -670449600, -654724800, -639000000, -591825600, -575496000, -559771200, -544046400, -528321600, -512596800, -496872000, -481147200, -465422400, -449697600, -433972800, -417643200, -401918400, -386193600, -370468800, -354744000, -339019200, -323294400, -307569600, -291844800, -276120000, -260395200, -244670400, -228340800, -212616000, -196891200, -181166400, -165441600, -149716800, -133992000, -118267200, 228272400, 243997200, 260326800, 276051600, 291776400, 307504800, 323226000, 338954400, 354679200, 370404000, 386128800, 401853600, 417582000, 433303200, 449028000, 465357600, 481082400, 496807200, 512532000, 528256800, 543981600, 559706400, 575431200, 591156000, 606880800, 622605600, 638330400, 654660000, 670384800, 686109600, 701834400, 717559200, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -1707,7 +1704,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { -3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#335\r
+  } //Z#336\r
   /* Atlantic/Bermuda */ :table {\r
     trans:intvector { -1262281242, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 }\r
     typeOffsets:intvector { -15558, 0, -14400, 0, -14400, 3600 }\r
@@ -1715,7 +1712,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 2008 }\r
-  } //Z#336\r
+  } //Z#337\r
   /* Atlantic/Canary */ :table {\r
     trans:intvector { -1509663504, -733874400, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -3696, 0, -3600, 0, 0, 0, 0, 3600 }\r
@@ -1723,13 +1720,13 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-  } //Z#337\r
+  } //Z#338\r
   /* Atlantic/Cape_Verde */ :table {\r
     trans:intvector { -1988144756, -862610400, -764118000, 186120000 }\r
     typeOffsets:intvector { -5644, 0, -7200, 0, -7200, 3600, -3600, 0 }\r
     typeMap:bin { "01020103" }\r
-  } //Z#338\r
-  /* Atlantic/Faeroe */ :int { 340 } //Z#339\r
+  } //Z#339\r
+  /* Atlantic/Faeroe */ :int { 341 } //Z#340\r
   /* Atlantic/Faroe */ :table {\r
     trans:intvector { -1955748776, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -1624, 0, 0, 0, 0, 3600 }\r
@@ -1737,9 +1734,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 339, 340 }\r
-  } //Z#340\r
-  /* Atlantic/Jan_Mayen */ :int { 472 } //Z#341\r
+    links:intvector { 340, 341 }\r
+  } //Z#341\r
+  /* Atlantic/Jan_Mayen */ :int { 473 } //Z#342\r
   /* Atlantic/Madeira */ :table {\r
     trans:intvector { -1830379944, -1689552000, -1677798000, -1667433600, -1647734400, -1635811200, -1616198400, -1604361600, -1584662400, -1572739200, -1553040000, -1541203200, -1521504000, -1442448000, -1426809600, -1379289600, -1364774400, -1348444800, -1333324800, -1316390400, -1301270400, -1284336000, -1269820800, -1221436800, -1206921600, -1191196800, -1175472000, -1127692800, -1111968000, -1096848000, -1080518400, -1063584000, -1049068800, -1033344000, -1017619200, -1002499200, -986169600, -969235200, -950486400, -942019200, -922665600, -906940800, -891129600, -877305600, -873680400, -864003600, -857952000, -845856000, -842835600, -831344400, -825897600, -814406400, -810781200, -799894800, -794448000, -782956800, -779331600, -768445200, -762998400, -749088000, -733363200, -717627600, -701902800, -686178000, -670453200, -654728400, -639003600, -591829200, -575499600, -559774800, -544050000, -528325200, -512600400, -496875600, -481150800, -465426000, -449701200, -433976400, -417646800, -401922000, -386197200, -370472400, -354747600, -339022800, -323298000, -307573200, -291848400, -276123600, -260398800, -244674000, -228344400, -212619600, -196894800, -181170000, -165445200, -149720400, -133995600, -118270800, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -4056, 0, -3600, 0, -3600, 3600, -3600, 7200, 0, 0, 0, 3600 }\r
@@ -1747,25 +1744,25 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-  } //Z#342\r
+  } //Z#343\r
   /* Atlantic/Reykjavik */ :table {\r
     trans:intvector { -1956609120, -1668211200, -1647212400, -1636675200, -1613430000, -1605139200, -1581894000, -1539561600, -1531350000, -968025600, -952293600, -942008400, -920239200, -909957600, -888789600, -877903200, -857944800, -846453600, -826495200, -815004000, -795045600, -783554400, -762991200, -752104800, -731541600, -717631200, -700092000, -686181600, -668642400, -654732000, -636588000, -623282400, -605743200, -591832800, -573688800, -559778400, -542239200, -528328800, -510789600, -496879200, -479340000, -465429600, -447890400, -433980000, -415836000, -401925600, -384386400, -370476000, -352936800, -339026400, -321487200, -307576800, -290037600, -276127200, -258588000, -244677600, -226533600, -212623200, -195084000, -181173600, -163634400, -149724000, -132184800, -118274400, -100735200, -86824800, -68680800, -54770400 }\r
     typeOffsets:intvector { -5280, 0, -3600, 0, -3600, 3600, 0, 0 }\r
     typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }\r
-    links:intvector { 343, 512 }\r
-  } //Z#343\r
+    links:intvector { 344, 513 }\r
+  } //Z#344\r
   /* Atlantic/South_Georgia */ :table {\r
     transPre32:intvector { -1, 1770454464 }\r
     typeOffsets:intvector { -8768, 0, -7200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#344\r
-  /* Atlantic/St_Helena */ :int { 5 } //Z#345\r
+  } //Z#345\r
+  /* Atlantic/St_Helena */ :int { 5 } //Z#346\r
   /* Atlantic/Stanley */ :table {\r
     trans:intvector { -1824235716, -1018209600, -1003093200, -986760000, -971643600, -954705600, -939589200, -923256000, -908139600, -891806400, -876690000, -860356800, -852066000, 420609600, 433306800, 452052000, 464151600, 483501600, 495601200, 514350000, 527054400, 545799600, 558504000, 577249200, 589953600, 608698800, 621403200, 640753200, 652852800, 672202800, 684907200, 703652400, 716356800, 735102000, 747806400, 766551600, 779256000, 798001200, 810705600, 830055600, 842760000, 861505200, 874209600, 892954800, 905659200, 924404400, 937108800, 955854000, 968558400, 987310800, 999410400, 1019365200, 1030860000, 1050814800, 1062914400, 1082264400, 1094364000, 1113714000, 1125813600, 1145163600, 1157263200, 1176613200, 1188712800, 1208667600, 1220767200, 1240117200, 1252216800, 1271566800, 1283666400 }\r
     typeOffsets:intvector { -13884, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }\r
     typeMap:bin { "010201020102010201020102010304030403020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }\r
-  } //Z#346\r
-  /* Australia/ACT */ :int { 365 } //Z#347\r
+  } //Z#347\r
+  /* Australia/ACT */ :int { 366 } //Z#348\r
   /* Australia/Adelaide */ :table {\r
     transPre32:intvector { -1, 1930857236, -1, 2064778096 }\r
     trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 384280200, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 637691400, 657045000, 667931400, 688494600, 701195400, 719944200, 731435400, 751998600, 764094600, 783448200, 796149000, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 }\r
@@ -1774,15 +1771,15 @@ zoneinfo64:table(nofallback) {
     finalRule { "AS" }\r
     finalRaw:int { 34200 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 348, 364 }\r
-  } //Z#348\r
+    links:intvector { 349, 365 }\r
+  } //Z#349\r
   /* Australia/Brisbane */ :table {\r
     transPre32:intvector { -1, 1928175368 }\r
     trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200 }\r
     typeOffsets:intvector { 36728, 0, 36000, 0, 36000, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201" }\r
-    links:intvector { 349, 363 }\r
-  } //Z#349\r
+    links:intvector { 350, 364 }\r
+  } //Z#350\r
   /* Australia/Broken_Hill */ :table {\r
     transPre32:intvector { -1, 1930856548, -1, 1980016096, -1, 2064778096 }\r
     trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 386699400, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 636481800, 657045000, 667931400, 688494600, 699381000, 719944200, 731435400, 751998600, 762885000, 783448200, 794334600, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 }\r
@@ -1791,9 +1788,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "AS" }\r
     finalRaw:int { 34200 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 350, 369 }\r
-  } //Z#350\r
-  /* Australia/Canberra */ :int { 365 } //Z#351\r
+    links:intvector { 351, 370 }\r
+  } //Z#351\r
+  /* Australia/Canberra */ :int { 366 } //Z#352\r
   /* Australia/Currie */ :table {\r
     transPre32:intvector { -1, 1949172768 }\r
     trans:intvector { -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000 }\r
@@ -1802,20 +1799,20 @@ zoneinfo64:table(nofallback) {
     finalRule { "AT" }\r
     finalRaw:int { 36000 }\r
     finalYear:int { 2009 }\r
-  } //Z#352\r
+  } //Z#353\r
   /* Australia/Darwin */ :table {\r
     transPre32:intvector { -1, 1930859096, -1, 2064778096 }\r
     trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400 }\r
     typeOffsets:intvector { 31400, 0, 32400, 0, 34200, 0, 34200, 3600 }\r
     typeMap:bin { "01020302030203020302" }\r
-    links:intvector { 0, 353, 361 }\r
-  } //Z#353\r
+    links:intvector { 0, 354, 362 }\r
+  } //Z#354\r
   /* Australia/Eucla */ :table {\r
     transPre32:intvector { -1, 1957038768 }\r
     trans:intvector { -1672562640, -1665387900, -883637100, -876123900, -860395500, -844674300, 152039700, 162926100, 436295700, 447182100, 690311700, 699383700, 1165079700, 1174756500, 1193505300, 1206810900, 1224954900, 1238260500 }\r
     typeOffsets:intvector { 30928, 0, 31500, 0, 31500, 3600 }\r
     typeMap:bin { "01020102010201020102010201020102010201" }\r
-  } //Z#354\r
+  } //Z#355\r
   /* Australia/Hobart */ :table {\r
     transPre32:intvector { -1, 1949171940 }\r
     trans:intvector { -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000 }\r
@@ -1824,15 +1821,15 @@ zoneinfo64:table(nofallback) {
     finalRule { "AT" }\r
     finalRaw:int { 36000 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 355, 366 }\r
-  } //Z#355\r
-  /* Australia/LHI */ :int { 358 } //Z#356\r
+    links:intvector { 356, 367 }\r
+  } //Z#356\r
+  /* Australia/LHI */ :int { 359 } //Z#357\r
   /* Australia/Lindeman */ :table {\r
     transPre32:intvector { -1, 1928176340 }\r
     trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200 }\r
     typeOffsets:intvector { 35756, 0, 36000, 0, 36000, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201" }\r
-  } //Z#357\r
+  } //Z#358\r
   /* Australia/Lord_Howe */ :table {\r
     transPre32:intvector { -1, 1930852316 }\r
     trans:intvector { 352216800, 372785400, 384273000, 404839800, 415722600, 436289400, 447172200, 467739000, 478621800, 499188600, 511282800, 530033400, 542732400, 562087800, 574786800, 594142200, 606236400, 625591800, 636476400, 657041400, 667926000, 688491000, 699375600, 719940600, 731430000, 751995000, 762879600, 783444600, 794329200, 814894200, 828198000, 846343800, 859647600, 877793400, 891097200, 909243000, 922546800, 941297400, 953996400, 967303800, 985446000, 1004196600, 1017500400, 1035646200, 1048950000, 1067095800, 1080399600, 1099150200, 1111849200, 1130599800, 1143903600, 1162049400, 1174748400, 1193499000, 1207407600, 1223134200 }\r
@@ -1841,8 +1838,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "LH" }\r
     finalRaw:int { 37800 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 356, 358 }\r
-  } //Z#358\r
+    links:intvector { 357, 359 }\r
+  } //Z#359\r
   /* Australia/Melbourne */ :table {\r
     transPre32:intvector { -1, 1930855704 }\r
     trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 384278400, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 561484800, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 796147200, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 }\r
@@ -1851,19 +1848,19 @@ zoneinfo64:table(nofallback) {
     finalRule { "AV" }\r
     finalRaw:int { 36000 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 359, 367 }\r
-  } //Z#359\r
-  /* Australia/NSW */ :int { 365 } //Z#360\r
-  /* Australia/North */ :int { 353 } //Z#361\r
+    links:intvector { 360, 368 }\r
+  } //Z#360\r
+  /* Australia/NSW */ :int { 366 } //Z#361\r
+  /* Australia/North */ :int { 354 } //Z#362\r
   /* Australia/Perth */ :table {\r
     transPre32:intvector { -1, 1957041892 }\r
     trans:intvector { -1672559940, -1665385200, -883634400, -876121200, -860392800, -844671600, 152042400, 162928800, 436298400, 447184800, 690314400, 699386400, 1165082400, 1174759200, 1193508000, 1206813600, 1224957600, 1238263200 }\r
     typeOffsets:intvector { 27804, 0, 28800, 0, 28800, 3600 }\r
     typeMap:bin { "01020102010201020102010201020102010201" }\r
-    links:intvector { 362, 368 }\r
-  } //Z#362\r
-  /* Australia/Queensland */ :int { 349 } //Z#363\r
-  /* Australia/South */ :int { 348 } //Z#364\r
+    links:intvector { 363, 369 }\r
+  } //Z#363\r
+  /* Australia/Queensland */ :int { 350 } //Z#364\r
+  /* Australia/South */ :int { 349 } //Z#365\r
   /* Australia/Sydney */ :table {\r
     transPre32:intvector { -1, 1930854204 }\r
     trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386697600, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 794332800, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 }\r
@@ -1872,19 +1869,19 @@ zoneinfo64:table(nofallback) {
     finalRule { "AN" }\r
     finalRaw:int { 36000 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 1, 347, 351, 360, 365 }\r
-  } //Z#365\r
-  /* Australia/Tasmania */ :int { 355 } //Z#366\r
-  /* Australia/Victoria */ :int { 359 } //Z#367\r
-  /* Australia/West */ :int { 362 } //Z#368\r
-  /* Australia/Yancowinna */ :int { 350 } //Z#369\r
-  /* BET */ :int { 201 } //Z#370\r
-  /* BST */ :int { 262 } //Z#371\r
-  /* Brazil/Acre */ :int { 195 } //Z#372\r
-  /* Brazil/DeNoronha */ :int { 176 } //Z#373\r
-  /* Brazil/East */ :int { 201 } //Z#374\r
-  /* Brazil/West */ :int { 156 } //Z#375\r
-  /* CAT */ :int { 43 } //Z#376\r
+    links:intvector { 1, 348, 352, 361, 366 }\r
+  } //Z#366\r
+  /* Australia/Tasmania */ :int { 356 } //Z#367\r
+  /* Australia/Victoria */ :int { 360 } //Z#368\r
+  /* Australia/West */ :int { 363 } //Z#369\r
+  /* Australia/Yancowinna */ :int { 351 } //Z#370\r
+  /* BET */ :int { 202 } //Z#371\r
+  /* BST */ :int { 263 } //Z#372\r
+  /* Brazil/Acre */ :int { 196 } //Z#373\r
+  /* Brazil/DeNoronha */ :int { 176 } //Z#374\r
+  /* Brazil/East */ :int { 202 } //Z#375\r
+  /* Brazil/West */ :int { 156 } //Z#376\r
+  /* CAT */ :int { 43 } //Z#377\r
   /* CET */ :table {\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 3600, 0, 3600, 3600 }\r
@@ -1892,9 +1889,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "C-Eur" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#377\r
-  /* CNT */ :int { 206 } //Z#378\r
-  /* CST */ :int { 98 } //Z#379\r
+  } //Z#378\r
+  /* CNT */ :int { 207 } //Z#379\r
+  /* CST */ :int { 98 } //Z#380\r
   /* CST6CDT */ :table {\r
     trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }\r
     typeOffsets:intvector { -21600, 0, -21600, 3600 }\r
@@ -1902,22 +1899,22 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-  } //Z#380\r
-  /* CTT */ :int { 312 } //Z#381\r
-  /* Canada/Atlantic */ :int { 128 } //Z#382\r
-  /* Canada/Central */ :int { 221 } //Z#383\r
-  /* Canada/East-Saskatchewan */ :int { 193 } //Z#384\r
-  /* Canada/Eastern */ :int { 216 } //Z#385\r
-  /* Canada/Mountain */ :int { 112 } //Z#386\r
-  /* Canada/Newfoundland */ :int { 206 } //Z#387\r
-  /* Canada/Pacific */ :int { 218 } //Z#388\r
-  /* Canada/Saskatchewan */ :int { 193 } //Z#389\r
-  /* Canada/Yukon */ :int { 220 } //Z#390\r
-  /* Chile/Continental */ :int { 199 } //Z#391\r
-  /* Chile/EasterIsland */ :int { 554 } //Z#392\r
-  /* Cuba */ :int { 129 } //Z#393\r
-  /* EAT */ :int { 48 } //Z#394\r
-  /* ECT */ :int { 473 } //Z#395\r
+  } //Z#381\r
+  /* CTT */ :int { 313 } //Z#382\r
+  /* Canada/Atlantic */ :int { 128 } //Z#383\r
+  /* Canada/Central */ :int { 222 } //Z#384\r
+  /* Canada/East-Saskatchewan */ :int { 194 } //Z#385\r
+  /* Canada/Eastern */ :int { 217 } //Z#386\r
+  /* Canada/Mountain */ :int { 112 } //Z#387\r
+  /* Canada/Newfoundland */ :int { 207 } //Z#388\r
+  /* Canada/Pacific */ :int { 219 } //Z#389\r
+  /* Canada/Saskatchewan */ :int { 194 } //Z#390\r
+  /* Canada/Yukon */ :int { 221 } //Z#391\r
+  /* Chile/Continental */ :int { 200 } //Z#392\r
+  /* Chile/EasterIsland */ :int { 555 } //Z#393\r
+  /* Cuba */ :int { 129 } //Z#394\r
+  /* EAT */ :int { 48 } //Z#395\r
+  /* ECT */ :int { 474 } //Z#396\r
   /* EET */ :table {\r
     trans:intvector { 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 7200, 0, 7200, 3600 }\r
@@ -1925,10 +1922,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#396\r
+  } //Z#397\r
   /* EST */ :table {\r
     typeOffsets:intvector { -18000, 0 }\r
-  } //Z#397\r
+  } //Z#398\r
   /* EST5EDT */ :table {\r
     trans:intvector { -1633280400, -1615140000, -1601830800, -1583690400, -880218000, -765396000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
     typeOffsets:intvector { -18000, 0, -18000, 3600 }\r
@@ -1936,108 +1933,108 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-  } //Z#398\r
-  /* Egypt */ :int { 18 } //Z#399\r
-  /* Eire */ :int { 451 } //Z#400\r
+  } //Z#399\r
+  /* Egypt */ :int { 18 } //Z#400\r
+  /* Eire */ :int { 452 } //Z#401\r
   /* Etc/GMT */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-    links:intvector { 401, 402, 415, 430, 431, 503, 504, 505, 506, 507 }\r
-  } //Z#401\r
-  /* Etc/GMT+0 */ :int { 401 } //Z#402\r
+    links:intvector { 402, 403, 416, 431, 432, 504, 505, 506, 507, 508 }\r
+  } //Z#402\r
+  /* Etc/GMT+0 */ :int { 402 } //Z#403\r
   /* Etc/GMT+1 */ :table {\r
     typeOffsets:intvector { -3600, 0 }\r
-  } //Z#403\r
+  } //Z#404\r
   /* Etc/GMT+10 */ :table {\r
     typeOffsets:intvector { -36000, 0 }\r
-  } //Z#404\r
+  } //Z#405\r
   /* Etc/GMT+11 */ :table {\r
     typeOffsets:intvector { -39600, 0 }\r
-  } //Z#405\r
+  } //Z#406\r
   /* Etc/GMT+12 */ :table {\r
     typeOffsets:intvector { -43200, 0 }\r
-  } //Z#406\r
+  } //Z#407\r
   /* Etc/GMT+2 */ :table {\r
     typeOffsets:intvector { -7200, 0 }\r
-  } //Z#407\r
+  } //Z#408\r
   /* Etc/GMT+3 */ :table {\r
     typeOffsets:intvector { -10800, 0 }\r
-  } //Z#408\r
+  } //Z#409\r
   /* Etc/GMT+4 */ :table {\r
     typeOffsets:intvector { -14400, 0 }\r
-  } //Z#409\r
+  } //Z#410\r
   /* Etc/GMT+5 */ :table {\r
     typeOffsets:intvector { -18000, 0 }\r
-  } //Z#410\r
+  } //Z#411\r
   /* Etc/GMT+6 */ :table {\r
     typeOffsets:intvector { -21600, 0 }\r
-  } //Z#411\r
+  } //Z#412\r
   /* Etc/GMT+7 */ :table {\r
     typeOffsets:intvector { -25200, 0 }\r
-  } //Z#412\r
+  } //Z#413\r
   /* Etc/GMT+8 */ :table {\r
     typeOffsets:intvector { -28800, 0 }\r
-  } //Z#413\r
+  } //Z#414\r
   /* Etc/GMT+9 */ :table {\r
     typeOffsets:intvector { -32400, 0 }\r
-  } //Z#414\r
-  /* Etc/GMT-0 */ :int { 401 } //Z#415\r
+  } //Z#415\r
+  /* Etc/GMT-0 */ :int { 402 } //Z#416\r
   /* Etc/GMT-1 */ :table {\r
     typeOffsets:intvector { 3600, 0 }\r
-  } //Z#416\r
+  } //Z#417\r
   /* Etc/GMT-10 */ :table {\r
     typeOffsets:intvector { 36000, 0 }\r
-  } //Z#417\r
+  } //Z#418\r
   /* Etc/GMT-11 */ :table {\r
     typeOffsets:intvector { 39600, 0 }\r
-  } //Z#418\r
+  } //Z#419\r
   /* Etc/GMT-12 */ :table {\r
     typeOffsets:intvector { 43200, 0 }\r
-  } //Z#419\r
+  } //Z#420\r
   /* Etc/GMT-13 */ :table {\r
     typeOffsets:intvector { 46800, 0 }\r
-  } //Z#420\r
+  } //Z#421\r
   /* Etc/GMT-14 */ :table {\r
     typeOffsets:intvector { 50400, 0 }\r
-  } //Z#421\r
+  } //Z#422\r
   /* Etc/GMT-2 */ :table {\r
     typeOffsets:intvector { 7200, 0 }\r
-  } //Z#422\r
+  } //Z#423\r
   /* Etc/GMT-3 */ :table {\r
     typeOffsets:intvector { 10800, 0 }\r
-  } //Z#423\r
+  } //Z#424\r
   /* Etc/GMT-4 */ :table {\r
     typeOffsets:intvector { 14400, 0 }\r
-  } //Z#424\r
+  } //Z#425\r
   /* Etc/GMT-5 */ :table {\r
     typeOffsets:intvector { 18000, 0 }\r
-  } //Z#425\r
+  } //Z#426\r
   /* Etc/GMT-6 */ :table {\r
     typeOffsets:intvector { 21600, 0 }\r
-  } //Z#426\r
+  } //Z#427\r
   /* Etc/GMT-7 */ :table {\r
     typeOffsets:intvector { 25200, 0 }\r
-  } //Z#427\r
+  } //Z#428\r
   /* Etc/GMT-8 */ :table {\r
     typeOffsets:intvector { 28800, 0 }\r
-  } //Z#428\r
+  } //Z#429\r
   /* Etc/GMT-9 */ :table {\r
     typeOffsets:intvector { 32400, 0 }\r
-  } //Z#429\r
-  /* Etc/GMT0 */ :int { 401 } //Z#430\r
-  /* Etc/Greenwich */ :int { 401 } //Z#431\r
+  } //Z#430\r
+  /* Etc/GMT0 */ :int { 402 } //Z#431\r
+  /* Etc/Greenwich */ :int { 402 } //Z#432\r
   /* Etc/UCT */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-    links:intvector { 432, 612 }\r
-  } //Z#432\r
+    links:intvector { 433, 613 }\r
+  } //Z#433\r
   /* Etc/UTC */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-    links:intvector { 433, 434, 436, 626, 627, 631 }\r
-  } //Z#433\r
-  /* Etc/Universal */ :int { 433 } //Z#434\r
+    links:intvector { 434, 435, 437, 627, 628, 632 }\r
+  } //Z#434\r
+  /* Etc/Universal */ :int { 434 } //Z#435\r
   /* Etc/Unknown */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-  } //Z#435\r
-  /* Etc/Zulu */ :int { 433 } //Z#436\r
+  } //Z#436\r
+  /* Etc/Zulu */ :int { 434 } //Z#437\r
   /* Europe/Amsterdam */ :table {\r
     trans:intvector { -1693700372, -1680484772, -1663453172, -1650147572, -1633213172, -1617488372, -1601158772, -1586038772, -1569709172, -1554589172, -1538259572, -1523139572, -1507501172, -1490566772, -1470176372, -1459117172, -1443997172, -1427667572, -1406672372, -1396217972, -1376950772, -1364768372, -1345414772, -1333318772, -1313792372, -1301264372, -1282256372, -1269814772, -1250720372, -1238365172, -1219184372, -1206915572, -1186957172, -1175465972, -1156025972, -1143411572, -1124489972, -1111961972, -1092953972, -1080512372, -1061331572, -1049062772, -1029190772, -1025745572, -1017613200, -998259600, -986163600, -966723600, -954109200, -935022000, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 1172, 0, 1172, 3600, 1200, 0, 1200, 3600, 3600, 0, 3600, 3600 }\r
@@ -2045,7 +2042,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#437\r
+  } //Z#438\r
   /* Europe/Andorra */ :table {\r
     transPre32:intvector { -1, 2117514132 }\r
     trans:intvector { -733881600, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2054,12 +2051,12 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#438\r
+  } //Z#439\r
   /* Europe/Astrakhan */ :table {\r
     trans:intvector { -1441249932, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1459033200 }\r
     typeOffsets:intvector { 11532, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040302010201030201020102010201020102010201020102010201020102010201020102010201020102010201030103" }\r
-  } //Z#439\r
+  } //Z#440\r
   /* Europe/Athens */ :table {\r
     trans:intvector { -1686101632, -1182996000, -1178161200, -906861600, -904878000, -857257200, -844477200, -828237600, -812422800, -552362400, -541652400, 166485600, 186184800, 198028800, 213753600, 228873600, 244080000, 260323200, 275446800, 291798000, 307407600, 323388000, 338936400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 5692, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 }\r
@@ -2067,8 +2064,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#440\r
-  /* Europe/Belfast */ :int { 463 } //Z#441\r
+  } //Z#441\r
+  /* Europe/Belfast */ :int { 464 } //Z#442\r
   /* Europe/Belgrade */ :table {\r
     transPre32:intvector { -1, 1581051976 }\r
     trans:intvector { -905824800, -857257200, -844556400, -828226800, -812502000, -796777200, -777942000, -766623600, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2077,8 +2074,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 442, 462, 474, 480, 483, 497 }\r
-  } //Z#442\r
+    links:intvector { 443, 463, 475, 481, 484, 498 }\r
+  } //Z#443\r
   /* Europe/Berlin */ :table {\r
     transPre32:intvector { -1, 1872912888 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -776563200, -765936000, -761180400, -748479600, -733273200, -717631200, -714610800, -710380800, -701910000, -684975600, -670460400, -654130800, -639010800, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2087,8 +2084,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#443\r
-  /* Europe/Bratislava */ :int { 475 } //Z#444\r
+  } //Z#444\r
+  /* Europe/Bratislava */ :int { 476 } //Z#445\r
   /* Europe/Brussels */ :table {\r
     transPre32:intvector { -1, 1844014246 }\r
     trans:intvector { -1740355200, -1693702800, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1613826000, -1604278800, -1585530000, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1473642000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -934668000, -857257200, -844556400, -828226800, -812502000, -798073200, -781052400, -766623600, -745455600, -733273200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2097,7 +2094,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#445\r
+  } //Z#446\r
   /* Europe/Bucharest */ :table {\r
     trans:intvector { -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, 296604000, 307486800, 323816400, 338940000, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 670370400, 686095200, 701820000, 717544800, 733269600, 748994400, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 }\r
     typeOffsets:intvector { 6264, 0, 7200, 0, 7200, 3600 }\r
@@ -2105,7 +2102,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1998 }\r
-  } //Z#446\r
+  } //Z#447\r
   /* Europe/Budapest */ :table {\r
     transPre32:intvector { -1, 1794028316 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1633212000, -1618700400, -1600466400, -1581202800, -906771600, -857257200, -844556400, -828226800, -812502000, -796777200, -778471200, -762660000, -749689200, -733359600, -717634800, -701910000, -686185200, -670460400, -654130800, -639010800, -621990000, -605660400, -492656400, -481168800, -461120400, -449632800, -428547600, -418269600, -397094400, -386809200, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2114,8 +2111,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#447\r
-  /* Europe/Busingen */ :int { 499 } //Z#448\r
+  } //Z#448\r
+  /* Europe/Busingen */ :int { 500 } //Z#449\r
   /* Europe/Chisinau */ :table {\r
     transPre32:intvector { -1, 1454819576 }\r
     trans:intvector { -1637114100, -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, -927165600, -898138800, -857257200, -844556400, -828226800, -812502000, -800157600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 641944800, 654652800, 670377600, 686102400, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859680000, 877824000 }\r
@@ -2124,8 +2121,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Moldova" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1998 }\r
-    links:intvector { 449, 488 }\r
-  } //Z#449\r
+    links:intvector { 450, 489 }\r
+  } //Z#450\r
   /* Europe/Copenhagen */ :table {\r
     transPre32:intvector { -1, 1896673076 }\r
     trans:intvector { -1692496800, -1680490800, -935110800, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -769388400, -747010800, -736383600, -715215600, -706748400, -683161200, -675298800, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2134,7 +2131,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#450\r
+  } //Z#451\r
   /* Europe/Dublin */ :table {\r
     transPre32:intvector { -1, 1473317596 }\r
     trans:intvector { -1691962479, -1680471279, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -733359600, -719445600, -699490800, -684972000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600, 828234000, 846378000 }\r
@@ -2143,8 +2140,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 400, 451 }\r
-  } //Z#451\r
+    links:intvector { 401, 452 }\r
+  } //Z#452\r
   /* Europe/Gibraltar */ :table {\r
     transPre32:intvector { -1, 1473317380 }\r
     trans:intvector { -1691964000, -1680472800, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2153,8 +2150,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#452\r
-  /* Europe/Guernsey */ :int { 463 } //Z#453\r
+  } //Z#453\r
+  /* Europe/Guernsey */ :int { 464 } //Z#454\r
   /* Europe/Helsinki */ :table {\r
     trans:intvector { -1535938789, -875671200, -859773600, 354672000, 370396800, 386121600, 401846400, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 5989, 0, 7200, 0, 7200, 3600 }\r
@@ -2162,23 +2159,23 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 454, 467 }\r
-  } //Z#454\r
-  /* Europe/Isle_of_Man */ :int { 463 } //Z#455\r
+    links:intvector { 455, 468 }\r
+  } //Z#455\r
+  /* Europe/Isle_of_Man */ :int { 464 } //Z#456\r
   /* Europe/Istanbul */ :table {\r
     transPre32:intvector { -1, 1454819544 }\r
     trans:intvector { -1869875816, -1693706400, -1680490800, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1440208800, -1428030000, -1409709600, -1396494000, -931140000, -922762800, -917834400, -892436400, -875844000, -857358000, -781063200, -764737200, -744343200, -733806000, -716436000, -701924400, -684986400, -670474800, -654141600, -639025200, -621828000, -606970800, -590032800, -575434800, -235620000, -228279600, -177732000, -165726000, 10533600, 23835600, 41983200, 55285200, 74037600, 87339600, 107910000, 121219200, 133920000, 152676000, 165362400, 183502800, 202428000, 215557200, 228866400, 245797200, 260316000, 277246800, 308779200, 323827200, 340228800, 354672000, 371678400, 386121600, 403128000, 428446800, 433886400, 482792400, 496702800, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686098800, 701823600, 717548400, 733273200, 748998000, 764118000, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301274000, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396227600, 1414285200, 1427590800, 1446944400, 1459040400, 1473195600 }\r
     typeOffsets:intvector { 6952, 0, 7016, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
     typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030504050405040504050403020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020304" }\r
-    links:intvector { 274, 456, 611 }\r
-  } //Z#456\r
-  /* Europe/Jersey */ :int { 463 } //Z#457\r
+    links:intvector { 275, 457, 612 }\r
+  } //Z#457\r
+  /* Europe/Jersey */ :int { 464 } //Z#458\r
   /* Europe/Kaliningrad */ :table {\r
     transPre32:intvector { -1, 1872911176 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -788922000, -778730400, -762663600, -757389600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1414278000 }\r
     typeOffsets:intvector { 4920, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
     typeMap:bin { "01020102010201020102010201030403050605060506050605060506050605060504030403040304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#458\r
+  } //Z#459\r
   /* Europe/Kiev */ :table {\r
     trans:intvector { -1441159324, -1247536800, -892522800, -857257200, -844556400, -828226800, -825382800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 646783200, 686102400, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 7324, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
@@ -2186,12 +2183,12 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#459\r
+  } //Z#460\r
   /* Europe/Kirov */ :table {\r
     trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400 }\r
     typeOffsets:intvector { 11928, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403020102010302010201020102010201020102010201020102010201020102010201020102010201020102010301" }\r
-  } //Z#460\r
+  } //Z#461\r
   /* Europe/Lisbon */ :table {\r
     trans:intvector { -1830381795, -1689555600, -1677801600, -1667437200, -1647738000, -1635814800, -1616202000, -1604365200, -1584666000, -1572742800, -1553043600, -1541206800, -1521507600, -1442451600, -1426813200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1221440400, -1206925200, -1191200400, -1175475600, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942022800, -922669200, -906944400, -891133200, -877309200, -873684000, -864007200, -857955600, -845859600, -842839200, -831348000, -825901200, -814410000, -810784800, -799898400, -794451600, -782960400, -779335200, -768448800, -763002000, -749091600, -733366800, -717631200, -701906400, -686181600, -670456800, -654732000, -639007200, -591832800, -575503200, -559778400, -544053600, -528328800, -512604000, -496879200, -481154400, -465429600, -449704800, -433980000, -417650400, -401925600, -386200800, -370476000, -354751200, -339026400, -323301600, -307576800, -291852000, -276127200, -260402400, -244677600, -228348000, -212623200, -196898400, -181173600, -165448800, -149724000, -133999200, -118274400, 212544000, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -2205, 0, 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }\r
@@ -2199,9 +2196,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 461, 593 }\r
-  } //Z#461\r
-  /* Europe/Ljubljana */ :int { 442 } //Z#462\r
+    links:intvector { 462, 594 }\r
+  } //Z#462\r
+  /* Europe/Ljubljana */ :int { 443 } //Z#463\r
   /* Europe/London */ :table {\r
     transPre32:intvector { -1, 442304971 }\r
     trans:intvector { -1691964000, -1680472800, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600, 828234000, 846378000 }\r
@@ -2210,8 +2207,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 441, 453, 455, 457, 463, 501, 502 }\r
-  } //Z#463\r
+    links:intvector { 442, 454, 456, 458, 464, 502, 503 }\r
+  } //Z#464\r
   /* Europe/Luxembourg */ :table {\r
     trans:intvector { -2069713476, -1692496800, -1680483600, -1662343200, -1650157200, -1632006000, -1618700400, -1612659600, -1604278800, -1585519200, -1574038800, -1552258800, -1539997200, -1520550000, -1507510800, -1490572800, -1473642000, -1459119600, -1444006800, -1427673600, -1411866000, -1396224000, -1379293200, -1364774400, -1348448400, -1333324800, -1316394000, -1301270400, -1284339600, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -935186400, -857257200, -844556400, -828226800, -812502000, -797986800, -781052400, -766623600, -745455600, -733273200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 1476, 0, 0, 0, 0, 3600, 3600, 0, 3600, 3600 }\r
@@ -2219,16 +2216,16 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#464\r
+  } //Z#465\r
   /* Europe/Madrid */ :table {\r
-    transPre32:intvector { -1, 2117515380 }\r
-    trans:intvector { -1661734800, -1648429200, -1631926800, -1616893200, -1601254800, -1585357200, -1442451600, -1427677200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1029114000, -1017622800, -1002848400, -986173200, -969238800, -954118800, -940208400, -873079200, -862538400, -842839200, -828237600, -811389600, -796010400, -779940000, -765421200, -748490400, -733888800, -652327200, -639190800, 135122400, 150246000, 167176800, 181695600, 196812000, 212540400, 228866400, 243990000, 260402400, 276044400, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
+    transPre32:intvector { -1, 2117514496 }\r
+    trans:intvector { -1631926800, -1616889600, -1601168400, -1585353600, -1442451600, -1427673600, -1379293200, -1364774400, -1348448400, -1333324800, -1316390400, -1301270400, -1284339600, -1269820800, -1026954000, -1017619200, -1001898000, -999482400, -986090400, -954115200, -940208400, -873079200, -862621200, -842839200, -828320400, -811389600, -796870800, -779940000, -765421200, -748490400, -733971600, -652327200, -639018000, 135122400, 150246000, 166572000, 181695600, 196812000, 212540400, 228866400, 243990000, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -884, 0, 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }\r
-    typeMap:bin { "01020102010201020102010201020102010201020102010203020302030203020304050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504" }\r
+    typeMap:bin { "0102010201020102010201020102010201020302010405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504" }\r
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#465\r
+  } //Z#466\r
   /* Europe/Malta */ :table {\r
     transPre32:intvector { -1, 1891488612 }\r
     trans:intvector { -1690765200, -1680487200, -1664758800, -1648951200, -1635123600, -1616896800, -1604278800, -1585533600, -1571014800, -1555293600, -932432400, -857257200, -844556400, -828226800, -812588400, -798073200, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71715600, -50547600, -40266000, -18493200, -8211600, 12956400, 23238000, 43801200, 54687600, 75855600, 86742000, 102380400, 118105200, 135730800, 148518000, 167187600, 180489600, 198637200, 211939200, 230086800, 243388800, 261536400, 274838400, 292986000, 306288000, 323312400, 338342400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2237,14 +2234,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#466\r
-  /* Europe/Mariehamn */ :int { 454 } //Z#467\r
+  } //Z#467\r
+  /* Europe/Mariehamn */ :int { 455 } //Z#468\r
   /* Europe/Minsk */ :table {\r
     transPre32:intvector { -1, 1454819880 }\r
     trans:intvector { -1441158600, -1247536800, -899780400, -857257200, -844556400, -828226800, -812502000, -804650400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 670374000, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000 }\r
     typeOffsets:intvector { 6616, 0, 3600, 0, 3600, 3600, 6600, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
     typeMap:bin { "0304060201020102060706070607060706070607060706070607060504050405040504050405040504050405040504050405040504050405040504050405040504050406" }\r
-  } //Z#468\r
+  } //Z#469\r
   /* Europe/Monaco */ :table {\r
     transPre32:intvector { -1, 1808287124 }\r
     trans:intvector { -1855958961, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1470618000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1253494800, -1238374800, -1221440400, -1206925200, -1191200400, -1175475600, -1160355600, -1143421200, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942012000, -904438800, -891136800, -877827600, -857257200, -844556400, -828226800, -812502000, -796266000, -781052400, -766623600, 196819200, 212540400, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2253,14 +2250,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#469\r
+  } //Z#470\r
   /* Europe/Moscow */ :table {\r
     trans:intvector { -1688265017, -1656819079, -1641353479, -1627965079, -1618716679, -1596429079, -1593820800, -1589860800, -1542427200, -1539493200, -1525323600, -1522728000, -1491188400, -1247536800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686102400, 695779200, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400 }\r
     typeOffsets:intvector { 9017, 0, 7200, 0, 7200, 3600, 9079, 0, 9079, 3600, 9079, 7200, 10800, 0, 10800, 3600, 10800, 7200, 14400, 0 }\r
     typeMap:bin { "0304030504050706070807060106070607060706070607060706070607060706070602010607060706070607060706070607060706070607060706070607060706070607060706070607060906" }\r
-    links:intvector { 470, 629 }\r
-  } //Z#470\r
-  /* Europe/Nicosia */ :int { 296 } //Z#471\r
+    links:intvector { 471, 630 }\r
+  } //Z#471\r
+  /* Europe/Nicosia */ :int { 297 } //Z#472\r
   /* Europe/Oslo */ :table {\r
     transPre32:intvector { -1, 1928209516 }\r
     trans:intvector { -1691884800, -1680573600, -927511200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -765327600, -340844400, -324514800, -308790000, -293065200, -277340400, -261615600, -245890800, -230166000, -214441200, -198716400, -182991600, -166662000, -147913200, -135212400, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2269,8 +2266,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 236, 341, 472 }\r
-  } //Z#472\r
+    links:intvector { 237, 342, 473 }\r
+  } //Z#473\r
   /* Europe/Paris */ :table {\r
     trans:intvector { -1855958901, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1470618000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1253494800, -1238374800, -1221440400, -1206925200, -1191200400, -1175475600, -1160355600, -1143421200, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942012000, -932436000, -857257200, -844556400, -828226800, -812502000, -800071200, -796266000, -781052400, -766623600, 196819200, 212540400, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 561, 0, 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }\r
@@ -2278,9 +2275,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 395, 473 }\r
-  } //Z#473\r
-  /* Europe/Podgorica */ :int { 442 } //Z#474\r
+    links:intvector { 396, 474 }\r
+  } //Z#474\r
+  /* Europe/Podgorica */ :int { 443 } //Z#475\r
   /* Europe/Prague */ :table {\r
     transPre32:intvector { -1, 1825565432 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -798073200, -780534000, -761180400, -746578800, -733359600, -716425200, -701910000, -684975600, -670460400, -654217200, -639010800, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2289,8 +2286,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 444, 475 }\r
-  } //Z#475\r
+    links:intvector { 445, 476 }\r
+  } //Z#476\r
   /* Europe/Riga */ :table {\r
     trans:intvector { -1632008194, -1618702594, -1601681794, -1597275394, -1377308194, -928029600, -899521200, -857257200, -844556400, -828226800, -812502000, -796777200, -795834000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 843955200, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 985482000, 1004230800 }\r
     typeOffsets:intvector { 5794, 0, 3600, 0, 3600, 3600, 5794, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
@@ -2298,7 +2295,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2002 }\r
-  } //Z#476\r
+  } //Z#477\r
   /* Europe/Rome */ :table {\r
     transPre32:intvector { -1, 1891402096 }\r
     trans:intvector { -1690765200, -1680487200, -1664758800, -1648951200, -1635123600, -1616896800, -1604278800, -1585533600, -1571014800, -1555293600, -932432400, -857257200, -844556400, -828226800, -812502000, -798073200, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71715600, -50547600, -40266000, -18493200, -8211600, 12956400, 23238000, 43801200, 54687600, 75855600, 86742000, 107910000, 118191600, 138754800, 149641200, 170809200, 181090800, 202258800, 212540400, 233103600, 243990000, 265158000, 276044400, 296607600, 307494000, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2307,27 +2304,27 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 477, 479, 492 }\r
-  } //Z#477\r
+    links:intvector { 478, 480, 493 }\r
+  } //Z#478\r
   /* Europe/Samara */ :table {\r
     trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 686102400, 687916800, 701820000, 717544800, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1111874400, 1130623200, 1143324000, 1162072800, 1174773600, 1193522400, 1206828000, 1224972000, 1238277600, 1256421600, 1269727200, 1288479600, 1301180400 }\r
     typeOffsets:intvector { 12020, 0, 7200, 3600, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "02040504050405040504050405040504050403020302010204050405040504050405040504050405040504050405040504050405040504050405040504030204" }\r
-  } //Z#478\r
-  /* Europe/San_Marino */ :int { 477 } //Z#479\r
-  /* Europe/Sarajevo */ :int { 442 } //Z#480\r
+  } //Z#479\r
+  /* Europe/San_Marino */ :int { 478 } //Z#480\r
+  /* Europe/Sarajevo */ :int { 443 } //Z#481\r
   /* Europe/Saratov */ :table {\r
     trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1480806000 }\r
     typeOffsets:intvector { 11058, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403020102010201030201020102010201020102010201020102010201020102010201020102010201020102010201030103" }\r
-  } //Z#481\r
+  } //Z#482\r
   /* Europe/Simferopol */ :table {\r
     transPre32:intvector { -1, 1454818312 }\r
     trans:intvector { -1441160160, -1247536800, -888894000, -857257200, -844556400, -828226800, -812502000, -811648800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 701820000, 717541200, 733269600, 748990800, 764719200, 767739600, 780436800, 796165200, 811886400, 828219600, 846374400, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396137600, 1414274400 }\r
     typeOffsets:intvector { 8184, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 8160, 0, 10800, 0, 10800, 3600, 14400, 0 }\r
     typeMap:bin { "050306020102010206070607060706070607060706070607060706030403040304070607060706040304030403040304030403040304030403040304030403040304030403040304030806" }\r
-  } //Z#482\r
-  /* Europe/Skopje */ :int { 442 } //Z#483\r
+  } //Z#483\r
+  /* Europe/Skopje */ :int { 443 } //Z#484\r
   /* Europe/Sofia */ :table {\r
     transPre32:intvector { -1, 1454820900, -1, 1925440280 }\r
     trans:intvector { -857257200, -844556400, -828226800, -812502000, -796777200, -781048800, 291762000, 307576800, 323816400, 339026400, 355266000, 370393200, 386715600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 }\r
@@ -2336,7 +2333,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1998 }\r
-  } //Z#484\r
+  } //Z#485\r
   /* Europe/Stockholm */ :table {\r
     transPre32:intvector { -1, 1423286164, -1, 2085974882 }\r
     trans:intvector { -1692496800, -1680483600, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2345,7 +2342,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#485\r
+  } //Z#486\r
   /* Europe/Tallinn */ :table {\r
     trans:intvector { -1638322740, -1632006000, -1618700400, -1593824400, -1535938740, -927943200, -892954800, -857257200, -844556400, -828226800, -812502000, -797652000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909277200, 922582800, 941331600, 1017536400, 1035680400 }\r
     typeOffsets:intvector { 5940, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
@@ -2353,7 +2350,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2003 }\r
-  } //Z#486\r
+  } //Z#487\r
   /* Europe/Tirane */ :table {\r
     trans:intvector { -1767230360, -932346000, -857257200, -844556400, -843519600, 136854000, 149896800, 168130800, 181432800, 199839600, 213141600, 231894000, 244591200, 263257200, 276040800, 294706800, 307490400, 326156400, 339458400, 357087600, 370389600, 389142000, 402444000, 419468400, 433807200, 449622000, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 4760, 0, 3600, 0, 3600, 3600 }\r
@@ -2361,13 +2358,13 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#487\r
-  /* Europe/Tiraspol */ :int { 449 } //Z#488\r
+  } //Z#488\r
+  /* Europe/Tiraspol */ :int { 450 } //Z#489\r
   /* Europe/Ulyanovsk */ :table {\r
     trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 686102400, 695779200, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1459033200 }\r
     typeOffsets:intvector { 11616, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "030506050605060506050605060506050605040304030201030403040304030403040304030403040304030403040304030403040304030403040304030403050305" }\r
-  } //Z#489\r
+  } //Z#490\r
   /* Europe/Uzhgorod */ :table {\r
     transPre32:intvector { -1, 1794027544 }\r
     trans:intvector { -938905200, -857257200, -844556400, -828226800, -812502000, -794714400, -773456400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 670384800, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2376,9 +2373,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#490\r
-  /* Europe/Vaduz */ :int { 499 } //Z#491\r
-  /* Europe/Vatican */ :int { 477 } //Z#492\r
+  } //Z#491\r
+  /* Europe/Vaduz */ :int { 500 } //Z#492\r
+  /* Europe/Vatican */ :int { 478 } //Z#493\r
   /* Europe/Vienna */ :table {\r
     transPre32:intvector { -1, 1872912175 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1569711600, -1555801200, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780188400, -748479600, -733359600, -717634800, -701910000, -684975600, -670460400, 323823600, 338940000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2387,7 +2384,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#493\r
+  } //Z#494\r
   /* Europe/Vilnius */ :table {\r
     transPre32:intvector { -1, 1454820420 }\r
     trans:intvector { -1672536240, -1585100136, -1561251600, -1553565600, -928198800, -900126000, -857257200, -844556400, -828226800, -812502000, -802144800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891133200, 909277200, 922582800, 941331600, 1048986000, 1067130000 }\r
@@ -2396,12 +2393,12 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2004 }\r
-  } //Z#494\r
+  } //Z#495\r
   /* Europe/Volgograd */ :table {\r
     trans:intvector { -1577761060, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400 }\r
     typeOffsets:intvector { 10660, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030201020102010302010201020102010201020102010201020102010201020102010201020102010201020102010301" }\r
-  } //Z#495\r
+  } //Z#496\r
   /* Europe/Warsaw */ :table {\r
     trans:intvector { -1717032240, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1600473600, -1587168000, -1501725600, -931734000, -857257200, -844556400, -828226800, -812502000, -796608000, -778726800, -762660000, -748486800, -733273200, -715215600, -701910000, -684975600, -670460400, -654130800, -639010800, -397094400, -386812800, -371088000, -355363200, -334195200, -323308800, -307584000, -291859200, -271296000, -260409600, -239846400, -228960000, -208396800, -197510400, -176342400, -166060800, 228873600, 243993600, 260323200, 276048000, 291772800, 307497600, 323827200, 338947200, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 5040, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 }\r
@@ -2409,9 +2406,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 496, 592 }\r
-  } //Z#496\r
-  /* Europe/Zagreb */ :int { 442 } //Z#497\r
+    links:intvector { 497, 593 }\r
+  } //Z#497\r
+  /* Europe/Zagreb */ :int { 443 } //Z#498\r
   /* Europe/Zaporozhye */ :table {\r
     transPre32:intvector { -1, 1454818056 }\r
     trans:intvector { -1441160400, -1247536800, -894769200, -857257200, -844556400, -828226800, -826419600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2420,7 +2417,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#498\r
+  } //Z#499\r
   /* Europe/Zurich */ :table {\r
     transPre32:intvector { -1, 619768448, -1, 1909720710 }\r
     trans:intvector { -904435200, -891129600, -872985600, -859680000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2429,75 +2426,75 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 448, 491, 499 }\r
-  } //Z#499\r
+    links:intvector { 449, 492, 500 }\r
+  } //Z#500\r
   /* Factory */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-  } //Z#500\r
-  /* GB */ :int { 463 } //Z#501\r
-  /* GB-Eire */ :int { 463 } //Z#502\r
-  /* GMT */ :int { 401 } //Z#503\r
-  /* GMT+0 */ :int { 401 } //Z#504\r
-  /* GMT-0 */ :int { 401 } //Z#505\r
-  /* GMT0 */ :int { 401 } //Z#506\r
-  /* Greenwich */ :int { 401 } //Z#507\r
+  } //Z#501\r
+  /* GB */ :int { 464 } //Z#502\r
+  /* GB-Eire */ :int { 464 } //Z#503\r
+  /* GMT */ :int { 402 } //Z#504\r
+  /* GMT+0 */ :int { 402 } //Z#505\r
+  /* GMT-0 */ :int { 402 } //Z#506\r
+  /* GMT0 */ :int { 402 } //Z#507\r
+  /* Greenwich */ :int { 402 } //Z#508\r
   /* HST */ :table {\r
     typeOffsets:intvector { -36000, 0 }\r
-  } //Z#508\r
-  /* Hongkong */ :int { 271 } //Z#509\r
-  /* IET */ :int { 131 } //Z#510\r
-  /* IST */ :int { 285 } //Z#511\r
-  /* Iceland */ :int { 343 } //Z#512\r
-  /* Indian/Antananarivo */ :int { 48 } //Z#513\r
+  } //Z#509\r
+  /* Hongkong */ :int { 272 } //Z#510\r
+  /* IET */ :int { 131 } //Z#511\r
+  /* IST */ :int { 286 } //Z#512\r
+  /* Iceland */ :int { 344 } //Z#513\r
+  /* Indian/Antananarivo */ :int { 48 } //Z#514\r
   /* Indian/Chagos */ :table {\r
     trans:intvector { -1988167780, 820436400 }\r
     typeOffsets:intvector { 17380, 0, 18000, 0, 21600, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#514\r
+  } //Z#515\r
   /* Indian/Christmas */ :table {\r
     transPre32:intvector { -1, 1930865124 }\r
     typeOffsets:intvector { 25372, 0, 25200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#515\r
+  } //Z#516\r
   /* Indian/Cocos */ :table {\r
     transPre32:intvector { -1, 2085955236 }\r
     typeOffsets:intvector { 23260, 0, 23400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#516\r
-  /* Indian/Comoro */ :int { 48 } //Z#517\r
+  } //Z#517\r
+  /* Indian/Comoro */ :int { 48 } //Z#518\r
   /* Indian/Kerguelen */ :table {\r
     trans:intvector { -631152000 }\r
     typeOffsets:intvector { 0, 0, 18000, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#518\r
+  } //Z#519\r
   /* Indian/Mahe */ :table {\r
     trans:intvector { -2006653308 }\r
     typeOffsets:intvector { 13308, 0, 14400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#519\r
+  } //Z#520\r
   /* Indian/Maldives */ :table {\r
     trans:intvector { -315636840 }\r
     typeOffsets:intvector { 17640, 0, 18000, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#520\r
+  } //Z#521\r
   /* Indian/Mauritius */ :table {\r
     trans:intvector { -1988164200, 403041600, 417034800, 1224972000, 1238274000 }\r
     typeOffsets:intvector { 13800, 0, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "0102010201" }\r
-  } //Z#521\r
-  /* Indian/Mayotte */ :int { 48 } //Z#522\r
+  } //Z#522\r
+  /* Indian/Mayotte */ :int { 48 } //Z#523\r
   /* Indian/Reunion */ :table {\r
     trans:intvector { -1848886912 }\r
     typeOffsets:intvector { 13312, 0, 14400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#523\r
-  /* Iran */ :int { 318 } //Z#524\r
-  /* Israel */ :int { 277 } //Z#525\r
-  /* JST */ :int { 322 } //Z#526\r
-  /* Jamaica */ :int { 142 } //Z#527\r
-  /* Japan */ :int { 322 } //Z#528\r
-  /* Kwajalein */ :int { 568 } //Z#529\r
-  /* Libya */ :int { 56 } //Z#530\r
+  } //Z#524\r
+  /* Iran */ :int { 319 } //Z#525\r
+  /* Israel */ :int { 278 } //Z#526\r
+  /* JST */ :int { 323 } //Z#527\r
+  /* Jamaica */ :int { 142 } //Z#528\r
+  /* Japan */ :int { 323 } //Z#529\r
+  /* Kwajalein */ :int { 569 } //Z#530\r
+  /* Libya */ :int { 56 } //Z#531\r
   /* MET */ :table {\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 3600, 0, 3600, 3600 }\r
@@ -2505,11 +2502,11 @@ zoneinfo64:table(nofallback) {
     finalRule { "C-Eur" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#531\r
-  /* MIT */ :int { 549 } //Z#532\r
+  } //Z#532\r
+  /* MIT */ :int { 550 } //Z#533\r
   /* MST */ :table {\r
     typeOffsets:intvector { -25200, 0 }\r
-  } //Z#533\r
+  } //Z#534\r
   /* MST7MDT */ :table {\r
     trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }\r
     typeOffsets:intvector { -25200, 0, -25200, 3600 }\r
@@ -2517,20 +2514,20 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2008 }\r
-  } //Z#534\r
-  /* Mexico/BajaNorte */ :int { 215 } //Z#535\r
-  /* Mexico/BajaSur */ :int { 160 } //Z#536\r
-  /* Mexico/General */ :int { 165 } //Z#537\r
-  /* NET */ :int { 334 } //Z#538\r
-  /* NST */ :int { 550 } //Z#539\r
-  /* NZ */ :int { 550 } //Z#540\r
-  /* NZ-CHAT */ :int { 552 } //Z#541\r
-  /* Navajo */ :int { 109 } //Z#542\r
-  /* PLT */ :int { 280 } //Z#543\r
-  /* PNT */ :int { 184 } //Z#544\r
-  /* PRC */ :int { 312 } //Z#545\r
-  /* PRT */ :int { 189 } //Z#546\r
-  /* PST */ :int { 151 } //Z#547\r
+  } //Z#535\r
+  /* Mexico/BajaNorte */ :int { 216 } //Z#536\r
+  /* Mexico/BajaSur */ :int { 160 } //Z#537\r
+  /* Mexico/General */ :int { 165 } //Z#538\r
+  /* NET */ :int { 335 } //Z#539\r
+  /* NST */ :int { 551 } //Z#540\r
+  /* NZ */ :int { 551 } //Z#541\r
+  /* NZ-CHAT */ :int { 553 } //Z#542\r
+  /* Navajo */ :int { 109 } //Z#543\r
+  /* PLT */ :int { 281 } //Z#544\r
+  /* PNT */ :int { 184 } //Z#545\r
+  /* PRC */ :int { 313 } //Z#546\r
+  /* PRT */ :int { 189 } //Z#547\r
+  /* PST */ :int { 151 } //Z#548\r
   /* PST8PDT */ :table {\r
     trans:intvector { -1633269600, -1615129200, -1601820000, -1583679600, -880207200, -765385200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }\r
     typeOffsets:intvector { -28800, 0, -28800, 3600 }\r
@@ -2538,7 +2535,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2008 }\r
-  } //Z#548\r
+  } //Z#549\r
   /* Pacific/Apia */ :table {\r
     transPre32:intvector { -1, 1439229312 }\r
     trans:intvector { -1861878784, -631110600, 1285498800, 1301752800, 1316872800, 1325239200, 1333202400, 1348927200 }\r
@@ -2547,8 +2544,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "WS" }\r
     finalRaw:int { 46800 }\r
     finalYear:int { 2013 }\r
-    links:intvector { 532, 549 }\r
-  } //Z#549\r
+    links:intvector { 533, 550 }\r
+  } //Z#550\r
   /* Pacific/Auckland */ :table {\r
     transPre32:intvector { -1, 1102531752 }\r
     trans:intvector { -1330335000, -1320057000, -1300699800, -1287396000, -1269250200, -1255946400, -1237800600, -1224496800, -1206351000, -1192442400, -1174901400, -1160992800, -1143451800, -1125914400, -1112607000, -1094464800, -1081157400, -1063015200, -1049707800, -1031565600, -1018258200, -1000116000, -986808600, -968061600, -955359000, -936612000, -923304600, -757425600, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000, 637682400, 655221600, 669132000, 686671200, 700581600, 718120800, 732636000, 749570400, 764085600, 781020000, 795535200, 812469600, 826984800, 844524000, 858434400, 875973600, 889884000, 907423200, 921938400, 938872800, 953388000, 970322400, 984837600, 1002376800, 1016287200, 1033826400, 1047736800, 1065276000, 1079791200, 1096725600, 1111240800, 1128175200, 1142690400, 1159624800, 1174140000, 1191074400, 1207404000, 1222524000 }\r
@@ -2557,14 +2554,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "NZ" }\r
     finalRaw:int { 43200 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 229, 232, 539, 540, 550 }\r
-  } //Z#550\r
+    links:intvector { 230, 233, 540, 541, 551 }\r
+  } //Z#551\r
   /* Pacific/Bougainville */ :table {\r
     transPre32:intvector { -1, 1454789160, -1, 1928176784 }\r
     trans:intvector { -868010400, -768906000, 1419696000 }\r
     typeOffsets:intvector { 37336, 0, 32400, 0, 35312, 0, 36000, 0, 39600, 0 }\r
     typeMap:bin { "0203010304" }\r
-  } //Z#551\r
+  } //Z#552\r
   /* Pacific/Chatham */ :table {\r
     transPre32:intvector { -1, 1102529668 }\r
     trans:intvector { -757426500, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000, 637682400, 655221600, 669132000, 686671200, 700581600, 718120800, 732636000, 749570400, 764085600, 781020000, 795535200, 812469600, 826984800, 844524000, 858434400, 875973600, 889884000, 907423200, 921938400, 938872800, 953388000, 970322400, 984837600, 1002376800, 1016287200, 1033826400, 1047736800, 1065276000, 1079791200, 1096725600, 1111240800, 1128175200, 1142690400, 1159624800, 1174140000, 1191074400, 1207404000, 1222524000 }\r
@@ -2573,14 +2570,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "Chatham" }\r
     finalRaw:int { 45900 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 541, 552 }\r
-  } //Z#552\r
+    links:intvector { 542, 553 }\r
+  } //Z#553\r
   /* Pacific/Chuuk */ :table {\r
     transPre32:intvector { -1, 2117478068 }\r
     typeOffsets:intvector { 36428, 0, 36000, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 553, 588, 591 }\r
-  } //Z#553\r
+    links:intvector { 554, 589, 592 }\r
+  } //Z#554\r
   /* Pacific/Easter */ :table {\r
     trans:intvector { -1178124152, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200 }\r
     typeOffsets:intvector { -26248, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }\r
@@ -2588,25 +2585,25 @@ zoneinfo64:table(nofallback) {
     finalRule { "Chile" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2017 }\r
-    links:intvector { 392, 554 }\r
-  } //Z#554\r
+    links:intvector { 393, 555 }\r
+  } //Z#555\r
   /* Pacific/Efate */ :table {\r
     trans:intvector { -1829387596, 433256400, 448977600, 467298000, 480427200, 496760400, 511876800, 528210000, 543931200, 559659600, 575380800, 591109200, 606830400, 622558800, 638280000, 654008400, 669729600, 686062800, 696340800, 719931600, 727790400 }\r
     typeOffsets:intvector { 40396, 0, 39600, 0, 39600, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201" }\r
-  } //Z#555\r
+  } //Z#556\r
   /* Pacific/Enderbury */ :table {\r
     transPre32:intvector { -1, 2117555556 }\r
     trans:intvector { 307627200, 788958000 }\r
     typeOffsets:intvector { -41060, 0, -43200, 0, -39600, 0, 46800, 0 }\r
     typeMap:bin { "010203" }\r
-  } //Z#556\r
+  } //Z#557\r
   /* Pacific/Fakaofo */ :table {\r
     transPre32:intvector { -1, 2117555592 }\r
     trans:intvector { 1325242800 }\r
     typeOffsets:intvector { -41096, 0, -39600, 0, 46800, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#557\r
+  } //Z#558\r
   /* Pacific/Fiji */ :table {\r
     trans:intvector { -1709985344, 909842400, 920124000, 941896800, 951573600, 1259416800, 1269698400, 1287842400, 1299333600, 1319292000, 1327154400, 1350741600, 1358604000, 1382796000, 1390050000, 1414850400, 1421503200, 1446300000 }\r
     typeOffsets:intvector { 42944, 0, 43200, 0, 43200, 3600 }\r
@@ -2614,143 +2611,143 @@ zoneinfo64:table(nofallback) {
     finalRule { "Fiji" }\r
     finalRaw:int { 43200 }\r
     finalYear:int { 2016 }\r
-  } //Z#558\r
+  } //Z#559\r
   /* Pacific/Funafuti */ :table {\r
     transPre32:intvector { -1, 2117471484 }\r
     typeOffsets:intvector { 43012, 0, 43200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#559\r
-  /* Pacific/Galapagos */ :table {\r
-    trans:intvector { -1230746496, 504939600 }\r
-    typeOffsets:intvector { -21504, 0, -21600, 0, -18000, 0 }\r
-    typeMap:bin { "0201" }\r
   } //Z#560\r
+  /* Pacific/Galapagos */ :table {\r
+    trans:intvector { -1230746496, 504939600, 722930400, 728888400 }\r
+    typeOffsets:intvector { -21504, 0, -21600, 0, -21600, 3600, -18000, 0 }\r
+    typeMap:bin { "03010201" }\r
+  } //Z#561\r
   /* Pacific/Gambier */ :table {\r
     trans:intvector { -1806678012 }\r
     typeOffsets:intvector { -32388, 0, -32400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#561\r
+  } //Z#562\r
   /* Pacific/Guadalcanal */ :table {\r
     trans:intvector { -1806748788 }\r
     typeOffsets:intvector { 38388, 0, 39600, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 562, 596 }\r
-  } //Z#562\r
+    links:intvector { 563, 597 }\r
+  } //Z#563\r
   /* Pacific/Guam */ :table {\r
     transPre32:intvector { -1, 350340556, -1, 2117479756 }\r
     typeOffsets:intvector { -51660, 0, 34740, 0, 36000, 0 }\r
     typeMap:bin { "0102" }\r
-    links:intvector { 563, 583 }\r
-  } //Z#563\r
+    links:intvector { 564, 584 }\r
+  } //Z#564\r
   /* Pacific/Honolulu */ :table {\r
     transPre32:intvector { -1, 1960865982 }\r
     trans:intvector { -1157283000, -1155436200, -880198200, -765376200, -712150200 }\r
     typeOffsets:intvector { -37886, 0, -37800, 0, -37800, 3600, -36000, 0 }\r
     typeMap:bin { "010201020103" }\r
-    links:intvector { 564, 565, 619 }\r
-  } //Z#564\r
-  /* Pacific/Johnston */ :int { 564 } //Z#565\r
+    links:intvector { 565, 566, 620 }\r
+  } //Z#565\r
+  /* Pacific/Johnston */ :int { 565 } //Z#566\r
   /* Pacific/Kiritimati */ :table {\r
     transPre32:intvector { -1, 2117552256 }\r
     trans:intvector { 307622400, 788954400 }\r
     typeOffsets:intvector { -37760, 0, -38400, 0, -36000, 0, 50400, 0 }\r
     typeMap:bin { "010203" }\r
-  } //Z#566\r
+  } //Z#567\r
   /* Pacific/Kosrae */ :table {\r
     transPre32:intvector { -1, 2117475380 }\r
     trans:intvector { -7988400, 915105600 }\r
     typeOffsets:intvector { 39116, 0, 39600, 0, 43200, 0 }\r
     typeMap:bin { "010201" }\r
-  } //Z#567\r
+  } //Z#568\r
   /* Pacific/Kwajalein */ :table {\r
     transPre32:intvector { -1, 2117474336 }\r
     trans:intvector { -7988400, 745848000 }\r
     typeOffsets:intvector { 40160, 0, -43200, 0, 39600, 0, 43200, 0 }\r
     typeMap:bin { "020103" }\r
-    links:intvector { 529, 568 }\r
-  } //Z#568\r
+    links:intvector { 530, 569 }\r
+  } //Z#569\r
   /* Pacific/Majuro */ :table {\r
     transPre32:intvector { -1, 2117473408 }\r
     trans:intvector { -7988400 }\r
     typeOffsets:intvector { 41088, 0, 39600, 0, 43200, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#569\r
+  } //Z#570\r
   /* Pacific/Marquesas */ :table {\r
     trans:intvector { -1806676920 }\r
     typeOffsets:intvector { -33480, 0, -34200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#570\r
-  /* Pacific/Midway */ :int { 576 } //Z#571\r
+  } //Z#571\r
+  /* Pacific/Midway */ :int { 577 } //Z#572\r
   /* Pacific/Nauru */ :table {\r
     trans:intvector { -1545131260, -877347000, -800960400, 294323400 }\r
     typeOffsets:intvector { 40060, 0, 32400, 0, 41400, 0, 43200, 0 }\r
     typeMap:bin { "02010203" }\r
-  } //Z#572\r
+  } //Z#573\r
   /* Pacific/Niue */ :table {\r
     transPre32:intvector { -1, 2117555276 }\r
     trans:intvector { -599575200, 276089400 }\r
     typeOffsets:intvector { -40780, 0, -41400, 0, -40800, 0, -39600, 0 }\r
     typeMap:bin { "020103" }\r
-  } //Z#573\r
+  } //Z#574\r
   /* Pacific/Norfolk */ :table {\r
     transPre32:intvector { -1, 2117474184 }\r
     trans:intvector { -599656320, 152029800, 162912600, 1443882600 }\r
     typeOffsets:intvector { 40312, 0, 39600, 0, 40320, 0, 41400, 0, 41400, 3600 }\r
     typeMap:bin { "0203040301" }\r
-  } //Z#574\r
+  } //Z#575\r
   /* Pacific/Noumea */ :table {\r
     trans:intvector { -1829387148, 250002000, 257342400, 281451600, 288878400, 849366000, 857228400 }\r
     typeOffsets:intvector { 39948, 0, 39600, 0, 39600, 3600 }\r
     typeMap:bin { "01020102010201" }\r
-  } //Z#575\r
+  } //Z#576\r
   /* Pacific/Pago_Pago */ :table {\r
     transPre32:intvector { -1, 1439229064 }\r
     trans:intvector { -1861879032 }\r
     typeOffsets:intvector { 45432, 0, -40968, 0, -39600, 0 }\r
     typeMap:bin { "0102" }\r
-    links:intvector { 571, 576, 584, 625 }\r
-  } //Z#576\r
+    links:intvector { 572, 577, 585, 626 }\r
+  } //Z#577\r
   /* Pacific/Palau */ :table {\r
     transPre32:intvector { -1, 2117482220 }\r
     typeOffsets:intvector { 32276, 0, 32400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#577\r
+  } //Z#578\r
   /* Pacific/Pitcairn */ :table {\r
     transPre32:intvector { -1, 2117545716 }\r
     trans:intvector { 893665800 }\r
     typeOffsets:intvector { -31220, 0, -30600, 0, -28800, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#578\r
+  } //Z#579\r
   /* Pacific/Pohnpei */ :table {\r
     transPre32:intvector { -1, 2117476524 }\r
     typeOffsets:intvector { 37972, 0, 39600, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 579, 580 }\r
-  } //Z#579\r
-  /* Pacific/Ponape */ :int { 579 } //Z#580\r
+    links:intvector { 580, 581 }\r
+  } //Z#580\r
+  /* Pacific/Ponape */ :int { 580 } //Z#581\r
   /* Pacific/Port_Moresby */ :table {\r
     transPre32:intvector { -1, 1454791176, -1, 1928176784 }\r
     typeOffsets:intvector { 35320, 0, 35312, 0, 36000, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#581\r
+  } //Z#582\r
   /* Pacific/Rarotonga */ :table {\r
     transPre32:intvector { -1, 2117552840 }\r
     trans:intvector { 279714600, 289387800, 309952800, 320837400, 341402400, 352287000, 372852000, 384341400, 404906400, 415791000, 436356000, 447240600, 467805600, 478690200, 499255200, 510139800, 530704800, 541589400, 562154400, 573643800, 594208800, 605093400, 625658400, 636543000, 657108000, 667992600 }\r
     typeOffsets:intvector { -38344, 0, -37800, 0, -36000, 0, -36000, 1800 }\r
     typeMap:bin { "010302030203020302030203020302030203020302030203020302" }\r
-  } //Z#582\r
-  /* Pacific/Saipan */ :int { 563 } //Z#583\r
-  /* Pacific/Samoa */ :int { 576 } //Z#584\r
+  } //Z#583\r
+  /* Pacific/Saipan */ :int { 564 } //Z#584\r
+  /* Pacific/Samoa */ :int { 577 } //Z#585\r
   /* Pacific/Tahiti */ :table {\r
     trans:intvector { -1806674504 }\r
     typeOffsets:intvector { -35896, 0, -36000, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#585\r
+  } //Z#586\r
   /* Pacific/Tarawa */ :table {\r
     transPre32:intvector { -1, 2117472972 }\r
     typeOffsets:intvector { 41524, 0, 43200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#586\r
+  } //Z#587\r
   /* Pacific/Tongatapu */ :table {\r
     transPre32:intvector { -1, 2117470136 }\r
     trans:intvector { -915193200, 939214800, 953384400, 973342800, 980596800, 1004792400, 1012046400, 1478350800, 1484398800, 1509800400 }\r
@@ -2759,28 +2756,28 @@ zoneinfo64:table(nofallback) {
     finalRule { "Tonga" }\r
     finalRaw:int { 46800 }\r
     finalYear:int { 2018 }\r
-  } //Z#587\r
-  /* Pacific/Truk */ :int { 553 } //Z#588\r
+  } //Z#588\r
+  /* Pacific/Truk */ :int { 554 } //Z#589\r
   /* Pacific/Wake */ :table {\r
     transPre32:intvector { -1, 2117474508 }\r
     typeOffsets:intvector { 39988, 0, 43200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#589\r
+  } //Z#590\r
   /* Pacific/Wallis */ :table {\r
     transPre32:intvector { -1, 2117470376 }\r
     typeOffsets:intvector { 44120, 0, 43200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#590\r
-  /* Pacific/Yap */ :int { 553 } //Z#591\r
-  /* Poland */ :int { 496 } //Z#592\r
-  /* Portugal */ :int { 461 } //Z#593\r
-  /* ROC */ :int { 315 } //Z#594\r
-  /* ROK */ :int { 311 } //Z#595\r
-  /* SST */ :int { 562 } //Z#596\r
-  /* Singapore */ :int { 313 } //Z#597\r
+  } //Z#591\r
+  /* Pacific/Yap */ :int { 554 } //Z#592\r
+  /* Poland */ :int { 497 } //Z#593\r
+  /* Portugal */ :int { 462 } //Z#594\r
+  /* ROC */ :int { 316 } //Z#595\r
+  /* ROK */ :int { 312 } //Z#596\r
+  /* SST */ :int { 563 } //Z#597\r
+  /* Singapore */ :int { 314 } //Z#598\r
   /* SystemV/AST4 */ :table {\r
     typeOffsets:intvector { -14400, 0 }\r
-  } //Z#598\r
+  } //Z#599\r
   /* SystemV/AST4ADT */ :table {\r
     transPre32:intvector { -1, 2096195296, -1, 2111916496, -1, 2127644896, -1, 2143366096 }\r
     trans:intvector { -2135872800, -2120151600, -2104423200, -2088702000, -2072973600, -2056647600, -2040919200, -2025198000, -2009469600, -1993748400, -1978020000, -1962298800, -1946570400, -1930849200, -1915120800, -1898794800, -1883671200, -1867345200, -1851616800, -1835895600, -1820167200, -1804446000, -1788717600, -1772996400, -1757268000, -1741546800, -1725818400, -1709492400, -1693764000, -1678042800, -1662314400, -1646593200, -1630864800, -1615143600, -1599415200, -1583694000, -1567965600, -1551639600, -1536516000, -1520190000, -1504461600, -1488740400, -1473012000, -1457290800, -1441562400, -1425841200, -1410112800, -1394391600, -1378663200, -1362337200, -1347213600, -1330887600, -1315159200, -1299438000, -1283709600, -1267988400, -1252260000, -1236538800, -1220810400, -1205089200, -1189360800, -1173034800, -1157306400, -1141585200, -1125856800, -1110135600, -1094407200, -1078686000, -1062957600, -1047236400, -1031508000, -1015182000, -1000058400, -983732400, -968004000, -952282800, -936554400, -920833200, -905104800, -889383600, -873655200, -857934000, -842205600, -825879600, -810151200, -794430000, -778701600, -762980400, -747252000, -731530800, -715802400, -700081200, -684352800, -668026800, -652903200, -636577200, -620848800, -605127600, -589399200, -573678000, -557949600, -542228400, -526500000, -510778800, -495050400, -478724400, -463600800, -447274800, -431546400, -415825200, -400096800, -384375600, -368647200, -352926000, -337197600, -321476400, -305748000, -289422000, -273693600, -257972400, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 126684000, 154501200, 162367200, 183531600, 199260000, 215586000 }\r
@@ -2789,10 +2786,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 1977 }\r
-  } //Z#599\r
+  } //Z#600\r
   /* SystemV/CST6 */ :table {\r
     typeOffsets:intvector { -21600, 0 }\r
-  } //Z#600\r
+  } //Z#601\r
   /* SystemV/CST6CDT */ :table {\r
     transPre32:intvector { -1, 2096202496, -1, 2111923696, -1, 2127652096, -1, 2143373296 }\r
     trans:intvector { -2135865600, -2120144400, -2104416000, -2088694800, -2072966400, -2056640400, -2040912000, -2025190800, -2009462400, -1993741200, -1978012800, -1962291600, -1946563200, -1930842000, -1915113600, -1898787600, -1883664000, -1867338000, -1851609600, -1835888400, -1820160000, -1804438800, -1788710400, -1772989200, -1757260800, -1741539600, -1725811200, -1709485200, -1693756800, -1678035600, -1662307200, -1646586000, -1630857600, -1615136400, -1599408000, -1583686800, -1567958400, -1551632400, -1536508800, -1520182800, -1504454400, -1488733200, -1473004800, -1457283600, -1441555200, -1425834000, -1410105600, -1394384400, -1378656000, -1362330000, -1347206400, -1330880400, -1315152000, -1299430800, -1283702400, -1267981200, -1252252800, -1236531600, -1220803200, -1205082000, -1189353600, -1173027600, -1157299200, -1141578000, -1125849600, -1110128400, -1094400000, -1078678800, -1062950400, -1047229200, -1031500800, -1015174800, -1000051200, -983725200, -967996800, -952275600, -936547200, -920826000, -905097600, -889376400, -873648000, -857926800, -842198400, -825872400, -810144000, -794422800, -778694400, -762973200, -747244800, -731523600, -715795200, -700074000, -684345600, -668019600, -652896000, -636570000, -620841600, -605120400, -589392000, -573670800, -557942400, -542221200, -526492800, -510771600, -495043200, -478717200, -463593600, -447267600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -131562000, -116438400, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 154508400, 162374400, 183538800, 199267200, 215593200 }\r
@@ -2801,10 +2798,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 1977 }\r
-  } //Z#601\r
+  } //Z#602\r
   /* SystemV/EST5 */ :table {\r
     typeOffsets:intvector { -18000, 0 }\r
-  } //Z#602\r
+  } //Z#603\r
   /* SystemV/EST5EDT */ :table {\r
     transPre32:intvector { -1, 2096198896, -1, 2111920096, -1, 2127648496, -1, 2143369696 }\r
     trans:intvector { -2135869200, -2120148000, -2104419600, -2088698400, -2072970000, -2056644000, -2040915600, -2025194400, -2009466000, -1993744800, -1978016400, -1962295200, -1946566800, -1930845600, -1915117200, -1898791200, -1883667600, -1867341600, -1851613200, -1835892000, -1820163600, -1804442400, -1788714000, -1772992800, -1757264400, -1741543200, -1725814800, -1709488800, -1693760400, -1678039200, -1662310800, -1646589600, -1630861200, -1615140000, -1599411600, -1583690400, -1567962000, -1551636000, -1536512400, -1520186400, -1504458000, -1488736800, -1473008400, -1457287200, -1441558800, -1425837600, -1410109200, -1394388000, -1378659600, -1362333600, -1347210000, -1330884000, -1315155600, -1299434400, -1283706000, -1267984800, -1252256400, -1236535200, -1220806800, -1205085600, -1189357200, -1173031200, -1157302800, -1141581600, -1125853200, -1110132000, -1094403600, -1078682400, -1062954000, -1047232800, -1031504400, -1015178400, -1000054800, -983728800, -968000400, -952279200, -936550800, -920829600, -905101200, -889380000, -873651600, -857930400, -842202000, -825876000, -810147600, -794426400, -778698000, -762976800, -747248400, -731527200, -715798800, -700077600, -684349200, -668023200, -652899600, -636573600, -620845200, -605124000, -589395600, -573674400, -557946000, -542224800, -526496400, -510775200, -495046800, -478720800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 154504800, 162370800, 183535200, 199263600, 215589600 }\r
@@ -2813,13 +2810,13 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 1977 }\r
-  } //Z#603\r
+  } //Z#604\r
   /* SystemV/HST10 */ :table {\r
     typeOffsets:intvector { -36000, 0 }\r
-  } //Z#604\r
+  } //Z#605\r
   /* SystemV/MST7 */ :table {\r
     typeOffsets:intvector { -25200, 0 }\r
-  } //Z#605\r
+  } //Z#606\r
   /* SystemV/MST7MDT */ :table {\r
     transPre32:intvector { -1, 2096206096, -1, 2111927296, -1, 2127655696, -1, 2143376896 }\r
     trans:intvector { -2135862000, -2120140800, -2104412400, -2088691200, -2072962800, -2056636800, -2040908400, -2025187200, -2009458800, -1993737600, -1978009200, -1962288000, -1946559600, -1930838400, -1915110000, -1898784000, -1883660400, -1867334400, -1851606000, -1835884800, -1820156400, -1804435200, -1788706800, -1772985600, -1757257200, -1741536000, -1725807600, -1709481600, -1693753200, -1678032000, -1662303600, -1646582400, -1630854000, -1615132800, -1599404400, -1583683200, -1567954800, -1551628800, -1536505200, -1520179200, -1504450800, -1488729600, -1473001200, -1457280000, -1441551600, -1425830400, -1410102000, -1394380800, -1378652400, -1362326400, -1347202800, -1330876800, -1315148400, -1299427200, -1283698800, -1267977600, -1252249200, -1236528000, -1220799600, -1205078400, -1189350000, -1173024000, -1157295600, -1141574400, -1125846000, -1110124800, -1094396400, -1078675200, -1062946800, -1047225600, -1031497200, -1015171200, -1000047600, -983721600, -967993200, -952272000, -936543600, -920822400, -905094000, -889372800, -873644400, -857923200, -842194800, -825868800, -810140400, -794419200, -778690800, -762969600, -747241200, -731520000, -715791600, -700070400, -684342000, -668016000, -652892400, -636566400, -620838000, -605116800, -589388400, -573667200, -557938800, -542217600, -526489200, -510768000, -495039600, -478713600, -463590000, -447264000, -431535600, -415814400, -400086000, -384364800, -368636400, -352915200, -337186800, -321465600, -305737200, -289411200, -273682800, -257961600, -242233200, -226512000, -210783600, -195062400, -179334000, -163612800, -147884400, -131558400, -116434800, -100108800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 154512000, 162378000, 183542400, 199270800, 215596800 }\r
@@ -2828,10 +2825,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 1977 }\r
-  } //Z#606\r
+  } //Z#607\r
   /* SystemV/PST8 */ :table {\r
     typeOffsets:intvector { -28800, 0 }\r
-  } //Z#607\r
+  } //Z#608\r
   /* SystemV/PST8PDT */ :table {\r
     transPre32:intvector { -1, 2096209696, -1, 2111930896, -1, 2127659296, -1, 2143380496 }\r
     trans:intvector { -2135858400, -2120137200, -2104408800, -2088687600, -2072959200, -2056633200, -2040904800, -2025183600, -2009455200, -1993734000, -1978005600, -1962284400, -1946556000, -1930834800, -1915106400, -1898780400, -1883656800, -1867330800, -1851602400, -1835881200, -1820152800, -1804431600, -1788703200, -1772982000, -1757253600, -1741532400, -1725804000, -1709478000, -1693749600, -1678028400, -1662300000, -1646578800, -1630850400, -1615129200, -1599400800, -1583679600, -1567951200, -1551625200, -1536501600, -1520175600, -1504447200, -1488726000, -1472997600, -1457276400, -1441548000, -1425826800, -1410098400, -1394377200, -1378648800, -1362322800, -1347199200, -1330873200, -1315144800, -1299423600, -1283695200, -1267974000, -1252245600, -1236524400, -1220796000, -1205074800, -1189346400, -1173020400, -1157292000, -1141570800, -1125842400, -1110121200, -1094392800, -1078671600, -1062943200, -1047222000, -1031493600, -1015167600, -1000044000, -983718000, -967989600, -952268400, -936540000, -920818800, -905090400, -889369200, -873640800, -857919600, -842191200, -825865200, -810136800, -794415600, -778687200, -762966000, -747237600, -731516400, -715788000, -700066800, -684338400, -668012400, -652888800, -636562800, -620834400, -605113200, -589384800, -573663600, -557935200, -542214000, -526485600, -510764400, -495036000, -478710000, -463586400, -447260400, -431532000, -415810800, -400082400, -384361200, -368632800, -352911600, -337183200, -321462000, -305733600, -289407600, -273679200, -257958000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 154515600, 162381600, 183546000, 199274400, 215600400 }\r
@@ -2840,10 +2837,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 1977 }\r
-  } //Z#608\r
+  } //Z#609\r
   /* SystemV/YST9 */ :table {\r
     typeOffsets:intvector { -32400, 0 }\r
-  } //Z#609\r
+  } //Z#610\r
   /* SystemV/YST9YDT */ :table {\r
     transPre32:intvector { -1, 2096213296, -1, 2111934496, -1, 2127662896, -1, 2143384096 }\r
     trans:intvector { -2135854800, -2120133600, -2104405200, -2088684000, -2072955600, -2056629600, -2040901200, -2025180000, -2009451600, -1993730400, -1978002000, -1962280800, -1946552400, -1930831200, -1915102800, -1898776800, -1883653200, -1867327200, -1851598800, -1835877600, -1820149200, -1804428000, -1788699600, -1772978400, -1757250000, -1741528800, -1725800400, -1709474400, -1693746000, -1678024800, -1662296400, -1646575200, -1630846800, -1615125600, -1599397200, -1583676000, -1567947600, -1551621600, -1536498000, -1520172000, -1504443600, -1488722400, -1472994000, -1457272800, -1441544400, -1425823200, -1410094800, -1394373600, -1378645200, -1362319200, -1347195600, -1330869600, -1315141200, -1299420000, -1283691600, -1267970400, -1252242000, -1236520800, -1220792400, -1205071200, -1189342800, -1173016800, -1157288400, -1141567200, -1125838800, -1110117600, -1094389200, -1078668000, -1062939600, -1047218400, -1031490000, -1015164000, -1000040400, -983714400, -967986000, -952264800, -936536400, -920815200, -905086800, -889365600, -873637200, -857916000, -842187600, -825861600, -810133200, -794412000, -778683600, -762962400, -747234000, -731512800, -715784400, -700063200, -684334800, -668008800, -652885200, -636559200, -620830800, -605109600, -589381200, -573660000, -557931600, -542210400, -526482000, -510760800, -495032400, -478706400, -463582800, -447256800, -431528400, -415807200, -400078800, -384357600, -368629200, -352908000, -337179600, -321458400, -305730000, -289404000, -273675600, -257954400, -242226000, -226504800, -210776400, -195055200, -179326800, -163605600, -147877200, -131551200, -116427600, -100101600, -84373200, -68652000, -52923600, -37202400, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 154519200, 162385200, 183549600, 199278000, 215604000 }\r
@@ -2852,26 +2849,26 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -32400 }\r
     finalYear:int { 1977 }\r
-  } //Z#610\r
-  /* Turkey */ :int { 456 } //Z#611\r
-  /* UCT */ :int { 432 } //Z#612\r
-  /* US/Alaska */ :int { 60 } //Z#613\r
-  /* US/Aleutian */ :int { 59 } //Z#614\r
-  /* US/Arizona */ :int { 184 } //Z#615\r
-  /* US/Central */ :int { 98 } //Z#616\r
-  /* US/East-Indiana */ :int { 131 } //Z#617\r
-  /* US/Eastern */ :int { 173 } //Z#618\r
-  /* US/Hawaii */ :int { 564 } //Z#619\r
-  /* US/Indiana-Starke */ :int { 132 } //Z#620\r
-  /* US/Michigan */ :int { 110 } //Z#621\r
-  /* US/Mountain */ :int { 109 } //Z#622\r
-  /* US/Pacific */ :int { 151 } //Z#623\r
-  /* US/Pacific-New */ :int { 151 } //Z#624\r
-  /* US/Samoa */ :int { 576 } //Z#625\r
-  /* UTC */ :int { 433 } //Z#626\r
-  /* Universal */ :int { 433 } //Z#627\r
-  /* VST */ :int { 270 } //Z#628\r
-  /* W-SU */ :int { 470 } //Z#629\r
+  } //Z#611\r
+  /* Turkey */ :int { 457 } //Z#612\r
+  /* UCT */ :int { 433 } //Z#613\r
+  /* US/Alaska */ :int { 60 } //Z#614\r
+  /* US/Aleutian */ :int { 59 } //Z#615\r
+  /* US/Arizona */ :int { 184 } //Z#616\r
+  /* US/Central */ :int { 98 } //Z#617\r
+  /* US/East-Indiana */ :int { 131 } //Z#618\r
+  /* US/Eastern */ :int { 173 } //Z#619\r
+  /* US/Hawaii */ :int { 565 } //Z#620\r
+  /* US/Indiana-Starke */ :int { 132 } //Z#621\r
+  /* US/Michigan */ :int { 110 } //Z#622\r
+  /* US/Mountain */ :int { 109 } //Z#623\r
+  /* US/Pacific */ :int { 151 } //Z#624\r
+  /* US/Pacific-New */ :int { 151 } //Z#625\r
+  /* US/Samoa */ :int { 577 } //Z#626\r
+  /* UTC */ :int { 434 } //Z#627\r
+  /* Universal */ :int { 434 } //Z#628\r
+  /* VST */ :int { 271 } //Z#629\r
+  /* W-SU */ :int { 471 } //Z#630\r
   /* WET */ :table {\r
     trans:intvector { 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 0, 0, 0, 3600 }\r
@@ -2879,8 +2876,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-  } //Z#630\r
-  /* Zulu */ :int { 433 } //Z#631\r
+  } //Z#631\r
+  /* Zulu */ :int { 434 } //Z#632\r
  }\r
  Names {\r
     "ACT","AET","AGT","ART","AST","Africa/Abidjan","Africa/Accra" // 6\r
@@ -2948,126 +2945,126 @@ zoneinfo64:table(nofallback) {
     ,"America/Panama","America/Pangnirtung","America/Paramaribo" // 183\r
     ,"America/Phoenix","America/Port-au-Prince","America/Port_of_Spain" // 186\r
     ,"America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico" // 189\r
-    ,"America/Rainy_River","America/Rankin_Inlet","America/Recife" // 192\r
-    ,"America/Regina","America/Resolute","America/Rio_Branco" // 195\r
-    ,"America/Rosario","America/Santa_Isabel","America/Santarem" // 198\r
-    ,"America/Santiago","America/Santo_Domingo","America/Sao_Paulo" // 201\r
-    ,"America/Scoresbysund","America/Shiprock","America/Sitka" // 204\r
-    ,"America/St_Barthelemy","America/St_Johns","America/St_Kitts" // 207\r
-    ,"America/St_Lucia","America/St_Thomas","America/St_Vincent" // 210\r
-    ,"America/Swift_Current","America/Tegucigalpa","America/Thule" // 213\r
-    ,"America/Thunder_Bay","America/Tijuana","America/Toronto" // 216\r
-    ,"America/Tortola","America/Vancouver","America/Virgin" // 219\r
-    ,"America/Whitehorse","America/Winnipeg","America/Yakutat" // 222\r
-    ,"America/Yellowknife","Antarctica/Casey","Antarctica/Davis" // 225\r
-    ,"Antarctica/DumontDUrville","Antarctica/Macquarie" // 227\r
-    ,"Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer" // 230\r
-    ,"Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa" // 233\r
-    ,"Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen" // 236\r
-    ,"Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr" // 240\r
-    ,"Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad" // 244\r
-    ,"Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku" // 248\r
-    ,"Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek" // 252\r
-    ,"Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan" // 256\r
-    ,"Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca" // 260\r
-    ,"Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai" // 264\r
-    ,"Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin" // 268\r
-    ,"Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong" // 271\r
-    ,"Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta" // 275\r
-    ,"Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka" // 279\r
-    ,"Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu" // 283\r
-    ,"Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk" // 286\r
-    ,"Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao" // 290\r
-    ,"Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila" // 294\r
-    ,"Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk" // 298\r
-    ,"Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak" // 302\r
-    ,"Asia/Pyongyang","Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon" // 306\r
-    ,"Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand" // 310\r
-    ,"Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk" // 314\r
-    ,"Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran" // 318\r
-    ,"Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo" // 322\r
-    ,"Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar" // 325\r
-    ,"Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane" // 329\r
-    ,"Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg" // 333\r
-    ,"Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda" // 336\r
-    ,"Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe" // 339\r
-    ,"Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira" // 342\r
-    ,"Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena" // 345\r
-    ,"Atlantic/Stanley","Australia/ACT","Australia/Adelaide" // 348\r
-    ,"Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra" // 351\r
-    ,"Australia/Currie","Australia/Darwin","Australia/Eucla" // 354\r
-    ,"Australia/Hobart","Australia/LHI","Australia/Lindeman" // 357\r
-    ,"Australia/Lord_Howe","Australia/Melbourne","Australia/NSW" // 360\r
-    ,"Australia/North","Australia/Perth","Australia/Queensland" // 363\r
-    ,"Australia/South","Australia/Sydney","Australia/Tasmania" // 366\r
-    ,"Australia/Victoria","Australia/West","Australia/Yancowinna" // 369\r
-    ,"BET","BST","Brazil/Acre","Brazil/DeNoronha","Brazil/East" // 374\r
-    ,"Brazil/West","CAT","CET","CNT","CST","CST6CDT","CTT" // 381\r
-    ,"Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan" // 384\r
-    ,"Canada/Eastern","Canada/Mountain","Canada/Newfoundland" // 387\r
-    ,"Canada/Pacific","Canada/Saskatchewan","Canada/Yukon" // 390\r
-    ,"Chile/Continental","Chile/EasterIsland","Cuba","EAT" // 394\r
-    ,"ECT","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT" // 401\r
-    ,"Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11" // 405\r
-    ,"Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5" // 410\r
-    ,"Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0" // 415\r
-    ,"Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12" // 419\r
-    ,"Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3" // 423\r
-    ,"Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8" // 428\r
-    ,"Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC" // 433\r
-    ,"Etc/Universal","Etc/Unknown","Etc/Zulu","Europe/Amsterdam" // 437\r
-    ,"Europe/Andorra","Europe/Astrakhan","Europe/Athens" // 440\r
-    ,"Europe/Belfast","Europe/Belgrade","Europe/Berlin" // 443\r
-    ,"Europe/Bratislava","Europe/Brussels","Europe/Bucharest" // 446\r
-    ,"Europe/Budapest","Europe/Busingen","Europe/Chisinau" // 449\r
-    ,"Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar" // 452\r
-    ,"Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man" // 455\r
-    ,"Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad" // 458\r
-    ,"Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana" // 462\r
-    ,"Europe/London","Europe/Luxembourg","Europe/Madrid" // 465\r
-    ,"Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco" // 469\r
-    ,"Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris" // 473\r
-    ,"Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome" // 477\r
-    ,"Europe/Samara","Europe/San_Marino","Europe/Sarajevo" // 480\r
-    ,"Europe/Saratov","Europe/Simferopol","Europe/Skopje" // 483\r
-    ,"Europe/Sofia","Europe/Stockholm","Europe/Tallinn" // 486\r
-    ,"Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk" // 489\r
-    ,"Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican" // 492\r
-    ,"Europe/Vienna","Europe/Vilnius","Europe/Volgograd" // 495\r
-    ,"Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye" // 498\r
-    ,"Europe/Zurich","Factory","GB","GB-Eire","GMT","GMT+0" // 504\r
-    ,"GMT-0","GMT0","Greenwich","HST","Hongkong","IET" // 510\r
-    ,"IST","Iceland","Indian/Antananarivo","Indian/Chagos" // 514\r
-    ,"Indian/Christmas","Indian/Cocos","Indian/Comoro" // 517\r
-    ,"Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 520\r
-    ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 523\r
-    ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 529\r
-    ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 535\r
-    ,"Mexico/BajaSur","Mexico/General","NET","NST","NZ" // 540\r
-    ,"NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST","PST8PDT" // 548\r
-    ,"Pacific/Apia","Pacific/Auckland","Pacific/Bougainville" // 551\r
-    ,"Pacific/Chatham","Pacific/Chuuk","Pacific/Easter" // 554\r
-    ,"Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo" // 557\r
-    ,"Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos" // 560\r
-    ,"Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam" // 563\r
-    ,"Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati" // 566\r
-    ,"Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro" // 569\r
-    ,"Pacific/Marquesas","Pacific/Midway","Pacific/Nauru" // 572\r
-    ,"Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 575\r
-    ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 578\r
-    ,"Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby" // 581\r
-    ,"Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa" // 584\r
-    ,"Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu" // 587\r
-    ,"Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap" // 591\r
-    ,"Poland","Portugal","ROC","ROK","SST","Singapore" // 597\r
-    ,"SystemV/AST4","SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT" // 601\r
-    ,"SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7" // 605\r
-    ,"SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT" // 608\r
-    ,"SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","US/Alaska" // 613\r
-    ,"US/Aleutian","US/Arizona","US/Central","US/East-Indiana" // 617\r
-    ,"US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan" // 621\r
-    ,"US/Mountain","US/Pacific","US/Pacific-New","US/Samoa" // 625\r
-    ,"UTC","Universal","VST","W-SU","WET","Zulu" // 631\r
+    ,"America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet" // 192\r
+    ,"America/Recife","America/Regina","America/Resolute" // 195\r
+    ,"America/Rio_Branco","America/Rosario","America/Santa_Isabel" // 198\r
+    ,"America/Santarem","America/Santiago","America/Santo_Domingo" // 201\r
+    ,"America/Sao_Paulo","America/Scoresbysund","America/Shiprock" // 204\r
+    ,"America/Sitka","America/St_Barthelemy","America/St_Johns" // 207\r
+    ,"America/St_Kitts","America/St_Lucia","America/St_Thomas" // 210\r
+    ,"America/St_Vincent","America/Swift_Current","America/Tegucigalpa" // 213\r
+    ,"America/Thule","America/Thunder_Bay","America/Tijuana" // 216\r
+    ,"America/Toronto","America/Tortola","America/Vancouver" // 219\r
+    ,"America/Virgin","America/Whitehorse","America/Winnipeg" // 222\r
+    ,"America/Yakutat","America/Yellowknife","Antarctica/Casey" // 225\r
+    ,"Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie" // 228\r
+    ,"Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer" // 231\r
+    ,"Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa" // 234\r
+    ,"Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen" // 237\r
+    ,"Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr" // 241\r
+    ,"Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad" // 245\r
+    ,"Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku" // 249\r
+    ,"Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek" // 253\r
+    ,"Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan" // 257\r
+    ,"Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca" // 261\r
+    ,"Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai" // 265\r
+    ,"Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin" // 269\r
+    ,"Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong" // 272\r
+    ,"Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta" // 276\r
+    ,"Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka" // 280\r
+    ,"Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu" // 284\r
+    ,"Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk" // 287\r
+    ,"Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao" // 291\r
+    ,"Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila" // 295\r
+    ,"Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk" // 299\r
+    ,"Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak" // 303\r
+    ,"Asia/Pyongyang","Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon" // 307\r
+    ,"Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand" // 311\r
+    ,"Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk" // 315\r
+    ,"Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran" // 319\r
+    ,"Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo" // 323\r
+    ,"Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar" // 326\r
+    ,"Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane" // 330\r
+    ,"Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg" // 334\r
+    ,"Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda" // 337\r
+    ,"Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe" // 340\r
+    ,"Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira" // 343\r
+    ,"Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena" // 346\r
+    ,"Atlantic/Stanley","Australia/ACT","Australia/Adelaide" // 349\r
+    ,"Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra" // 352\r
+    ,"Australia/Currie","Australia/Darwin","Australia/Eucla" // 355\r
+    ,"Australia/Hobart","Australia/LHI","Australia/Lindeman" // 358\r
+    ,"Australia/Lord_Howe","Australia/Melbourne","Australia/NSW" // 361\r
+    ,"Australia/North","Australia/Perth","Australia/Queensland" // 364\r
+    ,"Australia/South","Australia/Sydney","Australia/Tasmania" // 367\r
+    ,"Australia/Victoria","Australia/West","Australia/Yancowinna" // 370\r
+    ,"BET","BST","Brazil/Acre","Brazil/DeNoronha","Brazil/East" // 375\r
+    ,"Brazil/West","CAT","CET","CNT","CST","CST6CDT","CTT" // 382\r
+    ,"Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan" // 385\r
+    ,"Canada/Eastern","Canada/Mountain","Canada/Newfoundland" // 388\r
+    ,"Canada/Pacific","Canada/Saskatchewan","Canada/Yukon" // 391\r
+    ,"Chile/Continental","Chile/EasterIsland","Cuba","EAT" // 395\r
+    ,"ECT","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT" // 402\r
+    ,"Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11" // 406\r
+    ,"Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5" // 411\r
+    ,"Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0" // 416\r
+    ,"Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12" // 420\r
+    ,"Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3" // 424\r
+    ,"Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8" // 429\r
+    ,"Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC" // 434\r
+    ,"Etc/Universal","Etc/Unknown","Etc/Zulu","Europe/Amsterdam" // 438\r
+    ,"Europe/Andorra","Europe/Astrakhan","Europe/Athens" // 441\r
+    ,"Europe/Belfast","Europe/Belgrade","Europe/Berlin" // 444\r
+    ,"Europe/Bratislava","Europe/Brussels","Europe/Bucharest" // 447\r
+    ,"Europe/Budapest","Europe/Busingen","Europe/Chisinau" // 450\r
+    ,"Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar" // 453\r
+    ,"Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man" // 456\r
+    ,"Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad" // 459\r
+    ,"Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana" // 463\r
+    ,"Europe/London","Europe/Luxembourg","Europe/Madrid" // 466\r
+    ,"Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco" // 470\r
+    ,"Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris" // 474\r
+    ,"Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome" // 478\r
+    ,"Europe/Samara","Europe/San_Marino","Europe/Sarajevo" // 481\r
+    ,"Europe/Saratov","Europe/Simferopol","Europe/Skopje" // 484\r
+    ,"Europe/Sofia","Europe/Stockholm","Europe/Tallinn" // 487\r
+    ,"Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk" // 490\r
+    ,"Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican" // 493\r
+    ,"Europe/Vienna","Europe/Vilnius","Europe/Volgograd" // 496\r
+    ,"Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye" // 499\r
+    ,"Europe/Zurich","Factory","GB","GB-Eire","GMT","GMT+0" // 505\r
+    ,"GMT-0","GMT0","Greenwich","HST","Hongkong","IET" // 511\r
+    ,"IST","Iceland","Indian/Antananarivo","Indian/Chagos" // 515\r
+    ,"Indian/Christmas","Indian/Cocos","Indian/Comoro" // 518\r
+    ,"Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 521\r
+    ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 524\r
+    ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 530\r
+    ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 536\r
+    ,"Mexico/BajaSur","Mexico/General","NET","NST","NZ" // 541\r
+    ,"NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST","PST8PDT" // 549\r
+    ,"Pacific/Apia","Pacific/Auckland","Pacific/Bougainville" // 552\r
+    ,"Pacific/Chatham","Pacific/Chuuk","Pacific/Easter" // 555\r
+    ,"Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo" // 558\r
+    ,"Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos" // 561\r
+    ,"Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam" // 564\r
+    ,"Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati" // 567\r
+    ,"Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro" // 570\r
+    ,"Pacific/Marquesas","Pacific/Midway","Pacific/Nauru" // 573\r
+    ,"Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 576\r
+    ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 579\r
+    ,"Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby" // 582\r
+    ,"Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa" // 585\r
+    ,"Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu" // 588\r
+    ,"Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap" // 592\r
+    ,"Poland","Portugal","ROC","ROK","SST","Singapore" // 598\r
+    ,"SystemV/AST4","SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT" // 602\r
+    ,"SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7" // 606\r
+    ,"SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT" // 609\r
+    ,"SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","US/Alaska" // 614\r
+    ,"US/Aleutian","US/Arizona","US/Central","US/East-Indiana" // 618\r
+    ,"US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan" // 622\r
+    ,"US/Mountain","US/Pacific","US/Pacific-New","US/Samoa" // 626\r
+    ,"UTC","Universal","VST","W-SU","WET","Zulu" // 632\r
  }\r
  Rules { \r
   AN:intvector {\r
@@ -3109,26 +3106,26 @@ zoneinfo64:table(nofallback) {
   Fiji:intvector {\r
     10, 1, -1, 7200, 0, 0, 15, -1, 10800, 0, 3600\r
   } //_#12\r
+  Haiti:intvector {\r
+    2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600\r
+  } //_#13\r
   Iran:intvector {\r
     2, 21, 0, 0, 0, 8, 21, 0, 0, 0, 3600\r
-  } //_#13\r
+  } //_#14\r
   Jordan:intvector {\r
     2, -31, -5, 86400, 0, 9, -31, -6, 0, 1, 3600\r
-  } //_#14\r
+  } //_#15\r
   LH:intvector {\r
     9, 1, -1, 7200, 0, 3, 1, -1, 7200, 0, 1800\r
-  } //_#15\r
+  } //_#16\r
   Lebanon:intvector {\r
     2, -31, -1, 0, 0, 9, -31, -1, 0, 0, 3600\r
-  } //_#16\r
+  } //_#17\r
   Mexico:intvector {\r
     3, 1, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600\r
-  } //_#17\r
+  } //_#18\r
   Moldova:intvector {\r
     2, -31, -1, 7200, 0, 9, -31, -1, 10800, 0, 3600\r
-  } //_#18\r
-  Mongol:intvector {\r
-    2, -31, -7, 7200, 0, 8, -30, -7, 0, 0, 3600\r
   } //_#19\r
   Morocco:intvector {\r
     2, -31, -1, 7200, 0, 9, -31, -1, 10800, 0, 3600\r
@@ -3361,447 +3358,448 @@ zoneinfo64:table(nofallback) {
   "BR", //Z#187 America/Porto_Acre\r
   "BR", //Z#188 America/Porto_Velho\r
   "PR", //Z#189 America/Puerto_Rico\r
-  "CA", //Z#190 America/Rainy_River\r
-  "CA", //Z#191 America/Rankin_Inlet\r
-  "BR", //Z#192 America/Recife\r
-  "CA", //Z#193 America/Regina\r
-  "CA", //Z#194 America/Resolute\r
-  "BR", //Z#195 America/Rio_Branco\r
-  "AR", //Z#196 America/Rosario\r
-  "MX", //Z#197 America/Santa_Isabel\r
-  "BR", //Z#198 America/Santarem\r
-  "CL", //Z#199 America/Santiago\r
-  "DO", //Z#200 America/Santo_Domingo\r
-  "BR", //Z#201 America/Sao_Paulo\r
-  "GL", //Z#202 America/Scoresbysund\r
-  "US", //Z#203 America/Shiprock\r
-  "US", //Z#204 America/Sitka\r
-  "BL", //Z#205 America/St_Barthelemy\r
-  "CA", //Z#206 America/St_Johns\r
-  "KN", //Z#207 America/St_Kitts\r
-  "LC", //Z#208 America/St_Lucia\r
-  "VI", //Z#209 America/St_Thomas\r
-  "VC", //Z#210 America/St_Vincent\r
-  "CA", //Z#211 America/Swift_Current\r
-  "HN", //Z#212 America/Tegucigalpa\r
-  "GL", //Z#213 America/Thule\r
-  "CA", //Z#214 America/Thunder_Bay\r
-  "MX", //Z#215 America/Tijuana\r
-  "CA", //Z#216 America/Toronto\r
-  "VG", //Z#217 America/Tortola\r
-  "CA", //Z#218 America/Vancouver\r
-  "TT", //Z#219 America/Virgin\r
-  "CA", //Z#220 America/Whitehorse\r
-  "CA", //Z#221 America/Winnipeg\r
-  "US", //Z#222 America/Yakutat\r
-  "CA", //Z#223 America/Yellowknife\r
-  "AQ", //Z#224 Antarctica/Casey\r
-  "AQ", //Z#225 Antarctica/Davis\r
-  "AQ", //Z#226 Antarctica/DumontDUrville\r
-  "AU", //Z#227 Antarctica/Macquarie\r
-  "AQ", //Z#228 Antarctica/Mawson\r
-  "AQ", //Z#229 Antarctica/McMurdo\r
-  "AQ", //Z#230 Antarctica/Palmer\r
-  "AQ", //Z#231 Antarctica/Rothera\r
-  "NZ", //Z#232 Antarctica/South_Pole\r
-  "AQ", //Z#233 Antarctica/Syowa\r
-  "AQ", //Z#234 Antarctica/Troll\r
-  "AQ", //Z#235 Antarctica/Vostok\r
-  "SJ", //Z#236 Arctic/Longyearbyen\r
-  "YE", //Z#237 Asia/Aden\r
-  "KZ", //Z#238 Asia/Almaty\r
-  "JO", //Z#239 Asia/Amman\r
-  "RU", //Z#240 Asia/Anadyr\r
-  "KZ", //Z#241 Asia/Aqtau\r
-  "KZ", //Z#242 Asia/Aqtobe\r
-  "TM", //Z#243 Asia/Ashgabat\r
-  "TM", //Z#244 Asia/Ashkhabad\r
-  "KZ", //Z#245 Asia/Atyrau\r
-  "IQ", //Z#246 Asia/Baghdad\r
-  "BH", //Z#247 Asia/Bahrain\r
-  "AZ", //Z#248 Asia/Baku\r
-  "TH", //Z#249 Asia/Bangkok\r
-  "RU", //Z#250 Asia/Barnaul\r
-  "LB", //Z#251 Asia/Beirut\r
-  "KG", //Z#252 Asia/Bishkek\r
-  "BN", //Z#253 Asia/Brunei\r
-  "IN", //Z#254 Asia/Calcutta\r
-  "RU", //Z#255 Asia/Chita\r
-  "MN", //Z#256 Asia/Choibalsan\r
-  "CN", //Z#257 Asia/Chongqing\r
-  "CN", //Z#258 Asia/Chungking\r
-  "LK", //Z#259 Asia/Colombo\r
-  "BD", //Z#260 Asia/Dacca\r
-  "SY", //Z#261 Asia/Damascus\r
-  "BD", //Z#262 Asia/Dhaka\r
-  "TL", //Z#263 Asia/Dili\r
-  "AE", //Z#264 Asia/Dubai\r
-  "TJ", //Z#265 Asia/Dushanbe\r
-  "CY", //Z#266 Asia/Famagusta\r
-  "PS", //Z#267 Asia/Gaza\r
-  "CN", //Z#268 Asia/Harbin\r
-  "PS", //Z#269 Asia/Hebron\r
-  "VN", //Z#270 Asia/Ho_Chi_Minh\r
-  "HK", //Z#271 Asia/Hong_Kong\r
-  "MN", //Z#272 Asia/Hovd\r
-  "RU", //Z#273 Asia/Irkutsk\r
-  "TR", //Z#274 Asia/Istanbul\r
-  "ID", //Z#275 Asia/Jakarta\r
-  "ID", //Z#276 Asia/Jayapura\r
-  "IL", //Z#277 Asia/Jerusalem\r
-  "AF", //Z#278 Asia/Kabul\r
-  "RU", //Z#279 Asia/Kamchatka\r
-  "PK", //Z#280 Asia/Karachi\r
-  "CN", //Z#281 Asia/Kashgar\r
-  "NP", //Z#282 Asia/Kathmandu\r
-  "NP", //Z#283 Asia/Katmandu\r
-  "RU", //Z#284 Asia/Khandyga\r
-  "IN", //Z#285 Asia/Kolkata\r
-  "RU", //Z#286 Asia/Krasnoyarsk\r
-  "MY", //Z#287 Asia/Kuala_Lumpur\r
-  "MY", //Z#288 Asia/Kuching\r
-  "KW", //Z#289 Asia/Kuwait\r
-  "MO", //Z#290 Asia/Macao\r
-  "MO", //Z#291 Asia/Macau\r
-  "RU", //Z#292 Asia/Magadan\r
-  "ID", //Z#293 Asia/Makassar\r
-  "PH", //Z#294 Asia/Manila\r
-  "OM", //Z#295 Asia/Muscat\r
-  "CY", //Z#296 Asia/Nicosia\r
-  "RU", //Z#297 Asia/Novokuznetsk\r
-  "RU", //Z#298 Asia/Novosibirsk\r
-  "RU", //Z#299 Asia/Omsk\r
-  "KZ", //Z#300 Asia/Oral\r
-  "KH", //Z#301 Asia/Phnom_Penh\r
-  "ID", //Z#302 Asia/Pontianak\r
-  "KP", //Z#303 Asia/Pyongyang\r
-  "QA", //Z#304 Asia/Qatar\r
-  "KZ", //Z#305 Asia/Qyzylorda\r
-  "MM", //Z#306 Asia/Rangoon\r
-  "SA", //Z#307 Asia/Riyadh\r
-  "VN", //Z#308 Asia/Saigon\r
-  "RU", //Z#309 Asia/Sakhalin\r
-  "UZ", //Z#310 Asia/Samarkand\r
-  "KR", //Z#311 Asia/Seoul\r
-  "CN", //Z#312 Asia/Shanghai\r
-  "SG", //Z#313 Asia/Singapore\r
-  "RU", //Z#314 Asia/Srednekolymsk\r
-  "TW", //Z#315 Asia/Taipei\r
-  "UZ", //Z#316 Asia/Tashkent\r
-  "GE", //Z#317 Asia/Tbilisi\r
-  "IR", //Z#318 Asia/Tehran\r
-  "IL", //Z#319 Asia/Tel_Aviv\r
-  "BT", //Z#320 Asia/Thimbu\r
-  "BT", //Z#321 Asia/Thimphu\r
-  "JP", //Z#322 Asia/Tokyo\r
-  "RU", //Z#323 Asia/Tomsk\r
-  "ID", //Z#324 Asia/Ujung_Pandang\r
-  "MN", //Z#325 Asia/Ulaanbaatar\r
-  "MN", //Z#326 Asia/Ulan_Bator\r
-  "CN", //Z#327 Asia/Urumqi\r
-  "RU", //Z#328 Asia/Ust-Nera\r
-  "LA", //Z#329 Asia/Vientiane\r
-  "RU", //Z#330 Asia/Vladivostok\r
-  "RU", //Z#331 Asia/Yakutsk\r
-  "MM", //Z#332 Asia/Yangon\r
-  "RU", //Z#333 Asia/Yekaterinburg\r
-  "AM", //Z#334 Asia/Yerevan\r
-  "PT", //Z#335 Atlantic/Azores\r
-  "BM", //Z#336 Atlantic/Bermuda\r
-  "ES", //Z#337 Atlantic/Canary\r
-  "CV", //Z#338 Atlantic/Cape_Verde\r
-  "FO", //Z#339 Atlantic/Faeroe\r
-  "FO", //Z#340 Atlantic/Faroe\r
-  "NO", //Z#341 Atlantic/Jan_Mayen\r
-  "PT", //Z#342 Atlantic/Madeira\r
-  "IS", //Z#343 Atlantic/Reykjavik\r
-  "GS", //Z#344 Atlantic/South_Georgia\r
-  "SH", //Z#345 Atlantic/St_Helena\r
-  "FK", //Z#346 Atlantic/Stanley\r
-  "AU", //Z#347 Australia/ACT\r
-  "AU", //Z#348 Australia/Adelaide\r
-  "AU", //Z#349 Australia/Brisbane\r
-  "AU", //Z#350 Australia/Broken_Hill\r
-  "AU", //Z#351 Australia/Canberra\r
-  "AU", //Z#352 Australia/Currie\r
-  "AU", //Z#353 Australia/Darwin\r
-  "AU", //Z#354 Australia/Eucla\r
-  "AU", //Z#355 Australia/Hobart\r
-  "AU", //Z#356 Australia/LHI\r
-  "AU", //Z#357 Australia/Lindeman\r
-  "AU", //Z#358 Australia/Lord_Howe\r
-  "AU", //Z#359 Australia/Melbourne\r
-  "AU", //Z#360 Australia/NSW\r
-  "AU", //Z#361 Australia/North\r
-  "AU", //Z#362 Australia/Perth\r
-  "AU", //Z#363 Australia/Queensland\r
-  "AU", //Z#364 Australia/South\r
-  "AU", //Z#365 Australia/Sydney\r
-  "AU", //Z#366 Australia/Tasmania\r
-  "AU", //Z#367 Australia/Victoria\r
-  "AU", //Z#368 Australia/West\r
-  "AU", //Z#369 Australia/Yancowinna\r
-  "BR", //Z#370 BET\r
-  "BD", //Z#371 BST\r
-  "BR", //Z#372 Brazil/Acre\r
-  "BR", //Z#373 Brazil/DeNoronha\r
-  "BR", //Z#374 Brazil/East\r
-  "BR", //Z#375 Brazil/West\r
-  "MZ", //Z#376 CAT\r
-  "001",//Z#377 CET\r
-  "CA", //Z#378 CNT\r
-  "US", //Z#379 CST\r
-  "001",//Z#380 CST6CDT\r
-  "CN", //Z#381 CTT\r
-  "CA", //Z#382 Canada/Atlantic\r
-  "CA", //Z#383 Canada/Central\r
-  "CA", //Z#384 Canada/East-Saskatchewan\r
-  "CA", //Z#385 Canada/Eastern\r
-  "CA", //Z#386 Canada/Mountain\r
-  "CA", //Z#387 Canada/Newfoundland\r
-  "CA", //Z#388 Canada/Pacific\r
-  "CA", //Z#389 Canada/Saskatchewan\r
-  "CA", //Z#390 Canada/Yukon\r
-  "CL", //Z#391 Chile/Continental\r
-  "CL", //Z#392 Chile/EasterIsland\r
-  "CU", //Z#393 Cuba\r
-  "KE", //Z#394 EAT\r
-  "FR", //Z#395 ECT\r
-  "001",//Z#396 EET\r
-  "001",//Z#397 EST\r
-  "001",//Z#398 EST5EDT\r
-  "EG", //Z#399 Egypt\r
-  "IE", //Z#400 Eire\r
-  "001",//Z#401 Etc/GMT\r
-  "001",//Z#402 Etc/GMT+0\r
-  "001",//Z#403 Etc/GMT+1\r
-  "001",//Z#404 Etc/GMT+10\r
-  "001",//Z#405 Etc/GMT+11\r
-  "001",//Z#406 Etc/GMT+12\r
-  "001",//Z#407 Etc/GMT+2\r
-  "001",//Z#408 Etc/GMT+3\r
-  "001",//Z#409 Etc/GMT+4\r
-  "001",//Z#410 Etc/GMT+5\r
-  "001",//Z#411 Etc/GMT+6\r
-  "001",//Z#412 Etc/GMT+7\r
-  "001",//Z#413 Etc/GMT+8\r
-  "001",//Z#414 Etc/GMT+9\r
-  "001",//Z#415 Etc/GMT-0\r
-  "001",//Z#416 Etc/GMT-1\r
-  "001",//Z#417 Etc/GMT-10\r
-  "001",//Z#418 Etc/GMT-11\r
-  "001",//Z#419 Etc/GMT-12\r
-  "001",//Z#420 Etc/GMT-13\r
-  "001",//Z#421 Etc/GMT-14\r
-  "001",//Z#422 Etc/GMT-2\r
-  "001",//Z#423 Etc/GMT-3\r
-  "001",//Z#424 Etc/GMT-4\r
-  "001",//Z#425 Etc/GMT-5\r
-  "001",//Z#426 Etc/GMT-6\r
-  "001",//Z#427 Etc/GMT-7\r
-  "001",//Z#428 Etc/GMT-8\r
-  "001",//Z#429 Etc/GMT-9\r
-  "001",//Z#430 Etc/GMT0\r
-  "001",//Z#431 Etc/Greenwich\r
-  "001",//Z#432 Etc/UCT\r
-  "001",//Z#433 Etc/UTC\r
-  "001",//Z#434 Etc/Universal\r
-  "001",//Z#435 Etc/Unknown\r
-  "001",//Z#436 Etc/Zulu\r
-  "NL", //Z#437 Europe/Amsterdam\r
-  "AD", //Z#438 Europe/Andorra\r
-  "RU", //Z#439 Europe/Astrakhan\r
-  "GR", //Z#440 Europe/Athens\r
-  "GB", //Z#441 Europe/Belfast\r
-  "RS", //Z#442 Europe/Belgrade\r
-  "DE", //Z#443 Europe/Berlin\r
-  "SK", //Z#444 Europe/Bratislava\r
-  "BE", //Z#445 Europe/Brussels\r
-  "RO", //Z#446 Europe/Bucharest\r
-  "HU", //Z#447 Europe/Budapest\r
-  "DE", //Z#448 Europe/Busingen\r
-  "MD", //Z#449 Europe/Chisinau\r
-  "DK", //Z#450 Europe/Copenhagen\r
-  "IE", //Z#451 Europe/Dublin\r
-  "GI", //Z#452 Europe/Gibraltar\r
-  "GG", //Z#453 Europe/Guernsey\r
-  "FI", //Z#454 Europe/Helsinki\r
-  "IM", //Z#455 Europe/Isle_of_Man\r
-  "TR", //Z#456 Europe/Istanbul\r
-  "JE", //Z#457 Europe/Jersey\r
-  "RU", //Z#458 Europe/Kaliningrad\r
-  "UA", //Z#459 Europe/Kiev\r
-  "RU", //Z#460 Europe/Kirov\r
-  "PT", //Z#461 Europe/Lisbon\r
-  "SI", //Z#462 Europe/Ljubljana\r
-  "GB", //Z#463 Europe/London\r
-  "LU", //Z#464 Europe/Luxembourg\r
-  "ES", //Z#465 Europe/Madrid\r
-  "MT", //Z#466 Europe/Malta\r
-  "AX", //Z#467 Europe/Mariehamn\r
-  "BY", //Z#468 Europe/Minsk\r
-  "MC", //Z#469 Europe/Monaco\r
-  "RU", //Z#470 Europe/Moscow\r
-  "CY", //Z#471 Europe/Nicosia\r
-  "NO", //Z#472 Europe/Oslo\r
-  "FR", //Z#473 Europe/Paris\r
-  "ME", //Z#474 Europe/Podgorica\r
-  "CZ", //Z#475 Europe/Prague\r
-  "LV", //Z#476 Europe/Riga\r
-  "IT", //Z#477 Europe/Rome\r
-  "RU", //Z#478 Europe/Samara\r
-  "SM", //Z#479 Europe/San_Marino\r
-  "BA", //Z#480 Europe/Sarajevo\r
-  "RU", //Z#481 Europe/Saratov\r
-  "UA", //Z#482 Europe/Simferopol\r
-  "MK", //Z#483 Europe/Skopje\r
-  "BG", //Z#484 Europe/Sofia\r
-  "SE", //Z#485 Europe/Stockholm\r
-  "EE", //Z#486 Europe/Tallinn\r
-  "AL", //Z#487 Europe/Tirane\r
-  "MD", //Z#488 Europe/Tiraspol\r
-  "RU", //Z#489 Europe/Ulyanovsk\r
-  "UA", //Z#490 Europe/Uzhgorod\r
-  "LI", //Z#491 Europe/Vaduz\r
-  "VA", //Z#492 Europe/Vatican\r
-  "AT", //Z#493 Europe/Vienna\r
-  "LT", //Z#494 Europe/Vilnius\r
-  "RU", //Z#495 Europe/Volgograd\r
-  "PL", //Z#496 Europe/Warsaw\r
-  "HR", //Z#497 Europe/Zagreb\r
-  "UA", //Z#498 Europe/Zaporozhye\r
-  "CH", //Z#499 Europe/Zurich\r
-  "001",//Z#500 Factory\r
-  "GB", //Z#501 GB\r
-  "GB", //Z#502 GB-Eire\r
-  "001",//Z#503 GMT\r
-  "001",//Z#504 GMT+0\r
-  "001",//Z#505 GMT-0\r
-  "001",//Z#506 GMT0\r
-  "001",//Z#507 Greenwich\r
-  "001",//Z#508 HST\r
-  "HK", //Z#509 Hongkong\r
-  "US", //Z#510 IET\r
-  "IN", //Z#511 IST\r
-  "IS", //Z#512 Iceland\r
-  "MG", //Z#513 Indian/Antananarivo\r
-  "IO", //Z#514 Indian/Chagos\r
-  "CX", //Z#515 Indian/Christmas\r
-  "CC", //Z#516 Indian/Cocos\r
-  "KM", //Z#517 Indian/Comoro\r
-  "TF", //Z#518 Indian/Kerguelen\r
-  "SC", //Z#519 Indian/Mahe\r
-  "MV", //Z#520 Indian/Maldives\r
-  "MU", //Z#521 Indian/Mauritius\r
-  "YT", //Z#522 Indian/Mayotte\r
-  "RE", //Z#523 Indian/Reunion\r
-  "IR", //Z#524 Iran\r
-  "IL", //Z#525 Israel\r
-  "JP", //Z#526 JST\r
-  "JM", //Z#527 Jamaica\r
-  "JP", //Z#528 Japan\r
-  "MH", //Z#529 Kwajalein\r
-  "LY", //Z#530 Libya\r
-  "001",//Z#531 MET\r
-  "WS", //Z#532 MIT\r
-  "001",//Z#533 MST\r
-  "001",//Z#534 MST7MDT\r
-  "MX", //Z#535 Mexico/BajaNorte\r
-  "MX", //Z#536 Mexico/BajaSur\r
-  "MX", //Z#537 Mexico/General\r
-  "AM", //Z#538 NET\r
-  "NZ", //Z#539 NST\r
-  "NZ", //Z#540 NZ\r
-  "NZ", //Z#541 NZ-CHAT\r
-  "US", //Z#542 Navajo\r
-  "PK", //Z#543 PLT\r
-  "US", //Z#544 PNT\r
-  "CN", //Z#545 PRC\r
-  "PR", //Z#546 PRT\r
-  "US", //Z#547 PST\r
-  "001",//Z#548 PST8PDT\r
-  "WS", //Z#549 Pacific/Apia\r
-  "NZ", //Z#550 Pacific/Auckland\r
-  "PG", //Z#551 Pacific/Bougainville\r
-  "NZ", //Z#552 Pacific/Chatham\r
-  "FM", //Z#553 Pacific/Chuuk\r
-  "CL", //Z#554 Pacific/Easter\r
-  "VU", //Z#555 Pacific/Efate\r
-  "KI", //Z#556 Pacific/Enderbury\r
-  "TK", //Z#557 Pacific/Fakaofo\r
-  "FJ", //Z#558 Pacific/Fiji\r
-  "TV", //Z#559 Pacific/Funafuti\r
-  "EC", //Z#560 Pacific/Galapagos\r
-  "PF", //Z#561 Pacific/Gambier\r
-  "SB", //Z#562 Pacific/Guadalcanal\r
-  "GU", //Z#563 Pacific/Guam\r
-  "US", //Z#564 Pacific/Honolulu\r
-  "UM", //Z#565 Pacific/Johnston\r
-  "KI", //Z#566 Pacific/Kiritimati\r
-  "FM", //Z#567 Pacific/Kosrae\r
-  "MH", //Z#568 Pacific/Kwajalein\r
-  "MH", //Z#569 Pacific/Majuro\r
-  "PF", //Z#570 Pacific/Marquesas\r
-  "UM", //Z#571 Pacific/Midway\r
-  "NR", //Z#572 Pacific/Nauru\r
-  "NU", //Z#573 Pacific/Niue\r
-  "NF", //Z#574 Pacific/Norfolk\r
-  "NC", //Z#575 Pacific/Noumea\r
-  "AS", //Z#576 Pacific/Pago_Pago\r
-  "PW", //Z#577 Pacific/Palau\r
-  "PN", //Z#578 Pacific/Pitcairn\r
-  "FM", //Z#579 Pacific/Pohnpei\r
-  "FM", //Z#580 Pacific/Ponape\r
-  "PG", //Z#581 Pacific/Port_Moresby\r
-  "CK", //Z#582 Pacific/Rarotonga\r
-  "MP", //Z#583 Pacific/Saipan\r
-  "AS", //Z#584 Pacific/Samoa\r
-  "PF", //Z#585 Pacific/Tahiti\r
-  "KI", //Z#586 Pacific/Tarawa\r
-  "TO", //Z#587 Pacific/Tongatapu\r
-  "FM", //Z#588 Pacific/Truk\r
-  "UM", //Z#589 Pacific/Wake\r
-  "WF", //Z#590 Pacific/Wallis\r
-  "FM", //Z#591 Pacific/Yap\r
-  "PL", //Z#592 Poland\r
-  "PT", //Z#593 Portugal\r
-  "TW", //Z#594 ROC\r
-  "KR", //Z#595 ROK\r
-  "SB", //Z#596 SST\r
-  "SG", //Z#597 Singapore\r
-  "001",//Z#598 SystemV/AST4\r
-  "001",//Z#599 SystemV/AST4ADT\r
-  "001",//Z#600 SystemV/CST6\r
-  "001",//Z#601 SystemV/CST6CDT\r
-  "001",//Z#602 SystemV/EST5\r
-  "001",//Z#603 SystemV/EST5EDT\r
-  "001",//Z#604 SystemV/HST10\r
-  "001",//Z#605 SystemV/MST7\r
-  "001",//Z#606 SystemV/MST7MDT\r
-  "001",//Z#607 SystemV/PST8\r
-  "001",//Z#608 SystemV/PST8PDT\r
-  "001",//Z#609 SystemV/YST9\r
-  "001",//Z#610 SystemV/YST9YDT\r
-  "TR", //Z#611 Turkey\r
-  "001",//Z#612 UCT\r
-  "US", //Z#613 US/Alaska\r
-  "US", //Z#614 US/Aleutian\r
-  "US", //Z#615 US/Arizona\r
-  "US", //Z#616 US/Central\r
-  "US", //Z#617 US/East-Indiana\r
-  "US", //Z#618 US/Eastern\r
-  "US", //Z#619 US/Hawaii\r
-  "US", //Z#620 US/Indiana-Starke\r
-  "US", //Z#621 US/Michigan\r
-  "US", //Z#622 US/Mountain\r
-  "US", //Z#623 US/Pacific\r
-  "US", //Z#624 US/Pacific-New\r
-  "AS", //Z#625 US/Samoa\r
-  "001",//Z#626 UTC\r
-  "001",//Z#627 Universal\r
-  "VN", //Z#628 VST\r
-  "RU", //Z#629 W-SU\r
-  "001",//Z#630 WET\r
-  "001",//Z#631 Zulu\r
+  "CL", //Z#190 America/Punta_Arenas\r
+  "CA", //Z#191 America/Rainy_River\r
+  "CA", //Z#192 America/Rankin_Inlet\r
+  "BR", //Z#193 America/Recife\r
+  "CA", //Z#194 America/Regina\r
+  "CA", //Z#195 America/Resolute\r
+  "BR", //Z#196 America/Rio_Branco\r
+  "AR", //Z#197 America/Rosario\r
+  "MX", //Z#198 America/Santa_Isabel\r
+  "BR", //Z#199 America/Santarem\r
+  "CL", //Z#200 America/Santiago\r
+  "DO", //Z#201 America/Santo_Domingo\r
+  "BR", //Z#202 America/Sao_Paulo\r
+  "GL", //Z#203 America/Scoresbysund\r
+  "US", //Z#204 America/Shiprock\r
+  "US", //Z#205 America/Sitka\r
+  "BL", //Z#206 America/St_Barthelemy\r
+  "CA", //Z#207 America/St_Johns\r
+  "KN", //Z#208 America/St_Kitts\r
+  "LC", //Z#209 America/St_Lucia\r
+  "VI", //Z#210 America/St_Thomas\r
+  "VC", //Z#211 America/St_Vincent\r
+  "CA", //Z#212 America/Swift_Current\r
+  "HN", //Z#213 America/Tegucigalpa\r
+  "GL", //Z#214 America/Thule\r
+  "CA", //Z#215 America/Thunder_Bay\r
+  "MX", //Z#216 America/Tijuana\r
+  "CA", //Z#217 America/Toronto\r
+  "VG", //Z#218 America/Tortola\r
+  "CA", //Z#219 America/Vancouver\r
+  "TT", //Z#220 America/Virgin\r
+  "CA", //Z#221 America/Whitehorse\r
+  "CA", //Z#222 America/Winnipeg\r
+  "US", //Z#223 America/Yakutat\r
+  "CA", //Z#224 America/Yellowknife\r
+  "AQ", //Z#225 Antarctica/Casey\r
+  "AQ", //Z#226 Antarctica/Davis\r
+  "AQ", //Z#227 Antarctica/DumontDUrville\r
+  "AU", //Z#228 Antarctica/Macquarie\r
+  "AQ", //Z#229 Antarctica/Mawson\r
+  "AQ", //Z#230 Antarctica/McMurdo\r
+  "AQ", //Z#231 Antarctica/Palmer\r
+  "AQ", //Z#232 Antarctica/Rothera\r
+  "NZ", //Z#233 Antarctica/South_Pole\r
+  "AQ", //Z#234 Antarctica/Syowa\r
+  "AQ", //Z#235 Antarctica/Troll\r
+  "AQ", //Z#236 Antarctica/Vostok\r
+  "SJ", //Z#237 Arctic/Longyearbyen\r
+  "YE", //Z#238 Asia/Aden\r
+  "KZ", //Z#239 Asia/Almaty\r
+  "JO", //Z#240 Asia/Amman\r
+  "RU", //Z#241 Asia/Anadyr\r
+  "KZ", //Z#242 Asia/Aqtau\r
+  "KZ", //Z#243 Asia/Aqtobe\r
+  "TM", //Z#244 Asia/Ashgabat\r
+  "TM", //Z#245 Asia/Ashkhabad\r
+  "KZ", //Z#246 Asia/Atyrau\r
+  "IQ", //Z#247 Asia/Baghdad\r
+  "BH", //Z#248 Asia/Bahrain\r
+  "AZ", //Z#249 Asia/Baku\r
+  "TH", //Z#250 Asia/Bangkok\r
+  "RU", //Z#251 Asia/Barnaul\r
+  "LB", //Z#252 Asia/Beirut\r
+  "KG", //Z#253 Asia/Bishkek\r
+  "BN", //Z#254 Asia/Brunei\r
+  "IN", //Z#255 Asia/Calcutta\r
+  "RU", //Z#256 Asia/Chita\r
+  "MN", //Z#257 Asia/Choibalsan\r
+  "CN", //Z#258 Asia/Chongqing\r
+  "CN", //Z#259 Asia/Chungking\r
+  "LK", //Z#260 Asia/Colombo\r
+  "BD", //Z#261 Asia/Dacca\r
+  "SY", //Z#262 Asia/Damascus\r
+  "BD", //Z#263 Asia/Dhaka\r
+  "TL", //Z#264 Asia/Dili\r
+  "AE", //Z#265 Asia/Dubai\r
+  "TJ", //Z#266 Asia/Dushanbe\r
+  "CY", //Z#267 Asia/Famagusta\r
+  "PS", //Z#268 Asia/Gaza\r
+  "CN", //Z#269 Asia/Harbin\r
+  "PS", //Z#270 Asia/Hebron\r
+  "VN", //Z#271 Asia/Ho_Chi_Minh\r
+  "HK", //Z#272 Asia/Hong_Kong\r
+  "MN", //Z#273 Asia/Hovd\r
+  "RU", //Z#274 Asia/Irkutsk\r
+  "TR", //Z#275 Asia/Istanbul\r
+  "ID", //Z#276 Asia/Jakarta\r
+  "ID", //Z#277 Asia/Jayapura\r
+  "IL", //Z#278 Asia/Jerusalem\r
+  "AF", //Z#279 Asia/Kabul\r
+  "RU", //Z#280 Asia/Kamchatka\r
+  "PK", //Z#281 Asia/Karachi\r
+  "CN", //Z#282 Asia/Kashgar\r
+  "NP", //Z#283 Asia/Kathmandu\r
+  "NP", //Z#284 Asia/Katmandu\r
+  "RU", //Z#285 Asia/Khandyga\r
+  "IN", //Z#286 Asia/Kolkata\r
+  "RU", //Z#287 Asia/Krasnoyarsk\r
+  "MY", //Z#288 Asia/Kuala_Lumpur\r
+  "MY", //Z#289 Asia/Kuching\r
+  "KW", //Z#290 Asia/Kuwait\r
+  "MO", //Z#291 Asia/Macao\r
+  "MO", //Z#292 Asia/Macau\r
+  "RU", //Z#293 Asia/Magadan\r
+  "ID", //Z#294 Asia/Makassar\r
+  "PH", //Z#295 Asia/Manila\r
+  "OM", //Z#296 Asia/Muscat\r
+  "CY", //Z#297 Asia/Nicosia\r
+  "RU", //Z#298 Asia/Novokuznetsk\r
+  "RU", //Z#299 Asia/Novosibirsk\r
+  "RU", //Z#300 Asia/Omsk\r
+  "KZ", //Z#301 Asia/Oral\r
+  "KH", //Z#302 Asia/Phnom_Penh\r
+  "ID", //Z#303 Asia/Pontianak\r
+  "KP", //Z#304 Asia/Pyongyang\r
+  "QA", //Z#305 Asia/Qatar\r
+  "KZ", //Z#306 Asia/Qyzylorda\r
+  "MM", //Z#307 Asia/Rangoon\r
+  "SA", //Z#308 Asia/Riyadh\r
+  "VN", //Z#309 Asia/Saigon\r
+  "RU", //Z#310 Asia/Sakhalin\r
+  "UZ", //Z#311 Asia/Samarkand\r
+  "KR", //Z#312 Asia/Seoul\r
+  "CN", //Z#313 Asia/Shanghai\r
+  "SG", //Z#314 Asia/Singapore\r
+  "RU", //Z#315 Asia/Srednekolymsk\r
+  "TW", //Z#316 Asia/Taipei\r
+  "UZ", //Z#317 Asia/Tashkent\r
+  "GE", //Z#318 Asia/Tbilisi\r
+  "IR", //Z#319 Asia/Tehran\r
+  "IL", //Z#320 Asia/Tel_Aviv\r
+  "BT", //Z#321 Asia/Thimbu\r
+  "BT", //Z#322 Asia/Thimphu\r
+  "JP", //Z#323 Asia/Tokyo\r
+  "RU", //Z#324 Asia/Tomsk\r
+  "ID", //Z#325 Asia/Ujung_Pandang\r
+  "MN", //Z#326 Asia/Ulaanbaatar\r
+  "MN", //Z#327 Asia/Ulan_Bator\r
+  "CN", //Z#328 Asia/Urumqi\r
+  "RU", //Z#329 Asia/Ust-Nera\r
+  "LA", //Z#330 Asia/Vientiane\r
+  "RU", //Z#331 Asia/Vladivostok\r
+  "RU", //Z#332 Asia/Yakutsk\r
+  "MM", //Z#333 Asia/Yangon\r
+  "RU", //Z#334 Asia/Yekaterinburg\r
+  "AM", //Z#335 Asia/Yerevan\r
+  "PT", //Z#336 Atlantic/Azores\r
+  "BM", //Z#337 Atlantic/Bermuda\r
+  "ES", //Z#338 Atlantic/Canary\r
+  "CV", //Z#339 Atlantic/Cape_Verde\r
+  "FO", //Z#340 Atlantic/Faeroe\r
+  "FO", //Z#341 Atlantic/Faroe\r
+  "NO", //Z#342 Atlantic/Jan_Mayen\r
+  "PT", //Z#343 Atlantic/Madeira\r
+  "IS", //Z#344 Atlantic/Reykjavik\r
+  "GS", //Z#345 Atlantic/South_Georgia\r
+  "SH", //Z#346 Atlantic/St_Helena\r
+  "FK", //Z#347 Atlantic/Stanley\r
+  "AU", //Z#348 Australia/ACT\r
+  "AU", //Z#349 Australia/Adelaide\r
+  "AU", //Z#350 Australia/Brisbane\r
+  "AU", //Z#351 Australia/Broken_Hill\r
+  "AU", //Z#352 Australia/Canberra\r
+  "AU", //Z#353 Australia/Currie\r
+  "AU", //Z#354 Australia/Darwin\r
+  "AU", //Z#355 Australia/Eucla\r
+  "AU", //Z#356 Australia/Hobart\r
+  "AU", //Z#357 Australia/LHI\r
+  "AU", //Z#358 Australia/Lindeman\r
+  "AU", //Z#359 Australia/Lord_Howe\r
+  "AU", //Z#360 Australia/Melbourne\r
+  "AU", //Z#361 Australia/NSW\r
+  "AU", //Z#362 Australia/North\r
+  "AU", //Z#363 Australia/Perth\r
+  "AU", //Z#364 Australia/Queensland\r
+  "AU", //Z#365 Australia/South\r
+  "AU", //Z#366 Australia/Sydney\r
+  "AU", //Z#367 Australia/Tasmania\r
+  "AU", //Z#368 Australia/Victoria\r
+  "AU", //Z#369 Australia/West\r
+  "AU", //Z#370 Australia/Yancowinna\r
+  "BR", //Z#371 BET\r
+  "BD", //Z#372 BST\r
+  "BR", //Z#373 Brazil/Acre\r
+  "BR", //Z#374 Brazil/DeNoronha\r
+  "BR", //Z#375 Brazil/East\r
+  "BR", //Z#376 Brazil/West\r
+  "MZ", //Z#377 CAT\r
+  "001",//Z#378 CET\r
+  "CA", //Z#379 CNT\r
+  "US", //Z#380 CST\r
+  "001",//Z#381 CST6CDT\r
+  "CN", //Z#382 CTT\r
+  "CA", //Z#383 Canada/Atlantic\r
+  "CA", //Z#384 Canada/Central\r
+  "CA", //Z#385 Canada/East-Saskatchewan\r
+  "CA", //Z#386 Canada/Eastern\r
+  "CA", //Z#387 Canada/Mountain\r
+  "CA", //Z#388 Canada/Newfoundland\r
+  "CA", //Z#389 Canada/Pacific\r
+  "CA", //Z#390 Canada/Saskatchewan\r
+  "CA", //Z#391 Canada/Yukon\r
+  "CL", //Z#392 Chile/Continental\r
+  "CL", //Z#393 Chile/EasterIsland\r
+  "CU", //Z#394 Cuba\r
+  "KE", //Z#395 EAT\r
+  "FR", //Z#396 ECT\r
+  "001",//Z#397 EET\r
+  "001",//Z#398 EST\r
+  "001",//Z#399 EST5EDT\r
+  "EG", //Z#400 Egypt\r
+  "IE", //Z#401 Eire\r
+  "001",//Z#402 Etc/GMT\r
+  "001",//Z#403 Etc/GMT+0\r
+  "001",//Z#404 Etc/GMT+1\r
+  "001",//Z#405 Etc/GMT+10\r
+  "001",//Z#406 Etc/GMT+11\r
+  "001",//Z#407 Etc/GMT+12\r
+  "001",//Z#408 Etc/GMT+2\r
+  "001",//Z#409 Etc/GMT+3\r
+  "001",//Z#410 Etc/GMT+4\r
+  "001",//Z#411 Etc/GMT+5\r
+  "001",//Z#412 Etc/GMT+6\r
+  "001",//Z#413 Etc/GMT+7\r
+  "001",//Z#414 Etc/GMT+8\r
+  "001",//Z#415 Etc/GMT+9\r
+  "001",//Z#416 Etc/GMT-0\r
+  "001",//Z#417 Etc/GMT-1\r
+  "001",//Z#418 Etc/GMT-10\r
+  "001",//Z#419 Etc/GMT-11\r
+  "001",//Z#420 Etc/GMT-12\r
+  "001",//Z#421 Etc/GMT-13\r
+  "001",//Z#422 Etc/GMT-14\r
+  "001",//Z#423 Etc/GMT-2\r
+  "001",//Z#424 Etc/GMT-3\r
+  "001",//Z#425 Etc/GMT-4\r
+  "001",//Z#426 Etc/GMT-5\r
+  "001",//Z#427 Etc/GMT-6\r
+  "001",//Z#428 Etc/GMT-7\r
+  "001",//Z#429 Etc/GMT-8\r
+  "001",//Z#430 Etc/GMT-9\r
+  "001",//Z#431 Etc/GMT0\r
+  "001",//Z#432 Etc/Greenwich\r
+  "001",//Z#433 Etc/UCT\r
+  "001",//Z#434 Etc/UTC\r
+  "001",//Z#435 Etc/Universal\r
+  "001",//Z#436 Etc/Unknown\r
+  "001",//Z#437 Etc/Zulu\r
+  "NL", //Z#438 Europe/Amsterdam\r
+  "AD", //Z#439 Europe/Andorra\r
+  "RU", //Z#440 Europe/Astrakhan\r
+  "GR", //Z#441 Europe/Athens\r
+  "GB", //Z#442 Europe/Belfast\r
+  "RS", //Z#443 Europe/Belgrade\r
+  "DE", //Z#444 Europe/Berlin\r
+  "SK", //Z#445 Europe/Bratislava\r
+  "BE", //Z#446 Europe/Brussels\r
+  "RO", //Z#447 Europe/Bucharest\r
+  "HU", //Z#448 Europe/Budapest\r
+  "DE", //Z#449 Europe/Busingen\r
+  "MD", //Z#450 Europe/Chisinau\r
+  "DK", //Z#451 Europe/Copenhagen\r
+  "IE", //Z#452 Europe/Dublin\r
+  "GI", //Z#453 Europe/Gibraltar\r
+  "GG", //Z#454 Europe/Guernsey\r
+  "FI", //Z#455 Europe/Helsinki\r
+  "IM", //Z#456 Europe/Isle_of_Man\r
+  "TR", //Z#457 Europe/Istanbul\r
+  "JE", //Z#458 Europe/Jersey\r
+  "RU", //Z#459 Europe/Kaliningrad\r
+  "UA", //Z#460 Europe/Kiev\r
+  "RU", //Z#461 Europe/Kirov\r
+  "PT", //Z#462 Europe/Lisbon\r
+  "SI", //Z#463 Europe/Ljubljana\r
+  "GB", //Z#464 Europe/London\r
+  "LU", //Z#465 Europe/Luxembourg\r
+  "ES", //Z#466 Europe/Madrid\r
+  "MT", //Z#467 Europe/Malta\r
+  "AX", //Z#468 Europe/Mariehamn\r
+  "BY", //Z#469 Europe/Minsk\r
+  "MC", //Z#470 Europe/Monaco\r
+  "RU", //Z#471 Europe/Moscow\r
+  "CY", //Z#472 Europe/Nicosia\r
+  "NO", //Z#473 Europe/Oslo\r
+  "FR", //Z#474 Europe/Paris\r
+  "ME", //Z#475 Europe/Podgorica\r
+  "CZ", //Z#476 Europe/Prague\r
+  "LV", //Z#477 Europe/Riga\r
+  "IT", //Z#478 Europe/Rome\r
+  "RU", //Z#479 Europe/Samara\r
+  "SM", //Z#480 Europe/San_Marino\r
+  "BA", //Z#481 Europe/Sarajevo\r
+  "RU", //Z#482 Europe/Saratov\r
+  "UA", //Z#483 Europe/Simferopol\r
+  "MK", //Z#484 Europe/Skopje\r
+  "BG", //Z#485 Europe/Sofia\r
+  "SE", //Z#486 Europe/Stockholm\r
+  "EE", //Z#487 Europe/Tallinn\r
+  "AL", //Z#488 Europe/Tirane\r
+  "MD", //Z#489 Europe/Tiraspol\r
+  "RU", //Z#490 Europe/Ulyanovsk\r
+  "UA", //Z#491 Europe/Uzhgorod\r
+  "LI", //Z#492 Europe/Vaduz\r
+  "VA", //Z#493 Europe/Vatican\r
+  "AT", //Z#494 Europe/Vienna\r
+  "LT", //Z#495 Europe/Vilnius\r
+  "RU", //Z#496 Europe/Volgograd\r
+  "PL", //Z#497 Europe/Warsaw\r
+  "HR", //Z#498 Europe/Zagreb\r
+  "UA", //Z#499 Europe/Zaporozhye\r
+  "CH", //Z#500 Europe/Zurich\r
+  "001",//Z#501 Factory\r
+  "GB", //Z#502 GB\r
+  "GB", //Z#503 GB-Eire\r
+  "001",//Z#504 GMT\r
+  "001",//Z#505 GMT+0\r
+  "001",//Z#506 GMT-0\r
+  "001",//Z#507 GMT0\r
+  "001",//Z#508 Greenwich\r
+  "001",//Z#509 HST\r
+  "HK", //Z#510 Hongkong\r
+  "US", //Z#511 IET\r
+  "IN", //Z#512 IST\r
+  "IS", //Z#513 Iceland\r
+  "MG", //Z#514 Indian/Antananarivo\r
+  "IO", //Z#515 Indian/Chagos\r
+  "CX", //Z#516 Indian/Christmas\r
+  "CC", //Z#517 Indian/Cocos\r
+  "KM", //Z#518 Indian/Comoro\r
+  "TF", //Z#519 Indian/Kerguelen\r
+  "SC", //Z#520 Indian/Mahe\r
+  "MV", //Z#521 Indian/Maldives\r
+  "MU", //Z#522 Indian/Mauritius\r
+  "YT", //Z#523 Indian/Mayotte\r
+  "RE", //Z#524 Indian/Reunion\r
+  "IR", //Z#525 Iran\r
+  "IL", //Z#526 Israel\r
+  "JP", //Z#527 JST\r
+  "JM", //Z#528 Jamaica\r
+  "JP", //Z#529 Japan\r
+  "MH", //Z#530 Kwajalein\r
+  "LY", //Z#531 Libya\r
+  "001",//Z#532 MET\r
+  "WS", //Z#533 MIT\r
+  "001",//Z#534 MST\r
+  "001",//Z#535 MST7MDT\r
+  "MX", //Z#536 Mexico/BajaNorte\r
+  "MX", //Z#537 Mexico/BajaSur\r
+  "MX", //Z#538 Mexico/General\r
+  "AM", //Z#539 NET\r
+  "NZ", //Z#540 NST\r
+  "NZ", //Z#541 NZ\r
+  "NZ", //Z#542 NZ-CHAT\r
+  "US", //Z#543 Navajo\r
+  "PK", //Z#544 PLT\r
+  "US", //Z#545 PNT\r
+  "CN", //Z#546 PRC\r
+  "PR", //Z#547 PRT\r
+  "US", //Z#548 PST\r
+  "001",//Z#549 PST8PDT\r
+  "WS", //Z#550 Pacific/Apia\r
+  "NZ", //Z#551 Pacific/Auckland\r
+  "PG", //Z#552 Pacific/Bougainville\r
+  "NZ", //Z#553 Pacific/Chatham\r
+  "FM", //Z#554 Pacific/Chuuk\r
+  "CL", //Z#555 Pacific/Easter\r
+  "VU", //Z#556 Pacific/Efate\r
+  "KI", //Z#557 Pacific/Enderbury\r
+  "TK", //Z#558 Pacific/Fakaofo\r
+  "FJ", //Z#559 Pacific/Fiji\r
+  "TV", //Z#560 Pacific/Funafuti\r
+  "EC", //Z#561 Pacific/Galapagos\r
+  "PF", //Z#562 Pacific/Gambier\r
+  "SB", //Z#563 Pacific/Guadalcanal\r
+  "GU", //Z#564 Pacific/Guam\r
+  "US", //Z#565 Pacific/Honolulu\r
+  "UM", //Z#566 Pacific/Johnston\r
+  "KI", //Z#567 Pacific/Kiritimati\r
+  "FM", //Z#568 Pacific/Kosrae\r
+  "MH", //Z#569 Pacific/Kwajalein\r
+  "MH", //Z#570 Pacific/Majuro\r
+  "PF", //Z#571 Pacific/Marquesas\r
+  "UM", //Z#572 Pacific/Midway\r
+  "NR", //Z#573 Pacific/Nauru\r
+  "NU", //Z#574 Pacific/Niue\r
+  "NF", //Z#575 Pacific/Norfolk\r
+  "NC", //Z#576 Pacific/Noumea\r
+  "AS", //Z#577 Pacific/Pago_Pago\r
+  "PW", //Z#578 Pacific/Palau\r
+  "PN", //Z#579 Pacific/Pitcairn\r
+  "FM", //Z#580 Pacific/Pohnpei\r
+  "FM", //Z#581 Pacific/Ponape\r
+  "PG", //Z#582 Pacific/Port_Moresby\r
+  "CK", //Z#583 Pacific/Rarotonga\r
+  "MP", //Z#584 Pacific/Saipan\r
+  "AS", //Z#585 Pacific/Samoa\r
+  "PF", //Z#586 Pacific/Tahiti\r
+  "KI", //Z#587 Pacific/Tarawa\r
+  "TO", //Z#588 Pacific/Tongatapu\r
+  "FM", //Z#589 Pacific/Truk\r
+  "UM", //Z#590 Pacific/Wake\r
+  "WF", //Z#591 Pacific/Wallis\r
+  "FM", //Z#592 Pacific/Yap\r
+  "PL", //Z#593 Poland\r
+  "PT", //Z#594 Portugal\r
+  "TW", //Z#595 ROC\r
+  "KR", //Z#596 ROK\r
+  "SB", //Z#597 SST\r
+  "SG", //Z#598 Singapore\r
+  "001",//Z#599 SystemV/AST4\r
+  "001",//Z#600 SystemV/AST4ADT\r
+  "001",//Z#601 SystemV/CST6\r
+  "001",//Z#602 SystemV/CST6CDT\r
+  "001",//Z#603 SystemV/EST5\r
+  "001",//Z#604 SystemV/EST5EDT\r
+  "001",//Z#605 SystemV/HST10\r
+  "001",//Z#606 SystemV/MST7\r
+  "001",//Z#607 SystemV/MST7MDT\r
+  "001",//Z#608 SystemV/PST8\r
+  "001",//Z#609 SystemV/PST8PDT\r
+  "001",//Z#610 SystemV/YST9\r
+  "001",//Z#611 SystemV/YST9YDT\r
+  "TR", //Z#612 Turkey\r
+  "001",//Z#613 UCT\r
+  "US", //Z#614 US/Alaska\r
+  "US", //Z#615 US/Aleutian\r
+  "US", //Z#616 US/Arizona\r
+  "US", //Z#617 US/Central\r
+  "US", //Z#618 US/East-Indiana\r
+  "US", //Z#619 US/Eastern\r
+  "US", //Z#620 US/Hawaii\r
+  "US", //Z#621 US/Indiana-Starke\r
+  "US", //Z#622 US/Michigan\r
+  "US", //Z#623 US/Mountain\r
+  "US", //Z#624 US/Pacific\r
+  "US", //Z#625 US/Pacific-New\r
+  "AS", //Z#626 US/Samoa\r
+  "001",//Z#627 UTC\r
+  "001",//Z#628 Universal\r
+  "VN", //Z#629 VST\r
+  "RU", //Z#630 W-SU\r
+  "001",//Z#631 WET\r
+  "001",//Z#632 Zulu\r
  }\r
 }\r
diff --git a/source/data/rbnf/ars.txt b/source/data/rbnf/ars.txt
new file mode 100644 (file)
index 0000000..8de1f41
--- /dev/null
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+ars{\r
+    "%%ALIAS"{"ar"}\r
+}\r
index 44b49fa..0215fe6 100644 (file)
@@ -4,8 +4,8 @@ id{
     RBNFRules{\r
         OrdinalRules{\r
             "%digits-ordinal:",\r
-            "-x: ke\u2212>#,##0>;",\r
-            "0: ke=#,##0=;",\r
+            "-x: \u2212ke->#,##0>;",\r
+            "0: ke-=#,##0=;",\r
         }\r
         SpelloutRules{\r
             "%spellout-numbering-year:",\r
@@ -45,5 +45,5 @@ id{
             "0: ke=%spellout-cardinal=;",\r
         }\r
     }\r
-    Version{"2.1.27.22"}\r
+    Version{"2.1.32.38"}\r
 }\r
index 35a5711..3c40cba 100644 (file)
@@ -4,8 +4,8 @@ ms{
     RBNFRules{\r
         OrdinalRules{\r
             "%digits-ordinal:",\r
-            "-x: ke\u2212>#,##0>;",\r
-            "0: ke=#,##0=;",\r
+            "-x: \u2212ke->#,##0>;",\r
+            "0: ke-=#,##0=;",\r
         }\r
         SpelloutRules{\r
             "%spellout-numbering-year:",\r
@@ -47,5 +47,5 @@ ms{
             "2: ke=%spellout-cardinal=;",\r
         }\r
     }\r
-    Version{"2.1.27.22"}\r
+    Version{"2.1.31.40"}\r
 }\r
index 730707a..db913a0 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-RBNF_CLDR_VERSION = %version%\r
+RBNF_CLDR_VERSION = 31.0.1\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a '%local%' file in this same directory.\r
+# you should consider creating a 'rbnflocal.mk' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example '%local%' files:\r
+# Example 'rbnflocal.mk' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,10 +26,10 @@ RBNF_CLDR_VERSION = %version%
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-RBNF_SYNTHETIC_ALIAS = es_DO.txt es_GT.txt es_HN.txt es_MX.txt\\r
- es_NI.txt es_PA.txt es_PR.txt es_SV.txt es_US.txt\\r
in.txt iw.txt no.txt sh.txt zh_HK.txt\\r
- zh_Hant_HK.txt zh_MO.txt zh_TW.txt\r
+RBNF_SYNTHETIC_ALIAS = ars.txt es_DO.txt es_GT.txt es_HN.txt\\r
+ es_MX.txt es_NI.txt es_PA.txt es_PR.txt es_SV.txt\\r
es_US.txt in.txt iw.txt no.txt sh.txt\\r
+ zh_HK.txt zh_Hant_HK.txt zh_MO.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
index 5a85cbd..3df423e 100644 (file)
@@ -53,21 +53,11 @@ uk{
             "700: \u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "800: \u0432\u0456\u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "900: \u0434\u0435\u0432\u02BC\u044F\u0442\u0441\u043E\u0442[ >>];",\r
-            "1000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0430[ >>];",\r
-            "2000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0456[ >>];",\r
-            "5000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447[ >>];",\r
-            "1000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
-            "2000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
-            "5000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
-            "1000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
-            "2000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
-            "5000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
-            "1000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
-            "2000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
-            "5000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
-            "1000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
-            "2000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
-            "5000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
+            "1000: <%spellout-cardinal-feminine< $(cardinal,one{\u0442\u0438\u0441\u044F\u0447\u0430}few{\u0442\u0438\u0441\u044F\u0447\u0456}other{\u0442\u0438\u0441\u044F\u0447})$[ >>];",\r
+            "1000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u0439\u043E\u043D}few{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
+            "1000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u044F\u0440\u0434}few{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u0439\u043E\u043D}few{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u044F\u0440\u0434}few{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
             "%spellout-cardinal-neuter:",\r
             "-x: \u043C\u0456\u043D\u0443\u0441 >>;",\r
@@ -93,21 +83,11 @@ uk{
             "700: \u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "800: \u0432\u0456\u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "900: \u0434\u0435\u0432\u02BC\u044F\u0442\u0441\u043E\u0442[ >>];",\r
-            "1000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0430[ >>];",\r
-            "2000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0456[ >>];",\r
-            "5000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447[ >>];",\r
-            "1000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
-            "2000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
-            "5000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
-            "1000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
-            "2000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
-            "5000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
-            "1000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
-            "2000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
-            "5000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
-            "1000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
-            "2000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
-            "5000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
+            "1000: <%spellout-cardinal-feminine< $(cardinal,one{\u0442\u0438\u0441\u044F\u0447\u0430}few{\u0442\u0438\u0441\u044F\u0447\u0456}other{\u0442\u0438\u0441\u044F\u0447})$[ >>];",\r
+            "1000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u0439\u043E\u043D}few{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
+            "1000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u044F\u0440\u0434}few{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u0439\u043E\u043D}few{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u044F\u0440\u0434}few{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
             "%spellout-cardinal-feminine:",\r
             "-x: \u043C\u0456\u043D\u0443\u0441 >>;",\r
@@ -133,23 +113,13 @@ uk{
             "700: \u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "800: \u0432\u0456\u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "900: \u0434\u0435\u0432\u02BC\u044F\u0442\u0441\u043E\u0442[ >>];",\r
-            "1000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0430[ >>];",\r
-            "2000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0456[ >>];",\r
-            "5000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447[ >>];",\r
-            "1000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
-            "2000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
-            "5000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
-            "1000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
-            "2000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
-            "5000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
-            "1000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
-            "2000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
-            "5000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
-            "1000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
-            "2000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
-            "5000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
+            "1000: <%spellout-cardinal-feminine< $(cardinal,one{\u0442\u0438\u0441\u044F\u0447\u0430}few{\u0442\u0438\u0441\u044F\u0447\u0456}other{\u0442\u0438\u0441\u044F\u0447})$[ >>];",\r
+            "1000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u0439\u043E\u043D}few{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
+            "1000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u044F\u0440\u0434}few{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u0439\u043E\u043D}few{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u044F\u0440\u0434}few{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
         }\r
     }\r
-    Version{"2.1.27.22"}\r
+    Version{"2.1.30.62"}\r
 }\r
index 60fd2ea..d830ebd 100644 (file)
@@ -89,7 +89,7 @@ af{
         CW{"Curaçao"}\r
         CX{"Kerseiland"}\r
         CY{"Siprus"}\r
-        CZ{"Tjeggiese Republiek"}\r
+        CZ{"Tjeggië"}\r
         DE{"Duitsland"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djiboeti"}\r
@@ -304,9 +304,9 @@ af{
     Countries%variant{\r
         CD{"Kongo (DRK)"}\r
         CG{"Kongo (Republiek die)"}\r
-        CZ{"Tjeggië"}\r
+        CZ{"Tjeggiese Republiek"}\r
         FK{"Falklandeilande (Malvinas)"}\r
         MK{"Macedonië (VJRM)"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 621d854..0d92238 100644 (file)
@@ -227,5 +227,5 @@ agq{
         ZM{"Zambìa"}\r
         ZW{"Zìmbagbɛ̀"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 672bb38..4410df3 100644 (file)
@@ -227,5 +227,5 @@ ak{
         ZM{"Zambia"}\r
         ZW{"Zembabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 340f19b..7932595 100644 (file)
@@ -89,7 +89,7 @@ am{
         CW{"ኩራሳዎ"}\r
         CX{"የገና ደሴት"}\r
         CY{"ሳይፕረስ"}\r
-        CZ{"á\89¼á\8a­ á\88ªá\8d\91á\89¥á\88\8aá\8a­"}\r
+        CZ{"á\89¼á\89ºá\8b«"}\r
         DE{"ጀርመን"}\r
         DG{"ዲዬጎ ጋርሺያ"}\r
         DJ{"ጂቡቲ"}\r
@@ -305,10 +305,10 @@ am{
         CD{"ኮንጎ (የዲሞክራቲክ ሪፐብሊክ ኮንጎ)"}\r
         CG{"ኮንጎ (ሪፐብሊክ)"}\r
         CI{"አይቮሪኮስት"}\r
-        CZ{"á\89¼á\89ºá\8b«"}\r
+        CZ{"á\89¼á\8a­ á\88ªá\8d\91á\89¥á\88\8aá\8a­"}\r
         FK{"ፎክላንድ ደሴቶች (ኢስላስ ማልቪናስ)"}\r
         MK{"መቄዶንያ (የቀድሞ የዩጎስላቭ መቄዶንያ ሪፐብሊክ)"}\r
         TL{"ምስራቅ ቲሞር"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index b43ea03..4f90ee9 100644 (file)
@@ -89,7 +89,7 @@ ar{
         CW{"كوراساو"}\r
         CX{"جزيرة الكريسماس"}\r
         CY{"قبرص"}\r
-        CZ{"جÙ\85Ù\87Ù\88رÙ\8aØ© Ø§Ù\84تشÙ\8aÙ\83"}\r
+        CZ{"التشيك"}\r
         DE{"ألمانيا"}\r
         DG{"دييغو غارسيا"}\r
         DJ{"جيبوتي"}\r
@@ -304,10 +304,10 @@ ar{
     Countries%variant{\r
         CD{"جمهورية الكونغو الديمقراطية"}\r
         CG{"جمهورية الكونغو"}\r
-        CZ{"التشيك"}\r
+        CZ{"جÙ\85Ù\87Ù\88رÙ\8aØ© Ø§Ù\84تشÙ\8aÙ\83"}\r
         FK{"جزر فوكلاند - جزر مالفيناس"}\r
         MK{"مقدونيا- جمهورية مقدونيا اليوغسلافية السابقة"}\r
         TL{"تيمور الشرقية"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.86"}\r
 }\r
index 6b21071..176ea9f 100644 (file)
@@ -5,5 +5,5 @@ ar_AE{
         CI{"ساحل العاج"}\r
         TL{"التيمور الشرقية"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4a6ffeb..5b710fc 100644 (file)
@@ -6,5 +6,5 @@ ar_LY{
         MS{"مونتيسيرات"}\r
         UY{"أوروغواي"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7cebbac..667126e 100644 (file)
@@ -8,5 +8,5 @@ ar_SA{
         PM{"سان بيير وميكولون"}\r
         UY{"أوروغواي"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/region/ars.txt b/source/data/region/ars.txt
new file mode 100644 (file)
index 0000000..9bb22b9
--- /dev/null
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+ars{\r
+    "%%ALIAS"{"ar_SA"}\r
+}\r
index 5be0362..7219b1d 100644 (file)
@@ -20,5 +20,5 @@ as{
         US{"যুক্তৰাষ্ট্ৰ"}\r
         ZZ{"অজ্ঞাত বা অবৈধ অঞ্চল"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 133ddbe..cd52694 100644 (file)
@@ -225,5 +225,5 @@ asa{
         ZM{"Dhambia"}\r
         ZW{"Dhimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2a8b465..98f82fe 100644 (file)
@@ -307,5 +307,5 @@ ast{
         MK{"Macedonia (ARYDM)"}\r
         TL{"Timor Este"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 3971f01..596e885 100644 (file)
@@ -89,7 +89,7 @@ az{
         CW{"Kurasao"}\r
         CX{"Milad adası"}\r
         CY{"Kipr"}\r
-        CZ{"Çex Respublikası"}\r
+        CZ{"Çexiya"}\r
         DE{"Almaniya"}\r
         DG{"Dieqo Qarsiya"}\r
         DJ{"Cibuti"}\r
@@ -305,10 +305,10 @@ az{
         CD{"Konqo (KDR)"}\r
         CG{"Konqo (Respublika)"}\r
         CI{"Fil Dişi Sahili"}\r
-        CZ{"Çexiya"}\r
+        CZ{"Çex Respublikası"}\r
         FK{"Folklend adaları (Malvin adaları)"}\r
         MK{"Makedoniya (KYRM)"}\r
         TL{"Doğu Timor"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index d9c81b8..7b1151d 100644 (file)
@@ -89,7 +89,7 @@ az_Cyrl{
         CW{"Курасао"}\r
         CX{"Милад адасы"}\r
         CY{"Кипр"}\r
-        CZ{"Чех Республикасы"}\r
+        CZ{"Чехија"}\r
         DE{"Алманија"}\r
         DG{"Диего Гарсија"}\r
         DJ{"Ҹибути"}\r
@@ -298,9 +298,9 @@ az_Cyrl{
     Countries%variant{\r
         CD{"Конго (КДР)"}\r
         CG{"Конго (Республика)"}\r
-        CZ{"Чехија"}\r
+        CZ{"Чех Республикасы"}\r
         FK{"Фолкленд адалары (Малвин адалары)"}\r
         MK{"Македонија (КЈРМ)"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 4ce2adb..4c0b75a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 511a656..2f25c0f 100644 (file)
@@ -224,5 +224,5 @@ bas{
         ZM{"Zàmbià"}\r
         ZW{"Zìmbàbwê"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 731660f..f40a05e 100644 (file)
@@ -307,5 +307,5 @@ be{
         MK{"Македонія (БЮРМ)"}\r
         TL{"Усходні Тымор"}\r
     }\r
-    Version{"2.1.29.66"}\r
+    Version{"2.1.31.86"}\r
 }\r
index f3b3946..f8a8172 100644 (file)
@@ -4,5 +4,5 @@ bem{
     Countries{\r
         ZM{"Zambia"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bdf1864..cdf822f 100644 (file)
@@ -227,5 +227,5 @@ bez{
         ZM{"Huzambia"}\r
         ZW{"Huzimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3f7ee9c..d3deeee 100644 (file)
@@ -89,7 +89,7 @@ bg{
         CW{"Кюрасао"}\r
         CX{"остров Рождество"}\r
         CY{"Кипър"}\r
-        CZ{"ЧеÑ\88ка Ñ\80епÑ\83блика"}\r
+        CZ{"ЧеÑ\85иÑ\8f"}\r
         DE{"Германия"}\r
         DG{"Диего Гарсия"}\r
         DJ{"Джибути"}\r
@@ -304,9 +304,9 @@ bg{
         CD{"Конго (ДРК)"}\r
         CG{"Конго (Република)"}\r
         CI{"Бряг на слоновата кост"}\r
-        CZ{"ЧеÑ\85иÑ\8f"}\r
+        CZ{"ЧеÑ\88ка Ñ\80епÑ\83блика"}\r
         FK{"Фолклендски острови (Малвински острови)"}\r
         MK{"Бивша югославска република Македония"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.33.75"}\r
 }\r
index 6fa71d9..4ae88f5 100644 (file)
@@ -227,5 +227,5 @@ bm{
         ZM{"Zanbi"}\r
         ZW{"Zimbabuwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 112221f..dc0c411 100644 (file)
@@ -89,7 +89,7 @@ bn{
         CW{"কিউরাসাও"}\r
         CX{"ক্রিসমাস দ্বীপ"}\r
         CY{"সাইপ্রাস"}\r
-        CZ{"à¦\9aà§\87à¦\95 à¦ªà§\8dরà¦\9cাতনà§\8dতà§\8dর"}\r
+        CZ{"à¦\9aà§\87à¦\9aিয়া"}\r
         DE{"জার্মানি"}\r
         DG{"দিয়েগো গার্সিয়া"}\r
         DJ{"জিবুতি"}\r
@@ -305,10 +305,10 @@ bn{
         CD{"কঙ্গো(DRC)"}\r
         CG{"কঙ্গো (প্রজাতন্ত্র)"}\r
         CI{"আই ভরি"}\r
-        CZ{"à¦\9aà§\87à¦\9aিয়া"}\r
+        CZ{"à¦\9aà§\87à¦\95 à¦ªà§\8dরà¦\9cাতনà§\8dতà§\8dর"}\r
         FK{"ফকল্যান্ড আইল্যান্ড ( ইসল্যাস মাসভেনিস)"}\r
         MK{"মেসিডোনিয়া(FYROM)"}\r
         TL{"পূর্ব তিমুর"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
 }\r
index af9e16d..f2de4fe 100644 (file)
@@ -9,5 +9,5 @@ bn_IN{
     Countries%variant{\r
         CD{"কঙ্গো (DRC)"}\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 25a58e2..164bb5b 100644 (file)
@@ -15,5 +15,5 @@ bo{
         US{"ཨ་མེ་རི་ཀ།"}\r
         ZZ{"མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུག"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2e8b7d5..c031e66 100644 (file)
@@ -4,5 +4,5 @@ bo_IN{
     Countries{\r
         009{"ཨོཤི་ཡཱན་ན།"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 623adb3..393d593 100644 (file)
@@ -307,5 +307,5 @@ br{
         MK{"Makedonia (RYKM)"}\r
         TL{"Timor ar Reter"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 9582e55..0727e4f 100644 (file)
@@ -281,5 +281,5 @@ brx{
         ZW{"ज़ीम्बाब्वे"}\r
         ZZ{"अज्ञात या अवैध प्रदेश"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 4f220a2..ac00271 100644 (file)
@@ -89,7 +89,7 @@ bs{
         CW{"Kurasao"}\r
         CX{"Božićna Ostrva"}\r
         CY{"Kipar"}\r
-        CZ{"Češka Republika"}\r
+        CZ{"Češka"}\r
         DE{"Njemačka"}\r
         DG{"Dijego Garsija"}\r
         DJ{"Džibuti"}\r
@@ -305,9 +305,9 @@ bs{
         CD{"Kongo (DRC)"}\r
         CG{"Republika Kongo"}\r
         CI{"Obala Bjelokosti"}\r
-        CZ{"Češka"}\r
+        CZ{"Češka Republika"}\r
         FK{"Folklandska Ostrva (Malvinska Ostrva)"}\r
         MK{"Makedonija (BJR)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index e10e5b1..3f2548c 100644 (file)
@@ -297,5 +297,5 @@ bs_Cyrl{
         CG{"Конго (Република)"}\r
         FK{"Фокландска (Малвинска) острва"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.72"}\r
 }\r
index 20b4126..972dc01 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 54a27eb..c97fd69 100644 (file)
@@ -89,7 +89,7 @@ ca{
         CW{"Curaçao"}\r
         CX{"Illa Christmas"}\r
         CY{"Xipre"}\r
-        CZ{"República Txeca"}\r
+        CZ{"Txèquia"}\r
         DE{"Alemanya"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -304,9 +304,9 @@ ca{
     Countries%variant{\r
         CD{"Congo (República Democràtica del Congo)"}\r
         CG{"Congo (República del Congo)"}\r
-        CZ{"Txèquia"}\r
+        CZ{"República Txeca"}\r
         FK{"Illes Malvines (Illes Falkland)"}\r
         MK{"Macedònia (Antiga República Iugoslava de Macedònia)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index ade7c2e..36f9ef1 100644 (file)
@@ -303,5 +303,5 @@ ce{
         CD{"Конго (ДРК)"}\r
         FK{"Фолклендан гӀайренаш (Мальвинаш)"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index a10602f..a0a7352 100644 (file)
@@ -225,5 +225,5 @@ cgg{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c942b3f..26a3384 100644 (file)
@@ -89,7 +89,7 @@ chr{
         CW{"ᎫᎳᎨᎣ"}\r
         CX{"ᏓᏂᏍᏓᏲᎯᎲ ᎤᎦᏚᏛᎢ"}\r
         CY{"ᏌᎢᏆᏍ"}\r
-        CZ{"ᏤᎩ ᏍᎦᏚᎩ"}\r
+        CZ{"ᏤᎩ"}\r
         DE{"ᎠᏂᏛᏥ"}\r
         DG{"ᏗᏰᎪ ᎦᏏᏯ"}\r
         DJ{"ᏥᏊᏗ"}\r
@@ -302,10 +302,10 @@ chr{
     Countries%variant{\r
         CD{"ᎧᏂᎪ (DRC)"}\r
         CG{"ᎧᏂᎪ (ᏍᎦᏚᎩ)"}\r
-        CZ{"ᏤᎩ"}\r
+        CZ{"ᏤᎩ ᏍᎦᏚᎩ"}\r
         FK{"ᏩᎩ ᏚᎦᏚᏛᎢ (ᎢᏍᎳᏍ ᎹᎸᏫᎾᏍ)"}\r
         MK{"ᎹᏎᏙᏂᏯ (FYROM)"}\r
         TL{"ᏗᎧᎸᎬᎢ ᏘᎼᎵ"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 43e9803..1be8c06 100644 (file)
@@ -196,5 +196,5 @@ ckb{
         CD{"کۆماری دیموکراتیکی کۆنگۆ"}\r
         CG{"کۆماری کۆنگۆ"}\r
     }\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d1c9af1..18e61df 100644 (file)
@@ -89,7 +89,7 @@ cs{
         CW{"Curaçao"}\r
         CX{"Vánoční ostrov"}\r
         CY{"Kypr"}\r
-        CZ{"Česká republika"}\r
+        CZ{"Česko"}\r
         DE{"Německo"}\r
         DG{"Diego García"}\r
         DJ{"Džibutsko"}\r
@@ -305,9 +305,9 @@ cs{
         CD{"Kongo (DRK)"}\r
         CG{"Kongo (republika)"}\r
         CI{"Côte d’Ivoire"}\r
-        CZ{"Česko"}\r
+        CZ{"Česká republika"}\r
         FK{"Falklandské ostrovy (Malvíny)"}\r
         MK{"Makedonie (FYROM)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index b4d26c2..617e23e 100644 (file)
@@ -89,7 +89,7 @@ cy{
         CW{"Curaçao"}\r
         CX{"Ynys y Nadolig"}\r
         CY{"Cyprus"}\r
-        CZ{"Gweriniaeth Tsiec"}\r
+        CZ{"Tsiecia"}\r
         DE{"Yr Almaen"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ cy{
         CD{"Y Congo (G.Dd.C.)"}\r
         CG{"Y Congo (Gweriniaeth)"}\r
         CI{"Arfordir Ifori"}\r
-        CZ{"Tsiecia"}\r
+        CZ{"Gweriniaeth Tsiec"}\r
         FK{"Ynysoedd y Falkland (Ynysoedd y Malfinas)"}\r
         MK{"Macedonia (CWIM)"}\r
         TL{"Dwyrain Timor"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 9e84d7c..bb6c165 100644 (file)
@@ -308,5 +308,5 @@ da{
         MK{"Den tidligere jugoslaviske republik Makedonien"}\r
         TL{"Østtimor"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index b45564d..678345d 100644 (file)
@@ -227,5 +227,5 @@ dav{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 053e660..e96c3b8 100644 (file)
@@ -89,7 +89,7 @@ de{
         CW{"Curaçao"}\r
         CX{"Weihnachtsinsel"}\r
         CY{"Zypern"}\r
-        CZ{"Tschechische Republik"}\r
+        CZ{"Tschechien"}\r
         DE{"Deutschland"}\r
         DG{"Diego Garcia"}\r
         DJ{"Dschibuti"}\r
@@ -305,9 +305,9 @@ de{
         CD{"Kongo (Demokratische Republik)"}\r
         CG{"Kongo (Republik)"}\r
         CI{"Elfenbeinküste"}\r
-        CZ{"Tschechien"}\r
+        CZ{"Tschechische Republik"}\r
         FK{"Falklandinseln (Malwinen)"}\r
         MK{"Mazedonien (EJR)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index d66970e..32a6e2e 100644 (file)
@@ -4,5 +4,5 @@ de_AT{
     Countries{\r
         SJ{"Svalbard und Jan Mayen"}\r
     }\r
-    Version{"2.1.28.73"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fb84a03..8b9f599 100644 (file)
@@ -11,5 +11,5 @@ de_CH{
         SB{"Salomon-Inseln"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e902bed..efc132c 100644 (file)
@@ -226,5 +226,5 @@ dje{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7e546ed..fda82f0 100644 (file)
@@ -307,5 +307,5 @@ dsb{
         MK{"Makedońska (PRJ)"}\r
         TL{"Pódzajtšny Timor"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 4f53263..4b08de6 100644 (file)
@@ -4,5 +4,5 @@ dua{
     Countries{\r
         CM{"Cameroun"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0036f6b..2e29c8e 100644 (file)
@@ -111,5 +111,5 @@ dyo{
         TG{"Togo"}\r
         TH{"Tailand"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5650543..f4fd909 100644 (file)
@@ -303,5 +303,5 @@ dz{
         MK{"མ་སེ་ཌོ་ནི་ཡ་ (ཡུ་གོ་སླཱ་བི་ཡ)"}\r
         TL{"ཤར་ཕྱོགས་ཏི་་མོར"}\r
     }\r
-    Version{"2.1.29.61"}\r
+    Version{"2.1.31.34"}\r
 }\r
index 1833461..655d40f 100644 (file)
@@ -227,5 +227,5 @@ ebu{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 86b92f4..c1f772f 100644 (file)
@@ -298,5 +298,5 @@ ee{
         MK{"Makedonia (FYROM) nutome"}\r
         TL{"Ɣedzeƒe Timɔ nutome"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index a824069..d8a886a 100644 (file)
@@ -89,7 +89,7 @@ el{
         CW{"Κουρασάο"}\r
         CX{"Νήσος των Χριστουγέννων"}\r
         CY{"Κύπρος"}\r
-        CZ{"ΤÏ\83εÏ\87ική Î\94ημοκÏ\81αÏ\84ία"}\r
+        CZ{"Τσεχία"}\r
         DE{"Γερμανία"}\r
         DG{"Ντιέγκο Γκαρσία"}\r
         DJ{"Τζιμπουτί"}\r
@@ -304,10 +304,10 @@ el{
     Countries%variant{\r
         CD{"Κονγκό"}\r
         CG{"Κονγκό (Δημοκρατία)"}\r
-        CZ{"Τσεχία"}\r
+        CZ{"ΤÏ\83εÏ\87ική Î\94ημοκÏ\81αÏ\84ία"}\r
         FK{"Νήσοι Φόκλαντ (Νήσοι Μαλβίνας)"}\r
         MK{"Πρώην Γιουγκοσλαβική Δημοκρατία της Μακεδονίας (ΠΓΔΜ)"}\r
         TL{"Ανατολικό Τιμόρ"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 5e36c04..9caa96d 100644 (file)
@@ -89,7 +89,7 @@ en{
         CW{"Curaçao"}\r
         CX{"Christmas Island"}\r
         CY{"Cyprus"}\r
-        CZ{"Czech Republic"}\r
+        CZ{"Czechia"}\r
         DE{"Germany"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -308,10 +308,10 @@ en{
         CD{"Congo (DRC)"}\r
         CG{"Congo (Republic)"}\r
         CI{"Ivory Coast"}\r
-        CZ{"Czechia"}\r
+        CZ{"Czech Republic"}\r
         FK{"Falkland Islands (Islas Malvinas)"}\r
         MK{"Macedonia (FYROM)"}\r
         TL{"East Timor"}\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 249596a..78561e0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_150{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 93d0c87..8a0d454 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d55549d..07cb4ef 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b4edb3f..09171c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1bfc3f0..8dff34f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.62"}\r
 }\r
index 7083244..84a0efd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c967ad1..7065545 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 17ad945..a3b9186 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03e7849..95e82b5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d4c98cf..a73b7bc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 13545f6..5891076 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 095353c..2fe08f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a2871e2..a54c911 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d055587..4f2d948 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bd2eba..f59d92a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0ae421..5aacc7b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a5c8744..8c9c483 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 81d8657..46da087 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a91a9c4..5d2d71a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index af3ee11..3d758dd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 55574ee..5a92d6b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DK{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4eaa7dc..b548583 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 228a8a8..7fd2c9a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 12aebe3..f699cc1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c439098..86f8e9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 21a12bc..5df30b2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 78ffc47..eab91ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d57d893..6a57c80 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.24"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ab0594c..7921b24 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8474cce..c0d3839 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 33fc5d4..b66f585 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 46d28cd..5fe0d68 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0d4e60..1a05f40 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dec9373..f7397d6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7c42f22..4a04a10 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index acfab3f..18bb2f3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1500279..76bee45 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5e5329..e66ecc0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1c73a40..0ae302f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 73736a0..2b8ba3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f31e9bf..c47ce4e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 67edbc7..d812c18 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26213f7..b11b581 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3f8c7e1..899b1ea 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f755a2f..35fb03c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e26f444..bd356e9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7abb21b..bfd0689 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 07b6a83..3fc63c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5123bd..b723857 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9eafad7..f967e69 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0b1b6a5..f6dfb6a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index df8f657..a027fc6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 23b6896..8464a2e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bb0cc54..890b025 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 58ee57a..873b8e1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 064aa6e..b36d9ba 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26854fe..5f0af42 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0a360ca..358d626 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5038494..745a114 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 21bbdc9..9d0d0cd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 039e457..165856c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eb82604..266914a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0dd2106..c56ed84 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c1792a4..6aa4d92 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0ca66f9..080d0e6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ccbdf7f..fef2013 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5bf94f0..4094568 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0af3d13..30541dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7bb21c0..76b4d89 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cb507b5..e2de69a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 699d679..77c65fa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6206b27..87a33e2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d7fa572..31f586b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 66e6ec7..5250ec4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 968da99..cf6ab49 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fedf1c0..a259492 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4005802..3e61485 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 002988b..2b3a430 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9862443..ec1778f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 47c792d..cc8b6f1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eaabbe1..852eb0f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 797d773..020c31b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f1697f5..d27b6ec 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 599a8fe..21b8b30 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a2c5021..4ebd07d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c0c2960..5e30f2b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3b6c1e4..eaac010 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index de17869..12317cf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6a295b..ba6619b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2cecbf4..12b8824 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a3f70e3..8c90fd7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d528625..0461373 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.64"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 05bb346..19ed0d0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e725848..bb5dbed 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 582d65f..2f32876 100644 (file)
@@ -226,5 +226,5 @@ eo{
         ZM{"Zambio"}\r
         ZW{"Zimbabvo"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c924983..52f9575 100644 (file)
@@ -89,7 +89,7 @@ es{
         CW{"Curazao"}\r
         CX{"Isla de Navidad"}\r
         CY{"Chipre"}\r
-        CZ{"República Checa"}\r
+        CZ{"Chequia"}\r
         DE{"Alemania"}\r
         DG{"Diego García"}\r
         DJ{"Yibuti"}\r
@@ -303,10 +303,10 @@ es{
         CD{"Congo (República Democrática del Congo)"}\r
         CG{"Congo (República)"}\r
         CI{"Costa de Marfil"}\r
-        CZ{"Chequia"}\r
+        CZ{"República Checa"}\r
         FK{"Islas Malvinas (Islas Falkland)"}\r
         MK{"Macedonia (ERYM)"}\r
         TL{"Timor Oriental"}\r
     }\r
-    Version{"2.1.28.80"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 7dfefa4..aa63c34 100644 (file)
@@ -14,5 +14,5 @@ es_419{
         GB{"R. U."}\r
         US{"EE.UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e3c763f..293c27f 100644 (file)
@@ -12,5 +12,5 @@ es_AR{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7eb5ebe..24baf97 100644 (file)
@@ -12,5 +12,5 @@ es_BO{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2f5e37a..e68498b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/region/es_BZ.txt b/source/data/region/es_BZ.txt
new file mode 100644 (file)
index 0000000..aa10911
--- /dev/null
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+es_BZ{\r
+    %%Parent{"es_419"}\r
+    Version{"2.1.32.37"}\r
+}\r
index 3c62984..9104a11 100644 (file)
@@ -13,5 +13,5 @@ es_CL{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2ea330a..64bcdd0 100644 (file)
@@ -12,5 +12,5 @@ es_CO{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8247d05..e73da32 100644 (file)
@@ -12,5 +12,5 @@ es_CR{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 791d7f5..66f010e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a11127d..45336fb 100644 (file)
@@ -12,5 +12,5 @@ es_DO{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4028cf1..2d3caa0 100644 (file)
@@ -12,5 +12,5 @@ es_EC{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b61e070..daafd97 100644 (file)
@@ -12,5 +12,5 @@ es_GT{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4ba6c66..dd708f6 100644 (file)
@@ -12,5 +12,5 @@ es_HN{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 93cf5a3..588ce58 100644 (file)
@@ -26,5 +26,5 @@ es_MX{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e7fc82c..6e0a645 100644 (file)
@@ -12,5 +12,5 @@ es_NI{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1bfc637..c249131 100644 (file)
@@ -12,5 +12,5 @@ es_PA{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c896ee0..b548efb 100644 (file)
@@ -12,5 +12,5 @@ es_PE{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 73516e3..3ffe260 100644 (file)
@@ -8,5 +8,5 @@ es_PR{
     Countries%short{\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 461674c..07b7357 100644 (file)
@@ -12,5 +12,5 @@ es_PY{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1ebef4b..18fdab9 100644 (file)
@@ -8,5 +8,5 @@ es_SV{
     Countries%short{\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 16019af..3fe422f 100644 (file)
@@ -10,8 +10,7 @@ es_US{
     }\r
     Countries%variant{\r
         CI{"CI"}\r
-        CZ{"CZ"}\r
         TL{"TL"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 2344e94..38b881e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_UY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eb0b019..5c8f409 100644 (file)
@@ -12,5 +12,5 @@ es_VE{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 453e35a..9c6bfa5 100644 (file)
@@ -89,7 +89,7 @@ et{
         CW{"Curaçao"}\r
         CX{"Jõulusaar"}\r
         CY{"Küpros"}\r
-        CZ{"Tšehhi"}\r
+        CZ{"Tšehhia"}\r
         DE{"Saksamaa"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ et{
         CD{"Kongo-Kinshasa"}\r
         CG{"Kongo-Brazzaville"}\r
         CI{"Elevandiluurannik"}\r
-        CZ{"Tšehhia"}\r
+        CZ{"Tšehhi"}\r
         FK{"Malviini saared"}\r
         MK{"Makedoonia Vabariik"}\r
         TL{"Timor-Leste"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index d156698..8e9040f 100644 (file)
@@ -89,7 +89,7 @@ eu{
         CW{"Curaçao"}\r
         CX{"Christmas uhartea"}\r
         CY{"Zipre"}\r
-        CZ{"Txekiar Errepublika"}\r
+        CZ{"Txekia"}\r
         DE{"Alemania"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibuti"}\r
@@ -302,10 +302,10 @@ eu{
     Countries%variant{\r
         CD{"Kongo (KED)"}\r
         CG{"Kongo (errepublika)"}\r
-        CZ{"Txekia"}\r
+        CZ{"Txekiar Errepublika"}\r
         FK{"Falkland uharteak (Malvina uharteak)"}\r
         MK{"Mazedonia (Mazedoniako Yugoslaviar Errepublika ohia)"}\r
         TL{"Timor ekialdea"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 17aec91..b56eb02 100644 (file)
@@ -227,5 +227,5 @@ ewo{
         ZM{"Zambí"}\r
         ZW{"Zimbabwé"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1c5a4ff..8623b37 100644 (file)
@@ -305,10 +305,9 @@ fa{
     Countries%variant{\r
         CD{"کنگو (جمهوری دموکراتیک)"}\r
         CG{"کنگو (جمهوری)"}\r
-        CZ{"CZ"}\r
         FK{"جزایر فالکلند (ایسلاس مالویناس)"}\r
         MK{"مقدونیه (جمهوری سابقاً یوگسلاو)"}\r
         TL{"تیمور شرقی"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 142a46a..b621eae 100644 (file)
@@ -95,5 +95,5 @@ fa_AF{
         XK{"کوسوا"}\r
         ZW{"زیمبابوی"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5e712ac..a7a6e74 100644 (file)
@@ -227,5 +227,5 @@ ff{
         ZM{"Sammbi"}\r
         ZW{"Simbaabuwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 24824c2..51e642f 100644 (file)
@@ -89,7 +89,7 @@ fi{
         CW{"Curaçao"}\r
         CX{"Joulusaari"}\r
         CY{"Kypros"}\r
-        CZ{"Tšekki"}\r
+        CZ{"Tšekinmaa"}\r
         DE{"Saksa"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ fi{
         CD{"Kongo-Kinshasa"}\r
         CG{"Kongo-Brazzaville"}\r
         CI{"Côte d’Ivoire"}\r
-        CZ{"Tšekinmaa"}\r
+        CZ{"Tšekki"}\r
         FK{"Falklandinsaaret (Malvinassaaret)"}\r
         MK{"EJT Makedonia"}\r
         TL{"Timor-Leste"}\r
     }\r
-    Version{"2.1.29.88"}\r
+    Version{"2.1.32.59"}\r
 }\r
index d442b36..6cdf951 100644 (file)
@@ -89,7 +89,7 @@ fil{
         CW{"Curaçao"}\r
         CX{"Christmas Island"}\r
         CY{"Cyprus"}\r
-        CZ{"Czech Republic"}\r
+        CZ{"Czechia"}\r
         DE{"Germany"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ fil{
         CD{"Congo (DRC)"}\r
         CG{"Congo (Republika)"}\r
         CI{"Ivory Coast"}\r
-        CZ{"Czechia"}\r
+        CZ{"Czech Republic"}\r
         FK{"Falkland Islands (Islas Malvinas)"}\r
         MK{"Macedonia (FYROM)"}\r
         TL{"East Timor"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 0c99fc4..3263714 100644 (file)
@@ -302,5 +302,5 @@ fo{
     Countries%variant{\r
         MK{"Makedónia (FJM)"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 3089740..448e823 100644 (file)
@@ -89,7 +89,7 @@ fr{
         CW{"Curaçao"}\r
         CX{"Île Christmas"}\r
         CY{"Chypre"}\r
-        CZ{"République tchèque"}\r
+        CZ{"Tchéquie"}\r
         DE{"Allemagne"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -304,10 +304,10 @@ fr{
     Countries%variant{\r
         CD{"Congo (RDC)"}\r
         CG{"République du Congo"}\r
-        CZ{"Tchéquie"}\r
+        CZ{"République tchèque"}\r
         FK{"Îles Falkland"}\r
         MK{"Macédoine (ARYM)"}\r
         TL{"Timor-Oriental"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index e3f61ce..b8a4a42 100644 (file)
@@ -5,5 +5,5 @@ fr_BE{
         BN{"Brunei"}\r
         GS{"Îles Géorgie du Sud et Sandwich du Sud"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 073680c..932bea5 100644 (file)
@@ -38,5 +38,5 @@ fr_CA{
         FK{"îles Falkland (Malouines)"}\r
         TL{"Timor oriental"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9719858..9b5b763 100644 (file)
@@ -296,5 +296,5 @@ fur{
         FK{"Isulis Falkland (Isulis Malvinas)"}\r
         MK{"Macedonie (FYROM)"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0b871e..c1ce596 100644 (file)
@@ -305,5 +305,5 @@ fy{
         FK{"Falklâneilannen (Islas Malvinas)"}\r
         MK{"Macedonië (FYROM)"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 49210b7..a2c9478 100644 (file)
@@ -307,5 +307,5 @@ ga{
         FK{"Oileáin Fháclainne (Islas Malvinas)"}\r
         MK{"An Mhacadóin (PIIM)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index a56add5..494f06a 100644 (file)
@@ -89,7 +89,7 @@ gd{
         CW{"Curaçao"}\r
         CX{"Eilean na Nollaig"}\r
         CY{"Cìopras"}\r
-        CZ{"Poblachd na Seice"}\r
+        CZ{"An t-Seic"}\r
         DE{"A’ Ghearmailt"}\r
         DG{"Diego Garcia"}\r
         DJ{"Diobùtaidh"}\r
@@ -303,10 +303,10 @@ gd{
         CD{"A’ Chongo (PDC)"}\r
         CG{"A’ Chongo"}\r
         CI{"An Costa Ìbhri"}\r
-        CZ{"An t-Seic"}\r
+        CZ{"Poblachd na Seice"}\r
         FK{"Na h-Eileanan Fàclannach (Islas Malvinas)"}\r
         MK{"A’ Mhasadon (FYROM)"}\r
         TL{"Tìomor an Ear"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index ecec12e..473ce43 100644 (file)
@@ -89,7 +89,7 @@ gl{
         CW{"Curaçao"}\r
         CX{"Illa de Nadal"}\r
         CY{"Chipre"}\r
-        CZ{"República Checa"}\r
+        CZ{"Chequia"}\r
         DE{"Alemaña"}\r
         DG{"Diego García"}\r
         DJ{"Djibuti"}\r
@@ -304,9 +304,9 @@ gl{
     Countries%variant{\r
         CD{"Congo (RDC)"}\r
         CG{"Congo (RC)"}\r
-        CZ{"Chequia"}\r
+        CZ{"República Checa"}\r
         FK{"Illas Malvinas (Falkland)"}\r
         MK{"Macedonia (ARIM)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 6fb0ce2..b48b3ac 100644 (file)
@@ -288,5 +288,5 @@ gsw{
     Countries%variant{\r
         MK{"Mazedoonie (EJRM)"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 755be95..3f55fea 100644 (file)
@@ -89,7 +89,7 @@ gu{
         CW{"ક્યુરાસાઓ"}\r
         CX{"ક્રિસમસ આઇલેન્ડ"}\r
         CY{"સાયપ્રસ"}\r
-        CZ{"ચેક રીપબ્લિક"}\r
+        CZ{"ચેકીયા"}\r
         DE{"જર્મની"}\r
         DG{"ડિએગો ગારસિઆ"}\r
         DJ{"જીબૌટી"}\r
@@ -305,10 +305,10 @@ gu{
         CD{"કોંગો (ડીઆરસી)"}\r
         CG{"કોંગો (પ્રજાસત્તાક)"}\r
         CI{"આઇવરી કોસ્ટ"}\r
-        CZ{"ચેકીયા"}\r
+        CZ{"ચેક રીપબ્લિક"}\r
         FK{"ફૉકલેન્ડ ટાપુઓ (ઇસ્લાસ માલવિનસ)"}\r
         MK{"મેસેડોનિયા (FYROM)"}\r
         TL{"પૂર્વ તિમોર"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 1d78bc0..2b2155c 100644 (file)
@@ -227,5 +227,5 @@ guz{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9cbf1f6..bdc266c 100644 (file)
@@ -5,5 +5,5 @@ gv{
         GB{"Rywvaneth Unys"}\r
         IM{"Ellan Vannin"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
 }\r
index 7c69a2c..418c438 100644 (file)
@@ -227,5 +227,5 @@ ha{
         ZM{"Zambiya"}\r
         ZW{"Zimbabuwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0f75608..bcd00e6 100644 (file)
@@ -23,5 +23,5 @@ haw{
         RU{"Lūkia"}\r
         US{"ʻAmelika Hui Pū ʻIa"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2c68a73..3d51601 100644 (file)
@@ -89,7 +89,7 @@ he{
         CW{"קוראסאו"}\r
         CX{"האי כריסטמס"}\r
         CY{"קפריסין"}\r
-        CZ{"×\94רפ×\95×\91×\9c×\99ק×\94 ×\94צ׳×\9b×\99ת"}\r
+        CZ{"צ׳×\9b×\99×\94"}\r
         DE{"גרמניה"}\r
         DG{"דייגו גרסיה"}\r
         DJ{"ג׳יבוטי"}\r
@@ -303,10 +303,10 @@ he{
     Countries%variant{\r
         CD{"קונגו (הרפובליקה הדמוקרטית של קונגו)"}\r
         CG{"קונגו (רפובליקה)"}\r
-        CZ{"צ׳×\9b×\99×\94"}\r
+        CZ{"×\94רפ×\95×\91×\9c×\99ק×\94 ×\94צ׳×\9b×\99ת"}\r
         FK{"איי פוקלנד (איי מלווינס)"}\r
         MK{"מקדוניה (הרפובליקה היוגוסלבית לשעבר מקדוניה)"}\r
         TL{"מזרח טימור"}\r
     }\r
-    Version{"2.1.29.27"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 35b405d..8c3c620 100644 (file)
@@ -89,7 +89,7 @@ hi{
         CW{"क्यूरासाओ"}\r
         CX{"क्रिसमस द्वीप"}\r
         CY{"साइप्रस"}\r
-        CZ{"चेक गणराज्य"}\r
+        CZ{"चेकिया"}\r
         DE{"जर्मनी"}\r
         DG{"डिएगो गार्सिया"}\r
         DJ{"जिबूती"}\r
@@ -305,10 +305,10 @@ hi{
         CD{"कांगो (डीआरसी)"}\r
         CG{"कांगो (गणराज्य)"}\r
         CI{"आइवरी कोस्ट"}\r
-        CZ{"चेकिया"}\r
+        CZ{"चेक गणराज्य"}\r
         FK{"फ़ॉकलैंड द्वीपसमूह (इज़्लास माल्विनास)"}\r
         MK{"मैसिडोनिया (FYROM)"}\r
         TL{"पूर्वी तिमोर"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index fcdf380..c775f73 100644 (file)
@@ -89,7 +89,7 @@ hr{
         CW{"Curaçao"}\r
         CX{"Božićni otok"}\r
         CY{"Cipar"}\r
-        CZ{"Češka Republika"}\r
+        CZ{"Češka"}\r
         DE{"Njemačka"}\r
         DG{"Diego Garcia"}\r
         DJ{"Džibuti"}\r
@@ -305,10 +305,10 @@ hr{
         CD{"Kongo (DRK)"}\r
         CG{"Kongo (RK)"}\r
         CI{"Bjelokosna Obala"}\r
-        CZ{"Češka"}\r
+        CZ{"Češka Republika"}\r
         FK{"Falklandski otoci (Malvini)"}\r
         MK{"Makedonija (BJRM)"}\r
         TL{"Istočni Timor"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index c627b2e..0843b57 100644 (file)
@@ -307,5 +307,5 @@ hsb{
         MK{"Makedonska (FYROM)"}\r
         TL{"Wuchodny Timor"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index cc3c23b..fe01bfe 100644 (file)
@@ -307,5 +307,5 @@ hu{
         FK{"Falkland-szigetek (Malvin-szigetek)"}\r
         MK{"Macedónia (MVJK)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index da7b507..ff562e3 100644 (file)
@@ -309,5 +309,5 @@ hy{
         MK{"Մակեդոնիա (ՄՆՀՀ)"}\r
         TL{"Արևելյան Թիմոր"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 2477fa4..50e78f2 100644 (file)
@@ -89,7 +89,7 @@ id{
         CW{"Curaçao"}\r
         CX{"Pulau Christmas"}\r
         CY{"Siprus"}\r
-        CZ{"Republik Cheska"}\r
+        CZ{"Cheska"}\r
         DE{"Jerman"}\r
         DG{"Diego Garcia"}\r
         DJ{"Jibuti"}\r
@@ -305,10 +305,10 @@ id{
         CD{"Kongo (RDK)"}\r
         CG{"Kongo (Republik)"}\r
         CI{"Ivory Coast"}\r
-        CZ{"Cheska"}\r
+        CZ{"Republik Cheska"}\r
         FK{"Kepulauan Malvinas (Falkland)"}\r
         MK{"Makedonia (BRY)"}\r
         TL{"Timor Timur"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 3d50137..4bbba32 100644 (file)
@@ -11,5 +11,5 @@ ig{
         MV{"Maldivesa"}\r
         NG{"Nigeria"}\r
     }\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0811ac4..76b95fc 100644 (file)
@@ -14,5 +14,5 @@ ii{
         US{"ꂰꇩ"}\r
         ZZ{"ꃅꄷꅉꀋꐚꌠ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38b18b4..7dcb596 100644 (file)
@@ -308,5 +308,5 @@ is{
         MK{"Makedónía (Fyrrverandi lýðveldi Júgóslavíu)"}\r
         TL{"Austur-Tímor"}\r
     }\r
-    Version{"2.1.29.65"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 0157280..ab3a845 100644 (file)
@@ -89,7 +89,7 @@ it{
         CW{"Curaçao"}\r
         CX{"Isola Christmas"}\r
         CY{"Cipro"}\r
-        CZ{"Repubblica Ceca"}\r
+        CZ{"Cèchia"}\r
         DE{"Germania"}\r
         DG{"Diego Garcia"}\r
         DJ{"Gibuti"}\r
@@ -260,7 +260,7 @@ it{
         TH{"Thailandia"}\r
         TJ{"Tagikistan"}\r
         TK{"Tokelau"}\r
-        TL{"Timor Leste"}\r
+        TL{"Timor Est"}\r
         TM{"Turkmenistan"}\r
         TN{"Tunisia"}\r
         TO{"Tonga"}\r
@@ -305,10 +305,10 @@ it{
         CD{"Congo (RDC)"}\r
         CG{"Congo (Repubblica)"}\r
         CI{"Côte d’Ivoire"}\r
-        CZ{"Cèchia"}\r
+        CZ{"Repubblica Ceca"}\r
         FK{"Isole Falkland (Isole Malvine)"}\r
         MK{"Ex Repubblica Jugoslava di Macedonia"}\r
-        TL{"Timor Est"}\r
+        TL{"Timor Leste"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
 }\r
index dd775e8..ee9aa5c 100644 (file)
@@ -89,7 +89,7 @@ ja{
         CW{"キュラソー"}\r
         CX{"クリスマス島"}\r
         CY{"キプロス"}\r
-        CZ{"チェコ共和国"}\r
+        CZ{"チェコ"}\r
         DE{"ドイツ"}\r
         DG{"ディエゴガルシア島"}\r
         DJ{"ジブチ"}\r
@@ -305,10 +305,10 @@ ja{
         CD{"コンゴ民主共和国"}\r
         CG{"コンゴ共和国"}\r
         CI{"象牙海岸"}\r
-        CZ{"チェコ"}\r
+        CZ{"チェコ共和国"}\r
         FK{"フォークランド諸島 (マルビーナス諸島)"}\r
         MK{"マケドニア(旧ユーゴスラビア共和国)"}\r
         TL{"東チモール"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 6ba5569..4548daa 100644 (file)
@@ -85,5 +85,5 @@ jgo{
         ZW{"Zimbámbwɛ"}\r
         ZZ{"ŋgɔŋ yi pɛ́ ká kɛ́ jʉɔ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9e38105..29f4ac5 100644 (file)
@@ -227,5 +227,5 @@ jmc{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c6fea5a..ddd2fe6 100644 (file)
@@ -89,7 +89,7 @@ ka{
         CW{"კიურასაო"}\r
         CX{"შობის კუნძული"}\r
         CY{"კვიპროსი"}\r
-        CZ{"ჩეხეთის რესპუბლიკა"}\r
+        CZ{"ჩეხეთი"}\r
         DE{"გერმანია"}\r
         DG{"დიეგო-გარსია"}\r
         DJ{"ჯიბუტი"}\r
@@ -305,9 +305,9 @@ ka{
         CD{"კონგო (კონგოს დემოკრატიული რესპუბლიკა)"}\r
         CG{"კონგო (რესპუბლიკა)"}\r
         CI{"სპილოს ძვლის სანაპირო"}\r
-        CZ{"ჩეხეთი"}\r
+        CZ{"ჩეხეთის რესპუბლიკა"}\r
         FK{"ფოლკლენდის კუნძულები (მალვინის კუნძულები)"}\r
         MK{"მაკედონია (ყოფილი იუგოსლავიის რესპუბლიკა მაკედონია)"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
 }\r
index e2c1404..c15dca7 100644 (file)
@@ -227,5 +227,5 @@ kab{
         ZM{"Zambya"}\r
         ZW{"Zimbabwi"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 87b0391..8f6f695 100644 (file)
@@ -227,5 +227,5 @@ kam{
         ZM{"Nzambia"}\r
         ZW{"Nzimbambwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 40d56d8..7bf80a0 100644 (file)
@@ -227,5 +227,5 @@ kde{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c8d5483..0d9f6da 100644 (file)
@@ -89,7 +89,7 @@ kea{
         CW{"Kurasau"}\r
         CX{"Ilha di Natal"}\r
         CY{"Xipri"}\r
-        CZ{"Repúblika Txeka"}\r
+        CZ{"Txékia"}\r
         DE{"Alimanha"}\r
         DG{"Diegu Garsia"}\r
         DJ{"Djibuti"}\r
@@ -302,9 +302,9 @@ kea{
         CD{"Repúblika Dimokrátika di Kongu"}\r
         CG{"Repúblika di Kongu"}\r
         CI{"Kosta di Marfin (Côte d’Ivoire)"}\r
-        CZ{"Txékia"}\r
+        CZ{"Repúblika Txeka"}\r
         FK{"Ilhas Falkland (Ilhas Malvinas)"}\r
         MK{"Masidónia (FYROM)"}\r
     }\r
-    Version{"2.1.27.46"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 40397f3..21f940e 100644 (file)
@@ -227,5 +227,5 @@ khq{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 99bb8f2..8f3c350 100644 (file)
@@ -227,5 +227,5 @@ ki{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2e1f7a2..70d0713 100644 (file)
@@ -89,7 +89,7 @@ kk{
         CW{"Кюрасао"}\r
         CX{"Рождество аралы"}\r
         CY{"Кипр"}\r
-        CZ{"Чех Республикасы"}\r
+        CZ{"Чехия"}\r
         DE{"Германия"}\r
         DG{"Диего-Гарсия"}\r
         DJ{"Джибути"}\r
@@ -305,10 +305,10 @@ kk{
         CD{"Конго Демократиялық Республикасы"}\r
         CG{"Конго Республикасы"}\r
         CI{"Піл Сүйегі Жағалауы"}\r
-        CZ{"Чехия"}\r
+        CZ{"Чех Республикасы"}\r
         FK{"Фолкленд аралдары (Мальвин аралдары)"}\r
         MK{"Македония Республикасы"}\r
         TL{"Шығыс Тимор"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index fbc4635..ad3242f 100644 (file)
@@ -4,5 +4,5 @@ kkj{
     Countries{\r
         CM{"Kamɛrun"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index acee845..b75bd6f 100644 (file)
@@ -4,5 +4,5 @@ kl{
     Countries{\r
         GL{"Kalaallit Nunaat"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
 }\r
index 3177d51..6086e4f 100644 (file)
@@ -227,5 +227,5 @@ kln{
         ZM{"Emetab Zambia"}\r
         ZW{"Emetab Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index be968fc..59a31f3 100644 (file)
@@ -89,7 +89,7 @@ km{
         CW{"កូរ៉ាកៅ"}\r
         CX{"កោះ​គ្រីស្មាស"}\r
         CY{"ស៊ីប"}\r
-        CZ{"á\9e\9fá\9e¶á\9e\92á\9e¶á\9e\9aá\9e\8eá\9e\9aá\9e\8aá\9f\92á\9e\8bá\9e\86á\9f\81á\9e\80"}\r
+        CZ{"á\9e\86á\9f\81á\9e\82á\9e"}\r
         DE{"អាល្លឺម៉ង់"}\r
         DG{"ឌៀហ្គោហ្គាស៊ី"}\r
         DJ{"ជីប៊ូទី"}\r
@@ -305,10 +305,10 @@ km{
         CD{"កុងហ្គោ (សាធារណរដ្ឋ​ប្រជាធិបតេយ្យ)"}\r
         CG{"កុងហ្គោ (សធារណៈរដ្ឋ)"}\r
         CI{"កូតឌីវ័រ"}\r
-        CZ{"á\9e\86á\9f\81á\9e\82á\9e"}\r
+        CZ{"á\9e\9fá\9e¶á\9e\92á\9e¶á\9e\9aá\9e\8eá\9e\9aá\9e\8aá\9f\92á\9e\8bá\9e\86á\9f\81á\9e\80"}\r
         FK{"កោះ​ហ្វក់ឡែន (Islas Malvinas)"}\r
         MK{"ម៉ាសេដូនា (FYROM)"}\r
         TL{"ទីម័រ​ខាង​កើត"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 2889b65..8d363d3 100644 (file)
@@ -89,7 +89,7 @@ kn{
         CW{"ಕುರಾಕಾವ್"}\r
         CX{"ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪ"}\r
         CY{"ಸೈಪ್ರಸ್"}\r
-        CZ{"à²\9dà³\86à²\95à³\8d à²°à²¿à²ªà²¬à³\8dಲಿà²\95à³\8d"}\r
+        CZ{"à²\9dà³\86à²\95ಿಯಾ"}\r
         DE{"ಜರ್ಮನಿ"}\r
         DG{"ಡೈಗೋ ಗಾರ್ಸಿಯ"}\r
         DJ{"ಜಿಬೋಟಿ"}\r
@@ -305,10 +305,10 @@ kn{
         CD{"ಕಾಂಗೋ (DRC)"}\r
         CG{"ಕಾಂಗೋ (ಗಣರಾಜ್ಯ)"}\r
         CI{"ಐವರಿ ಕೋಸ್ಟ್"}\r
-        CZ{"à²\9dà³\86à²\95ಿಯಾ"}\r
+        CZ{"à²\9dà³\86à²\95à³\8d à²°à²¿à²ªà²¬à³\8dಲಿà²\95à³\8d"}\r
         FK{"ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು (ಇಸ್ಲಾಸ್ ಮಾಲ್ವಿನಸ್)"}\r
         MK{"ಮ್ಯಾಸಿಡೋನಿಯ (FYROM)"}\r
         TL{"ಪೂರ್ವ ಟಿಮೋರ್"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index db4d589..754db1c 100644 (file)
@@ -308,5 +308,5 @@ ko{
         FK{"포클랜드 제도(말비나스 군도)"}\r
         MK{"마케도니아(FYROM)"}\r
     }\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 235fed5..2a4e3e2 100644 (file)
@@ -4,5 +4,5 @@ ko_KP{
     Countries{\r
         KP{"조선민주주의인민공화국"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eb74e2d..9dc1337 100644 (file)
@@ -4,5 +4,5 @@ kok{
     Countries{\r
         IN{"भारत"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3712f0c..2a9b9ff 100644 (file)
@@ -278,5 +278,5 @@ ks{
         ZW{"زِمبابے"}\r
         ZZ{"نامعلوٗم تہٕ نالَگہار عَلاقہٕ"}\r
     }\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 436ada1..d4bbdf9 100644 (file)
@@ -226,5 +226,5 @@ ksb{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 367bbd6..9c923cb 100644 (file)
@@ -227,5 +227,5 @@ ksf{
         ZM{"zambí"}\r
         ZW{"zimbabwɛ́"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1b1c501..b95d923 100644 (file)
@@ -305,5 +305,5 @@ ksh{
         FK{"de malleviinesche Enselle"}\r
         MK{"de vörmaals ens jugoßlaawesch jewääse Republik Mazedoonije"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 87fa5b3..104e225 100644 (file)
@@ -4,5 +4,5 @@ kw{
     Countries{\r
         GB{"Rywvaneth Unys"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 114bea4..303c3d9 100644 (file)
@@ -89,7 +89,7 @@ ky{
         CW{"Кюрасао"}\r
         CX{"Крисмас аралы"}\r
         CY{"Кипр"}\r
-        CZ{"Чех Республикасы"}\r
+        CZ{"Чехия"}\r
         DE{"Германия"}\r
         DG{"Диего Гарсия"}\r
         DJ{"Джибути"}\r
@@ -304,10 +304,10 @@ ky{
         CD{"Конго (КДР)"}\r
         CG{"Конго (Республикасы)"}\r
         CI{"Кот-д’Ивуар (вариант)"}\r
-        CZ{"Чехия"}\r
+        CZ{"Чех Республикасы"}\r
         FK{"Фолклэнд (Малвина) аралдары"}\r
         MK{"Македония (Мур. Югосл.)"}\r
         TL{"Чыгыш Тимор"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index b49b249..ca0120e 100644 (file)
@@ -227,5 +227,5 @@ lag{
         ZM{"Sámbia"}\r
         ZW{"Simbáabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c14e795..4c86abe 100644 (file)
@@ -305,5 +305,5 @@ lb{
         CI{"Elfebeeküst"}\r
         MK{"Mazedonien (EJR)"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 7d15b65..8788c88 100644 (file)
@@ -227,5 +227,5 @@ lg{
         ZM{"Zambya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f72d558..ffcfe48 100644 (file)
@@ -15,5 +15,5 @@ lkt{
         MX{"Spayóla Makȟóčhe"}\r
         US{"Mílahaŋska Tȟamákȟočhe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9c7243a..a5c4c5f 100644 (file)
@@ -50,7 +50,7 @@ ln{
         CU{"Kiba"}\r
         CV{"Bisanga bya Kapevɛrɛ"}\r
         CY{"Sípɛlɛ"}\r
-        CZ{"Repibiki Tsekɛ"}\r
+        CZ{"Shekia"}\r
         DE{"Alemani"}\r
         DJ{"Dzibuti"}\r
         DK{"Danɛmarike"}\r
@@ -234,5 +234,8 @@ ln{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Countries%variant{\r
+        CZ{"Repibiki Tsekɛ"}\r
+    }\r
+    Version{"2.1.31.74"}\r
 }\r
index 30566d6..ba59577 100644 (file)
@@ -88,7 +88,7 @@ lo{
         CW{"ຄູຣາຊາວ"}\r
         CX{"ເກາະຄຣິສມາດ"}\r
         CY{"ໄຊປຣັສ"}\r
-        CZ{"ສາàº\97າລະàº\99ະລັàº\94à»\80àº\8aັàº\81"}\r
+        CZ{"à»\80àº\8aັàº\81à»\80àº\8aàº\8d"}\r
         DE{"ເຢຍລະມັນ"}\r
         DG{"ດິເອໂກ ກາເຊຍ"}\r
         DJ{"ຈິບູຕິ"}\r
@@ -304,10 +304,10 @@ lo{
         CD{"ຄອງໂກ (ສາທາລະນະລັດປະຊາທິປະໄຕ)"}\r
         CG{"ສາທາລະນະລັດຄອງໂກ"}\r
         CI{"ໄອໂວຣີ ໂຄທ"}\r
-        CZ{"à»\80àº\8aັàº\81à»\80àº\8aàº\8d"}\r
+        CZ{"ສາàº\97າລະàº\99ະລັàº\94à»\80àº\8aັàº\81"}\r
         FK{"ໝູ່ເກາະຟອກແລນ (ອິສລາສ ມາວິນນາສ)"}\r
         MK{"ແມຊິໂດເນຍ (FYROM)"}\r
         TL{"ທິມໍ ຕາເວັນອອກ"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index c5efdaf..efdf119 100644 (file)
@@ -26,5 +26,5 @@ lrc{
         US{"ڤولاتیا یأکاگئرتە"}\r
         ZZ{"راساگە نادیار"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f3465cb..5831ae4 100644 (file)
@@ -308,5 +308,5 @@ lt{
         FK{"Folklando (Malvinų) Salos"}\r
         MK{"Makedonijos Respublika"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 494f69c..2ab71e0 100644 (file)
@@ -227,5 +227,5 @@ lu{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fd5e769..19593a0 100644 (file)
@@ -227,5 +227,5 @@ luo{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6c0db0d..90a1c00 100644 (file)
@@ -227,5 +227,5 @@ luy{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 58f1536..40715cf 100644 (file)
@@ -89,7 +89,7 @@ lv{
         CW{"Kirasao"}\r
         CX{"Ziemsvētku sala"}\r
         CY{"Kipra"}\r
-        CZ{"Čehijas Republika"}\r
+        CZ{"Čehija"}\r
         DE{"Vācija"}\r
         DG{"Djego Garsijas atols"}\r
         DJ{"Džibutija"}\r
@@ -146,7 +146,7 @@ lv{
         IO{"Indijas okeāna Britu teritorija"}\r
         IQ{"Irāka"}\r
         IR{"Irāna"}\r
-        IS{"Īslande"}\r
+        IS{"Islande"}\r
         IT{"Itālija"}\r
         JE{"Džērsija"}\r
         JM{"Jamaika"}\r
@@ -305,9 +305,9 @@ lv{
         CD{"Kongo Demokrātiskā Republika"}\r
         CG{"Kongo (Republika)"}\r
         CI{"Ziloņkaula krasts"}\r
-        CZ{"Čehija"}\r
+        CZ{"Čehijas Republika"}\r
         FK{"Folklenda (Malvinu) salas"}\r
         MK{"bijusī Dienvidslāvijas Maķedonijas Republika"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index dda125a..13da70a 100644 (file)
@@ -227,5 +227,5 @@ mas{
         ZM{"Sambia"}\r
         ZW{"Simbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b473154..d633b53 100644 (file)
@@ -227,5 +227,5 @@ mer{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5fab51d..e41c0a5 100644 (file)
@@ -227,5 +227,5 @@ mfe{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9ddf37d..c8119ff 100644 (file)
@@ -227,5 +227,5 @@ mg{
         ZM{"Zambia"}\r
         ZW{"Zimbaboe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 06f3139..a53b753 100644 (file)
@@ -140,5 +140,5 @@ mgh{
         ZM{"Uzambia"}\r
         ZW{"Uzimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9c4aef4..0405209 100644 (file)
@@ -5,5 +5,5 @@ mgo{
         CM{"Kamalun"}\r
         ZZ{"aba aben tisɔ̀"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a72800e..a67e6c5 100644 (file)
@@ -89,7 +89,7 @@ mk{
         CW{"Курасао"}\r
         CX{"Божиќен Остров"}\r
         CY{"Кипар"}\r
-        CZ{"РепÑ\83блика Ð§ÐµÑ\88ка"}\r
+        CZ{"Чешка"}\r
         DE{"Германија"}\r
         DG{"Диего Гарсија"}\r
         DJ{"Џибути"}\r
@@ -305,10 +305,10 @@ mk{
         CD{"Конго (Демократска Република Конго)"}\r
         CG{"Конго (Република)"}\r
         CI{"Брег на Слоновата Коска"}\r
-        CZ{"Чешка"}\r
+        CZ{"РепÑ\83блика Ð§ÐµÑ\88ка"}\r
         FK{"Фолкландски Острови (Малвински Острови)"}\r
         MK{"Република Македонија"}\r
         TL{"Источен Тимор"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index a4b5000..0bbbb98 100644 (file)
@@ -89,7 +89,7 @@ ml{
         CW{"കുറാകാവോ"}\r
         CX{"ക്രിസ്മസ് ദ്വീപ്"}\r
         CY{"സൈപ്രസ്"}\r
-        CZ{"à´\9aàµ\86à´\95àµ\8dà´\95àµ\8d à´±à´¿à´ªàµ\8dപബàµ\8dലിà´\95àµ\8d"}\r
+        CZ{"à´\9aàµ\86à´\95àµ\8dà´\95à´¿à´¯"}\r
         DE{"ജർമനി"}\r
         DG{"ഡീഗോ ഗ്രാഷ്യ"}\r
         DJ{"ദിജിബൗട്ടി"}\r
@@ -305,10 +305,10 @@ ml{
         CD{"കോംഗോ (DRC)"}\r
         CG{"കോംഗോ (റിപ്പബ്ലിക്ക്)"}\r
         CI{"ഐവറി കോസ്റ്റ്"}\r
-        CZ{"à´\9aàµ\86à´\95àµ\8dà´\95à´¿à´¯"}\r
+        CZ{"à´\9aàµ\86à´\95àµ\8dà´\95àµ\8d à´±à´¿à´ªàµ\8dപബàµ\8dലിà´\95àµ\8d"}\r
         FK{"ഫോക്ക്‌ലാൻഡ് ദ്വീപുകൾ (ഐലാസ് മാൽവിനാസ്)"}\r
         MK{"മാസിഡോണിയ (FYROM)"}\r
         TL{"കിഴക്കൻ തിമോർ"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 0eb1d83..a708952 100644 (file)
@@ -89,7 +89,7 @@ mn{
         CW{"Куракао"}\r
         CX{"Зул сарын арал"}\r
         CY{"Кипр"}\r
-        CZ{"Ð\91үгд Ð\9dайÑ\80амдаÑ\85 Ð§ÐµÑ\85 Ð£Ð»Ñ\81"}\r
+        CZ{"ЧеÑ\85"}\r
         DE{"Герман"}\r
         DG{"Диего Гарсиа"}\r
         DJ{"Джибути"}\r
@@ -305,10 +305,10 @@ mn{
         CD{"Конго (БНУ)"}\r
         CG{"Конго (Бүгд Найрамдах улс)"}\r
         CI{"Зааны ясан эрэг"}\r
-        CZ{"ЧеÑ\85"}\r
+        CZ{"Ð\91үгд Ð\9dайÑ\80амдаÑ\85 Ð§ÐµÑ\85 Ð£Ð»Ñ\81"}\r
         FK{"Фолькландын Арлууд (Ислас Мальвинас)"}\r
         MK{"Македон (Хуучин Югославын бүрэлдэхүүний Македон)"}\r
         TL{"Зүүн Тимор"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 1cbb82a..2860f05 100644 (file)
@@ -89,7 +89,7 @@ mr{
         CW{"क्युरासाओ"}\r
         CX{"ख्रिसमस बेट"}\r
         CY{"सायप्रस"}\r
-        CZ{"झेक प्रजासत्ताक"}\r
+        CZ{"झेकिया"}\r
         DE{"जर्मनी"}\r
         DG{"दिएगो गार्सिया"}\r
         DJ{"जिबौटी"}\r
@@ -304,10 +304,10 @@ mr{
     Countries%variant{\r
         CD{"काँगो (डीआरसी)"}\r
         CG{"काँगो (प्रजासत्ताक)"}\r
-        CZ{"झेकिया"}\r
+        CZ{"झेक प्रजासत्ताक"}\r
         FK{"फॉकलंड बेटे (इस्लास मालविनास)"}\r
         MK{"मॅसेडोनिया (FYROM)"}\r
         TL{"पूर्व तिमोर"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index bc53159..08cfaaf 100644 (file)
@@ -89,7 +89,7 @@ ms{
         CW{"Curacao"}\r
         CX{"Pulau Krismas"}\r
         CY{"Cyprus"}\r
-        CZ{"Republik Czech"}\r
+        CZ{"Czechia"}\r
         DE{"Jerman"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ ms{
         CD{"Congo (DRC)"}\r
         CG{"Congo (Republik)"}\r
         CI{"Ivory Coast"}\r
-        CZ{"Czechia"}\r
+        CZ{"Republik Czech"}\r
         FK{"Kepulauan Falkland (Islas Malvinas)"}\r
         MK{"Macedonia (FYROM)"}\r
         TL{"Timor Timur"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 09ed472..8d8c388 100644 (file)
@@ -308,5 +308,5 @@ mt{
         FK{"Il-Gżejjer Falkland (il-Gżejjer Malvinas)"}\r
         TL{"Timor tal-Lvant"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
 }\r
index a934d6d..86de11b 100644 (file)
@@ -227,5 +227,5 @@ mua{
         ZM{"Zambiya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8f47eca..cbef743 100644 (file)
@@ -89,7 +89,7 @@ my{
         CW{"ကျူရေးကိုးစ်"}\r
         CX{"ခရစ်စမတ် ကျွန်း"}\r
         CY{"ဆိုက်ပရပ်စ်"}\r
-        CZ{"ချက် ပြည်ထောင်စု"}\r
+        CZ{"ချက်ကီယား"}\r
         DE{"ဂျာမဏီ"}\r
         DG{"ဒီအဲဂိုဂါစီရာ"}\r
         DJ{"ဂျီဘူတီ"}\r
@@ -305,9 +305,9 @@ my{
         CD{"ကွန်ဂို ဒီမိုကရက်တစ် သမ္မတနိုင်ငံ"}\r
         CG{"ကွန်ဂို သမ္မတနိုင်ငံ"}\r
         CI{"အိုင်ဗရီကို့စ်"}\r
-        CZ{"ချက်ကီယား"}\r
+        CZ{"ချက် ပြည်ထောင်စု"}\r
         FK{"ဖော့ကလန် ကျွန်းစု (အီလားစ် မောလ်ဗီနာစ်)"}\r
         MK{"မက်စီဒိုးနီးယား (ယခင် ယူဂိုစလားဗီးယား မက်စီဒိုးနီးယားပြည်ထောင်စု)"}\r
     }\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.33.28"}\r
 }\r
index 84ca385..feb2ae1 100644 (file)
@@ -307,5 +307,5 @@ mzn{
         MK{"مقدونیه جمهوری"}\r
         TL{"شرقی تیمور"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 4e8b9f1..b10bacf 100644 (file)
@@ -227,5 +227,5 @@ naq{
         ZM{"Zambiab"}\r
         ZW{"Zimbabweb"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 107fb07..4143d29 100644 (file)
@@ -89,7 +89,7 @@ nb{
         CW{"Curaçao"}\r
         CX{"Christmasøya"}\r
         CY{"Kypros"}\r
-        CZ{"Den tsjekkiske republikk"}\r
+        CZ{"Tsjekkia"}\r
         DE{"Tyskland"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -304,9 +304,9 @@ nb{
     Countries%variant{\r
         CD{"Den demokratiske republikken Kongo"}\r
         CG{"Republikken Kongo"}\r
-        CZ{"Tsjekkia"}\r
+        CZ{"Den tsjekkiske republikk"}\r
         FK{"Falklandsøyene (Islas Malvinas)"}\r
         MK{"Den tidligere jugoslaviske republikk Makedonia"}\r
     }\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
 }\r
index c09f54b..e13b891 100644 (file)
@@ -227,5 +227,5 @@ nd{
         ZM{"Zambiya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e395563..7874b05 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.28.71"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 181521d..8a080b4 100644 (file)
@@ -89,7 +89,7 @@ ne{
         CW{"कुराकाओ"}\r
         CX{"क्रिष्टमस टापु"}\r
         CY{"साइप्रस"}\r
-        CZ{"à¤\9aà¥\87à¤\95 à¤\97णतनà¥\8dतà¥\8dर"}\r
+        CZ{"à¤\9aà¥\87à¤\9aिया"}\r
         DE{"जर्मनी"}\r
         DG{"डियगो गार्सिया"}\r
         DJ{"डिजिबुटी"}\r
@@ -304,10 +304,10 @@ ne{
     Countries%variant{\r
         CD{"कङ्गो (डीआर्‌सी)"}\r
         CG{"कङ्गो (गणतन्त्र)"}\r
-        CZ{"à¤\9aà¥\87à¤\9aिया"}\r
+        CZ{"à¤\9aà¥\87à¤\95 à¤\97णतनà¥\8dतà¥\8dर"}\r
         FK{"फक्ल्याण्ड टापुहरू (इज्लास माल्भिनास)"}\r
         MK{"म्याकेडोनिया (फाइरम)"}\r
         TL{"पृर्वी टीमोर"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
 }\r
index fa6b4d7..4e051df 100644 (file)
@@ -89,7 +89,7 @@ nl{
         CW{"Curaçao"}\r
         CX{"Christmaseiland"}\r
         CY{"Cyprus"}\r
-        CZ{"Tsjechië"}\r
+        CZ{"Tsjechische Republiek"}\r
         DE{"Duitsland"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -304,9 +304,9 @@ nl{
     Countries%variant{\r
         CD{"Congo (DRC)"}\r
         CG{"Congo (Republiek)"}\r
-        CZ{"Tsjechische Republiek"}\r
+        CZ{"Tsjechië"}\r
         FK{"Falklandeilanden (Islas Malvinas)"}\r
         MK{"Macedonië (FYROM)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 27dfb05..d17cb3f 100644 (file)
@@ -227,5 +227,5 @@ nmg{
         ZM{"Zambia"}\r
         ZW{"Zimbabwǝ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 12ab053..594c600 100644 (file)
@@ -303,5 +303,5 @@ nn{
         FK{"Falklandsøyane (Islas Malvinas)"}\r
         MK{"Den tidlegare jugoslaviske republikken Makedonia"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 67f3c16..09de8e4 100644 (file)
@@ -4,5 +4,5 @@ nnh{
     Countries{\r
         CM{"Kàmalûm"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 13a60f2..a1b69e1 100644 (file)
@@ -54,5 +54,5 @@ nus{
         TD{"Ca̱d"}\r
         VG{"Burutic dhuɔ̱ɔ̱l be̱rgin"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 66c7f81..57dd8cf 100644 (file)
@@ -227,5 +227,5 @@ nyn{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2cc7259..e320f58 100644 (file)
@@ -15,5 +15,5 @@ om{
         RU{"Russia"}\r
         US{"United States"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ace7789..d1cba97 100644 (file)
@@ -281,5 +281,5 @@ or{
         ZW{"ଜିମ୍ବାୱେ"}\r
         ZZ{"ଅଜଣା କିମ୍ବା ଅବୈଧ ପ୍ରଦେଶ"}\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 33fc895..cdc2071 100644 (file)
@@ -21,5 +21,5 @@ os{
         US{"АИШ"}\r
         ZZ{"Нӕзонгӕ бӕстӕ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 14c20c0..c39c690 100644 (file)
@@ -89,7 +89,7 @@ pa{
         CW{"ਕੁਰਾਕਾਓ"}\r
         CX{"ਕ੍ਰਿਸਮਿਸ ਟਾਪੂ"}\r
         CY{"ਸਾਇਪ੍ਰਸ"}\r
-        CZ{"à¨\9aà©\88ੱà¨\95 à¨\97ਣਰਾà¨\9c"}\r
+        CZ{"à¨\9aà©\88à¨\95à©\80à¨\86"}\r
         DE{"ਜਰਮਨੀ"}\r
         DG{"ਡੀਇਗੋ ਗਾਰਸੀਆ"}\r
         DJ{"ਜ਼ੀਬੂਤੀ"}\r
@@ -305,10 +305,10 @@ pa{
         CD{"ਕਾਂਗੋ ਲੋਕਤੰਤਰੀ ਗਣਰਾਜ"}\r
         CG{"ਕਾਂਗੋ ਗਣਰਾਜ"}\r
         CI{"ਆਇਵਰੀ ਕੋਸਟ"}\r
-        CZ{"à¨\9aà©\88à¨\95à©\80à¨\86"}\r
+        CZ{"à¨\9aà©\88ੱà¨\95 à¨\97ਣਰਾà¨\9c"}\r
         FK{"ਫ਼ਾਕਲੈਂਡ ਟਾਪੂ (ਆਈਲਾਸ ਮਾਲਵਿਨਾਸ)"}\r
         MK{"ਮੈਕਡੋਨੀਆ (ਪੂਰਵ ਯੂਗੋਸਲਾਵ ਮੈਕਡੋਨੀਆਈ ਗਣਰਾਜ)"}\r
         TL{"ਪੂਰਬ ਤਿਮੋਰ"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 4ce5008..07d1daf 100644 (file)
@@ -5,5 +5,5 @@ pa_Arab{
     Countries{\r
         PK{"پاکستان"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dca680f..dc1602d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c9537a9..896832d 100644 (file)
@@ -309,5 +309,5 @@ pl{
         MK{"Była Jugosłowiańska Republika Macedonii"}\r
         TL{"Timor-Leste"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index c7df177..567ea80 100644 (file)
Binary files a/source/data/region/pool.res and b/source/data/region/pool.res differ
index 2f08a77..f7d7825 100644 (file)
@@ -66,5 +66,5 @@ ps{
         UY{"یوروګوای"}\r
         YE{"یمن"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a51f3c6..2acac45 100644 (file)
@@ -89,7 +89,7 @@ pt{
         CW{"Curaçao"}\r
         CX{"Ilha Christmas"}\r
         CY{"Chipre"}\r
-        CZ{"República Tcheca"}\r
+        CZ{"Tchéquia"}\r
         DE{"Alemanha"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibuti"}\r
@@ -304,10 +304,10 @@ pt{
     Countries%variant{\r
         CD{"República Democrática do Congo"}\r
         CG{"Congo"}\r
-        CZ{"Tchéquia"}\r
+        CZ{"República Tcheca"}\r
         FK{"Ilhas Falkland (Ilhas Malvinas)"}\r
         MK{"Macedônia (ARIM)"}\r
         TL{"República Democrática de Timor-Leste"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 2e783ef..a385088 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_AO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a4226b1..4ee7339 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 829f400..ed8f313 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fd432f9..0f6e235 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 75c5d9d..f4cd124 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5eca2f..b5a1669 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c47efaa..d30b2ff 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9878c5a..060a5fc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c7e0396..fc59731 100644 (file)
@@ -74,5 +74,5 @@ pt_PT{
         FK{"Ilhas Malvinas"}\r
         MK{"Macedónia (ARJM)"}\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.86"}\r
 }\r
index fcc981b..e3f0965 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bbbc3d..b8cb201 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b874ea4..0dcd5d0 100644 (file)
@@ -193,5 +193,5 @@ qu{
         ZM{"Zambia"}\r
         ZW{"Zimbabue"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e4eb147..f61eb66 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-REGION_CLDR_VERSION = %version%\r
+REGION_CLDR_VERSION = 31.0.1\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a '%local%' file in this same directory.\r
+# you should consider creating a 'reslocal.mk' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example '%local%' files:\r
+# Example 'reslocal.mk' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,19 +26,19 @@ REGION_CLDR_VERSION = %version%
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-REGION_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
- in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
- ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
- no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
- pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
- shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt\\r
- sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt sr_Latn_YU.txt\\r
- sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt\\r
- th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt\\r
- uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt\\r
- zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt zh_MO.txt\\r
- zh_SG.txt zh_TW.txt\r
+REGION_SYNTHETIC_ALIAS = ars.txt az_AZ.txt az_Latn_AZ.txt bs_BA.txt\\r
bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt he_IL.txt\\r
+ id_ID.txt in.txt in_ID.txt iw.txt iw_IL.txt\\r
+ ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt\\r
+ no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt\\r
+ pa_IN.txt pa_PK.txt sh.txt sh_BA.txt sh_CS.txt\\r
+ sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt\\r
+ sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt\\r
+ sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt\\r
+ th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
+ uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt\\r
+ zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt\\r
+ zh_MO.txt zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -76,47 +76,47 @@ REGION_SOURCE = af.txt agq.txt ak.txt am.txt\
  en_TV.txt en_TZ.txt en_UG.txt en_VC.txt en_VG.txt\\r
  en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt en_ZW.txt\\r
  eo.txt es.txt es_419.txt es_AR.txt es_BO.txt\\r
- es_BR.txt es_CL.txt es_CO.txt es_CR.txt es_CU.txt\\r
- es_DO.txt es_EC.txt es_GT.txt es_HN.txt es_MX.txt\\r
- es_NI.txt es_PA.txt es_PE.txt es_PR.txt es_PY.txt\\r
- es_SV.txt es_US.txt es_UY.txt es_VE.txt et.txt\\r
- eu.txt ewo.txt fa.txt fa_AF.txt ff.txt\\r
- fi.txt fil.txt fo.txt fr.txt fr_BE.txt\\r
- fr_CA.txt fur.txt fy.txt ga.txt gd.txt\\r
- gl.txt gsw.txt gu.txt guz.txt gv.txt\\r
ha.txt haw.txt he.txt hi.txt hr.txt\\r
- hsb.txt hu.txt hy.txt id.txt ig.txt\\r
- ii.txt is.txt it.txt ja.txt jgo.txt\\r
- jmc.txt ka.txt kab.txt kam.txt kde.txt\\r
- kea.txt khq.txt ki.txt kk.txt kkj.txt\\r
- kl.txt kln.txt km.txt kn.txt ko.txt\\r
- ko_KP.txt kok.txt ks.txt ksb.txt ksf.txt\\r
- ksh.txt kw.txt ky.txt lag.txt lb.txt\\r
- lg.txt lkt.txt ln.txt lo.txt lrc.txt\\r
- lt.txt lu.txt luo.txt luy.txt lv.txt\\r
mas.txt mer.txt mfe.txt mg.txt mgh.txt\\r
- mgo.txt mk.txt ml.txt mn.txt mr.txt\\r
- ms.txt mt.txt mua.txt my.txt mzn.txt\\r
naq.txt nb.txt nd.txt nds.txt ne.txt\\r
- nl.txt nmg.txt nn.txt nnh.txt nus.txt\\r
- nyn.txt om.txt or.txt os.txt pa.txt\\r
- pa_Arab.txt pa_Guru.txt pl.txt ps.txt pt.txt\\r
- pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt\\r
- pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\\r
- pt_TL.txt qu.txt rm.txt rn.txt ro.txt\\r
- ro_MD.txt rof.txt ru.txt ru_UA.txt rw.txt\\r
- rwk.txt sah.txt saq.txt sbp.txt se.txt\\r
- se_FI.txt seh.txt ses.txt sg.txt shi.txt\\r
- shi_Latn.txt shi_Tfng.txt si.txt sk.txt sl.txt\\r
- smn.txt sn.txt so.txt sq.txt sr.txt\\r
- sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt sr_Latn.txt\\r
- sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt sw.txt\\r
- sw_CD.txt sw_KE.txt ta.txt te.txt teo.txt\\r
- th.txt ti.txt to.txt tr.txt twq.txt\\r
- tzm.txt ug.txt uk.txt ur.txt ur_IN.txt\\r
- uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt\\r
- vai_Latn.txt vai_Vaii.txt vi.txt vun.txt wae.txt\\r
xog.txt yav.txt yi.txt yo.txt yo_BJ.txt\\r
- yue.txt zgh.txt zh.txt zh_Hans.txt zh_Hant.txt\\r
- zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_BR.txt es_BZ.txt es_CL.txt es_CO.txt es_CR.txt\\r
+ es_CU.txt es_DO.txt es_EC.txt es_GT.txt es_HN.txt\\r
+ es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PR.txt\\r
+ es_PY.txt es_SV.txt es_US.txt es_UY.txt es_VE.txt\\r
+ et.txt eu.txt ewo.txt fa.txt fa_AF.txt\\r
+ ff.txt fi.txt fil.txt fo.txt fr.txt\\r
+ fr_BE.txt fr_CA.txt fur.txt fy.txt ga.txt\\r
+ gd.txt gl.txt gsw.txt gu.txt guz.txt\\r
gv.txt ha.txt haw.txt he.txt hi.txt\\r
+ hr.txt hsb.txt hu.txt hy.txt id.txt\\r
+ ig.txt ii.txt is.txt it.txt ja.txt\\r
+ jgo.txt jmc.txt ka.txt kab.txt kam.txt\\r
+ kde.txt kea.txt khq.txt ki.txt kk.txt\\r
+ kkj.txt kl.txt kln.txt km.txt kn.txt\\r
+ ko.txt ko_KP.txt kok.txt ks.txt ksb.txt\\r
+ ksf.txt ksh.txt kw.txt ky.txt lag.txt\\r
+ lb.txt lg.txt lkt.txt ln.txt lo.txt\\r
+ lrc.txt lt.txt lu.txt luo.txt luy.txt\\r
lv.txt mas.txt mer.txt mfe.txt mg.txt\\r
+ mgh.txt mgo.txt mk.txt ml.txt mn.txt\\r
+ mr.txt ms.txt mt.txt mua.txt my.txt\\r
mzn.txt naq.txt nb.txt nd.txt nds.txt\\r
+ ne.txt nl.txt nmg.txt nn.txt nnh.txt\\r
+ nus.txt nyn.txt om.txt or.txt os.txt\\r
+ pa.txt pa_Arab.txt pa_Guru.txt pl.txt ps.txt\\r
+ pt.txt pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt\\r
+ pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt\\r
+ pt_ST.txt pt_TL.txt qu.txt rm.txt rn.txt\\r
+ ro.txt ro_MD.txt rof.txt ru.txt ru_UA.txt\\r
+ rw.txt rwk.txt sah.txt saq.txt sbp.txt\\r
+ se.txt se_FI.txt seh.txt ses.txt sg.txt\\r
+ shi.txt shi_Latn.txt shi_Tfng.txt si.txt sk.txt\\r
+ sl.txt smn.txt sn.txt so.txt sq.txt\\r
+ sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt\\r
+ sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt\\r
+ sw.txt sw_CD.txt sw_KE.txt ta.txt te.txt\\r
+ teo.txt th.txt ti.txt to.txt tr.txt\\r
+ twq.txt tzm.txt ug.txt uk.txt ur.txt\\r
+ ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt\\r
+ vai.txt vai_Latn.txt vai_Vaii.txt vi.txt vun.txt\\r
wae.txt xog.txt yav.txt yi.txt yo.txt\\r
+ yo_BJ.txt yue.txt zgh.txt zh.txt zh_Hans.txt\\r
+ zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index f964379..9656f93 100644 (file)
@@ -280,5 +280,5 @@ rm{
         ZW{"Simbabwe"}\r
         ZZ{"Regiun betg encouschenta u nunvalaivla"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index dfe849f..e088dbe 100644 (file)
@@ -227,5 +227,5 @@ rn{
         ZM{"Zambiya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 420f4b5..18430c5 100644 (file)
@@ -89,7 +89,7 @@ ro{
         CW{"Curaçao"}\r
         CX{"Insula Christmas"}\r
         CY{"Cipru"}\r
-        CZ{"Republica Cehă"}\r
+        CZ{"Cehia"}\r
         DE{"Germania"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,9 +305,9 @@ ro{
         CD{"Congo (Republica Democrată Congo)"}\r
         CG{"Congo (Republica)"}\r
         CI{"Coasta de Fildeș"}\r
-        CZ{"Cehia"}\r
+        CZ{"Republica Cehă"}\r
         FK{"Insulele Falkland (Insulele Malvine)"}\r
         MK{"Republica Macedonia (FRIM)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
 }\r
index d6c40c4..08cade9 100644 (file)
@@ -4,5 +4,5 @@ ro_MD{
     Countries{\r
         MM{"Myanmar"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9a6795a..4d4dfbc 100644 (file)
@@ -227,5 +227,5 @@ rof{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a22c443..664b849 100644 (file)
@@ -4,5 +4,5 @@
  * ICU <specials> source: <path>/common/main/root.xml\r
  */\r
 root{\r
-    Version{"2.1.30.58"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 79ad48d..aa987c5 100644 (file)
@@ -309,5 +309,5 @@ ru{
         MK{"Македония (БЮРМ)"}\r
         TL{"Тимор-Лесте"}\r
     }\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
 }\r
index e4f26ab..95bb3bf 100644 (file)
@@ -14,5 +14,5 @@ ru_UA{
         TL{"Тимор-Лесте"}\r
         UM{"Малые Тихоокеанские Отдаленные Острова США"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 44b0454..6b0b17a 100644 (file)
@@ -5,5 +5,5 @@ rw{
         RW{"Rwanda"}\r
         TO{"Igitonga"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index db5b3f3..6d11a9c 100644 (file)
@@ -227,5 +227,5 @@ rwk{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ca79d30..09987ba 100644 (file)
@@ -31,5 +31,5 @@ sah{
     Countries%short{\r
         US{"АХШ"}\r
     }\r
-    Version{"2.1.27.87"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f9c5dfc..49d1cd3 100644 (file)
@@ -227,5 +227,5 @@ saq{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8456202..85d9b2b 100644 (file)
@@ -227,5 +227,5 @@ sbp{
         ZM{"Sambiya"}\r
         ZW{"Simbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b1d294f..ed7cb4d 100644 (file)
@@ -294,5 +294,5 @@ se{
         PS{"Palestina"}\r
         US{"USA"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e26dc36..d5b8ba6 100644 (file)
@@ -15,5 +15,5 @@ se_FI{
     Countries%variant{\r
         CI{"Côte d’Ivoire"}\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4a816be..2571e4b 100644 (file)
@@ -226,5 +226,5 @@ seh{
         ZM{"Zâmbia"}\r
         ZW{"Zimbábue"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ea6e373..be8d987 100644 (file)
@@ -227,5 +227,5 @@ ses{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bc9052b..e811e61 100644 (file)
@@ -227,5 +227,5 @@ sg{
         ZM{"Zambïi"}\r
         ZW{"Zimbäbwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a343151..0f09cac 100644 (file)
@@ -227,5 +227,5 @@ shi{
         ZM{"ⵣⴰⵎⴱⵢⴰ"}\r
         ZW{"ⵣⵉⵎⴱⴰⴱⵡⵉ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b885e77..352696d 100644 (file)
@@ -228,5 +228,5 @@ shi_Latn{
         ZM{"zambya"}\r
         ZW{"zimbabwi"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 22785f4..2db194b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8cf9132..50724e5 100644 (file)
@@ -89,7 +89,7 @@ si{
         CW{"කුරකාවෝ"}\r
         CX{"ක්‍රිස්මස් දූපත"}\r
         CY{"සයිප්‍රසය"}\r
-        CZ{"චෙක් ජනරජය"}\r
+        CZ{"චෙක්"}\r
         DE{"ජර්මනිය"}\r
         DG{"දියාගෝ ගාර්සියා"}\r
         DJ{"ජිබුටි"}\r
@@ -305,10 +305,10 @@ si{
         CD{"කොංගෝව"}\r
         CG{"කොංගෝ (ජනරජය)"}\r
         CI{"අයිවරි කෝස්ට්"}\r
-        CZ{"චෙක්"}\r
+        CZ{"චෙක් ජනරජය"}\r
         FK{"ෆෝක්ලන්ත දූපත් (අයිලස් මල්වියනාස්)"}\r
         MK{"මැසිඩෝනියාව (FYROM)"}\r
         TL{"නැගෙනහිර ටිමෝරය"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.28"}\r
 }\r
index 5f80df1..bb653b9 100644 (file)
@@ -89,7 +89,7 @@ sk{
         CW{"Curaçao"}\r
         CX{"Vianočný ostrov"}\r
         CY{"Cyprus"}\r
-        CZ{"Česká republika"}\r
+        CZ{"Česko"}\r
         DE{"Nemecko"}\r
         DG{"Diego Garcia"}\r
         DJ{"Džibutsko"}\r
@@ -302,8 +302,8 @@ sk{
         US{"USA"}\r
     }\r
     Countries%variant{\r
-        CZ{"Česko"}\r
+        CZ{"Česká republika"}\r
         MK{"Macedónsko (BJRM)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 6a0e963..6c61c8d 100644 (file)
@@ -309,5 +309,5 @@ sl{
         MK{"Makedonija (FYROM)"}\r
         TL{"Vzhodni Timor"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index a6da9ca..c0e6222 100644 (file)
@@ -265,5 +265,5 @@ smn{
         FK{"Falklandsuolluuh (Malvinassuolluuh)"}\r
         MK{"OJT Makedonia"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8e56c5a..4f23f91 100644 (file)
@@ -226,5 +226,5 @@ sn{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 67f1499..19345c9 100644 (file)
@@ -228,5 +228,5 @@ so{
         ZW{"Simbaabwe"}\r
         ZZ{"Far aan la aqoon amase aan saxnayn"}\r
     }\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.33.76"}\r
 }\r
index f12c87f..c697d9d 100644 (file)
@@ -89,7 +89,7 @@ sq{
         CW{"Kuraçao"}\r
         CX{"Ishulli i Krishtlindjes"}\r
         CY{"Qipro"}\r
-        CZ{"Republika Çeke"}\r
+        CZ{"Çeki"}\r
         DE{"Gjermani"}\r
         DG{"Diego-Garsia"}\r
         DJ{"Xhibuti"}\r
@@ -305,10 +305,10 @@ sq{
         CD{"Kongo (RDK)"}\r
         CG{"Kongo (Republika)"}\r
         CI{"Bregu i Fildishtë"}\r
-        CZ{"Çeki"}\r
+        CZ{"Republika Çeke"}\r
         FK{"Ishujt Falkland (Malvine)"}\r
         MK{"Maqedoni (IRJM)"}\r
         TL{"Timori Lindor"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 4a24a3d..ce02908 100644 (file)
@@ -304,9 +304,8 @@ sr{
     Countries%variant{\r
         CD{"Конго (ДРК)"}\r
         CG{"Конго (Република)"}\r
-        CZ{"CZ"}\r
         FK{"Фокландска (Малвинска) острва"}\r
         MK{"Македонија (БЈРМ)"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.73"}\r
 }\r
index 0b50a55..2e18268 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2cab989..0c1f5c3 100644 (file)
@@ -21,5 +21,5 @@ sr_Cyrl_BA{
     Countries%variant{\r
         MK{"БЈР Македонија"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d7f09a4..5ff5187 100644 (file)
@@ -19,5 +19,5 @@ sr_Cyrl_ME{
     Countries%variant{\r
         MK{"БЈР Македонија"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e577b1b..ef2159b 100644 (file)
@@ -18,5 +18,5 @@ sr_Cyrl_XK{
     Countries%variant{\r
         MK{"БЈР Македонија"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 27ef48f..faf7f1e 100644 (file)
@@ -305,9 +305,8 @@ sr_Latn{
     Countries%variant{\r
         CD{"Kongo (DRK)"}\r
         CG{"Kongo (Republika)"}\r
-        CZ{"CZ"}\r
         FK{"Foklandska (Malvinska) ostrva"}\r
         MK{"Makedonija (BJRM)"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.32.73"}\r
 }\r
index 26e8724..175bee9 100644 (file)
@@ -21,5 +21,5 @@ sr_Latn_BA{
     Countries%variant{\r
         MK{"BJR Makedonija"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f268278..7077d34 100644 (file)
@@ -19,5 +19,5 @@ sr_Latn_ME{
     Countries%variant{\r
         MK{"BJR Makedonija"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6a0d253..aed66be 100644 (file)
@@ -18,5 +18,5 @@ sr_Latn_XK{
     Countries%variant{\r
         MK{"BJR Makedonija"}\r
     }\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f87afd5..d9a621b 100644 (file)
@@ -306,5 +306,5 @@ sv{
         CG{"Republiken Kongo"}\r
         MK{"f.d. jugoslaviska republiken Makedonien"}\r
     }\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 16eb7c1..5b39892 100644 (file)
@@ -89,7 +89,7 @@ sw{
         CW{"Kurakao"}\r
         CX{"Kisiwa cha Krismasi"}\r
         CY{"Cyprus"}\r
-        CZ{"Jamhuri ya Cheki"}\r
+        CZ{"Chechia"}\r
         DE{"Ujerumani"}\r
         DG{"Diego Garcia"}\r
         DJ{"Jibuti"}\r
@@ -305,9 +305,10 @@ sw{
         CD{"Kongo (DRC)"}\r
         CG{"Jamhuri ya Kongo"}\r
         CI{"Ivory Coast"}\r
+        CZ{"Jamhuri ya Cheki"}\r
         FK{"Visiwa vya Falkland (Islas Malvinas)"}\r
         MK{"Masedonia (FYROM)"}\r
         TL{"Timor ya Mashariki"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.73"}\r
 }\r
index 90b12ae..1d22fb9 100644 (file)
@@ -32,5 +32,5 @@ sw_CD{
         TL{"Timori ya Mashariki"}\r
         VN{"Vietnamu"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c652d75..7a3f62b 100644 (file)
@@ -26,5 +26,5 @@ sw_KE{
         TD{"Chadi"}\r
         VN{"Vietnamu"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 76a4fff..ca9b654 100644 (file)
@@ -89,7 +89,7 @@ ta{
         CW{"குராகவ்"}\r
         CX{"கிறிஸ்துமஸ் தீவு"}\r
         CY{"சைப்ரஸ்"}\r
-        CZ{"à®\9aà¯\86à®\95à¯\8d à®\95à¯\81à®\9fியரà®\9aà¯\81"}\r
+        CZ{"à®\9aà¯\86à®\9aியா"}\r
         DE{"ஜெர்மனி"}\r
         DG{"டியகோ கார்ஷியா"}\r
         DJ{"ஜிபௌட்டி"}\r
@@ -305,10 +305,10 @@ ta{
         CD{"காங்கோ (டிஆர்சி)"}\r
         CG{"காங்கோ (குடியரசு)"}\r
         CI{"ஐவரி கோஸ்ட்"}\r
-        CZ{"à®\9aà¯\86à®\9aியா"}\r
+        CZ{"à®\9aà¯\86à®\95à¯\8d à®\95à¯\81à®\9fியரà®\9aà¯\81"}\r
         FK{"ஃபாக்லாந்து தீவுகள் (இஸ்லாஸ் மால்வினஸ்)"}\r
         MK{"மாசிடோனியா (ஃபைரோம்)"}\r
         TL{"கிழக்கு தைமூர்"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.4"}\r
 }\r
index b995ea5..5800a07 100644 (file)
@@ -89,7 +89,7 @@ te{
         CW{"కురాకవో"}\r
         CX{"క్రిస్మస్ దీవి"}\r
         CY{"సైప్రస్"}\r
-        CZ{"చెక్ రిపబ్లిక్"}\r
+        CZ{"చెక్‌చియ"}\r
         DE{"జర్మనీ"}\r
         DG{"డియాగో గార్సియా"}\r
         DJ{"జిబౌటి"}\r
@@ -305,10 +305,10 @@ te{
         CD{"కాంగో (DRC)"}\r
         CG{"కాంగో (రిపబ్లిక్)"}\r
         CI{"ఐవరీ కోస్ట్"}\r
-        CZ{"చెక్‌చియ"}\r
+        CZ{"చెక్ రిపబ్లిక్"}\r
         FK{"ఫాక్‌ల్యాండ్ దీవులు (ఇస్లాస్ మాల్వినాస్)"}\r
         MK{"మేసిడోనియా (FYROM)"}\r
         TL{"తూర్పు తైమూర్"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
 }\r
index 038c6ad..afed4dd 100644 (file)
@@ -227,5 +227,5 @@ teo{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6af07b..a605496 100644 (file)
@@ -89,7 +89,7 @@ th{
         CW{"คูราเซา"}\r
         CX{"เกาะคริสต์มาส"}\r
         CY{"ไซปรัส"}\r
-        CZ{"สาà¸\98ารà¸\93รัà¸\90à¹\80à¸\8aà¹\87à¸\81"}\r
+        CZ{"เช็ก"}\r
         DE{"เยอรมนี"}\r
         DG{"ดิเอโกการ์เซีย"}\r
         DJ{"จิบูตี"}\r
@@ -305,10 +305,10 @@ th{
         CD{"คองโก (สาธารณรัฐประชาธิปไตย)"}\r
         CG{"คองโก (สาธารณรัฐ)"}\r
         CI{"ไอวอรี่โคสต์"}\r
-        CZ{"เช็ก"}\r
+        CZ{"สาà¸\98ารà¸\93รัà¸\90à¹\80à¸\8aà¹\87à¸\81"}\r
         FK{"หมู่เกาะฟอล์กแลนด์ (อิสลาส มาลวินาส)"}\r
         MK{"มาซิโดเนีย (FYROM)"}\r
         TL{"ติมอร์ตะวันออก"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 5a0d407..1b95d45 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b43db7a..924db5a 100644 (file)
@@ -89,7 +89,7 @@ to{
         CW{"Kulasao"}\r
         CX{"Motu Kilisimasi"}\r
         CY{"Saipalesi"}\r
-        CZ{"Lipapilika Seki"}\r
+        CZ{"Sēkia"}\r
         DE{"Siamane"}\r
         DG{"Tieko Kāsia"}\r
         DJ{"Siputi"}\r
@@ -302,8 +302,8 @@ to{
     Countries%variant{\r
         CD{"Kongo (LTK)"}\r
         CG{"Kongo (Lipapilika)"}\r
-        CZ{"Sēkia"}\r
+        CZ{"Lipapilika Seki"}\r
         MK{"Masetōnia (FYROM)"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 91386a7..eb428da 100644 (file)
@@ -89,7 +89,7 @@ tr{
         CW{"Curaçao"}\r
         CX{"Christmas Adası"}\r
         CY{"Kıbrıs"}\r
-        CZ{"Çek Cumhuriyeti"}\r
+        CZ{"Çekya"}\r
         DE{"Almanya"}\r
         DG{"Diego Garcia"}\r
         DJ{"Cibuti"}\r
@@ -304,9 +304,9 @@ tr{
     Countries%variant{\r
         CD{"Kongo Demokratik Cumhuriyeti"}\r
         CG{"Kongo Cumhuriyeti"}\r
-        CZ{"Çekya"}\r
+        CZ{"Çek Cumhuriyeti"}\r
         FK{"Falkland Adaları (Malvinas Adaları)"}\r
         TL{"Doğu Timor"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index d711daa..63c3e54 100644 (file)
@@ -227,5 +227,5 @@ twq{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 71ca926..4a8b619 100644 (file)
@@ -227,5 +227,5 @@ tzm{
         ZM{"Zambya"}\r
         ZW{"Zimbabwi"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 35b38c8..bc1ef6d 100644 (file)
@@ -306,5 +306,5 @@ ug{
         FK{"فالكلاند ئاراللىرى (ئىسلاس مالۋىناس)"}\r
         MK{"ماكېدونىيە (س ي م ج)"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index c399979..117af0d 100644 (file)
@@ -89,7 +89,7 @@ uk{
         CW{"Кюрасао"}\r
         CX{"Острів Різдва"}\r
         CY{"Кіпр"}\r
-        CZ{"ЧеÑ\81Ñ\8cка Ð ÐµÑ\81пÑ\83блÑ\96ка"}\r
+        CZ{"ЧеÑ\85Ñ\96Ñ\8f"}\r
         DE{"Німеччина"}\r
         DG{"Дієго-Гарсія"}\r
         DJ{"Джибуті"}\r
@@ -305,11 +305,11 @@ uk{
         CD{"Конго (ДРК)"}\r
         CG{"Конго (Республіка)"}\r
         CI{"Берег Слонової Кістки"}\r
-        CZ{"ЧеÑ\85Ñ\96Ñ\8f"}\r
+        CZ{"ЧеÑ\81Ñ\8cка Ð ÐµÑ\81пÑ\83блÑ\96ка"}\r
         FK{"Фолклендські (Мальвінські) острови"}\r
         FM{"Федеративні Штати Мікронезії"}\r
         MK{"Македонія (КЮРМ)"}\r
         TL{"Східний Тимор"}\r
     }\r
-    Version{"2.1.29.38"}\r
+    Version{"2.1.32.60"}\r
 }\r
index 571f4af..b2b5968 100644 (file)
@@ -89,7 +89,7 @@ ur{
         CW{"کیوراکاؤ"}\r
         CX{"جزیرہ کرسمس"}\r
         CY{"قبرص"}\r
-        CZ{"چیک جمہوریہ"}\r
+        CZ{"زکھیا"}\r
         DE{"جرمنی"}\r
         DG{"ڈائجو گارسیا"}\r
         DJ{"جبوتی"}\r
@@ -305,10 +305,10 @@ ur{
         CD{"کانگو (DRC)"}\r
         CG{"کانگو (جمہوریہ)"}\r
         CI{"آئیوری کوسٹ"}\r
-        CZ{"زکھیا"}\r
+        CZ{"چیک جمہوریہ"}\r
         FK{"فاکلینڈ جزائر (مالویناس)"}\r
         MK{"مقدونیہ (FYROM)"}\r
         TL{"مشرقی تیمور"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index c8cd231..c52086c 100644 (file)
@@ -29,5 +29,5 @@ ur_IN{
     Countries%variant{\r
         FK{"جزائر فاکلینڈ (اسلاس مالویناس)"}\r
     }\r
-    Version{"2.1.27.79"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d28b8df..0bb95ac 100644 (file)
@@ -89,7 +89,7 @@ uz{
         CW{"Kyurasao"}\r
         CX{"Rojdestvo oroli"}\r
         CY{"Kipr"}\r
-        CZ{"Chexiya Respublikasi"}\r
+        CZ{"Chexiya"}\r
         DE{"Germaniya"}\r
         DG{"Diyego-Garsiya"}\r
         DJ{"Jibuti"}\r
@@ -305,10 +305,10 @@ uz{
         CD{"Kongo (KDR)"}\r
         CG{"Kongo (Respublika)"}\r
         CI{"Fil suyagi qirg‘og‘i"}\r
-        CZ{"Chexiya"}\r
+        CZ{"Chexiya Respublikasi"}\r
         FK{"Folklend (Malvin) orollari"}\r
         MK{"Makedoniya (SYRM)"}\r
         TL{"Sharqiy Timor"}\r
     }\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.60"}\r
 }\r
index 22724ba..8d431e7 100644 (file)
@@ -5,5 +5,5 @@ uz_Arab{
     Countries{\r
         AF{"افغانستان"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4cb47f2..c38677c 100644 (file)
@@ -90,7 +90,7 @@ uz_Cyrl{
         CW{"Кюрасао"}\r
         CX{"Рождество ороли"}\r
         CY{"Кипр"}\r
-        CZ{"Чехия Республикаси"}\r
+        CZ{"Чехия"}\r
         DE{"Германия"}\r
         DG{"Диего-Гарсия"}\r
         DJ{"Жибути"}\r
@@ -304,10 +304,10 @@ uz_Cyrl{
         CD{"Конго (КДР)"}\r
         CG{"Конго (Республика)"}\r
         CI{"Фил Суяги Қирғоғи"}\r
-        CZ{"Чехия"}\r
+        CZ{"Чехия Республикаси"}\r
         FK{"Фолкленд (Малвин) ороллари"}\r
         MK{"Македония (СЮРМ)"}\r
         TL{"Шарқий Тимор"}\r
     }\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.86"}\r
 }\r
index bdf99c4..fdd810c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c0223a1..0eac451 100644 (file)
@@ -226,5 +226,5 @@ vai{
         ZM{"ꕤꔭꕩ"}\r
         ZW{"ꔽꕓꖜꔃ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2998b34..80b4d72 100644 (file)
@@ -227,5 +227,5 @@ vai_Latn{
         ZM{"Zambiya"}\r
         ZW{"Zimbabhuwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38872b5..e66f0f3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2b1c358..6cb4bb0 100644 (file)
@@ -89,7 +89,7 @@ vi{
         CW{"Curaçao"}\r
         CX{"Đảo Giáng Sinh"}\r
         CY{"Síp"}\r
-        CZ{"Cộng hòa Séc"}\r
+        CZ{"Czechia"}\r
         DE{"Đức"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ vi{
         CD{"Cộng hòa Dân chủ Congo"}\r
         CG{"Cộng hòa Congo"}\r
         CI{"Bờ Biển Ngà"}\r
-        CZ{"Czechia"}\r
+        CZ{"Cộng hòa Séc"}\r
         FK{"Quần đảo Falkland (Islas Malvinas)"}\r
         MK{"Macedonia (FYROM)"}\r
         TL{"Đông Timor"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
 }\r
index 2621321..9b7e2d7 100644 (file)
@@ -227,5 +227,5 @@ vun{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 518c4f5..e1b1568 100644 (file)
@@ -299,5 +299,5 @@ wae{
         MK{"Mazedonie (EJR)"}\r
         TL{"Wešttimor"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5b3802d..3fcc097 100644 (file)
@@ -226,5 +226,5 @@ xog{
         ZM{"Zambya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a812a40..baa2caf 100644 (file)
@@ -226,5 +226,5 @@ yav{
         ZM{"saambíi"}\r
         ZW{"simbapuwé"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7960510..6c066b4 100644 (file)
@@ -231,5 +231,5 @@ yi{
     Countries%variant{\r
         TL{"מזרח טימאר"}\r
     }\r
-    Version{"2.1.27.97"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 30becb9..92f3145 100644 (file)
@@ -227,5 +227,5 @@ yo{
         ZM{"Orílẹ́ède ṣamibia"}\r
         ZW{"Orílẹ́ède ṣimibabe"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dcbd1a2..0d5a057 100644 (file)
@@ -227,5 +227,5 @@ yo_BJ{
         ZM{"Orílɛ́ède shamibia"}\r
         ZW{"Orílɛ́ède shimibabe"}\r
     }\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8cf68bb..3aae584 100644 (file)
@@ -89,7 +89,7 @@ yue{
         CW{"庫拉索"}\r
         CX{"聖誕島"}\r
         CY{"賽普勒斯"}\r
-        CZ{"捷克共和國"}\r
+        CZ{"捷克"}\r
         DE{"德國"}\r
         DG{"迪亞哥加西亞島"}\r
         DJ{"吉布地"}\r
@@ -302,9 +302,9 @@ yue{
     Countries%variant{\r
         CD{"剛果民主共和國"}\r
         CG{"剛果共和國"}\r
-        CZ{"捷克"}\r
+        CZ{"捷克共和國"}\r
         FK{"福克蘭群島 (馬爾維納斯群島)"}\r
         MK{"前南斯拉夫馬其頓共和國"}\r
     }\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
 }\r
index bcb2b3b..3ee7ed3 100644 (file)
@@ -230,5 +230,5 @@ zgh{
         ZM{"ⵣⴰⵎⴱⵢⴰ"}\r
         ZW{"ⵣⵉⵎⴱⴰⴱⵡⵉ"}\r
     }\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f40e343..cfc9710 100644 (file)
@@ -89,7 +89,7 @@ zh{
         CW{"库拉索"}\r
         CX{"圣诞岛"}\r
         CY{"塞浦路斯"}\r
-        CZ{"捷克共和国"}\r
+        CZ{"捷克"}\r
         DE{"德国"}\r
         DG{"迪戈加西亚岛"}\r
         DJ{"吉布提"}\r
@@ -305,9 +305,9 @@ zh{
         CD{"刚果民主共和国"}\r
         CG{"刚果共和国"}\r
         CI{"象牙海岸"}\r
-        CZ{"捷克"}\r
+        CZ{"捷克共和国"}\r
         FK{"福克兰群岛(马尔维纳斯群岛)"}\r
         MK{"马其顿(前南斯拉夫马其顿共和国)"}\r
     }\r
-    Version{"2.1.29.84"}\r
+    Version{"2.1.33.94"}\r
 }\r
index c64cac5..1e311fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bc270d8..668d07f 100644 (file)
@@ -90,7 +90,7 @@ zh_Hant{
         CW{"庫拉索"}\r
         CX{"聖誕島"}\r
         CY{"賽普勒斯"}\r
-        CZ{"捷克共和國"}\r
+        CZ{"捷克"}\r
         DE{"德國"}\r
         DG{"迪亞哥加西亞島"}\r
         DJ{"吉布地"}\r
@@ -305,9 +305,9 @@ zh_Hant{
     Countries%variant{\r
         CD{"剛果民主共和國"}\r
         CG{"剛果共和國"}\r
-        CZ{"捷克"}\r
+        CZ{"捷克共和國"}\r
         FK{"福克蘭群島(馬爾維納斯群島)"}\r
         MK{"前南斯拉夫馬其頓共和國"}\r
     }\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.94"}\r
 }\r
index 49a7b80..b31dd67 100644 (file)
@@ -98,5 +98,5 @@ zh_Hant_HK{
     Countries%variant{\r
         CI{"象牙海岸"}\r
     }\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9d2c5aa..9589854 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 95e540b..20536cc 100644 (file)
@@ -89,7 +89,7 @@ zu{
         CW{"i-Curaçao"}\r
         CX{"i-Christmas Island"}\r
         CY{"i-Cyprus"}\r
-        CZ{"i-Czech Republic"}\r
+        CZ{"i-Czechia"}\r
         DE{"i-Germany"}\r
         DG{"i-Diego Garcia"}\r
         DJ{"i-Djibouti"}\r
@@ -305,10 +305,10 @@ zu{
         CD{"i-Congo (DRC)"}\r
         CG{"i-Congo (Republic)"}\r
         CI{"i-Ivory Coast"}\r
-        CZ{"i-Czechia"}\r
+        CZ{"i-Czech Republic"}\r
         FK{"i-Falkland Islands (Islas Malvinas)"}\r
         MK{"i-Macedonia (FYROM)"}\r
         TL{"i-East Timor"}\r
     }\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 0e06a03..50feb76 100644 (file)
@@ -6,6 +6,7 @@
 #\r
 \r
 $nonword = [^\uE000-\uE0FF];\r
+$wordBoundary = [^[:L:][:M:][:N:]];\r
 \uE015\uE03F\uE02F\uE03E } $nonword→كيا; # किया\r
 \uE026\uE03F\uE02F\uE03E } $nonword→ديا; # दिया\r
 \uE015\uE03F } $nonword→كي; # कि at word end\r
@@ -28,6 +29,7 @@ $nonword = [^\uE000-\uE0FF];
 \uE00C→ل; # ऌ\r
 \uE00D→ا ي; # ऍ\r
 \uE00E→ي; # ऎ\r
+$wordBoundary {\uE00F} → إي; # word-initial ए\r
 \uE00F  } $nonword→ي; # ए use ي when at end\r
 \uE00F→ي; # ए use ي when not at end\r
 \uE010  } $nonword→ا ي; # ऐ use ي when at end\r
index 66024b8..b572070 100644 (file)
@@ -26,7 +26,7 @@ $ukinzi = \u1004\u103A\u1039;  # Codepoints representing kinzi in Unicode
 # This character has multiple representations in the Zawgyi font.\r
 $zmedialra = [\u103B\u107E-\u1084];\r
 ####\r
-#### STAGE (1): CODEPOINT MAPPING FROM ZAWGYI TO UNICODE\r
+#### STAGE 1: CODEPOINT MAPPING FROM ZAWGYI TO UNICODE\r
 ####\r
 # Kinzi (predefined ligatures)\r
 # Move base character to the right\r
@@ -66,8 +66,6 @@ $zmedialra = [\u103B\u107E-\u1084];
 \u1087 → \u103E ;\r
 \u1088 → \u103E \u102F ;\r
 \u1089 → \u103E \u1030 ;\r
-# Single diacritics with space - use non-breaking\r
-# TODO(ccornelius): determine if this breaks transliteration\r
 # asat\r
 \u1039 → \u103A ;\r
 # Vowels\r
@@ -128,26 +126,30 @@ $zmedialra = [\u103B\u107E-\u1084];
 # yayit\r
 $zmedialra → \u103C ;\r
 ####\r
-#### STAGE (2): POST REORDERING RULES FOR UNICODE RENDERING\r
+#### STAGE 2: POST REORDERING RULES FOR UNICODE RENDERING\r
 #### Now every codepoint is Unicode.  This starts conversion\r
 #### from semi-visual order to logical order.\r
 ####\r
 ::Null;\r
 # Case of MYANMAR digit being used instead of a letter\r
-\u1044 \u103a → | \u104E \u103A ;\r
-# Lone zero with diacritic mark\r
-\u1031 \u1040 ($nondigits) → \u1031 \u101D $1;\r
-($nondigits) \u1040 ([\u102B-\u103F]) → $1 \u101D $2;\r
-# cwc: Simpler replacements for Zawgyi 1025\r
+# Lone digit zero\r
+[$] \u1040 ($nondigits) → \u101D $1;\r
+([\u102b-\u103f]) \u1040 ($nondigits) → $1 \u101d $2;\r
+# Lone digit 4\r
+^ \u1044 ($nondigits) → | \u104E $1 ;\r
+([\u102b-\u103f]) \u1044 ($nondigits) → $1 \u104E $2;\r
+# Simpler replacements for Zawgyi 1025\r
 \u1025 \u103A → \u1009 \u103A;\r
 \u1025 \u102E → \u1026;\r
-# Asat and dot below reordering.\r
-\u1037\u103A → \u103A\u1037;\r
+# Asat and dot below reordering, to Unicode NFC.\r
+\u103A\u1037 → \u1037\u103A;\r
 # Reorder some vowel signs\r
 \u1036 ($umedial*) ($vowelsign+) → $1 $2 \u1036 ;\r
 ([\u102B\u102C\u102F\u1030]) ([\u102D\u102E\u1032]) → $2 $1;\r
 # Move ra medial, but not others.\r
 \u103C ($consonant) → $1 \u103C;\r
+# Replace CA + YA with JHA\r
+\u1005\u103b → \u1008;\r
 ####\r
 #### Stage 3\r
 #### Move \u1031, \u1036, and \u103C after consonants.\r
@@ -193,11 +195,21 @@ $zmedialra → \u103C ;
 # Move visarga (\u1038) after other signs\r
 \u1038 ([$vowelmedial]) → $1 \u1038;\r
 \u1038 ([\u1036\u1037\u103A]) → $1 \u1038;\r
+# Reorder\r
+\u1036 \u102f → \u102f \u1036;\r
 ###\r
 ### Stage 6\r
 ### Finish medial sorting, fix conflicting and extra diacritics\r
 ###\r
 ::Null;\r
+# Fix duplicate and overlapping modifiers.\r
+\u102F \u102F+ → \u102F;\r
+\u102F \u1030 → \u102F;\r
+\u102F \u103A → \u102F;\r
+\u102D \u102E → \u102E;\r
+\u1036 \u1036+ → \u1036;\r
+# Remove space directly before diacritics.\r
+[:WSpace:] ([\u102b-\u1032\u1036-\u103e]) → $1;\r
 # Fix 103B/103A order for asat.\r
 ($consonant) \u103B \u103A → $1 \u103A \u103B;\r
 \r
index 02fdc66..76666da 100644 (file)
@@ -3793,6 +3793,16 @@ root {
             }\r
         }\r
 \r
+        ta-fonipa-t-ta {\r
+            alias {"ta-ta_FONIPA"}\r
+        }\r
+        ta-ta_FONIPA {\r
+            file {\r
+                resource:process(transliterator) {"ta_ta_FONIPA.txt"}\r
+                direction {"FORWARD"}\r
+            }\r
+        }\r
+\r
         am-t-tlh {\r
             alias {"tlh-am"}\r
         }\r
diff --git a/source/data/translit/ta_ta_FONIPA.txt b/source/data/translit/ta_ta_FONIPA.txt
new file mode 100644 (file)
index 0000000..2ded60e
--- /dev/null
@@ -0,0 +1,79 @@
+# © 2016 and later: Unicode, Inc. and others.\r
+# License & terms of use: http://www.unicode.org/copyright.html#License\r
+#\r
+# File: ta_ta_FONIPA.txt\r
+# Generated from CLDR\r
+#\r
+\r
+$c = [\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9];\r
+$v = [\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC];\r
+$nasal = [ŋɲɳnm];\r
+# Delete ZWNJ and ZWJ to simplify further processing.\r
+\u200C → ;\r
+\u200D → ;\r
+::NFC;\r
+# Manifest the implicit vowel after every consonant that is not followed by a\r
+# dependent vowel or virama.\r
+($c) } [^$v \u0BCD] → $1 a;\r
+::Null;\r
+ஃப → f;\r
+ஃ → x;\r
+அ → a;\r
+ஆ → aː;\r
+இ → i;\r
+ஈ → iː;\r
+உ → u;\r
+ஊ → uː;\r
+எ → e;\r
+ஏ → eː;\r
+ஐ → aɪ;\r
+ஒ → o;\r
+ஓ → oː;\r
+ஔ → aʊ;\r
+$nasal { க → g;\r
+க → k;\r
+ங → ŋ;\r
+$nasal { ச → d\u0361ʒ;\r
+ச\u0BCDச → t\u0361ʃ;\r
+[ʈr] { ச → t\u0361ʃ;\r
+ச → s \u02BC;\r
+ஜ → d\u0361ʒ;\r
+ஞ → ɲ;\r
+$nasal { ட → ɖ;\r
+ட → ʈ;\r
+ண → ɳ;\r
+$nasal { த → d\u032A;\r
+த → t\u032A;\r
+ந → n;\r
+ன → n;\r
+$nasal { ப → b;\r
+ப → p;\r
+ம → m;\r
+ய → j;\r
+ர → r;\r
+ற\u0BCDற → tʳ;\r
+ற } \u0BCD → tʳ;\r
+$nasal { ற → tʳ;\r
+ற → r;\r
+ல → l;\r
+ள → ɭ;\r
+ழ → ɻ;\r
+வ → ʋ;\r
+ஶ → ʃ;\r
+ஷ → ʂ;\r
+ஸ\u0BCD } ர → ʃ;\r
+ஸ → s;\r
+ஹ → h;\r
+\u0BBE → aː;\r
+\u0BBF → i;\r
+\u0BC0 → iː;\r
+\u0BC1 → u;\r
+\u0BC2 → uː;\r
+\u0BC6 → e;\r
+\u0BC7 → eː;\r
+\u0BC8 → aɪ;\r
+\u0BCA → o;\r
+\u0BCB → oː;\r
+\u0BCC → aʊ;\r
+\u0BCD → ;\r
+\r
index 3c45a08..c34d75d 100644 (file)
@@ -40,6 +40,137 @@ For new script codes see http://www.unicode.org/iso15924/codechanges.html
 \r
 ---------------------------------------------------------------------------- ***\r
 \r
+TODO:\r
+- ICU ticket #13061 undo hacks from emoji 5.0 update\r
+- define & use ICU4C_SRC_DIR\r
+\r
+---------------------------------------------------------------------------- ***\r
+\r
+Emoji 5.0 update for ICU 59\r
+- ICU 59 mostly remains on Unicode 9.0\r
+- except updates bidi and segmentation data to Unicode 10 beta\r
+\r
+First run of tools on combined icu4c/icu4j/tools trunk after svn repository reorg.\r
+\r
+* Command-line environment setup\r
+\r
+ICU_ROOT=~/svn.icu/trunk\r
+ICU_SRC_DIR=$ICU_ROOT/src\r
+ICU4C_SRC_DIR=$ICU_SRC_DIR/icu4c\r
+ICUDT=icudt59b\r
+export LD_LIBRARY_PATH=$ICU_ROOT/dbg/lib\r
+SRC_DATA_IN=$ICU4C_SRC_DIR/source/data/in\r
+UNIDATA=$ICU4C_SRC_DIR/source/data/unidata\r
+\r
+*** ICU Trac\r
+\r
+- ticket:12900: take Emoji 5.0 properties data into ICU 59 once it's released\r
+- changes directly on trunk\r
+\r
+*** data files & enums & parser code\r
+\r
+* download files\r
+\r
+- download Unicode 9.0 files into a uni90e50 folder: ucd, idna, security (skip uca)\r
+- download emoji 5.0 beta files into the same uni90e50 folder\r
+- download Unicode 10.0 beta files: ucd\r
+  + copy Unicode 10 bidi files to the uni90e50/ucd folder:\r
+    BidiBrackets.txt\r
+    BidiCharacterTest.txt\r
+    BidiMirroring.txt\r
+    BidiTest.txt\r
+    extracted/DerivedBidiClass.txt\r
+  + copy Unicode 10 segmentation files to the uni90e50/ucd folder:\r
+    LineBreak.txt\r
+    auxiliary/*\r
+\r
+* preparseucd.py changes\r
+- adjust for combined trunks\r
+- write new copyright lines\r
+- ignore new Emoji_Component property for now\r
+\r
+* process and/or copy files\r
+- ~/svn.icu/trunk/src/tools/unicode$ py/preparseucd.py ~/unidata/uni90e50/20170322 $ICU_SRC_DIR\r
+  + This writes files (especially ppucd.txt) to the ICU4C unidata and testdata subfolders.\r
+\r
+- cp ~/unidata/uni90e50/20170322/security/confusables.txt $UNIDATA\r
+\r
+* build ICU (make install)\r
+  so that the tools build can pick up the new definitions from the installed header files.\r
+\r
+  $ICU_ROOT/dbg/icu4c$ echo;echo; make -j7 install > out.txt 2>&1 ; tail -n 30 out.txt ; date\r
+\r
+* build Unicode tools using CMake+make\r
+\r
+~/svn.icu/trunk/src/tools/unicode/c/icudefs.txt:\r
+\r
+# Location (--prefix) of where ICU was installed.\r
+set(ICU_INST_DIR /usr/local/google/home/mscherer/svn.icu/trunk/inst/icu4c)\r
+# Location of the ICU4C source tree.\r
+set(ICU4C_SRC_DIR /usr/local/google/home/mscherer/svn.icu/trunk/src/icu4c)\r
+\r
+  ~/svn.icu/trunk/dbg/tools/unicode/c$\r
+    cmake ../../../../src/tools/unicode/c\r
+    make\r
+\r
+* generate core properties data files\r
+  ~/svn.icu/trunk/dbg/tools/unicode/c$\r
+    genprops/genprops $ICU4C_SRC_DIR\r
+- rebuild ICU (make install) & tools\r
+\r
+* run & fix ICU4C tests\r
+- Andy handles RBBI & spoof check test failures\r
+\r
+* update Java data files\r
+- refresh just the UCD/UCA-related/derived files, just to be safe\r
+- see (ICU4C)/source/data/icu4j-readme.txt\r
+- mkdir /tmp/icu4j\r
+- ~/svn.icu/trunk/dbg/icu4c$ make ICU4J_ROOT=/tmp/icu4j icu4j-data-install\r
+  output:\r
+    ...\r
+    Unicode .icu files built to ./out/build/icudt59l\r
+    echo timestamp > uni-core-data\r
+    mkdir -p ./out/icu4j/com/ibm/icu/impl/data/icudt59b\r
+    mkdir -p ./out/icu4j/tzdata/com/ibm/icu/impl/data/icudt59b\r
+    echo pnames.icu uprops.icu ucase.icu ubidi.icu nfc.nrm > ./out/icu4j/add.txt\r
+    LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH  ../bin/icupkg ./out/tmp/icudt59l.dat ./out/icu4j/icudt59b.dat -a ./out/icu4j/add.txt -s ./out/build/icudt59l -x '*' -tb -d ./out/icu4j/com/ibm/icu/impl/data/icudt59b\r
+    mv ./out/icu4j/"com/ibm/icu/impl/data/icudt59b/zoneinfo64.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt59b/metaZones.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt59b/timezoneTypes.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt59b/windowsZones.res" "./out/icu4j/tzdata/com/ibm/icu/impl/data/icudt59b"\r
+    jar cf ./out/icu4j/icudata.jar -C ./out/icu4j com/ibm/icu/impl/data/icudt59b/\r
+    mkdir -p /tmp/icu4j/main/shared/data\r
+    cp ./out/icu4j/icudata.jar /tmp/icu4j/main/shared/data\r
+    jar cf ./out/icu4j/icutzdata.jar -C ./out/icu4j/tzdata com/ibm/icu/impl/data/icudt59b/\r
+    mkdir -p /tmp/icu4j/main/shared/data\r
+    cp ./out/icu4j/icutzdata.jar /tmp/icu4j/main/shared/data\r
+    make[1]: Leaving directory `/usr/local/google/home/mscherer/svn.icu/trunk/dbg/icu4c/data'\r
+- copy the big-endian Unicode data files to another location,\r
+  separate from the other data files,\r
+  and then refresh ICU4J\r
+    cd ~/svn.icu/trunk/dbg/icu4c/data/out/icu4j\r
+    mkdir -p /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT/brkitr\r
+    cp com/ibm/icu/impl/data/$ICUDT/confusables.cfu /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT\r
+    cp com/ibm/icu/impl/data/$ICUDT/*.icu /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT\r
+    rm /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT/cnvalias.icu\r
+    cp com/ibm/icu/impl/data/$ICUDT/brkitr/* /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT/brkitr\r
+    jar uvf ~/svn.icu/trunk/src/icu4j/main/shared/data/icudata.jar -C /tmp/icu4j com/ibm/icu/impl/data/$ICUDT\r
+\r
+* When refreshing all of ICU4J data from ICU4C\r
+- ~/svn.icu/trunk/dbg/icu4c$ make ICU4J_ROOT=/tmp/icu4j icu4j-data-install\r
+- cp /tmp/icu4j/main/shared/data/icudata.jar ~/svn.icu/trunk/src/icu4j/main/shared/data\r
+or\r
+- ~/svn.icu/trunk/dbg/icu4c$ make ICU4J_ROOT=~/svn.icu/trunk/src/icu4j icu4j-data-install\r
+\r
+* refresh Java test .txt files\r
+- copy new .txt files into ICU4J's main/tests/core/src/com/ibm/icu/dev/data/unicode\r
+    cd $ICU4C_SRC_DIR/source/data/unidata\r
+    cp confusables.txt confusablesWholeScript.txt NormalizationCorrections.txt NormalizationTest.txt SpecialCasing.txt UnicodeData.txt ~/svn.icu/trunk/src/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode\r
+    cd ../../test/testdata\r
+    cp BidiCharacterTest.txt BidiTest.txt ~/svn.icu/trunk/src/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode\r
+    cp ~/unidata/uni90e50/20170322/ucd/CompositionExclusions.txt ~/svn.icu/trunk/src/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode\r
+\r
+* run & fix ICU4J tests\r
+\r
+---------------------------------------------------------------------------- ***\r
+\r
 Unicode 9.0 update for ICU 58\r
 \r
 * Command-line environment setup\r
index ec41626..f3c1a1e 100644 (file)
@@ -1,7 +1,5 @@
 # confusables.txt\r
-# Date: 2016-04-05, 11:47:12 GMT\r
-# Copyright (C) 2016 and later: Unicode, Inc. and others.\r
-# License & terms of use: http://www.unicode.org/copyright.html\r
+# Date: 2016-06-16, 13:41:30 GMT\r
 # © 2016 Unicode®, Inc.\r
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.\r
 # For terms of use, see http://www.unicode.org/terms_of_use.html\r
index 84efb86..578adf4 100644 (file)
@@ -1,3 +1,5 @@
+# Copyright (C) 2016 and later: Unicode, Inc. and others.\r
+# License & terms of use: http://www.unicode.org/copyright.html\r
 # Copyright (C) 1999-2016, International Business Machines\r
 # Corporation and others.  All Rights Reserved.\r
 #\r
index 637436c..7158124 100644 (file)
@@ -1,3 +1,5 @@
+# Copyright (C) 2016 and later: Unicode, Inc. and others.\r
+# License & terms of use: http://www.unicode.org/copyright.html\r
 # Copyright (C) 1999-2016, International Business Machines\r
 # Corporation and others.  All Rights Reserved.\r
 #\r
index 7410e12..24adbcc 100644 (file)
@@ -1,7 +1,7 @@
-# Unicode Character Database\r
-# Copyright (c) 1991-2016 Unicode, Inc.\r
-# For terms of use, see http://www.unicode.org/terms_of_use.html\r
-# For documentation, see http://www.unicode.org/reports/tr44/\r
+# Copyright (C) 2016 and later: Unicode, Inc. and others.\r
+# License & terms of use: http://www.unicode.org/copyright.html\r
+# Copyright (C) 1999-2016, International Business Machines\r
+# Corporation and others.  All Rights Reserved.\r
 #\r
 # file name: nfkc_cf.txt\r
 #\r
index f5ddc82..4856d24 100644 (file)
@@ -1,6 +1,6 @@
 # Preparsed UCD generated by ICU preparseucd.py\r
-# Copyright (c) 1991-2016 Unicode, Inc.\r
-# For terms of use, see http://www.unicode.org/terms_of_use.html\r
+# Copyright (C) 1991 and later: Unicode, Inc. and others.\r
+# License & terms of use: http://www.unicode.org/copyright.html\r
 ucd;9.0.0\r
 \r
 property;Catalog;age;Age\r
@@ -1887,79 +1887,79 @@ cp;02AD;age=3.0;na=LATIN LETTER BIDENTAL PERCUSSIVE
 cp;02AE;age=4.0;na=LATIN SMALL LETTER TURNED H WITH FISHHOOK\r
 cp;02AF;age=4.0;na=LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL\r
 \r
-block;02B0..02FF;age=1.1;bc=ON;blk=Modifier_Letters;CI;Dia;gc=Sk;Gr_Base;lb=AL;sc=Zyyy\r
+block;02B0..02FF;age=1.1;bc=ON;blk=Modifier_Letters;CI;Dia;gc=Sk;Gr_Base;lb=AL;sc=Zyyy;WB=LE\r
 # 02B0..02FF Spacing Modifier Letters\r
 # Latin superscript modifier letters\r
-cp;02B0;Alpha;bc=L;Cased;CWKCF;dm=0068;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H;NFKC_CF=0068;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02B1;Alpha;bc=L;Cased;CWKCF;dm=0266;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H WITH HOOK;NFKC_CF=0266;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02B2;Alpha;bc=L;Cased;CWKCF;dm=006A;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL J;NFKC_CF=006A;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;SD;WB=LE;XIDC;XIDS\r
-cp;02B3;Alpha;bc=L;Cased;CWKCF;dm=0072;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL R;NFKC_CF=0072;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02B4;Alpha;bc=L;Cased;CWKCF;dm=0279;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R;NFKC_CF=0279;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02B5;Alpha;bc=L;Cased;CWKCF;dm=027B;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R WITH HOOK;NFKC_CF=027B;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02B6;Alpha;bc=L;Cased;CWKCF;dm=0281;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL CAPITAL INVERTED R;NFKC_CF=0281;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02B7;Alpha;bc=L;Cased;CWKCF;dm=0077;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL W;NFKC_CF=0077;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02B8;Alpha;bc=L;Cased;CWKCF;dm=0079;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL Y;NFKC_CF=0079;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02B0;Alpha;bc=L;Cased;CWKCF;dm=0068;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H;NFKC_CF=0068;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02B1;Alpha;bc=L;Cased;CWKCF;dm=0266;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H WITH HOOK;NFKC_CF=0266;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02B2;Alpha;bc=L;Cased;CWKCF;dm=006A;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL J;NFKC_CF=006A;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;SD;XIDC;XIDS\r
+cp;02B3;Alpha;bc=L;Cased;CWKCF;dm=0072;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL R;NFKC_CF=0072;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02B4;Alpha;bc=L;Cased;CWKCF;dm=0279;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R;NFKC_CF=0279;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02B5;Alpha;bc=L;Cased;CWKCF;dm=027B;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R WITH HOOK;NFKC_CF=027B;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02B6;Alpha;bc=L;Cased;CWKCF;dm=0281;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL CAPITAL INVERTED R;NFKC_CF=0281;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02B7;Alpha;bc=L;Cased;CWKCF;dm=0077;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL W;NFKC_CF=0077;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02B8;Alpha;bc=L;Cased;CWKCF;dm=0079;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL Y;NFKC_CF=0079;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
 # Miscellaneous phonetic modifiers\r
-cp;02B9;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER PRIME;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02BA;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE PRIME;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02BB;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER TURNED COMMA;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02BC;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER APOSTROPHE;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02BD;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER REVERSED COMMA;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02BE;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER RIGHT HALF RING;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02BF;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER LEFT HALF RING;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02C0;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER GLOTTAL STOP;SB=LO;WB=LE;XIDC;XIDS\r
-cp;02C1;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER REVERSED GLOTTAL STOP;SB=LO;WB=LE;XIDC;XIDS\r
+cp;02B9;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER PRIME;SB=LE;XIDC;XIDS\r
+cp;02BA;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE PRIME;SB=LE;XIDC;XIDS\r
+cp;02BB;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER TURNED COMMA;SB=LE;XIDC;XIDS\r
+cp;02BC;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER APOSTROPHE;SB=LE;XIDC;XIDS\r
+cp;02BD;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER REVERSED COMMA;SB=LE;XIDC;XIDS\r
+cp;02BE;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER RIGHT HALF RING;SB=LE;XIDC;XIDS\r
+cp;02BF;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER LEFT HALF RING;SB=LE;XIDC;XIDS\r
+cp;02C0;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER GLOTTAL STOP;SB=LO;XIDC;XIDS\r
+cp;02C1;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER REVERSED GLOTTAL STOP;SB=LO;XIDC;XIDS\r
 cp;02C2;na=MODIFIER LETTER LEFT ARROWHEAD\r
 cp;02C3;na=MODIFIER LETTER RIGHT ARROWHEAD\r
 cp;02C4;ea=A;na=MODIFIER LETTER UP ARROWHEAD\r
 cp;02C5;na=MODIFIER LETTER DOWN ARROWHEAD\r
-cp;02C6;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER CIRCUMFLEX ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02C7;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=CARON;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02C8;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER VERTICAL LINE;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02C9;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER MACRON;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02CA;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER ACUTE ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02CB;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER GRAVE ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02CC;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER LOW VERTICAL LINE;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02CD;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER LOW MACRON;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02CE;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW GRAVE ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02CF;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW ACUTE ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02D0;Alpha;bc=L;ea=A;Ext;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER TRIANGULAR COLON;SB=LE;WB=LE;XIDC;XIDS\r
-cp;02D1;Alpha;bc=L;Ext;gc=Lm;IDC;IDS;na=MODIFIER LETTER HALF TRIANGULAR COLON;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02C6;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER CIRCUMFLEX ACCENT;SB=LE;XIDC;XIDS\r
+cp;02C7;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=CARON;SB=LE;XIDC;XIDS\r
+cp;02C8;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER VERTICAL LINE;SB=LE;XIDC;XIDS\r
+cp;02C9;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER MACRON;SB=LE;XIDC;XIDS\r
+cp;02CA;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER ACUTE ACCENT;SB=LE;XIDC;XIDS\r
+cp;02CB;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER GRAVE ACCENT;SB=LE;XIDC;XIDS\r
+cp;02CC;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER LOW VERTICAL LINE;SB=LE;XIDC;XIDS\r
+cp;02CD;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER LOW MACRON;SB=LE;XIDC;XIDS\r
+cp;02CE;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW GRAVE ACCENT;SB=LE;XIDC;XIDS\r
+cp;02CF;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW ACUTE ACCENT;SB=LE;XIDC;XIDS\r
+cp;02D0;Alpha;bc=L;ea=A;Ext;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER TRIANGULAR COLON;SB=LE;XIDC;XIDS\r
+cp;02D1;Alpha;bc=L;Ext;gc=Lm;IDC;IDS;na=MODIFIER LETTER HALF TRIANGULAR COLON;SB=LE;XIDC;XIDS\r
 cp;02D2;na=MODIFIER LETTER CENTRED RIGHT HALF RING\r
 cp;02D3;na=MODIFIER LETTER CENTRED LEFT HALF RING\r
 cp;02D4;na=MODIFIER LETTER UP TACK\r
 cp;02D5;na=MODIFIER LETTER DOWN TACK\r
 cp;02D6;na=MODIFIER LETTER PLUS SIGN\r
-cp;02D7;na=MODIFIER LETTER MINUS SIGN;WB=ML\r
+cp;02D7;na=MODIFIER LETTER MINUS SIGN\r
 # Spacing clones of diacritics\r
-cp;02D8;CWKCF;dm=0020 0306;dt=Com;ea=A;lb=AI;na=BREVE;NFKC_CF=0020 0306;NFKC_QC=N;NFKD_QC=N\r
-cp;02D9;CWKCF;dm=0020 0307;dt=Com;ea=A;lb=AI;na=DOT ABOVE;NFKC_CF=0020 0307;NFKC_QC=N;NFKD_QC=N\r
-cp;02DA;CWKCF;dm=0020 030A;dt=Com;ea=A;lb=AI;na=RING ABOVE;NFKC_CF=0020 030A;NFKC_QC=N;NFKD_QC=N\r
-cp;02DB;CWKCF;dm=0020 0328;dt=Com;ea=A;lb=AI;na=OGONEK;NFKC_CF=0020 0328;NFKC_QC=N;NFKD_QC=N\r
-cp;02DC;CWKCF;dm=0020 0303;dt=Com;na=SMALL TILDE;NFKC_CF=0020 0303;NFKC_QC=N;NFKD_QC=N\r
-cp;02DD;CWKCF;dm=0020 030B;dt=Com;ea=A;lb=AI;na=DOUBLE ACUTE ACCENT;NFKC_CF=0020 030B;NFKC_QC=N;NFKD_QC=N\r
+cp;02D8;CWKCF;dm=0020 0306;dt=Com;ea=A;lb=AI;na=BREVE;NFKC_CF=0020 0306;NFKC_QC=N;NFKD_QC=N;WB=XX\r
+cp;02D9;CWKCF;dm=0020 0307;dt=Com;ea=A;lb=AI;na=DOT ABOVE;NFKC_CF=0020 0307;NFKC_QC=N;NFKD_QC=N;WB=XX\r
+cp;02DA;CWKCF;dm=0020 030A;dt=Com;ea=A;lb=AI;na=RING ABOVE;NFKC_CF=0020 030A;NFKC_QC=N;NFKD_QC=N;WB=XX\r
+cp;02DB;CWKCF;dm=0020 0328;dt=Com;ea=A;lb=AI;na=OGONEK;NFKC_CF=0020 0328;NFKC_QC=N;NFKD_QC=N;WB=XX\r
+cp;02DC;CWKCF;dm=0020 0303;dt=Com;na=SMALL TILDE;NFKC_CF=0020 0303;NFKC_QC=N;NFKD_QC=N;WB=XX\r
+cp;02DD;CWKCF;dm=0020 030B;dt=Com;ea=A;lb=AI;na=DOUBLE ACUTE ACCENT;NFKC_CF=0020 030B;NFKC_QC=N;NFKD_QC=N;WB=XX\r
 # Additions based on 1989 IPA\r
 cp;02DE;na=MODIFIER LETTER RHOTIC HOOK\r
 cp;02DF;age=3.0;ea=A;lb=BB;na=MODIFIER LETTER CROSS ACCENT\r
-cp;02E0;Alpha;bc=L;Cased;CWKCF;dm=0263;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL GAMMA;NFKC_CF=0263;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02E1;Alpha;bc=L;Cased;CWKCF;dm=006C;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL L;NFKC_CF=006C;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02E2;Alpha;bc=L;Cased;CWKCF;dm=0073;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL S;NFKC_CF=0073;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02E3;Alpha;bc=L;Cased;CWKCF;dm=0078;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL X;NFKC_CF=0078;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
-cp;02E4;Alpha;bc=L;Cased;CWKCF;dm=0295;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;NFKC_CF=0295;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02E0;Alpha;bc=L;Cased;CWKCF;dm=0263;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL GAMMA;NFKC_CF=0263;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02E1;Alpha;bc=L;Cased;CWKCF;dm=006C;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL L;NFKC_CF=006C;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02E2;Alpha;bc=L;Cased;CWKCF;dm=0073;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL S;NFKC_CF=0073;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02E3;Alpha;bc=L;Cased;CWKCF;dm=0078;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL X;NFKC_CF=0078;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02E4;Alpha;bc=L;Cased;CWKCF;dm=0295;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;NFKC_CF=0295;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
 # Tone letters\r
-cp;02E5;na=MODIFIER LETTER EXTRA-HIGH TONE BAR\r
-cp;02E6;na=MODIFIER LETTER HIGH TONE BAR\r
-cp;02E7;na=MODIFIER LETTER MID TONE BAR\r
-cp;02E8;na=MODIFIER LETTER LOW TONE BAR\r
-cp;02E9;na=MODIFIER LETTER EXTRA-LOW TONE BAR\r
+cp;02E5;na=MODIFIER LETTER EXTRA-HIGH TONE BAR;WB=XX\r
+cp;02E6;na=MODIFIER LETTER HIGH TONE BAR;WB=XX\r
+cp;02E7;na=MODIFIER LETTER MID TONE BAR;WB=XX\r
+cp;02E8;na=MODIFIER LETTER LOW TONE BAR;WB=XX\r
+cp;02E9;na=MODIFIER LETTER EXTRA-LOW TONE BAR;WB=XX\r
 # Extended Bopomofo tone marks\r
-cp;02EA;age=3.0;na=MODIFIER LETTER YIN DEPARTING TONE MARK;sc=Bopo\r
-cp;02EB;age=3.0;na=MODIFIER LETTER YANG DEPARTING TONE MARK;sc=Bopo\r
+cp;02EA;age=3.0;na=MODIFIER LETTER YIN DEPARTING TONE MARK;sc=Bopo;WB=XX\r
+cp;02EB;age=3.0;na=MODIFIER LETTER YANG DEPARTING TONE MARK;sc=Bopo;WB=XX\r
 # IPA modifiers\r
-cp;02EC;age=3.0;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER VOICING;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02EC;age=3.0;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER VOICING;SB=LE;XIDC;XIDS\r
 cp;02ED;age=3.0;na=MODIFIER LETTER UNASPIRATED\r
 # Other modifier letter\r
-cp;02EE;age=3.0;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE APOSTROPHE;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02EE;age=3.0;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE APOSTROPHE;SB=LE;XIDC;XIDS\r
 # UPA modifiers\r
 cp;02EF;age=4.0;na=MODIFIER LETTER LOW DOWN ARROWHEAD\r
 cp;02F0;age=4.0;na=MODIFIER LETTER LOW UP ARROWHEAD\r
@@ -3482,7 +3482,9 @@ cp;085C..085D;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;jt=U;lb=XX;SB=XX;sc=Zzzz;WB
 # Punctuation\r
 cp;085E;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=MANDAIC PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS\r
 cp;085F;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;jt=U;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;0860..089F;bc=R\r
+cp;0860..086A;bc=AL;lb=AL;SB=LE;WB=LE\r
+cp;086B..086F;bc=AL\r
+cp;0870..089F;bc=R\r
 \r
 block;08A0..08FF;age=6.1;Alpha;bc=NSM;blk=Arabic_Ext_A;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC\r
 # 08A0..08FF Arabic Extended-A\r
@@ -3732,133 +3734,135 @@ cp;097D;age=4.1;na=DEVANAGARI LETTER GLOTTAL STOP
 cp;097E;age=5.0;na=DEVANAGARI LETTER DDDA\r
 cp;097F;age=5.0;na=DEVANAGARI LETTER BBA\r
 \r
-block;0980..09FF;age=1.1;Alpha;blk=Bengali;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Beng;WB=LE;XIDC;XIDS\r
+block;0980..09FF;age=1.1;Alpha;blk=Bengali;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Beng;WB=LE;XIDC\r
 # 0980..09FF Bengali\r
 # Various signs\r
-cp;0980;age=7.0;InSC=Other;na=BENGALI ANJI\r
-cp;0981;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=BENGALI SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS\r
-cp;0982;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=BENGALI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS\r
-cp;0983;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=BENGALI SIGN VISARGA;SB=EX;WB=Extend;-XIDS\r
-cp;0984;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;0980;age=7.0;IDS;InSC=Other;na=BENGALI ANJI;XIDS\r
+cp;0981;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=BENGALI SIGN CANDRABINDU;SB=EX;WB=Extend\r
+cp;0982;gc=Mc;GCB=SM;InPC=Right;InSC=Bindu;lb=CM;na=BENGALI SIGN ANUSVARA;SB=EX;WB=Extend\r
+cp;0983;gc=Mc;GCB=SM;InPC=Right;InSC=Visarga;lb=CM;na=BENGALI SIGN VISARGA;SB=EX;WB=Extend\r
+cp;0984;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
 # Independent vowels\r
-cp;0985;InSC=Vowel_Independent;na=BENGALI LETTER A\r
-cp;0986;InSC=Vowel_Independent;na=BENGALI LETTER AA\r
-cp;0987;InSC=Vowel_Independent;na=BENGALI LETTER I\r
-cp;0988;InSC=Vowel_Independent;na=BENGALI LETTER II\r
-cp;0989;InSC=Vowel_Independent;na=BENGALI LETTER U\r
-cp;098A;InSC=Vowel_Independent;na=BENGALI LETTER UU\r
-cp;098B;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC R\r
-cp;098C;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC L\r
-cp;098D..098E;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;098F;InSC=Vowel_Independent;na=BENGALI LETTER E\r
-cp;0990;InSC=Vowel_Independent;na=BENGALI LETTER AI\r
-cp;0991..0992;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;0993;InSC=Vowel_Independent;na=BENGALI LETTER O\r
-cp;0994;InSC=Vowel_Independent;na=BENGALI LETTER AU\r
+cp;0985;IDS;InSC=Vowel_Independent;na=BENGALI LETTER A;XIDS\r
+cp;0986;IDS;InSC=Vowel_Independent;na=BENGALI LETTER AA;XIDS\r
+cp;0987;IDS;InSC=Vowel_Independent;na=BENGALI LETTER I;XIDS\r
+cp;0988;IDS;InSC=Vowel_Independent;na=BENGALI LETTER II;XIDS\r
+cp;0989;IDS;InSC=Vowel_Independent;na=BENGALI LETTER U;XIDS\r
+cp;098A;IDS;InSC=Vowel_Independent;na=BENGALI LETTER UU;XIDS\r
+cp;098B;IDS;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC R;XIDS\r
+cp;098C;IDS;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC L;XIDS\r
+cp;098D..098E;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;098F;IDS;InSC=Vowel_Independent;na=BENGALI LETTER E;XIDS\r
+cp;0990;IDS;InSC=Vowel_Independent;na=BENGALI LETTER AI;XIDS\r
+cp;0991..0992;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;0993;IDS;InSC=Vowel_Independent;na=BENGALI LETTER O;XIDS\r
+cp;0994;IDS;InSC=Vowel_Independent;na=BENGALI LETTER AU;XIDS\r
 # Consonants\r
-cp;0995;na=BENGALI LETTER KA\r
-cp;0996;na=BENGALI LETTER KHA\r
-cp;0997;na=BENGALI LETTER GA\r
-cp;0998;na=BENGALI LETTER GHA\r
-cp;0999;na=BENGALI LETTER NGA\r
-cp;099A;na=BENGALI LETTER CA\r
-cp;099B;na=BENGALI LETTER CHA\r
-cp;099C;na=BENGALI LETTER JA\r
-cp;099D;na=BENGALI LETTER JHA\r
-cp;099E;na=BENGALI LETTER NYA\r
-cp;099F;na=BENGALI LETTER TTA\r
-cp;09A0;na=BENGALI LETTER TTHA\r
-cp;09A1;na=BENGALI LETTER DDA\r
-cp;09A2;na=BENGALI LETTER DDHA\r
-cp;09A3;na=BENGALI LETTER NNA\r
-cp;09A4;na=BENGALI LETTER TA\r
-cp;09A5;na=BENGALI LETTER THA\r
-cp;09A6;na=BENGALI LETTER DA\r
-cp;09A7;na=BENGALI LETTER DHA\r
-cp;09A8;na=BENGALI LETTER NA\r
-cp;09A9;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;09AA;na=BENGALI LETTER PA\r
-cp;09AB;na=BENGALI LETTER PHA\r
-cp;09AC;na=BENGALI LETTER BA\r
-cp;09AD;na=BENGALI LETTER BHA\r
-cp;09AE;na=BENGALI LETTER MA\r
-cp;09AF;na=BENGALI LETTER YA\r
-cp;09B0;na=BENGALI LETTER RA\r
-cp;09B1;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;09B2;na=BENGALI LETTER LA\r
-cp;09B3..09B5;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;09B6;na=BENGALI LETTER SHA\r
-cp;09B7;na=BENGALI LETTER SSA\r
-cp;09B8;na=BENGALI LETTER SA\r
-cp;09B9;na=BENGALI LETTER HA\r
-cp;09BA..09BB;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;0995;IDS;na=BENGALI LETTER KA;XIDS\r
+cp;0996;IDS;na=BENGALI LETTER KHA;XIDS\r
+cp;0997;IDS;na=BENGALI LETTER GA;XIDS\r
+cp;0998;IDS;na=BENGALI LETTER GHA;XIDS\r
+cp;0999;IDS;na=BENGALI LETTER NGA;XIDS\r
+cp;099A;IDS;na=BENGALI LETTER CA;XIDS\r
+cp;099B;IDS;na=BENGALI LETTER CHA;XIDS\r
+cp;099C;IDS;na=BENGALI LETTER JA;XIDS\r
+cp;099D;IDS;na=BENGALI LETTER JHA;XIDS\r
+cp;099E;IDS;na=BENGALI LETTER NYA;XIDS\r
+cp;099F;IDS;na=BENGALI LETTER TTA;XIDS\r
+cp;09A0;IDS;na=BENGALI LETTER TTHA;XIDS\r
+cp;09A1;IDS;na=BENGALI LETTER DDA;XIDS\r
+cp;09A2;IDS;na=BENGALI LETTER DDHA;XIDS\r
+cp;09A3;IDS;na=BENGALI LETTER NNA;XIDS\r
+cp;09A4;IDS;na=BENGALI LETTER TA;XIDS\r
+cp;09A5;IDS;na=BENGALI LETTER THA;XIDS\r
+cp;09A6;IDS;na=BENGALI LETTER DA;XIDS\r
+cp;09A7;IDS;na=BENGALI LETTER DHA;XIDS\r
+cp;09A8;IDS;na=BENGALI LETTER NA;XIDS\r
+cp;09A9;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09AA;IDS;na=BENGALI LETTER PA;XIDS\r
+cp;09AB;IDS;na=BENGALI LETTER PHA;XIDS\r
+cp;09AC;IDS;na=BENGALI LETTER BA;XIDS\r
+cp;09AD;IDS;na=BENGALI LETTER BHA;XIDS\r
+cp;09AE;IDS;na=BENGALI LETTER MA;XIDS\r
+cp;09AF;IDS;na=BENGALI LETTER YA;XIDS\r
+cp;09B0;IDS;na=BENGALI LETTER RA;XIDS\r
+cp;09B1;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09B2;IDS;na=BENGALI LETTER LA;XIDS\r
+cp;09B3..09B5;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09B6;IDS;na=BENGALI LETTER SHA;XIDS\r
+cp;09B7;IDS;na=BENGALI LETTER SSA;XIDS\r
+cp;09B8;IDS;na=BENGALI LETTER SA;XIDS\r
+cp;09B9;IDS;na=BENGALI LETTER HA;XIDS\r
+cp;09BA..09BB;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
 # Various signs\r
-cp;09BC;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=BENGALI SIGN NUKTA;SB=EX;WB=Extend;-XIDS\r
-cp;09BD;age=4.0;InSC=Avagraha;na=BENGALI SIGN AVAGRAHA\r
+cp;09BC;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=BENGALI SIGN NUKTA;SB=EX;WB=Extend\r
+cp;09BD;age=4.0;IDS;InSC=Avagraha;na=BENGALI SIGN AVAGRAHA;XIDS\r
 # Dependent vowel signs\r
-cp;09BE;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS\r
-cp;09BF;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN I;SB=EX;WB=Extend;-XIDS\r
-cp;09C0;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN II;SB=EX;WB=Extend;-XIDS\r
-cp;09C1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN U;SB=EX;WB=Extend;-XIDS\r
-cp;09C2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS\r
-cp;09C3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS\r
-cp;09C4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS\r
-cp;09C5..09C6;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;09C7;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN E;SB=EX;WB=Extend;-XIDS\r
-cp;09C8;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AI;SB=EX;WB=Extend;-XIDS\r
-cp;09C9..09CA;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09BE;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend\r
+cp;09BF;gc=Mc;GCB=SM;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN I;SB=EX;WB=Extend\r
+cp;09C0;gc=Mc;GCB=SM;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN II;SB=EX;WB=Extend\r
+cp;09C1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN U;SB=EX;WB=Extend\r
+cp;09C2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN UU;SB=EX;WB=Extend\r
+cp;09C3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC R;SB=EX;WB=Extend\r
+cp;09C4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend\r
+cp;09C5..09C6;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09C7;gc=Mc;GCB=SM;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN E;SB=EX;WB=Extend\r
+cp;09C8;gc=Mc;GCB=SM;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AI;SB=EX;WB=Extend\r
+cp;09C9..09CA;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
 # Two-part dependent vowel signs\r
-cp;09CB;dm=09C7 09BE;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN O;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS\r
-cp;09CC;dm=09C7 09D7;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AU;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS\r
+cp;09CB;dm=09C7 09BE;dt=Can;gc=Mc;GCB=SM;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN O;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend\r
+cp;09CC;dm=09C7 09D7;dt=Can;gc=Mc;GCB=SM;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AU;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend\r
 # Virama\r
-cp;09CD;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=BENGALI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS\r
+cp;09CD;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=BENGALI SIGN VIRAMA;SB=EX;WB=Extend\r
 # Additional consonant\r
-cp;09CE;age=4.1;InSC=Consonant_Dead;na=BENGALI LETTER KHANDA TA\r
-cp;09CF..09D6;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09CE;age=4.1;IDS;InSC=Consonant_Dead;na=BENGALI LETTER KHANDA TA;XIDS\r
+cp;09CF..09D6;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
 # Sign\r
-cp;09D7;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS\r
-cp;09D8..09DB;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09D7;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend\r
+cp;09D8..09DB;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
 # Additional consonants\r
-cp;09DC;Comp_Ex;CWKCF;dm=09A1 09BC;dt=Can;na=BENGALI LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A1 09BC;NFKC_QC=N;NFKD_QC=N\r
-cp;09DD;Comp_Ex;CWKCF;dm=09A2 09BC;dt=Can;na=BENGALI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A2 09BC;NFKC_QC=N;NFKD_QC=N\r
-cp;09DE;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;09DF;Comp_Ex;CWKCF;dm=09AF 09BC;dt=Can;na=BENGALI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=09AF 09BC;NFKC_QC=N;NFKD_QC=N\r
+cp;09DC;Comp_Ex;CWKCF;dm=09A1 09BC;dt=Can;IDS;na=BENGALI LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A1 09BC;NFKC_QC=N;NFKD_QC=N;XIDS\r
+cp;09DD;Comp_Ex;CWKCF;dm=09A2 09BC;dt=Can;IDS;na=BENGALI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A2 09BC;NFKC_QC=N;NFKD_QC=N;XIDS\r
+cp;09DE;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09DF;Comp_Ex;CWKCF;dm=09AF 09BC;dt=Can;IDS;na=BENGALI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=09AF 09BC;NFKC_QC=N;NFKD_QC=N;XIDS\r
 # Additional vowels for Sanskrit\r
-cp;09E0;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC RR\r
-cp;09E1;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC LL\r
-cp;09E2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS\r
-cp;09E3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS\r
+cp;09E0;IDS;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC RR;XIDS\r
+cp;09E1;IDS;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC LL;XIDS\r
+cp;09E2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC L;SB=EX;WB=Extend\r
+cp;09E3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend\r
 # Reserved\r
-cp;09E4..09E5;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09E4..09E5;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
 # Digits\r
-cp;09E6;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT ZERO;nt=De;nv=0;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
-cp;09E7;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT ONE;nt=De;nv=1;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
-cp;09E8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT TWO;nt=De;nv=2;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
-cp;09E9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT THREE;nt=De;nv=3;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
-cp;09EA;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT FOUR;nt=De;nv=4;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
-cp;09EB;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT FIVE;nt=De;nv=5;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
-cp;09EC;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT SIX;nt=De;nv=6;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
-cp;09ED;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT SEVEN;nt=De;nv=7;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
-cp;09EE;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
-cp;09EF;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT NINE;nt=De;nv=9;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09E6;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT ZERO;nt=De;nv=0;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09E7;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT ONE;nt=De;nv=1;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09E8;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT TWO;nt=De;nv=2;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09E9;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT THREE;nt=De;nv=3;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09EA;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT FOUR;nt=De;nv=4;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09EB;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT FIVE;nt=De;nv=5;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09EC;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT SIX;nt=De;nv=6;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09ED;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT SEVEN;nt=De;nv=7;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09EE;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09EF;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT NINE;nt=De;nv=9;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
 # Additions for Assamese\r
-cp;09F0;na=BENGALI LETTER RA WITH MIDDLE DIAGONAL\r
-cp;09F1;na=BENGALI LETTER RA WITH LOWER DIAGONAL\r
+cp;09F0;IDS;na=BENGALI LETTER RA WITH MIDDLE DIAGONAL;XIDS\r
+cp;09F1;IDS;na=BENGALI LETTER RA WITH LOWER DIAGONAL;XIDS\r
 # Currency signs\r
-cp;09F2;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE MARK;SB=XX;WB=XX;-XIDC;-XIDS\r
-cp;09F3;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE SIGN;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09F2;-Alpha;bc=ET;gc=Sc;-IDC;InSC=Other;lb=PO;na=BENGALI RUPEE MARK;SB=XX;WB=XX;-XIDC\r
+cp;09F3;-Alpha;bc=ET;gc=Sc;-IDC;InSC=Other;lb=PO;na=BENGALI RUPEE SIGN;SB=XX;WB=XX;-XIDC\r
 # Historic symbols for fractional values\r
-cp;09F4;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS\r
-cp;09F5;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR TWO;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS\r
-cp;09F6;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR THREE;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS\r
-cp;09F7;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR FOUR;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS\r
-cp;09F8;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS\r
-cp;09F9;-Alpha;gc=No;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI CURRENCY DENOMINATOR SIXTEEN;nt=Nu;nv=16;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09F4;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC\r
+cp;09F5;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR TWO;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC\r
+cp;09F6;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR THREE;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC\r
+cp;09F7;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR FOUR;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC\r
+cp;09F8;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC\r
+cp;09F9;-Alpha;gc=No;-IDC;InSC=Other;lb=PO;na=BENGALI CURRENCY DENOMINATOR SIXTEEN;nt=Nu;nv=16;SB=XX;WB=XX;-XIDC\r
 # Sign\r
-cp;09FA;-Alpha;gc=So;-IDC;-IDS;InSC=Other;na=BENGALI ISSHAR;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09FA;-Alpha;gc=So;-IDC;InSC=Other;na=BENGALI ISSHAR;SB=XX;WB=XX;-XIDC\r
 # Historic currency sign\r
-cp;09FB;age=5.2;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=BENGALI GANDA MARK;SB=XX;WB=XX;-XIDC;-XIDS\r
-cp;09FC..09FF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09FB;age=5.2;-Alpha;bc=ET;gc=Sc;-IDC;InSC=Other;lb=PR;na=BENGALI GANDA MARK;SB=XX;WB=XX;-XIDC\r
+cp;09FC;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;sc=Zzzz;-XIDC\r
+cp;09FD;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09FE..09FF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
 \r
 block;0A00..0A7F;age=1.1;Alpha;blk=Gurmukhi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Guru;WB=LE;XIDC;XIDS\r
 # 0A00..0A7F Gurmukhi\r
@@ -4085,7 +4089,7 @@ cp;0AF1;age=4.0;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=GUJARATI RUPEE
 cp;0AF2..0AF8;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Additional consonant\r
 cp;0AF9;age=8.0;na=GUJARATI LETTER ZHA\r
-cp;0AFA..0AFF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;0AFA..0AFF;age=NA;-Alpha;bc=NSM;gc=Cn;GCB=EX;-Gr_Base;-IDC;-IDS;InSC=Other;lb=CM;SB=EX;sc=Zzzz;WB=Extend;-XIDC;-XIDS\r
 \r
 block;0B00..0B7F;age=1.1;Alpha;blk=Oriya;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Orya;WB=LE;XIDC;XIDS\r
 # 0B00..0B7F Oriya\r
@@ -4562,7 +4566,7 @@ cp;0CF3..0CFF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Z
 \r
 block;0D00..0D7F;age=1.1;Alpha;blk=Malayalam;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mlym;WB=LE;XIDC;XIDS\r
 # 0D00..0D7F Malayalam\r
-cp;0D00;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;0D00;age=NA;-Alpha;bc=NSM;gc=Cn;GCB=EX;-Gr_Base;-IDC;-IDS;InSC=Other;lb=CM;SB=EX;sc=Zzzz;WB=Extend;-XIDC;-XIDS\r
 # Various signs\r
 cp;0D01;age=7.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=MALAYALAM SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS\r
 cp;0D02;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=MALAYALAM SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS\r
@@ -4624,7 +4628,7 @@ cp;0D37;na=MALAYALAM LETTER SSA
 cp;0D38;na=MALAYALAM LETTER SA\r
 cp;0D39;na=MALAYALAM LETTER HA\r
 cp;0D3A;age=6.0;na=MALAYALAM LETTER TTTA\r
-cp;0D3B..0D3C;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;0D3B..0D3C;age=NA;-Alpha;bc=NSM;gc=Cn;GCB=EX;-Gr_Base;-IDC;-IDS;InSC=Other;lb=CM;SB=EX;sc=Zzzz;WB=Extend;-XIDC;-XIDS\r
 # Addition for Sanskrit\r
 cp;0D3D;age=5.1;InSC=Avagraha;na=MALAYALAM SIGN AVAGRAHA\r
 # Dependent vowel signs\r
@@ -8595,7 +8599,7 @@ cp;1CF4;age=6.1;ccc=230;InPC=Top;InSC=Cantillation_Mark;na=VEDIC TONE CANDRA ABO
 # Signs\r
 cp;1CF5;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=AL;na=VEDIC SIGN JIHVAMULIYA;SB=LE;sc=Zyyy;scx=Deva Knda;WB=LE;XIDS\r
 cp;1CF6;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=AL;na=VEDIC SIGN UPADHMANIYA;SB=LE;sc=Zyyy;WB=LE;XIDS\r
-cp;1CF7;age=NA;bc=L;-CI;-Dia;gc=Cn;GCB=XX;-Gr_Ext;-IDC;jt=U;lb=XX;SB=XX;sc=Zzzz;scx=<script>;WB=XX;-XIDC\r
+cp;1CF7;age=NA;bc=L;-CI;-Dia;gc=Cn;GCB=SM;-Gr_Ext;-IDC;jt=U;sc=Zzzz;scx=<script>;-XIDC\r
 # Signs for Jaiminiya Sama Veda\r
 cp;1CF8;age=7.0;ccc=230;InSC=Cantillation_Mark;na=VEDIC TONE RING ABOVE;scx=Deva Gran\r
 cp;1CF9;age=7.0;ccc=230;InSC=Cantillation_Mark;na=VEDIC TONE DOUBLE RING ABOVE;scx=Deva Gran\r
@@ -8879,7 +8883,8 @@ cp;1DF3;age=7.0;Alpha;na=COMBINING LATIN SMALL LETTER O WITH DIAERESIS
 cp;1DF4;age=7.0;Alpha;na=COMBINING LATIN SMALL LETTER U WITH DIAERESIS\r
 # Diacritic for American lexicography\r
 cp;1DF5;age=7.0;Dia;na=COMBINING UP TACK ABOVE\r
-cp;1DF6..1DFA;age=NA;bc=L;ccc=0;-CI;gc=Cn;GCB=XX;-Gr_Ext;-IDC;jt=U;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;1DF6..1DF9;age=NA;ccc=0;-CI;gc=Cn;-Gr_Ext;-IDC;jt=U;sc=Zzzz;-XIDC\r
+cp;1DFA;age=NA;bc=L;ccc=0;-CI;gc=Cn;GCB=XX;-Gr_Ext;-IDC;jt=U;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
 # Miscellaneous mark\r
 cp;1DFB;age=9.0;InPC=Top;InSC=Syllable_Modifier;na=COMBINING DELETION MARK\r
 # Double diacritic mark for UPA\r
@@ -9631,7 +9636,8 @@ cp;20BB;age=7.0;lb=PO;na=NORDIC MARK SIGN
 cp;20BC;age=7.0;na=MANAT SIGN\r
 cp;20BD;age=7.0;na=RUBLE SIGN\r
 cp;20BE;age=8.0;lb=PO;na=LARI SIGN\r
-cp;20BF..20CF;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;20BF;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;20C0..20CF;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
 \r
 block;20D0..20FF;age=1.1;bc=NSM;blk=Diacriticals_For_Symbols;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;Math;SB=EX;sc=Zinh;WB=Extend;XIDC\r
 # 20D0..20FF Combining Diacritical Marks for Symbols\r
@@ -10555,7 +10561,7 @@ cp;23FC;age=9.0;na=POWER ON-OFF SYMBOL
 cp;23FD;age=9.0;na=POWER ON SYMBOL\r
 # Power symbol from IEEE 1621-2004\r
 cp;23FE;age=9.0;na=POWER SLEEP SYMBOL\r
-cp;23FF;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
+cp;23FF;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
 \r
 block;2400..243F;age=1.1;bc=ON;blk=Control_Pictures;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy\r
 # 2400..243F Control Pictures\r
@@ -11158,9 +11164,9 @@ cp;263C;na=WHITE SUN WITH RAYS
 cp;263D;na=FIRST QUARTER MOON\r
 cp;263E;na=LAST QUARTER MOON\r
 cp;263F;na=MERCURY\r
-cp;2640;ea=A;Emoji;lb=AI;Math;na=FEMALE SIGN\r
+cp;2640;ea=A;Emoji;GCB=GAZ;lb=AI;Math;na=FEMALE SIGN;WB=GAZ\r
 cp;2641;na=EARTH\r
-cp;2642;ea=A;Emoji;lb=AI;Math;na=MALE SIGN\r
+cp;2642;ea=A;Emoji;GCB=GAZ;lb=AI;Math;na=MALE SIGN;WB=GAZ\r
 cp;2643;na=JUPITER\r
 cp;2644;na=SATURN\r
 cp;2645;na=URANUS\r
@@ -11255,8 +11261,8 @@ cp;2691;age=4.0;na=BLACK FLAG
 cp;2692;age=4.1;Emoji;na=HAMMER AND PICK\r
 cp;2693;age=4.1;ea=W;Emoji;Emoji_Presentation;na=ANCHOR\r
 cp;2694;age=4.1;Emoji;na=CROSSED SWORDS\r
-cp;2695;age=4.1;Emoji;na=STAFF OF AESCULAPIUS\r
-cp;2696;age=4.1;Emoji;na=SCALES\r
+cp;2695;age=4.1;Emoji;GCB=GAZ;na=STAFF OF AESCULAPIUS;WB=GAZ\r
+cp;2696;age=4.1;Emoji;GCB=GAZ;na=SCALES;WB=GAZ\r
 cp;2697;age=4.1;Emoji;na=ALEMBIC\r
 cp;2698;age=4.1;na=FLOWER\r
 cp;2699;age=4.1;Emoji;na=GEAR\r
@@ -11394,7 +11400,7 @@ cp;2704;lb=ID;na=WHITE SCISSORS
 cp;2705;age=6.0;ea=W;Emoji;Emoji_Presentation;na=WHITE HEAVY CHECK MARK\r
 cp;2706;na=TELEPHONE LOCATION SIGN\r
 cp;2707;na=TAPE DRIVE\r
-cp;2708;Emoji;lb=ID;na=AIRPLANE\r
+cp;2708;Emoji;GCB=GAZ;lb=ID;na=AIRPLANE;WB=GAZ\r
 cp;2709;Emoji;lb=ID;na=ENVELOPE\r
 cp;270A;age=6.0;ea=W;Emoji;Emoji_Modifier_Base;Emoji_Presentation;GCB=EB;lb=EB;na=RAISED FIST;WB=EB\r
 cp;270B;age=6.0;ea=W;Emoji;Emoji_Modifier_Base;Emoji_Presentation;GCB=EB;lb=EB;na=RAISED HAND;WB=EB\r
@@ -12753,7 +12759,8 @@ cp;2BCF;na=ROTATED WHITE FOUR POINTED CUSP
 # Miscellaneous symbols\r
 cp;2BD0;na=SQUARE POSITION INDICATOR\r
 cp;2BD1;na=UNCERTAINTY SIGN\r
-cp;2BD2..2BEB;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
+cp;2BD2;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;2BD3..2BEB;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
 # Two-headed arrow symbols\r
 cp;2BEC;age=8.0;na=LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS\r
 cp;2BED;age=8.0;na=UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS\r
@@ -13379,7 +13386,8 @@ cp;2E42;age=7.0;gc=Ps;lb=OP;na=DOUBLE LOW-REVERSED-9 QUOTATION MARK;QMark;SB=CL
 cp;2E43;age=9.0;na=DASH WITH LEFT UPTURN;scx=Cyrl Glag\r
 # Miscellaneous punctuation\r
 cp;2E44;age=9.0;na=DOUBLE SUSPENSION MARK\r
-cp;2E45..2E7F;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
+cp;2E45..2E49;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;2E4A..2E7F;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
 \r
 block;2E80..2EFF;age=3.0;bc=ON;blk=CJK_Radicals_Sup;ea=W;gc=So;Gr_Base;lb=ID;Radical;sc=Hani\r
 # 2E80..2EFF CJK Radicals Supplement\r
@@ -14072,7 +14080,8 @@ cp;312B;na=BOPOMOFO LETTER NG
 cp;312C;na=BOPOMOFO LETTER GN\r
 # Miscellaneous addition\r
 cp;312D;age=5.1;na=BOPOMOFO LETTER IH\r
-cp;312E..312F;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;312E;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;sc=Zzzz;-XIDC;-XIDS\r
+cp;312F;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 \r
 block;3130..318F;age=1.1;Alpha;blk=Compat_Jamo;CWKCF;dt=Com;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hang;WB=LE;XIDC;XIDS\r
 # 3130..318F Hangul Compatibility Jamo\r
@@ -14975,7 +14984,8 @@ cp;9FBC..9FC3;age=5.1
 cp;9FC4..9FCB;age=5.2\r
 cp;9FCC;age=6.1\r
 cp;9FCD..9FD5;age=8.0\r
-cp;9FD6..9FFF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-Ideo;-IDS;SB=XX;sc=Zzzz;-UIdeo;-XIDC;-XIDS\r
+cp;9FD6..9FEA;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-Ideo;-IDS;sc=Zzzz;-UIdeo;-XIDC;-XIDS\r
+cp;9FEB..9FFF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-Ideo;-IDS;SB=XX;sc=Zzzz;-UIdeo;-XIDC;-XIDS\r
 \r
 block;A000..A48F;age=3.0;Alpha;blk=Yi_Syllables;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Yiii;WB=LE;XIDC;XIDS\r
 # A000..A48F Yi Syllables\r
@@ -16829,8 +16839,8 @@ cp;A71F;age=5.1;Alpha;Dia;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW INVERTED EXCLAMAT
 block;A720..A7FF;age=5.1;Alpha;blk=Latin_Ext_D;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
 # A720..A7FF Latin Extended-D\r
 # Additions for UPA\r
-cp;A720;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND HIGH TONE;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
-cp;A721;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND LOW TONE;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
+cp;A720;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND HIGH TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
+cp;A721;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND LOW TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
 # Egyptological additions\r
 cp;A722;cf=A723;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;NFKC_CF=A723;SB=UP;scf=A723;slc=A723;Upper\r
 cp;A723;CWT;CWU;Lower;na=LATIN SMALL LETTER EGYPTOLOGICAL ALEF;stc=A722;suc=A722\r
@@ -16939,8 +16949,8 @@ cp;A786;cf=A787;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR T;NFKC_CF=A
 cp;A787;CWT;CWU;Lower;na=LATIN SMALL LETTER INSULAR T;stc=A786;suc=A786\r
 # Modifier letters\r
 cp;A788;bc=ON;-Cased;CI;-CWCM;Dia;gc=Lm;na=MODIFIER LETTER LOW CIRCUMFLEX ACCENT;SB=LE;sc=Zyyy\r
-cp;A789;-Alpha;-Cased;CI;-CWCM;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER COLON;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
-cp;A78A;-Alpha;-Cased;CI;-CWCM;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER SHORT EQUALS SIGN;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
+cp;A789;-Alpha;-Cased;CI;-CWCM;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER COLON;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
+cp;A78A;-Alpha;-Cased;CI;-CWCM;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER SHORT EQUALS SIGN;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
 # Orthographic letters for glottals\r
 cp;A78B;cf=A78C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SALTILLO;NFKC_CF=A78C;SB=UP;scf=A78C;slc=A78C;Upper\r
 cp;A78C;CWT;CWU;Lower;na=LATIN SMALL LETTER SALTILLO;stc=A78B;suc=A78B\r
@@ -17921,7 +17931,7 @@ cp;AB58;na=LATIN SMALL LETTER X WITH LONG LEFT LEG AND LOW RIGHT RING
 cp;AB59;na=LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF\r
 cp;AB5A;na=LATIN SMALL LETTER Y WITH SHORT RIGHT LEG\r
 # Modifier letters for German dialectology\r
-cp;AB5B;-Alpha;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER BREVE WITH INVERTED BREVE;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
+cp;AB5B;-Alpha;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER BREVE WITH INVERTED BREVE;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
 cp;AB5C;CI;CWKCF;Dia;dm=A727;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL HENG;NFKC_CF=A727;NFKC_QC=N;NFKD_QC=N\r
 cp;AB5D;CI;CWKCF;Dia;dm=AB37;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH INVERTED LAZY S;NFKC_CF=AB37;NFKC_QC=N;NFKD_QC=N\r
 cp;AB5E;CI;CWKCF;Dia;dm=026B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH MIDDLE TILDE;NFKC_CF=026B;NFKC_QC=N;NFKD_QC=N\r
@@ -20927,7 +20937,8 @@ cp;10320;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL ONE;nt=Nu;nv=1;SB=XX;WB=XX
 cp;10321;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS\r
 cp;10322;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS\r
 cp;10323;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS\r
-cp;10324..1032F;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;10324..1032C;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;1032D..1032F;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;sc=Zzzz;-XIDC;-XIDS\r
 \r
 block;10330..1034F;age=3.1;Alpha;blk=Gothic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Goth;WB=LE;XIDC;XIDS\r
 # 10330..1034F Gothic\r
@@ -24374,6 +24385,36 @@ cp;118F2;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER NINETY;nt=Nu;
 cp;118F3..118FE;age=NA;-Alpha;-Cased;-CWCM;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Sign\r
 cp;118FF;-Cased;-CWCM;gc=Lo;na=WARANG CITI OM;SB=LE\r
+cp;11A00;lb=AL;SB=LE;WB=LE\r
+cp;11A01..11A06;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11A07..11A08;GCB=SM;lb=CM;SB=EX;WB=Extend\r
+cp;11A09..11A0A;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11A0B..11A32;lb=AL;SB=LE;WB=LE\r
+cp;11A33..11A38;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11A39;GCB=SM;lb=CM;SB=EX;WB=Extend\r
+cp;11A3A;GCB=PP;lb=AL;SB=LE;WB=LE\r
+cp;11A3B..11A3E;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11A3F;lb=BB\r
+cp;11A40;lb=AL\r
+cp;11A41;lb=BA\r
+cp;11A42..11A43;lb=BA;SB=ST\r
+cp;11A44;lb=BA\r
+cp;11A45;lb=BB\r
+cp;11A46;lb=AL\r
+cp;11A47;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11A50;lb=AL;SB=LE;WB=LE\r
+cp;11A51..11A56;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11A57..11A58;GCB=SM;lb=CM;SB=EX;WB=Extend\r
+cp;11A59..11A5B;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11A5C..11A83;lb=AL;SB=LE;WB=LE\r
+cp;11A86..11A89;GCB=PP;lb=AL;SB=LE;WB=LE\r
+cp;11A8A..11A96;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11A97;GCB=SM;lb=CM;SB=EX;WB=Extend\r
+cp;11A98..11A99;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11A9A;lb=BA\r
+cp;11A9B..11A9C;lb=BA;SB=ST\r
+cp;11A9E..11AA0;lb=BB\r
+cp;11AA1..11AA2;lb=BA\r
 \r
 block;11AC0..11AFF;age=7.0;Alpha;blk=Pau_Cin_Hau;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Pauc;WB=LE;XIDC;XIDS\r
 # 11AC0..11AFF Pau Cin Hau\r
@@ -24630,6 +24671,16 @@ cp;11CB4;gc=Mc;GCB=SM;Gr_Base;InPC=Right;InSC=Vowel_Dependent;na=MARCHEN VOWEL S
 cp;11CB5;bc=NSM;CI;GCB=EX;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;na=MARCHEN SIGN ANUSVARA\r
 cp;11CB6;bc=NSM;CI;GCB=EX;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;na=MARCHEN SIGN CANDRABINDU\r
 cp;11CB7..11CBF;age=NA;-Alpha;gc=Cn;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;11D00..11D06;lb=AL;SB=LE;WB=LE\r
+cp;11D08..11D09;lb=AL;SB=LE;WB=LE\r
+cp;11D0B..11D30;lb=AL;SB=LE;WB=LE\r
+cp;11D31..11D36;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11D3A;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11D3C..11D3D;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11D3F..11D45;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11D46;GCB=PP;lb=AL;SB=LE;WB=LE\r
+cp;11D47;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
+cp;11D50..11D59;lb=NU;SB=NU;WB=NU\r
 \r
 block;12000..123FF;age=5.0;Alpha;blk=Cuneiform;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Xsux;WB=LE;XIDC;XIDS\r
 # 12000..123FF Cuneiform\r
@@ -28553,10 +28604,11 @@ cp;16F9D;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-5
 cp;16F9E;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-6\r
 cp;16F9F;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-8\r
 \r
-block;16FE0..16FFF;blk=Ideographic_Symbols\r
+block;16FE0..16FFF;blk=Ideographic_Symbols;lb=NS;SB=LE;WB=LE\r
 # 16FE0..16FFF Ideographic Symbols and Punctuation\r
 # Tangut mark\r
-cp;16FE0;age=9.0;Alpha;CI;ea=W;Ext;gc=Lm;Gr_Base;IDC;IDS;lb=NS;na=TANGUT ITERATION MARK;SB=LE;sc=Tang;WB=LE;XIDC;XIDS\r
+cp;16FE0;age=9.0;Alpha;CI;ea=W;Ext;gc=Lm;Gr_Base;IDC;IDS;na=TANGUT ITERATION MARK;sc=Tang;XIDC;XIDS\r
+cp;16FE2..16FFF;lb=XX;SB=XX;WB=XX\r
 \r
 block;17000..187FF;blk=Tangut\r
 # 17000..187EC Tangut\r
@@ -29342,7 +29394,9 @@ block;1B000..1B0FF;age=6.0;Alpha;blk=Kana_Sup;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;S
 cp;1B000;na=KATAKANA LETTER ARCHAIC E;sc=Kana;WB=KA\r
 # Historic Hiragana\r
 cp;1B001;na=HIRAGANA LETTER ARCHAIC YE;sc=Hira\r
-cp;1B002..1B0FF;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;-XIDC;-XIDS\r
+cp;1B002..1B0FF;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;-XIDC;-XIDS\r
+cp;1B100..1B11E;lb=ID;SB=LE\r
+cp;1B170..1B2FB;lb=ID;SB=LE\r
 \r
 block;1BC00..1BC9F;age=7.0;Alpha;blk=Duployan;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Dupl;WB=LE;XIDC;XIDS\r
 # 1BC00..1BC9F Duployan\r
@@ -33141,7 +33195,9 @@ cp;1F249..1F24F;age=NA;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc
 # Circled ideographs\r
 cp;1F250;age=6.0;dm=5F97;dt=Enc;Emoji;Emoji_Presentation;na=CIRCLED IDEOGRAPH ADVANTAGE;NFKC_CF=5F97;scx=Hani\r
 cp;1F251;age=6.0;dm=53EF;dt=Enc;Emoji;Emoji_Presentation;na=CIRCLED IDEOGRAPH ACCEPT;NFKC_CF=53EF;scx=Hani\r
-cp;1F252..1F2FF;age=NA;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc=Zzzz\r
+cp;1F252..1F25F;age=NA;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc=Zzzz\r
+cp;1F260..1F265;age=NA;bc=ON;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc=Zzzz\r
+cp;1F266..1F2FF;age=NA;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc=Zzzz\r
 \r
 block;1F300..1F5FF;age=6.0;bc=ON;blk=Misc_Pictographs;ea=W;Emoji;Emoji_Presentation;gc=So;Gr_Base;lb=ID;sc=Zyyy\r
 # 1F300..1F5FF Miscellaneous Symbols and Pictographs\r
@@ -33154,7 +33210,7 @@ cp;1F304;na=SUNRISE OVER MOUNTAINS
 cp;1F305;na=SUNRISE\r
 cp;1F306;na=CITYSCAPE AT DUSK\r
 cp;1F307;na=SUNSET OVER BUILDINGS\r
-cp;1F308;na=RAINBOW\r
+cp;1F308;GCB=GAZ;na=RAINBOW;WB=GAZ\r
 cp;1F309;na=BRIDGE AT NIGHT\r
 cp;1F30A;na=WATER WAVE\r
 cp;1F30B;na=VOLCANO\r
@@ -33213,7 +33269,7 @@ cp;1F33A;na=HIBISCUS
 cp;1F33B;na=SUNFLOWER\r
 cp;1F33C;na=BLOSSOM\r
 cp;1F33D;na=EAR OF MAIZE\r
-cp;1F33E;na=EAR OF RICE\r
+cp;1F33E;GCB=GAZ;na=EAR OF RICE;WB=GAZ\r
 cp;1F33F;na=HERB\r
 cp;1F340;na=FOUR LEAF CLOVER\r
 cp;1F341;na=MAPLE LEAF\r
@@ -33268,7 +33324,7 @@ cp;1F36F;na=HONEY POT
 cp;1F370;na=SHORTCAKE\r
 cp;1F371;na=BENTO BOX\r
 cp;1F372;na=POT OF FOOD\r
-cp;1F373;na=COOKING\r
+cp;1F373;GCB=GAZ;na=COOKING;WB=GAZ\r
 cp;1F374;na=FORK AND KNIFE\r
 # Beverage symbols\r
 cp;1F375;na=TEACUP WITHOUT HANDLE\r
@@ -33304,7 +33360,7 @@ cp;1F38F;na=CARP STREAMER
 cp;1F390;na=WIND CHIME\r
 cp;1F391;na=MOON VIEWING CEREMONY\r
 cp;1F392;na=SCHOOL SATCHEL\r
-cp;1F393;na=GRADUATION CAP\r
+cp;1F393;GCB=GAZ;na=GRADUATION CAP;WB=GAZ\r
 cp;1F394;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=HEART WITH TIP ON THE LEFT\r
 cp;1F395;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=BOUQUET OF FLOWERS\r
 cp;1F396;age=7.0;ea=N;-Emoji_Presentation;na=MILITARY MEDAL\r
@@ -33323,11 +33379,11 @@ cp;1F3A0;na=CAROUSEL HORSE
 cp;1F3A1;na=FERRIS WHEEL\r
 cp;1F3A2;na=ROLLER COASTER\r
 cp;1F3A3;na=FISHING POLE AND FISH\r
-cp;1F3A4;na=MICROPHONE\r
+cp;1F3A4;GCB=GAZ;na=MICROPHONE;WB=GAZ\r
 cp;1F3A5;na=MOVIE CAMERA\r
 cp;1F3A6;na=CINEMA\r
 cp;1F3A7;na=HEADPHONE\r
-cp;1F3A8;na=ARTIST PALETTE\r
+cp;1F3A8;GCB=GAZ;na=ARTIST PALETTE;WB=GAZ\r
 cp;1F3A9;na=TOP HAT\r
 cp;1F3AA;na=CIRCUS TENT\r
 cp;1F3AB;na=TICKET\r
@@ -33356,17 +33412,17 @@ cp;1F3BE;na=TENNIS RACQUET AND BALL
 cp;1F3BF;na=SKI AND SKI BOOT\r
 cp;1F3C0;na=BASKETBALL AND HOOP\r
 cp;1F3C1;na=CHEQUERED FLAG\r
-cp;1F3C2;Emoji_Modifier_Base;na=SNOWBOARDER\r
+cp;1F3C2;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SNOWBOARDER;WB=EB\r
 cp;1F3C3;Emoji_Modifier_Base;GCB=EB;lb=EB;na=RUNNER;WB=EB\r
 cp;1F3C4;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SURFER;WB=EB\r
 cp;1F3C5;age=7.0;na=SPORTS MEDAL\r
 cp;1F3C6;na=TROPHY\r
-cp;1F3C7;Emoji_Modifier_Base;na=HORSE RACING\r
+cp;1F3C7;Emoji_Modifier_Base;GCB=EB;lb=EB;na=HORSE RACING;WB=EB\r
 cp;1F3C8;na=AMERICAN FOOTBALL\r
 cp;1F3C9;na=RUGBY FOOTBALL\r
 cp;1F3CA;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SWIMMER;WB=EB\r
 cp;1F3CB;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;GCB=EB;lb=EB;na=WEIGHT LIFTER;WB=EB\r
-cp;1F3CC;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;na=GOLFER\r
+cp;1F3CC;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;GCB=EB;lb=EB;na=GOLFER;WB=EB\r
 cp;1F3CD;age=7.0;ea=N;-Emoji_Presentation;na=RACING MOTORCYCLE\r
 cp;1F3CE;age=7.0;ea=N;-Emoji_Presentation;na=RACING CAR\r
 cp;1F3CF;age=8.0;na=CRICKET BAT AND BALL\r
@@ -33398,9 +33454,9 @@ cp;1F3E7;na=AUTOMATED TELLER MACHINE
 cp;1F3E8;na=HOTEL\r
 cp;1F3E9;na=LOVE HOTEL\r
 cp;1F3EA;na=CONVENIENCE STORE\r
-cp;1F3EB;na=SCHOOL\r
+cp;1F3EB;GCB=GAZ;na=SCHOOL;WB=GAZ\r
 cp;1F3EC;na=DEPARTMENT STORE\r
-cp;1F3ED;na=FACTORY\r
+cp;1F3ED;GCB=GAZ;na=FACTORY;WB=GAZ\r
 cp;1F3EE;na=IZAKAYA LANTERN\r
 cp;1F3EF;na=JAPANESE CASTLE\r
 cp;1F3F0;na=EUROPEAN CASTLE\r
@@ -33538,12 +33594,12 @@ cp;1F466;Emoji_Modifier_Base;GCB=EBG;lb=EB;na=BOY;WB=EBG
 cp;1F467;Emoji_Modifier_Base;GCB=EBG;lb=EB;na=GIRL;WB=EBG\r
 cp;1F468;Emoji_Modifier_Base;GCB=EBG;lb=EB;na=MAN;WB=EBG\r
 cp;1F469;Emoji_Modifier_Base;GCB=EBG;lb=EB;na=WOMAN;WB=EBG\r
-cp;1F46A;Emoji_Modifier_Base;na=FAMILY\r
-cp;1F46B;Emoji_Modifier_Base;na=MAN AND WOMAN HOLDING HANDS\r
-cp;1F46C;Emoji_Modifier_Base;na=TWO MEN HOLDING HANDS\r
-cp;1F46D;Emoji_Modifier_Base;na=TWO WOMEN HOLDING HANDS\r
+cp;1F46A;na=FAMILY\r
+cp;1F46B;na=MAN AND WOMAN HOLDING HANDS\r
+cp;1F46C;na=TWO MEN HOLDING HANDS\r
+cp;1F46D;na=TWO WOMEN HOLDING HANDS\r
 cp;1F46E;Emoji_Modifier_Base;GCB=EB;lb=EB;na=POLICE OFFICER;WB=EB\r
-cp;1F46F;Emoji_Modifier_Base;na=WOMAN WITH BUNNY EARS\r
+cp;1F46F;na=WOMAN WITH BUNNY EARS\r
 cp;1F470;Emoji_Modifier_Base;GCB=EB;lb=EB;na=BRIDE WITH VEIL;WB=EB\r
 cp;1F471;Emoji_Modifier_Base;GCB=EB;lb=EB;na=PERSON WITH BLOND HAIR;WB=EB\r
 cp;1F472;Emoji_Modifier_Base;GCB=EB;lb=EB;na=MAN WITH GUA PI MAO;WB=EB\r
@@ -33629,8 +33685,8 @@ cp;1F4B8;na=MONEY WITH WINGS
 cp;1F4B9;na=CHART WITH UPWARDS TREND AND YEN SIGN\r
 # Office symbols\r
 cp;1F4BA;na=SEAT\r
-cp;1F4BB;na=PERSONAL COMPUTER\r
-cp;1F4BC;na=BRIEFCASE\r
+cp;1F4BB;GCB=GAZ;na=PERSONAL COMPUTER;WB=GAZ\r
+cp;1F4BC;GCB=GAZ;na=BRIEFCASE;WB=GAZ\r
 cp;1F4BD;na=MINIDISC\r
 cp;1F4BE;na=FLOPPY DISK\r
 cp;1F4BF;na=OPTICAL DISC\r
@@ -33745,12 +33801,12 @@ cp;1F524;lb=AL;na=INPUT SYMBOL FOR LATIN LETTERS
 # Tool symbols\r
 cp;1F525;na=FIRE\r
 cp;1F526;na=ELECTRIC TORCH\r
-cp;1F527;na=WRENCH\r
+cp;1F527;GCB=GAZ;na=WRENCH;WB=GAZ\r
 cp;1F528;na=HAMMER\r
 cp;1F529;na=NUT AND BOLT\r
 cp;1F52A;na=HOCHO\r
 cp;1F52B;na=PISTOL\r
-cp;1F52C;na=MICROSCOPE\r
+cp;1F52C;GCB=GAZ;na=MICROSCOPE;WB=GAZ\r
 cp;1F52D;na=TELESCOPE\r
 cp;1F52E;na=CRYSTAL BALL\r
 # Miscellaneous symbols\r
@@ -33831,7 +33887,7 @@ cp;1F570;age=7.0;ea=N;-Emoji_Presentation;na=MANTELPIECE CLOCK
 cp;1F571;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=BLACK SKULL AND CROSSBONES\r
 cp;1F572;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=NO PIRACY\r
 cp;1F573;age=7.0;ea=N;-Emoji_Presentation;na=HOLE\r
-cp;1F574;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;na=MAN IN BUSINESS SUIT LEVITATING\r
+cp;1F574;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;GCB=EB;lb=EB;na=MAN IN BUSINESS SUIT LEVITATING;WB=EB\r
 cp;1F575;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;GCB=EB;lb=EB;na=SLEUTH OR SPY;WB=EB\r
 cp;1F576;age=7.0;ea=N;-Emoji_Presentation;na=DARK SUNGLASSES\r
 # Animal symbols\r
@@ -34135,7 +34191,7 @@ cp;1F67F;na=REVERSE CHECKER BOARD
 block;1F680..1F6FF;age=6.0;bc=ON;blk=Transport_And_Map;ea=W;Emoji;Emoji_Presentation;gc=So;Gr_Base;lb=ID;sc=Zyyy\r
 # 1F680..1F6FF Transport and Map Symbols\r
 # Vehicles\r
-cp;1F680;na=ROCKET\r
+cp;1F680;GCB=GAZ;na=ROCKET;WB=GAZ\r
 cp;1F681;na=HELICOPTER\r
 cp;1F682;na=STEAM LOCOMOTIVE\r
 cp;1F683;na=RAILWAY CAR\r
@@ -34153,7 +34209,7 @@ cp;1F68E;na=TROLLEYBUS
 cp;1F68F;na=BUS STOP\r
 cp;1F690;na=MINIBUS\r
 cp;1F691;na=AMBULANCE\r
-cp;1F692;na=FIRE ENGINE\r
+cp;1F692;GCB=GAZ;na=FIRE ENGINE;WB=GAZ\r
 cp;1F693;na=POLICE CAR\r
 cp;1F694;na=ONCOMING POLICE CAR\r
 cp;1F695;na=TAXI\r
@@ -34214,7 +34270,7 @@ cp;1F6C9;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=BOYS SYMBOL
 cp;1F6CA;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=GIRLS SYMBOL\r
 # Accommodation symbols\r
 cp;1F6CB;age=7.0;ea=N;-Emoji_Presentation;na=COUCH AND LAMP\r
-cp;1F6CC;age=7.0;Emoji_Modifier_Base;na=SLEEPING ACCOMMODATION\r
+cp;1F6CC;age=7.0;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SLEEPING ACCOMMODATION;WB=EB\r
 cp;1F6CD;age=7.0;ea=N;-Emoji_Presentation;na=SHOPPING BAGS\r
 cp;1F6CE;age=7.0;ea=N;-Emoji_Presentation;na=BELLHOP BELL\r
 cp;1F6CF;age=7.0;ea=N;-Emoji_Presentation;na=BED\r
@@ -34222,7 +34278,8 @@ cp;1F6CF;age=7.0;ea=N;-Emoji_Presentation;na=BED
 cp;1F6D0;age=8.0;na=PLACE OF WORSHIP\r
 cp;1F6D1;age=9.0;na=OCTAGONAL SIGN\r
 cp;1F6D2;age=9.0;na=SHOPPING TROLLEY\r
-cp;1F6D3..1F6DF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F6D3..1F6D4;age=NA;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F6D5..1F6DF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Miscellaneous symbols\r
 cp;1F6E0;age=7.0;ea=N;-Emoji_Presentation;na=HAMMER AND WRENCH\r
 cp;1F6E1;age=7.0;ea=N;-Emoji_Presentation;na=SHIELD\r
@@ -34246,7 +34303,8 @@ cp;1F6F3;age=7.0;ea=N;-Emoji_Presentation;na=PASSENGER SHIP
 cp;1F6F4;age=9.0;na=SCOOTER\r
 cp;1F6F5;age=9.0;na=MOTOR SCOOTER\r
 cp;1F6F6;age=9.0;na=CANOE\r
-cp;1F6F7..1F6FF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F6F7..1F6F8;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F6F9..1F6FF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 \r
 block;1F700..1F77F;age=6.0;bc=ON;blk=Alchemical;gc=So;Gr_Base;lb=AL;sc=Zyyy\r
 # 1F700..1F77F Alchemical Symbols\r
@@ -34668,7 +34726,8 @@ cp;1F8AE..1F8FF;age=NA;bc=L;gc=Cn;-Gr_Base;lb=ID;sc=Zzzz
 \r
 block;1F900..1F9FF;age=9.0;bc=ON;blk=Sup_Symbols_And_Pictographs;ea=W;Emoji;Emoji_Presentation;gc=So;Gr_Base;lb=ID;sc=Zyyy\r
 # 1F900..1F9FF Supplemental Symbols and Pictographs\r
-cp;1F900..1F90F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F900..1F90B;age=NA;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;lb=AL;sc=Zzzz\r
+cp;1F90C..1F90F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Emoticon faces\r
 cp;1F910;age=8.0;na=ZIPPER-MOUTH FACE\r
 cp;1F911;age=8.0;na=MONEY-MOUTH FACE\r
@@ -34684,9 +34743,9 @@ cp;1F919;Emoji_Modifier_Base;GCB=EB;lb=EB;na=CALL ME HAND;WB=EB
 cp;1F91A;Emoji_Modifier_Base;GCB=EB;lb=EB;na=RAISED BACK OF HAND;WB=EB\r
 cp;1F91B;Emoji_Modifier_Base;GCB=EB;lb=EB;na=LEFT-FACING FIST;WB=EB\r
 cp;1F91C;Emoji_Modifier_Base;GCB=EB;lb=EB;na=RIGHT-FACING FIST;WB=EB\r
-cp;1F91D;Emoji_Modifier_Base;GCB=EB;lb=EB;na=HANDSHAKE;WB=EB\r
+cp;1F91D;na=HANDSHAKE\r
 cp;1F91E;Emoji_Modifier_Base;GCB=EB;lb=EB;na=HAND WITH INDEX AND MIDDLE FINGERS CROSSED;WB=EB\r
-cp;1F91F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F91F;age=NA;ea=N;Emoji_Modifier_Base;gc=Cn;GCB=EB;-Gr_Base;lb=EB;sc=Zzzz;WB=EB\r
 # Emoticon faces\r
 cp;1F920;na=FACE WITH COWBOY HAT\r
 cp;1F921;na=CLOWN FACE\r
@@ -34696,10 +34755,10 @@ cp;1F924;na=DROOLING FACE
 cp;1F925;na=LYING FACE\r
 cp;1F926;Emoji_Modifier_Base;GCB=EB;lb=EB;na=FACE PALM;WB=EB\r
 cp;1F927;na=SNEEZING FACE\r
-cp;1F928..1F92F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F928..1F92F;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Portrait and role symbols\r
 cp;1F930;Emoji_Modifier_Base;GCB=EB;lb=EB;na=PREGNANT WOMAN;WB=EB\r
-cp;1F931..1F932;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F931..1F932;age=NA;ea=N;Emoji_Modifier_Base;gc=Cn;GCB=EB;-Gr_Base;lb=EB;sc=Zzzz;WB=EB\r
 cp;1F933;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SELFIE;WB=EB\r
 cp;1F934;Emoji_Modifier_Base;GCB=EB;lb=EB;na=PRINCE;WB=EB\r
 cp;1F935;Emoji_Modifier_Base;GCB=EB;lb=EB;na=MAN IN TUXEDO;WB=EB\r
@@ -34709,7 +34768,7 @@ cp;1F938;Emoji_Modifier_Base;GCB=EB;lb=EB;na=PERSON DOING CARTWHEEL;WB=EB
 cp;1F939;Emoji_Modifier_Base;GCB=EB;lb=EB;na=JUGGLING;WB=EB\r
 cp;1F93A;na=FENCER\r
 cp;1F93B;-Emoji;-Emoji_Presentation;na=MODERN PENTATHLON\r
-cp;1F93C;Emoji_Modifier_Base;GCB=EB;lb=EB;na=WRESTLERS;WB=EB\r
+cp;1F93C;na=WRESTLERS\r
 cp;1F93D;Emoji_Modifier_Base;GCB=EB;lb=EB;na=WATER POLO;WB=EB\r
 cp;1F93E;Emoji_Modifier_Base;GCB=EB;lb=EB;na=HANDBALL;WB=EB\r
 cp;1F93F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
@@ -34726,7 +34785,8 @@ cp;1F948;na=SECOND PLACE MEDAL
 cp;1F949;na=THIRD PLACE MEDAL\r
 cp;1F94A;na=BOXING GLOVE\r
 cp;1F94B;na=MARTIAL ARTS UNIFORM\r
-cp;1F94C..1F94F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F94C;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F94D..1F94F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Food symbols\r
 cp;1F950;na=CROISSANT\r
 cp;1F951;na=AVOCADO\r
@@ -34743,7 +34803,8 @@ cp;1F95B;na=GLASS OF MILK
 cp;1F95C;na=PEANUTS\r
 cp;1F95D;na=KIWIFRUIT\r
 cp;1F95E;na=PANCAKES\r
-cp;1F95F..1F97F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F95F..1F96B;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F96C..1F97F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Animal symbols\r
 cp;1F980;age=8.0;na=CRAB\r
 cp;1F981;age=8.0;na=LION FACE\r
@@ -34763,10 +34824,15 @@ cp;1F98E;na=LIZARD
 cp;1F98F;na=RHINOCEROS\r
 cp;1F990;na=SHRIMP\r
 cp;1F991;na=SQUID\r
-cp;1F992..1F9BF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F992..1F997;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F998..1F9BF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Food symbol\r
 cp;1F9C0;age=8.0;na=CHEESE WEDGE\r
-cp;1F9C1..1F9FF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F9C1..1F9CF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F9D0;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F9D1..1F9DD;age=NA;ea=N;Emoji_Modifier_Base;gc=Cn;GCB=EB;-Gr_Base;lb=EB;sc=Zzzz;WB=EB\r
+cp;1F9DE..1F9E6;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F9E7..1F9FF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 cp;1FA00..1FF7F;lb=ID\r
 # 1FF80..1FFFF Unassigned\r
 cp;1FF80..1FFFD;lb=ID\r
@@ -34808,7 +34874,8 @@ block;2B820..2CEAF;blk=CJK_Ext_E;ea=W;lb=ID
 # 2B820..2CEA1 CJK Unified Ideographs Extension E\r
 algnamesrange;2B820..2CEA1;han;CJK UNIFIED IDEOGRAPH-\r
 cp;2B820..2CEA1;age=8.0;Alpha;gc=Lo;Gr_Base;IDC;Ideo;IDS;SB=LE;sc=Hani;UIdeo;XIDC;XIDS\r
-cp;2CEB0..2F7FF;ea=W;lb=ID\r
+cp;2CEB0..2EBE0;ea=W;lb=ID;SB=LE\r
+cp;2EBE1..2F7FF;ea=W;lb=ID\r
 \r
 block;2F800..2FA1F;age=3.1;Alpha;blk=CJK_Compat_Ideographs_Sup;Comp_Ex;CWKCF;dt=Can;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hani;XIDC;XIDS\r
 # 2F800..2FA1F CJK Compatibility Ideographs Supplement\r
index 14356d0..f8c6864 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 af{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"hh:mm"}\r
         hms{"hh:mm:ss"}\r
index c42c900..fbb04ea 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 agq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03a41ff..68c48e8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ak{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9f38623..e8234cf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 am{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index b2bc13a..2215823 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
diff --git a/source/data/unit/ar_SA.txt b/source/data/unit/ar_SA.txt
new file mode 100644 (file)
index 0000000..00baa1f
--- /dev/null
@@ -0,0 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+/**\r
+ * generated alias target\r
+ */\r
+ar_SA{\r
+    ___{""}\r
+}\r
diff --git a/source/data/unit/ars.txt b/source/data/unit/ars.txt
new file mode 100644 (file)
index 0000000..9bb22b9
--- /dev/null
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+ars{\r
+    "%%ALIAS"{"ar_SA"}\r
+}\r
index b73ce92..6b8c1a8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 as{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 44d6b34..e26c2b1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 asa{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3f9db2c..ce9ccdf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ast{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 8c26c06..f09e4f1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 5c699c3..43002da 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 4ce2adb..4c0b75a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 36ccde7..191387a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bas{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 95c17a9..5ae54c4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 be{\r
-    Version{"2.1.29.66"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"hh:mm"}\r
         hms{"hh:mm:ss"}\r
index d92d6d8..44bc1b9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bem{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c1079b7..c52fa07 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bez{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0d584a9..27f9b36 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bg{\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.33.75"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 8197c3b..88a359b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bm{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 75a8ad6..0fa2472 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bn{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a8c65f8..010d5fd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c464841..e611a45 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 br{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 8f5c943..20ad2fd 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 brx{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     units{\r
         duration{\r
             day{\r
index cf21c16..bcbcab3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 07fdda3..aff41ef 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.72"}\r
     units{\r
         duration{\r
             day{\r
index 20b4126..972dc01 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c0dbb48..116ff4c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index f7ad641..0ea7f41 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ce{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a8512f0..aee7a43 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cgg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1b48aae..d1ad729 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 chr{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index f0d8d1f..77d82e3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb{\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 59ca4be..5fc131a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cs{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index dc9d075..2bb2829 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cy{\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 0eb2a93..a99cbba 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 da{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index 9e04802..9a0f850 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dav{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b9e2a98..393e9d3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index c6691b3..2e94374 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_CH{\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         area{\r
             square-foot{\r
index ac06912..029e515 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dje{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8c11b51..3e93bde 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dsb{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 05959ba..ddd9f57 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dua{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 97ceeaa..d42a779 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dyo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4282a10..96bad80 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dz{\r
-    Version{"2.1.29.61"}\r
+    Version{"2.1.31.34"}\r
     units{\r
         duration{\r
             day{\r
index cf3920e..c7b78cf 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ebu{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e85bf3b..9115304 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ee{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     units{\r
         duration{\r
             day{\r
index cb39958..fe728c3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 el{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 183e7ed..979f5d5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en{\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.59"}\r
     units{\r
         acceleration{\r
             g-force{\r
@@ -141,6 +141,12 @@ en{
                 other{"{0} miles per Imp. gallon"}\r
             }\r
         }\r
+        coordinate{\r
+            east{"{0} east"}\r
+            north{"{0} north"}\r
+            south{"{0} south"}\r
+            west{"{0} west"}\r
+        }\r
         digital{\r
             bit{\r
                 dnam{"bits"}\r
@@ -429,6 +435,11 @@ en{
                 one{"{0} picometer"}\r
                 other{"{0} picometers"}\r
             }\r
+            point{\r
+                dnam{"points"}\r
+                one{"{0} point"}\r
+                other{"{0} points"}\r
+            }\r
             yard{\r
                 dnam{"yards"}\r
                 one{"{0} yard"}\r
@@ -856,6 +867,12 @@ en{
                 other{"{0}m/gUK"}\r
             }\r
         }\r
+        coordinate{\r
+            east{"{0}E"}\r
+            north{"{0}N"}\r
+            south{"{0}S"}\r
+            west{"{0}W"}\r
+        }\r
         digital{\r
             bit{\r
                 dnam{"bit"}\r
@@ -1127,6 +1144,11 @@ en{
                 one{"{0}pm"}\r
                 other{"{0}pm"}\r
             }\r
+            point{\r
+                dnam{"pts"}\r
+                one{"{0}pt"}\r
+                other{"{0}pt"}\r
+            }\r
             yard{\r
                 dnam{"yd"}\r
                 one{"{0}yd"}\r
@@ -1567,6 +1589,12 @@ en{
                 other{"{0} mpg Imp."}\r
             }\r
         }\r
+        coordinate{\r
+            east{"{0} E"}\r
+            north{"{0} N"}\r
+            south{"{0} S"}\r
+            west{"{0} W"}\r
+        }\r
         digital{\r
             bit{\r
                 dnam{"bit"}\r
@@ -1855,6 +1883,11 @@ en{
                 one{"{0} pm"}\r
                 other{"{0} pm"}\r
             }\r
+            point{\r
+                dnam{"points"}\r
+                one{"{0} pt"}\r
+                other{"{0} pt"}\r
+            }\r
             yard{\r
                 dnam{"yards"}\r
                 one{"{0} yd"}\r
index 6e3a173..196174a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_001{\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         acceleration{\r
             meter-per-second-squared{\r
index 249596a..78561e0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_150{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 93d0c87..8a0d454 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d55549d..07cb4ef 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b4edb3f..09171c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index df909f8..be9dc8c 100644 (file)
@@ -2,14 +2,8 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.62"}\r
     units{\r
-        coordinate{\r
-            east{"{0} east"}\r
-            north{"{0} north"}\r
-            south{"{0} south"}\r
-            west{"{0} west"}\r
-        }\r
         energy{\r
             kilowatt-hour{\r
                 dnam{"kilowatt hours"}\r
index 7083244..84a0efd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c967ad1..7065545 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 17ad945..a3b9186 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 77895f3..699a947 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     unitsNarrow{\r
         temperature{\r
             celsius{\r
index d4c98cf..a73b7bc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0fe1cb4..24eee21 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     unitsNarrow{\r
         temperature{\r
             celsius{\r
index 7ce3018..094b3b0 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     unitsNarrow{\r
         concentr{\r
             milligram-per-deciliter{\r
index a2871e2..a54c911 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d055587..4f2d948 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bd2eba..f59d92a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0ae421..5aacc7b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a5c8744..8c9c483 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 81d8657..46da087 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a91a9c4..5d2d71a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index af3ee11..3d758dd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 55574ee..5a92d6b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DK{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4eaa7dc..b548583 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 228a8a8..7fd2c9a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 12aebe3..f699cc1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c439098..86f8e9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 21a12bc..5df30b2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 78ffc47..eab91ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d57d893..6a57c80 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.24"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ab0594c..7921b24 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8474cce..c0d3839 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 33fc5d4..b66f585 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 46d28cd..5fe0d68 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0d4e60..1a05f40 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dec9373..f7397d6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7c42f22..4a04a10 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index acfab3f..18bb2f3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1500279..76bee45 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5e5329..e66ecc0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1c73a40..0ae302f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 73736a0..2b8ba3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f31e9bf..c47ce4e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 67edbc7..d812c18 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26213f7..b11b581 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3f8c7e1..899b1ea 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f755a2f..35fb03c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8b4b9f7..09d5e8a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     unitsNarrow{\r
         temperature{\r
             celsius{\r
index 7abb21b..bfd0689 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 07b6a83..3fc63c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5123bd..b723857 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9eafad7..f967e69 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0b1b6a5..f6dfb6a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index df8f657..a027fc6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 23b6896..8464a2e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bb0cc54..890b025 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 58ee57a..873b8e1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 064aa6e..b36d9ba 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26854fe..5f0af42 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0a360ca..358d626 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5038494..745a114 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 21bbdc9..9d0d0cd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 039e457..165856c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eb82604..266914a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0dd2106..c56ed84 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c1792a4..6aa4d92 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0ca66f9..080d0e6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ccbdf7f..fef2013 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5bf94f0..4094568 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9fc8e3f..9160817 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     unitsNarrow{\r
         temperature{\r
             celsius{\r
index 7bb21c0..76b4d89 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cb507b5..e2de69a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 699d679..77c65fa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6206b27..87a33e2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d7fa572..31f586b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 66e6ec7..5250ec4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 968da99..cf6ab49 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fedf1c0..a259492 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4005802..3e61485 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 002988b..2b3a430 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9862443..ec1778f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 47c792d..cc8b6f1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eaabbe1..852eb0f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 797d773..020c31b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f1697f5..d27b6ec 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 599a8fe..21b8b30 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a2c5021..4ebd07d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c0c2960..5e30f2b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3b6c1e4..eaac010 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index de17869..12317cf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6a295b..ba6619b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2cecbf4..12b8824 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a3f70e3..8c90fd7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d528625..0461373 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.64"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 05bb346..19ed0d0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e725848..bb5dbed 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6e17036..56de5d7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     unitsShort{\r
         duration{\r
             month{\r
index c9327b1..19e29b7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es{\r
-    Version{"2.1.28.80"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index dcda68c..4d54dcb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_419{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         concentr{\r
             milligram-per-deciliter{\r
index c3bce7d..a11c3ec 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_AR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             year{\r
index 4d20523..abc4e7e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2f5e37a..e68498b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/unit/es_BZ.txt b/source/data/unit/es_BZ.txt
new file mode 100644 (file)
index 0000000..aa10911
--- /dev/null
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+es_BZ{\r
+    %%Parent{"es_419"}\r
+    Version{"2.1.32.37"}\r
+}\r
index 64bc7d8..3af1563 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CL{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     durationUnits{\r
         hms{"hh:mm:ss"}\r
         ms{"mm:ss"}\r
index bb48239..98ba9a5 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             month{\r
index 2253e39..7f7bf28 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 791d7f5..66f010e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f4d829a..23b0f37 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_DO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         electric{\r
             ampere{\r
index 5df6499..84322b7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_EC{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 227202a..f98c2e4 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_GT{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index 802179d..4c06fd0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_HN{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dd8b21c..d225f31 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_MX{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         angle{\r
             arc-minute{\r
index b1eb3f1..c6c3bb8 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_NI{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4bc4d78..0261ff1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PA{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 122e23f..81176e9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0004542..130a0f1 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     unitsNarrow{\r
         temperature{\r
             fahrenheit{\r
index bfee18b..880c20a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             year{\r
index f965d31..0442024 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_SV{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1a4e951..588d6a2 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_US{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.74"}\r
     units{\r
         concentr{\r
             milligram-per-deciliter{\r
index 2344e94..38b881e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_UY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d738de6..c1bee1f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_VE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0b59b8b..6e4c3ac 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 et{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 4512901..82abbbb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eu{\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index b70890a..169881c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ewo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a9e7d52..8fa730e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fa{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index f96fea6..8992013 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c0f6581..5112b90 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fi{\r
-    Version{"2.1.29.88"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index 7205f1b..bf70499 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fil{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 932276a..a4b1f4b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fo{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 43ac967..2901e31 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"hh:mm"}\r
         hms{"hh:mm:ss"}\r
index 4bce0f5..5250651 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CA{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 6c46ce0..a071224 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_HT{\r
-    Version{"2.1.27.63"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         area{\r
             hectare{\r
index 420c75e..b701654 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fur{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index 4b40864..6bb0874 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fy{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index c8689c1..fb88cd0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ga{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 332c00f..669007e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gd{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 696a952..8513248 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gl{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 5973f80..3944de9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 818b5a4..ff80df6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gu{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 7a7441a..724ae2e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 guz{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a1fd188..e2d77bb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gv{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
 }\r
index ed2d82a..7ff3356 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fb9771f..73351f2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 haw{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index e380225..026d0b6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 he{\r
-    Version{"2.1.29.27"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 749b89c..47fea1d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hi{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 49f2df1..3ebf023 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 60541df..177fb1c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hsb{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 67b539c..695e844 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hu{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 9b47a22..ecbe378 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hy{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 9111654..39f7535 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 id{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index cf9fa4e..ef5f677 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ig{\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d012adf..2d28560 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ii{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ffd2408..7c0c69e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 is{\r
-    Version{"2.1.29.65"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 5389c73..521d235 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 it{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index bf99b62..0b456f2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ja{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 324c39a..b73b9be 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jgo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index 3f79b8d..a76db1c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jmc{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8c11c8e..a489edf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ka{\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 6260d64..8ae9971 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kab{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d9b09c4..82cc5ce 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kam{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 82246fc..613d9a9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kde{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c301939..ab7fc8f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kea{\r
-    Version{"2.1.27.46"}\r
+    Version{"2.1.31.74"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index efabb97..a8df930 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 khq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0b987fc..25baae9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ki{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6ebabef..90c7a31 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kk{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 6408b2c..a2b45cd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kkj{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 24f3c27..f8baf73 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kl{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index fec7e09..b73e7da 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kln{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e72f482..b854c50 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 km{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.74"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 0d2b933..e7628f8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kn{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e4d698c..aafb4a5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko{\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 6befe25..f7965b0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kok{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7c8e9eb..1e658be 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ks{\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
     units{\r
         duration{\r
             day{\r
index e49e3e3..6395664 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksb{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cf791c1..52cb597 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksf{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b2eedb9..6b3670f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksh{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index f38a919..30cb7bd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kw{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 18c6862..1898e57 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ky{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 07404a5..f674d0f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lag{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4710307..980a85b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lb{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e2d43d3..a910336 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2dff991..24d2a17 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lkt{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index 1bbfd74..d5442b7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 399b422..59f3b6b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lo{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 187062c..9cea48e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lrc{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index ec7c6e0..a16c2d6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lt{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"hh:mm"}\r
         hms{"hh:mm:ss"}\r
index a1c9d14..2e6c6de 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lu{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 36fca55..6a4f5e4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 09e8b24..ff3cfe6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luy{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 54211fe..db86208 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lv{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 346d086..54e59a7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mas{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 93c169a..30afe7b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mer{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cddb7eb..9e25468 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mfe{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 56f734e..40ca570 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ef904aa..10d4b89 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgh{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index af60ead..10587a6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index 6becd0c..b23bf47 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mk{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a2ae9d1..4ded887 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ml{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 4871e44..5f1f2f3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mn{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index cd26949..797be9d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 0177986..52b93ed 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ms{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index d2f84c3..47a37f2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mt{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
     units{\r
         angle{\r
             arc-minute{\r
index 69b1d04..4bd09d5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mua{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 52ab5a4..116e13e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 my{\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.33.28"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e2e0910..9e7a66f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mzn{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 0f54e17..e1cc798 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 naq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 062d1a7..d1fbac9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nb{\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 1b8024e..6c83d4b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nd{\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6214e96..6dee6e3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.28.71"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index c27a596..7493bc8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne{\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 490c2f0..8b76914 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 1bddab5..47e6244 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nmg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 70761e4..5452afe 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nn{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e8d48d2..4121deb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nnh{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5933eea..00de51f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nus{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b361bdd..50995ba 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nyn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 615abc8..132553a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 om{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c73d23b..5c63e3d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 or{\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8afccfe..7b94ba7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 os{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index 7d56b67..e8b1213 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e41b709..171e15d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Arab{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dca680f..dc1602d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 038f0cc..631cdad 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pl{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index fbeee5f..e2d410f 100644 (file)
Binary files a/source/data/unit/pool.res and b/source/data/unit/pool.res differ
index 7231abe..e598cbb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ps{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index 8832f6a..07cfee5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 2e783ef..a385088 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_AO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a4226b1..4ee7339 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 829f400..ed8f313 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fd432f9..0f6e235 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 75c5d9d..f4cd124 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5eca2f..b5a1669 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c47efaa..d30b2ff 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9878c5a..060a5fc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 04d1e36..0c9e61d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_PT{\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.86"}\r
     units{\r
         acceleration{\r
             g-force{\r
index fcc981b..e3f0965 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bbbc3d..b8cb201 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 73bc9c8..9d7dca9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3ab22d5..a5bdb9e 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-UNIT_CLDR_VERSION = %version%\r
+UNIT_CLDR_VERSION = 31.0.1\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a '%local%' file in this same directory.\r
+# you should consider creating a 'reslocal.mk' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example '%local%' files:\r
+# Example 'reslocal.mk' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,19 +26,20 @@ UNIT_CLDR_VERSION = %version%
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-UNIT_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
- en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
- in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
- ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
- no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
- pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
- shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_BA.txt\\r
- sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt sr_Cyrl_YU.txt sr_Latn_BA.txt\\r
- sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt sr_Latn_YU.txt sr_ME.txt\\r
- sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt th_TH_TRADITIONAL.txt\\r
- tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt uz_Latn_UZ.txt\\r
- uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt zh_HK.txt\\r
- zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt zh_SG.txt zh_TW.txt\r
+UNIT_SYNTHETIC_ALIAS = ar_SA.txt ars.txt az_AZ.txt az_Latn_AZ.txt\\r
+ bs_BA.txt bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt\\r
+ he_IL.txt id_ID.txt in.txt in_ID.txt iw.txt\\r
+ iw_IL.txt ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt\\r
+ nn_NO.txt no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt\\r
+ pa_Guru_IN.txt pa_IN.txt pa_PK.txt sh.txt sh_BA.txt\\r
+ sh_CS.txt sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt\\r
+ sr_CS.txt sr_Cyrl_BA.txt sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt\\r
+ sr_Cyrl_YU.txt sr_Latn_BA.txt sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt\\r
+ sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt\\r
+ th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
+ uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt\\r
+ zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt\\r
+ zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -75,45 +76,45 @@ UNIT_SOURCE = af.txt agq.txt ak.txt am.txt\
  en_TV.txt en_TZ.txt en_UG.txt en_VC.txt en_VG.txt\\r
  en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt en_ZW.txt\\r
  eo.txt es.txt es_419.txt es_AR.txt es_BO.txt\\r
- es_BR.txt es_CL.txt es_CO.txt es_CR.txt es_CU.txt\\r
- es_DO.txt es_EC.txt es_GT.txt es_HN.txt es_MX.txt\\r
- es_NI.txt es_PA.txt es_PE.txt es_PR.txt es_PY.txt\\r
- es_SV.txt es_US.txt es_UY.txt es_VE.txt et.txt\\r
- eu.txt ewo.txt fa.txt ff.txt fi.txt\\r
- fil.txt fo.txt fr.txt fr_CA.txt fr_HT.txt\\r
- fur.txt fy.txt ga.txt gd.txt gl.txt\\r
- gsw.txt gu.txt guz.txt gv.txt ha.txt\\r
- haw.txt he.txt hi.txt hr.txt hsb.txt\\r
- hu.txt hy.txt id.txt ig.txt ii.txt\\r
- is.txt it.txt ja.txt jgo.txt jmc.txt\\r
ka.txt kab.txt kam.txt kde.txt kea.txt\\r
- khq.txt ki.txt kk.txt kkj.txt kl.txt\\r
- kln.txt km.txt kn.txt ko.txt kok.txt\\r
- ks.txt ksb.txt ksf.txt ksh.txt kw.txt\\r
- ky.txt lag.txt lb.txt lg.txt lkt.txt\\r
- ln.txt lo.txt lrc.txt lt.txt lu.txt\\r
- luo.txt luy.txt lv.txt mas.txt mer.txt\\r
- mfe.txt mg.txt mgh.txt mgo.txt mk.txt\\r
- ml.txt mn.txt mr.txt ms.txt mt.txt\\r
- mua.txt my.txt mzn.txt naq.txt nb.txt\\r
- nd.txt nds.txt ne.txt nl.txt nmg.txt\\r
- nn.txt nnh.txt nus.txt nyn.txt om.txt\\r
- or.txt os.txt pa.txt pa_Arab.txt pa_Guru.txt\\r
- pl.txt ps.txt pt.txt pt_AO.txt pt_CH.txt\\r
- pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt\\r
- pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt qu.txt\\r
rm.txt rn.txt ro.txt ro_MD.txt rof.txt\\r
- ru.txt rw.txt rwk.txt sah.txt saq.txt\\r
- sbp.txt se.txt seh.txt ses.txt sg.txt\\r
- shi.txt shi_Latn.txt shi_Tfng.txt si.txt sk.txt\\r
- sl.txt smn.txt sn.txt so.txt sq.txt\\r
- sr.txt sr_Cyrl.txt sr_Latn.txt sv.txt sv_FI.txt\\r
- sw.txt ta.txt te.txt teo.txt th.txt\\r
- ti.txt to.txt tr.txt twq.txt tzm.txt\\r
ug.txt uk.txt ur.txt ur_IN.txt uz.txt\\r
- uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt vai_Latn.txt\\r
- vai_Vaii.txt vi.txt vun.txt wae.txt xog.txt\\r
yav.txt yi.txt yo.txt yue.txt zgh.txt\\r
- zh.txt zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt\\r
- zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_BR.txt es_BZ.txt es_CL.txt es_CO.txt es_CR.txt\\r
+ es_CU.txt es_DO.txt es_EC.txt es_GT.txt es_HN.txt\\r
+ es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PR.txt\\r
+ es_PY.txt es_SV.txt es_US.txt es_UY.txt es_VE.txt\\r
+ et.txt eu.txt ewo.txt fa.txt ff.txt\\r
+ fi.txt fil.txt fo.txt fr.txt fr_CA.txt\\r
+ fr_HT.txt fur.txt fy.txt ga.txt gd.txt\\r
+ gl.txt gsw.txt gu.txt guz.txt gv.txt\\r
+ ha.txt haw.txt he.txt hi.txt hr.txt\\r
+ hsb.txt hu.txt hy.txt id.txt ig.txt\\r
+ ii.txt is.txt it.txt ja.txt jgo.txt\\r
jmc.txt ka.txt kab.txt kam.txt kde.txt\\r
+ kea.txt khq.txt ki.txt kk.txt kkj.txt\\r
+ kl.txt kln.txt km.txt kn.txt ko.txt\\r
+ kok.txt ks.txt ksb.txt ksf.txt ksh.txt\\r
+ kw.txt ky.txt lag.txt lb.txt lg.txt\\r
+ lkt.txt ln.txt lo.txt lrc.txt lt.txt\\r
+ lu.txt luo.txt luy.txt lv.txt mas.txt\\r
+ mer.txt mfe.txt mg.txt mgh.txt mgo.txt\\r
+ mk.txt ml.txt mn.txt mr.txt ms.txt\\r
+ mt.txt mua.txt my.txt mzn.txt naq.txt\\r
+ nb.txt nd.txt nds.txt ne.txt nl.txt\\r
+ nmg.txt nn.txt nnh.txt nus.txt nyn.txt\\r
+ om.txt or.txt os.txt pa.txt pa_Arab.txt\\r
+ pa_Guru.txt pl.txt ps.txt pt.txt pt_AO.txt\\r
+ pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt\\r
+ pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\\r
qu.txt rm.txt rn.txt ro.txt ro_MD.txt\\r
+ rof.txt ru.txt rw.txt rwk.txt sah.txt\\r
+ saq.txt sbp.txt se.txt seh.txt ses.txt\\r
+ sg.txt shi.txt shi_Latn.txt shi_Tfng.txt si.txt\\r
+ sk.txt sl.txt smn.txt sn.txt so.txt\\r
+ sq.txt sr.txt sr_Cyrl.txt sr_Latn.txt sv.txt\\r
+ sv_FI.txt sw.txt ta.txt te.txt teo.txt\\r
+ th.txt ti.txt to.txt tr.txt twq.txt\\r
tzm.txt ug.txt uk.txt ur.txt ur_IN.txt\\r
+ uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt\\r
+ vai_Latn.txt vai_Vaii.txt vi.txt vun.txt wae.txt\\r
xog.txt yav.txt yi.txt yo.txt yue.txt\\r
+ zgh.txt zh.txt zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt\\r
+ zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index ee4a395..ed97213 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rm{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index f2f3398..c881313 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 504d372..a6dce99 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 7696fa0..1f682b0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro_MD{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     unitsNarrow{\r
         duration{\r
             day{\r
index 633aef4..f7499f7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rof{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ca96c24..67f5439 100644 (file)
@@ -4,7 +4,7 @@
  * ICU <specials> source: <path>/common/main/root.xml\r
  */\r
 root{\r
-    Version{"2.1.30.58"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
@@ -368,6 +368,10 @@ root{
                 dnam{"pm"}\r
                 other{"{0} pm"}\r
             }\r
+            point{\r
+                dnam{"pt"}\r
+                other{"{0} pt"}\r
+            }\r
             yard{\r
                 dnam{"yd"}\r
                 other{"{0} yd"}\r
index 01aeb1b..4758c95 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru{\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index f330415..211565b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rw{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7d64e12..8c996fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rwk{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 39097ed..8b3e325 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sah{\r
-    Version{"2.1.27.87"}\r
+    Version{"2.1.31.33"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 0947b62..ab5a439 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 saq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 17b0af4..eda453b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sbp{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 013536b..e6ad1d6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 53e4d29..6ccf497 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 seh{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c074399..1b238a4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ses{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8e814d3..c9b1cfd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c30c82b..815f028 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 09b3284..31a2986 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 22785f4..2db194b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 895018b..8b0f075 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 si{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.28"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index aa4c28f..716c4a5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sk{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 6e8f3fe..b2363e7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sl{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index 699021b..fc69a4e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 smn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index 980652e..20b742a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sn{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 80e09a7..e5f9fe5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so{\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.33.76"}\r
 }\r
index 1582f2d..3101f01 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index bd6e8a9..c0e225f 100644 (file)
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.73"}\r
     durationUnits{\r
-        hm{"h.mm"}\r
-        hms{"h.mm.ss"}\r
-        ms{"m.ss"}\r
+        hm{"h:mm"}\r
+        hms{"h:mm:ss"}\r
+        ms{"m:ss"}\r
     }\r
     units{\r
         acceleration{\r
index 0b50a55..2e18268 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4308e70..ac708ac 100644 (file)
@@ -2,11 +2,11 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.32.73"}\r
     durationUnits{\r
-        hm{"h.mm"}\r
-        hms{"h.mm.ss"}\r
-        ms{"m.ss"}\r
+        hm{"h:mm"}\r
+        hms{"h:mm:ss"}\r
+        ms{"m:ss"}\r
     }\r
     units{\r
         acceleration{\r
index 78cb974..2083483 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv{\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 90fbdef..82fab8b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv_FI{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     unitsNarrow{\r
         speed{\r
             kilometer-per-hour{\r
index eff4fee..948f609 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.73"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 815a1ab..7b74123 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.4"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
@@ -584,7 +584,7 @@ ta{
             celsius{\r
                 dnam{"டிகிரி செல்சியஸ்"}\r
                 one{"{0} டிகிரி செல்சியஸ்"}\r
-                other{"{0}டிகிரி செல்சியஸ்"}\r
+                other{"{0} டிகிரி செல்சியஸ்"}\r
             }\r
             fahrenheit{\r
                 dnam{"டிகிரி ஃபாரன்ஹீட்"}\r
index 085460b..c9b3b6d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 te{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 05f38b8..0c75fc8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 teo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6d69971..6d3e180 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 th{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 5a0d407..1b95d45 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7310acc..6eddc55 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 to{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.74"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index c753da6..93d2b55 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 063f58a..862c84e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 twq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03c960c..8d2c876 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tzm{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5dea61c..eb599be 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ug{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     units{\r
         acceleration{\r
             g-force{\r
index b7f43cc..5c769aa 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uk{\r
-    Version{"2.1.29.38"}\r
+    Version{"2.1.32.60"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index d6a57af..e6e5289 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 393f44d..98c25f4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur_IN{\r
-    Version{"2.1.27.79"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         length{\r
             astronomical-unit{\r
index 9cb2fdc..c5cd46c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.60"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a9b8d6d..1b12da3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Arab{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3bdc78f..300d10f 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index bdf99c4..fdd810c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e1e5edb..e22a25b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f7ddb7b..fe15acc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38872b5..e66f0f3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3e7c205..67dc540 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vi{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e42c212..3658070 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vun{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1b5ac66..7e55837 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 wae{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         duration{\r
             day{\r
index d37f5d9..96cd8df 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 xog{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2b95845..3122cf5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yav{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6fa455c..8afe923 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yi{\r
-    Version{"2.1.27.97"}\r
+    Version{"2.1.31.33"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 9e593d7..9b77773 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a1b4f9b..3764cc1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yue{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 939af36..8c3ab8d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zgh{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0483921..fdedbe4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh{\r
-    Version{"2.1.29.84"}\r
+    Version{"2.1.33.94"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index c64cac5..1e311fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c22a82f..46edf8a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_HK{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         compound{\r
             per{"{0}/{1}"}\r
index 74e4e20..0f6ccb5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_MO{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         compound{\r
             per{"{0}/{1}"}\r
index 9239faf..9e88cbb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_SG{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         compound{\r
             per{"{0}/{1}"}\r
index b7b8242..7d7d050 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant{\r
     %%Parent{"root"}\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.94"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 5c93685..99261ec 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_HK{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     units{\r
         acceleration{\r
             meter-per-second-squared{\r
index 9d2c5aa..9589854 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4aee71e..5a2caf6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zu{\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.31.74"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a5e2f00..cc9fc54 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 af{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ af{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Gekoördineerde Universele Tyd"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Onbekende stad"}\r
         }\r
index c42c900..fbb04ea 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 agq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03a41ff..68c48e8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ak{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e0d9831..134d0f3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 am{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"አቢጃን"}\r
@@ -942,6 +942,9 @@ am{
         "Australia:Sydney"{\r
             ec{"ሲድኒ"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"የተቀነባበረ ሁለገብ ሰዓት"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"ያልታወቀ ከተማ"}\r
         }\r
index ae3b1f1..51e9f7f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"أبيدجان"}\r
@@ -942,6 +942,9 @@ ar{
         "Australia:Sydney"{\r
             ec{"سيدني"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"التوقيت العالمي المنسق"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"مدينة غير معروفة"}\r
         }\r
diff --git a/source/data/zone/ar_SA.txt b/source/data/zone/ar_SA.txt
new file mode 100644 (file)
index 0000000..00baa1f
--- /dev/null
@@ -0,0 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+/**\r
+ * generated alias target\r
+ */\r
+ar_SA{\r
+    ___{""}\r
+}\r
diff --git a/source/data/zone/ars.txt b/source/data/zone/ars.txt
new file mode 100644 (file)
index 0000000..9bb22b9
--- /dev/null
@@ -0,0 +1,5 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+ars{\r
+    "%%ALIAS"{"ar_SA"}\r
+}\r
index c96df6d..2633b5e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 as{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Asia:Calcutta"{\r
             ec{"এলাহাৱাদ"}\r
index 44d6b34..e26c2b1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 asa{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d04c1af..4944ef0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ast{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index e1d1dd3..9e4f229 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abican"}\r
@@ -942,6 +942,9 @@ az{
         "Australia:Sydney"{\r
             ec{"Sidney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordinasiya edilmiş ümumdünya vaxtı"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Naməlum Şəhər"}\r
         }\r
index 5c699c3..43002da 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.74"}\r
 }\r
index 4ce2adb..4c0b75a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 36ccde7..191387a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bas{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e1683f9..972c59e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 be{\r
-    Version{"2.1.29.66"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абіджан"}\r
index d92d6d8..44bc1b9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bem{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c1079b7..c52fa07 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bez{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 72970c8..7d2cfdb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bg{\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.33.75"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
@@ -942,6 +942,9 @@ bg{
         "Australia:Sydney"{\r
             ec{"Сидни"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Координирано универсално време"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"неизвестен"}\r
         }\r
index 8197c3b..88a359b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bm{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ed53404..9aab2fe 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bn{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"আবিদজান"}\r
@@ -942,6 +942,9 @@ bn{
         "Australia:Sydney"{\r
             ec{"সিডনি"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"স্থানাংকিত আন্তর্জাতিক সময়"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"অজানা শহর"}\r
         }\r
index a95b444..50622f7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Etc:Unknown"{\r
             ec{"མ་རྟོགས་པ"}\r
index c3ae6f2..1566147 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 br{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index ba35d22..19c2327 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 brx{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"अबिद्जान"}\r
index 493e223..3498106 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 7073545..b262347 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.72"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиџан"}\r
index 20b4126..972dc01 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 26426c3..35be950 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ ca{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Temps universal coordinat"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Ciutat desconeguda"}\r
         }\r
index 2bc1f8b..eb4f225 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ce{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
index a8512f0..aee7a43 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cgg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9711172..9e7b4fc 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 chr{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"ᎠᏈᏣᏂ"}\r
index f0d8d1f..77d82e3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb{\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c005808..49ec2f9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cs{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžan"}\r
@@ -942,6 +942,9 @@ cs{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordinovaný světový čas"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Neznámé město"}\r
         }\r
index d1ecd3d..d5848ee 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cy{\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 8ec3806..66242db 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 da{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ da{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordineret universaltid"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Ukendt by"}\r
         }\r
index 9e04802..9a0f850 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dav{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 698cc6d..eeccdf9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ de{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordinierte Weltzeit"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Unbekannt"}\r
         }\r
index ac06912..029e515 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dje{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e7cce37..4f71094 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dsb{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Akkra"}\r
index 05959ba..ddd9f57 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dua{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 97ceeaa..d42a779 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dyo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 08265a1..0709b8a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dz{\r
-    Version{"2.1.29.61"}\r
+    Version{"2.1.31.34"}\r
     zoneStrings{\r
         "Africa:Cairo"{\r
             ec{"ཀཱའི་རོ"}\r
index cf3920e..c7b78cf 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ebu{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 732ccf0..c6ad2c5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ee{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidzan nutomegaƒoƒome"}\r
index 67e8e9b..f61b953 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 el{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Αμπιτζάν"}\r
@@ -942,6 +942,9 @@ el{
         "Australia:Sydney"{\r
             ec{"Σίδνεϊ"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Συντονισμένη Παγκόσμια Ώρα"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Άγνωστη πόλη"}\r
         }\r
index 973005c..b6c8a53 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en{\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Sao_Tome"{\r
             ec{"São Tomé"}\r
@@ -21,6 +21,9 @@ en{
         "Asia:Saigon"{\r
             ec{"Ho Chi Minh City"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Coordinated Universal Time"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Unknown City"}\r
         }\r
index 7e0fd78..de780be 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_001{\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"∅∅∅"}\r
index bb77d4c..a7c9188 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_150{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Europe_Central"{\r
             sd{"CEST"}\r
index 93d0c87..8a0d454 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d55549d..07cb4ef 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b4edb3f..09171c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2a43ca8..0846f9d 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.32.62"}\r
     zoneStrings{\r
         "meta:Africa_Eastern"{\r
             ls{"Eastern Africa Time"}\r
index 7083244..84a0efd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c967ad1..7065545 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 17ad945..a3b9186 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03e7849..95e82b5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0ac26ba..e98f0cb 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 13545f6..5891076 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7405707..a0294c9 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"HDT"}\r
index a2871e2..a54c911 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d055587..4f2d948 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8bd2eba..f59d92a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 310a614..a628c49 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index a5c8744..8c9c483 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 81d8657..46da087 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a91a9c4..5d2d71a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index af3ee11..3d758dd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 55574ee..5a92d6b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DK{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4eaa7dc..b548583 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f75e3a6..aa8b9e9 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 12aebe3..f699cc1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c439098..86f8e9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 21a12bc..5df30b2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 78ffc47..eab91ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 24bf58f..6048891 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.24"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Europe:London"{\r
             sd{"BST"}\r
index ab0594c..7921b24 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8474cce..c0d3839 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3062d50..fb03736 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 46d28cd..5fe0d68 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3a5a673..bcaeadc 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index a200c4c..574fedf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GU{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Chamorro"{\r
             ss{"ChST"}\r
index bfad8c2..a01c61b 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Guyana"{\r
             ss{"GYT"}\r
index 4310407..5b3714c 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Hong_Kong"{\r
             sd{"HKST"}\r
index 9950791..3e25871 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Europe:Dublin"{\r
             sd{"IST"}\r
index 1500279..76bee45 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b5e5329..e66ecc0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bb1db4c..1547599 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:India"{\r
             ss{"IST"}\r
index 73736a0..2b8ba3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f31e9bf..c47ce4e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 67edbc7..d812c18 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 73a9d6a..8579729 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 3f8c7e1..899b1ea 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f755a2f..35fb03c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e26f444..bd356e9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7abb21b..bfd0689 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3eb4ac9..149dc39 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index dac3368..dd70b56 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 87ccdbb..3593a19 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 791090c..ebe9a97 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MH{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"∅∅∅"}\r
index 1cc3d2b..749aec3 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Hong_Kong"{\r
             sd{"HKST"}\r
index 112458a..594608a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MP{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"∅∅∅"}\r
index df8f657..a027fc6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 23b6896..8464a2e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6d25f6a..c46dd12 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 1948d15..e77bf35 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index dd2324f..deec5d6 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Malaysia"{\r
             ss{"MYT"}\r
index 1e6d896..4e37ee5 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 0a360ca..358d626 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1321fed..2173006 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 21bbdc9..9d0d0cd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 039e457..165856c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index eb82604..266914a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 310c869..c17d42e 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Australia_Central"{\r
             sd{"ACDT"}\r
index c1792a4..6aa4d92 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0ca66f9..080d0e6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ccbdf7f..fef2013 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5bf94f0..4094568 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0af3d13..30541dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8de558a..d9d9e08 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index cb507b5..e2de69a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 699d679..77c65fa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9ee97c8..c426222 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index d7fa572..31f586b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index afd78d7..c9f58e6 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Malaysia"{\r
             ss{"MYT"}\r
index 968da99..cf6ab49 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fedf1c0..a259492 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9982a61..5da90d9 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 087b28c..27a68d4 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 9862443..ec1778f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8f77a1c..bee5b81 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index eaabbe1..852eb0f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 797d773..020c31b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f1697f5..d27b6ec 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 599a8fe..21b8b30 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a2c5021..4ebd07d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9ca2aec..103e428 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index c44c983..3c7a636 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index de17869..12317cf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e6a295b..ba6619b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2cecbf4..12b8824 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a3f70e3..8c90fd7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3cc5548..83c8729 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.64"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 45d98c1..258fe85 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 448d296..52310df 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 1e6bc3f..663d25a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6f922ab..f7fb3bd 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es{\r
-    Version{"2.1.28.80"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abiyán"}\r
@@ -942,6 +942,9 @@ es{
         "Australia:Sydney"{\r
             ec{"Sídney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Tiempo Universal Coordinado"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"ciudad desconocida"}\r
         }\r
index 6d60fab..ba5c9d2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_419{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "America:St_Johns"{\r
             ec{"San Juan de Terranova"}\r
index f007040..ddd3f33 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_AR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Argentina"{\r
             sd{"ARST"}\r
index 7196890..c5f2abc 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Bolivia"{\r
             ss{"BOT"}\r
index 2f5e37a..e68498b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
diff --git a/source/data/zone/es_BZ.txt b/source/data/zone/es_BZ.txt
new file mode 100644 (file)
index 0000000..aa10911
--- /dev/null
@@ -0,0 +1,6 @@
+// © 2016 and later: Unicode, Inc. and others.\r
+// License & terms of use: http://www.unicode.org/copyright.html#License\r
+es_BZ{\r
+    %%Parent{"es_419"}\r
+    Version{"2.1.32.37"}\r
+}\r
index 7630738..cb0f44f 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CL{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Chile"{\r
             sd{"CLST"}\r
index d7499b3..887d1dd 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Colombia"{\r
             sd{"COST"}\r
index 2253e39..7f7bf28 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 791d7f5..66f010e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1407ae4..cfd47e5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_DO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 19549a3..d4d6468 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_EC{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Ecuador"{\r
             ss{"ECT"}\r
index 272994a..fc5b02e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_GT{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 802179d..4c06fd0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_HN{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 14c060c..56e9dab 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_MX{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Acra"}\r
index b1eb3f1..c6c3bb8 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_NI{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4bc4d78..0261ff1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PA{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e677667..43f4e88 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Peru"{\r
             sd{"PEST"}\r
index e9eace0..d0fa626 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b1cb09d..6152f95 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f965d31..0442024 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_SV{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 6089cd3..478e757 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_US{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.74"}\r
     zoneStrings{\r
         "America:Curacao"{\r
             ec{"Curazao"}\r
index 68ebef2..b1866ee 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_UY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Uruguay"{\r
             sd{"UYST"}\r
index c0e44a0..e81e38a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_VE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Venezuela"{\r
             ss{"VET"}\r
index d225907..8cc271b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 et{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ et{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordineeritud maailmaaeg"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"määramata linn"}\r
         }\r
index 75e10f5..07a5baf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eu{\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -930,6 +930,9 @@ eu{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Ordu Unibertsal Koordinatua"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Hiri ezezaguna"}\r
         }\r
index b70890a..169881c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ewo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1e93085..3bfad9a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fa{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"آبیجان"}\r
@@ -942,6 +942,9 @@ fa{
         "Australia:Sydney"{\r
             ec{"سیدنی"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"زمان هماهنگ جهانی"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"شهر نامشخص"}\r
         }\r
index f96fea6..8992013 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8e1eb99..3d7e9d2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fi{\r
-    Version{"2.1.29.88"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -945,6 +945,9 @@ fi{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Asetettu yleisaika"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"tuntematon"}\r
         }\r
index 5e46294..9bb8156 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fil{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index b32a588..36b4681 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fo{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 138a97a..2324c5e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ fr{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Temps universel coordonné"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"ville inconnue"}\r
         }\r
index ff5544e..51d6c42 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CA{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Africa:Ndjamena"{\r
             ec{"Ndjamena"}\r
index b6abe6a..fc6a181 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GF{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:French_Guiana"{\r
             ss{"GFT"}\r
index d1dee4b..2230b1c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fur{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "America:New_York"{\r
             ec{"Gnove York"}\r
index 9cd3035..1162e14 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fy{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Addis_Ababa"{\r
             ec{"Addis Abeba"}\r
index 3d219bf..7e1abca 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ga{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 27e9a83..f366c5d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gd{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 8ffed0a..23068c7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gl{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ gl{
         "Australia:Sydney"{\r
             ec{"Sidney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Tempo Universal Coordenado"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"cidade descoñecida"}\r
         }\r
index 2a10964..f19fd0a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Akkra"}\r
index b365ce2..e14f7f2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gu{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"આબિદ્જાન"}\r
@@ -942,6 +942,9 @@ gu{
         "Australia:Sydney"{\r
             ec{"સિડ્ની"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"સંકલિત યુનિવર્સલ સમય"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"અજ્ઞાત શહેર"}\r
         }\r
index 7a7441a..724ae2e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 guz{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a1fd188..e2d77bb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gv{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
 }\r
index ed2d82a..7ff3356 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d193db0..af3bdf5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 haw{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"HDT"}\r
index 480df76..dea17fb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 he{\r
-    Version{"2.1.29.27"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"אביג׳אן"}\r
@@ -942,6 +942,9 @@ he{
         "Australia:Sydney"{\r
             ec{"סידני"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"זמן אוניברסלי מתואם"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"עיר לא ידועה"}\r
         }\r
index 959b4ac..974312b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hi{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"अबिदजान"}\r
@@ -942,6 +942,9 @@ hi{
         "Australia:Sydney"{\r
             ec{"सिडनी"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"समन्वित सार्वत्रिक समय"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"अज्ञात शहर"}\r
         }\r
index f555581..70ec249 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ hr{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordinirano svjetsko vrijeme"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Nepoznati grad"}\r
         }\r
index 181912f..654cf06 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hsb{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Akkra"}\r
index db9fe5f..b4fad12 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hu{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ hu{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordinált világidő"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Ismeretlen város"}\r
         }\r
index 83ac799..0613d69 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hy{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Աբիջան"}\r
@@ -942,6 +942,9 @@ hy{
         "Australia:Sydney"{\r
             ec{"Սիդնեյ"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Համաշխարհային կոորդինացված ժամանակ"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Անհայտ քաղաք"}\r
         }\r
index 3bbab5d..6f89ce8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 id{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ id{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Waktu Universal Terkoordinasi"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Tidak Dikenal"}\r
         }\r
index cf9fa4e..ef5f677 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ig{\r
-    Version{"2.1.27.84"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4f93fe7..58a6475 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ii{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Etc:Unknown"{\r
             ec{"ꅉꀋꐚꌠ"}\r
index 2c3d1a8..63a92f2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 is{\r
-    Version{"2.1.29.65"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -927,6 +927,9 @@ is{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Samræmdur alþjóðlegur tími"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Óþekkt borg"}\r
         }\r
index cd00bf5..bc112d5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 it{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ it{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Tempo coordinato universale"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Città sconosciuta"}\r
         }\r
index 2faf170..e3e557e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ja{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"アビジャン"}\r
@@ -942,6 +942,9 @@ ja{
         "Australia:Sydney"{\r
             ec{"シドニー"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"協定世界時"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"地域不明"}\r
         }\r
index bad992d..0dd2670 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jgo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         fallbackFormat{"{1} ({0})"}\r
         gmtFormat{"GMT{0}"}\r
index 3f79b8d..a76db1c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jmc{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 06eea30..578e137 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ka{\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"აბიჯანი"}\r
@@ -942,6 +942,9 @@ ka{
         "Australia:Sydney"{\r
             ec{"სიდნეი"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"მსოფლიო კოორდინირებული დრო"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"უცნობი ქალაქი"}\r
         }\r
index 6260d64..8ae9971 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kab{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d9b09c4..82cc5ce 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kam{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 82246fc..613d9a9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kde{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index bde8f2f..dfb3069 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kea{\r
-    Version{"2.1.27.46"}\r
+    Version{"2.1.31.74"}\r
     zoneStrings{\r
         "America:Blanc-Sablon"{\r
             ec{"Blank-Sablon"}\r
index efabb97..a8df930 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 khq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0b987fc..25baae9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ki{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 0a7dcee..050d82e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kk{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
@@ -942,6 +942,9 @@ kk{
         "Australia:Sydney"{\r
             ec{"Сидней"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Дүниежүзілік үйлестірілген уақыт"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Белгісіз қала"}\r
         }\r
index 6408b2c..a2b45cd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kkj{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index fee09f7..991b55f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kl{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.34"}\r
 }\r
index fec7e09..b73e7da 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kln{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e10e912..1077258 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 km{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.74"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"អាប៊ីដ្យាន"}\r
index 7303ce5..4f6ecf8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kn{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"ಅಬಿದ್‌ಜನ್"}\r
index be9dfb5..b1f5752 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko{\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"아비장"}\r
@@ -942,6 +942,9 @@ ko{
         "Australia:Sydney"{\r
             ec{"시드니"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"협정 세계시"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"알 수 없는 장소"}\r
         }\r
index 40f0f7c..ff72307 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko_KP{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Korea"{\r
             ld{"조선 하계 표준시"}\r
index 0a30707..5ac639f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kok{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:India"{\r
             ls{"भारतीय समय"}\r
index 45ce976..ed55be1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ks{\r
-    Version{"2.1.30.6"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"عابِدجان"}\r
index e49e3e3..6395664 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksb{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cf791c1..52cb597 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksf{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e04ea82..c8e0c0d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksh{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Cairo"{\r
             ec{"Kaijro"}\r
index f38a919..30cb7bd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kw{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3ef69a3..525801d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ky{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
index 07404a5..f674d0f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lag{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 66d6921..2c8e296 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lb{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Accra"}\r
index e2d43d3..a910336 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b9420ae..454b547 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lkt{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f3b05d7..c950fdf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.74"}\r
     zoneStrings{\r
         fallbackFormat{"{1} ({0})"}\r
         regionFormat{"Ngonga ya {0}"}\r
index dce6f1a..0f7d5a3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lo{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"ອາບິດແຈນ"}\r
index ef4f85b..b40ad2e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lrc{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Etc:Unknown"{\r
             ec{"نادیار"}\r
index c9abbfb..b9b7f4c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lt{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžanas"}\r
@@ -942,6 +942,9 @@ lt{
         "Australia:Sydney"{\r
             ec{"Sidnėjus"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Suderintasis pasaulinis laikas"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"nežinomas miestas"}\r
         }\r
index a1c9d14..2e6c6de 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lu{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 36fca55..6a4f5e4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 09e8b24..ff3cfe6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luy{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d045515..93842c0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lv{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžana"}\r
@@ -942,6 +942,9 @@ lv{
         "Australia:Sydney"{\r
             ec{"Sidneja"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Universālais koordinētais laiks"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"nezināma pilsēta"}\r
         }\r
index 346d086..54e59a7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mas{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 93c169a..30afe7b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mer{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index cddb7eb..9e25468 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mfe{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 56f734e..40ca570 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index ef904aa..10d4b89 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgh{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a21965a..5545081 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         fallbackFormat{"{1} ({0})"}\r
         gmtFormat{"GMT{0}"}\r
index 1f63309..fdfb8a1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mk{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиџан"}\r
@@ -942,6 +942,9 @@ mk{
         "Australia:Sydney"{\r
             ec{"Сиднеј"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Координирано универзално време"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Непознат град"}\r
         }\r
index 1186d22..e7bb892 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ml{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"അബിദ്‌ജാൻ‌"}\r
@@ -942,6 +942,9 @@ ml{
         "Australia:Sydney"{\r
             ec{"സിഡ്നി"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"കോർഡിനേറ്റഡ് യൂണിവേഴ്‌സൽ ടൈം"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"അജ്ഞാത നഗരം"}\r
         }\r
index 33acd89..6ae63c5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mn{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абижан"}\r
@@ -942,6 +942,9 @@ mn{
         "Australia:Sydney"{\r
             ec{"Сидней"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Олон Улсын Зохицуулсан Цаг"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Тодорхойгүй хот"}\r
         }\r
index 73d6d40..a50a94e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"अबिद्जान"}\r
index 80f83c4..28127e1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ms{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ ms{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Waktu Universal Selaras"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Bandar Tidak Diketahui"}\r
         }\r
index ba72937..ba41351 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mt{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 69b1d04..4bd09d5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mua{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8162032..acb4334 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 my{\r
-    Version{"2.1.30.50"}\r
+    Version{"2.1.33.28"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"အာဘီဂျန်"}\r
@@ -942,6 +942,9 @@ my{
         "Australia:Sydney"{\r
             ec{"ဆစ်ဒနီ"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"ညှိထားသည့် ကမ္ဘာ့ စံတော်ချိန်"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"အမည်မသိသောမြို့"}\r
         }\r
index b675b22..c7c1838 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mzn{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         fallbackFormat{"{1} ({0})"}\r
         gmtFormat{"GMT{0}"}\r
index 0f54e17..e1cc798 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 naq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8b989ce..487de15 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nb{\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ nb{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordinert universaltid"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"ukjent by"}\r
         }\r
index 1b8024e..6c83d4b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nd{\r
-    Version{"2.1.27.65"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e395563..7874b05 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.28.71"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1cf706e..20bbb8c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne{\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"अविड्जान"}\r
@@ -942,6 +942,9 @@ ne{
         "Australia:Sydney"{\r
             ec{"सिड्नी"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"समन्वित विश्व समय"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"अज्ञात शहर"}\r
         }\r
index 3dd99d8..fe2fd85 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne_IN{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:India"{\r
             ss{"IST"}\r
index ab7dad2..60c028a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ nl{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Gecoördineerde wereldtijd"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"onbekende stad"}\r
         }\r
index a47c1e6..1ff62c7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_SR{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Suriname"{\r
             ss{"SRT"}\r
index 1bddab5..47e6244 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nmg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03289bd..f85c407 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nn{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "America:Belem"{\r
             ec{"Belém"}\r
index e8d48d2..4121deb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nnh{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5933eea..00de51f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nus{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index b361bdd..50995ba 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nyn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index a581e2f..cfcf78a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 om{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         gmtFormat{"GMT{0}"}\r
         hourFormat{"+HH:mm;-HH:mm"}\r
index d109dda..779ee3a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 or{\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Christmas"{\r
             ls{"ଖ୍ରୀଷ୍ଟମାସ ଆଇଲ୍ୟାଣ୍ଡ ସମୟ"}\r
index cf79ded..ab4960d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 os{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Asia:Tbilisi"{\r
             ec{"Тбилис"}\r
index a89e19f..2b7abc7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"ਅਬੀਦਜਾਨ"}\r
index e41b709..171e15d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Arab{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dca680f..dc1602d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8a9dbc2..1fd5d9e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pl{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidżan"}\r
@@ -942,6 +942,9 @@ pl{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Uniwersalny czas koordynowany"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Nieznane miasto"}\r
         }\r
index af7890a..08664c8 100644 (file)
Binary files a/source/data/zone/pool.res and b/source/data/zone/pool.res differ
index 45ee4ce..10fb6fd 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ps{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Asia:Kabul"{\r
             ec{"کابل"}\r
index 8abdc5d..af593fb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ pt{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Tempo Universal Coordenado"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Cidade desconhecida"}\r
         }\r
index 4595e88..9004ed0 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_AO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index a4226b1..4ee7339 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5e38b88..b016ea0 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index fd432f9..0f6e235 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 7620ebe..4253c34 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index b5eca2f..b5a1669 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 54039cf..beeebba 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index 99e64e1..aa83921 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index b227ee3..a172ad5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_PT{\r
-    Version{"2.1.29.54"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Djibouti"{\r
             ec{"Jibuti"}\r
index 402e489..9810313 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index 5eadbb0..fe5abba 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index ae640a5..581d0b3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Peru"{\r
             sd{"PEST"}\r
index 3b063fb..2007b28 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu_BO{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Bolivia"{\r
             ss{"BOT"}\r
index 3fc8402..7b8c789 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu_EC{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:Ecuador"{\r
             ss{"ECT"}\r
index 9301a3d..d30dc82 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-ZONE_CLDR_VERSION = %version%\r
+ZONE_CLDR_VERSION = 31.0.1\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a '%local%' file in this same directory.\r
+# you should consider creating a 'reslocal.mk' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example '%local%' files:\r
+# Example 'reslocal.mk' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,20 +26,20 @@ ZONE_CLDR_VERSION = %version%
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-ZONE_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
- no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
- pa_PK.txt ro_MD.txt sh.txt sh_BA.txt sh_CS.txt\\r
- sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt\\r
- sr_Cyrl_BA.txt sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt sr_Cyrl_YU.txt\\r
- sr_Latn_BA.txt sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt sr_Latn_YU.txt\\r
- sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt\\r
th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt\\r
- uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt\\r
zh_HK.txt zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt zh_SG.txt\\r
- zh_TW.txt\r
+ZONE_SYNTHETIC_ALIAS = ar_SA.txt ars.txt az_AZ.txt az_Latn_AZ.txt\\r
bs_BA.txt bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt\\r
he_IL.txt id_ID.txt in.txt in_ID.txt iw.txt\\r
iw_IL.txt ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt\\r
+ nn_NO.txt no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt\\r
+ pa_Guru_IN.txt pa_IN.txt pa_PK.txt ro_MD.txt sh.txt\\r
+ sh_BA.txt sh_CS.txt sh_YU.txt shi_MA.txt shi_Tfng_MA.txt\\r
+ sr_BA.txt sr_CS.txt sr_Cyrl_BA.txt sr_Cyrl_CS.txt sr_Cyrl_RS.txt\\r
+ sr_Cyrl_XK.txt sr_Cyrl_YU.txt sr_Latn_BA.txt sr_Latn_CS.txt sr_Latn_ME.txt\\r
+ sr_Latn_RS.txt sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt\\r
sr_YU.txt th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt\\r
+ uz_AF.txt uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt\\r
vai_Vaii_LR.txt zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hant_TW.txt\\r
+ zh_MO.txt zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -76,46 +76,46 @@ ZONE_SOURCE = af.txt agq.txt ak.txt am.txt\
  en_TO.txt en_TT.txt en_TV.txt en_TZ.txt en_UG.txt\\r
  en_VC.txt en_VG.txt en_VU.txt en_WS.txt en_ZA.txt\\r
  en_ZM.txt en_ZW.txt eo.txt es.txt es_419.txt\\r
- es_AR.txt es_BO.txt es_BR.txt es_CL.txt es_CO.txt\\r
- es_CR.txt es_CU.txt es_DO.txt es_EC.txt es_GT.txt\\r
- es_HN.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\\r
- es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\\r
- es_VE.txt et.txt eu.txt ewo.txt fa.txt\\r
- ff.txt fi.txt fil.txt fo.txt fr.txt\\r
- fr_CA.txt fr_GF.txt fur.txt fy.txt ga.txt\\r
- gd.txt gl.txt gsw.txt gu.txt guz.txt\\r
- gv.txt ha.txt haw.txt he.txt hi.txt\\r
- hr.txt hsb.txt hu.txt hy.txt id.txt\\r
- ig.txt ii.txt is.txt it.txt ja.txt\\r
- jgo.txt jmc.txt ka.txt kab.txt kam.txt\\r
- kde.txt kea.txt khq.txt ki.txt kk.txt\\r
- kkj.txt kl.txt kln.txt km.txt kn.txt\\r
- ko.txt ko_KP.txt kok.txt ks.txt ksb.txt\\r
- ksf.txt ksh.txt kw.txt ky.txt lag.txt\\r
- lb.txt lg.txt lkt.txt ln.txt lo.txt\\r
- lrc.txt lt.txt lu.txt luo.txt luy.txt\\r
- lv.txt mas.txt mer.txt mfe.txt mg.txt\\r
- mgh.txt mgo.txt mk.txt ml.txt mn.txt\\r
- mr.txt ms.txt mt.txt mua.txt my.txt\\r
- mzn.txt naq.txt nb.txt nd.txt nds.txt\\r
- ne.txt ne_IN.txt nl.txt nl_SR.txt nmg.txt\\r
- nn.txt nnh.txt nus.txt nyn.txt om.txt\\r
- or.txt os.txt pa.txt pa_Arab.txt pa_Guru.txt\\r
- pl.txt ps.txt pt.txt pt_AO.txt pt_CH.txt\\r
- pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt\\r
- pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt qu.txt\\r
- qu_BO.txt qu_EC.txt rm.txt rn.txt ro.txt\\r
- rof.txt ru.txt rw.txt rwk.txt sah.txt\\r
- saq.txt sbp.txt se.txt seh.txt ses.txt\\r
- sg.txt shi.txt shi_Latn.txt shi_Tfng.txt si.txt\\r
- sk.txt sl.txt smn.txt sn.txt so.txt\\r
- sq.txt sr.txt sr_Cyrl.txt sr_Latn.txt sv.txt\\r
- sw.txt ta.txt ta_MY.txt ta_SG.txt te.txt\\r
- teo.txt th.txt ti.txt to.txt tr.txt\\r
- twq.txt tzm.txt ug.txt uk.txt ur.txt\\r
- ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt\\r
vai.txt vai_Latn.txt vai_Vaii.txt vi.txt vun.txt\\r
wae.txt xog.txt yav.txt yi.txt yo.txt\\r
- yue.txt zgh.txt zh.txt zh_Hans.txt zh_Hans_SG.txt\\r
- zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_AR.txt es_BO.txt es_BR.txt es_BZ.txt es_CL.txt\\r
+ es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EC.txt\\r
+ es_GT.txt es_HN.txt es_MX.txt es_NI.txt es_PA.txt\\r
+ es_PE.txt es_PR.txt es_PY.txt es_SV.txt es_US.txt\\r
+ es_UY.txt es_VE.txt et.txt eu.txt ewo.txt\\r
+ fa.txt ff.txt fi.txt fil.txt fo.txt\\r
+ fr.txt fr_CA.txt fr_GF.txt fur.txt fy.txt\\r
+ ga.txt gd.txt gl.txt gsw.txt gu.txt\\r
+ guz.txt gv.txt ha.txt haw.txt he.txt\\r
+ hi.txt hr.txt hsb.txt hu.txt hy.txt\\r
+ id.txt ig.txt ii.txt is.txt it.txt\\r
+ ja.txt jgo.txt jmc.txt ka.txt kab.txt\\r
+ kam.txt kde.txt kea.txt khq.txt ki.txt\\r
+ kk.txt kkj.txt kl.txt kln.txt km.txt\\r
+ kn.txt ko.txt ko_KP.txt kok.txt ks.txt\\r
+ ksb.txt ksf.txt ksh.txt kw.txt ky.txt\\r
+ lag.txt lb.txt lg.txt lkt.txt ln.txt\\r
+ lo.txt lrc.txt lt.txt lu.txt luo.txt\\r
+ luy.txt lv.txt mas.txt mer.txt mfe.txt\\r
+ mg.txt mgh.txt mgo.txt mk.txt ml.txt\\r
+ mn.txt mr.txt ms.txt mt.txt mua.txt\\r
+ my.txt mzn.txt naq.txt nb.txt nd.txt\\r
+ nds.txt ne.txt ne_IN.txt nl.txt nl_SR.txt\\r
+ nmg.txt nn.txt nnh.txt nus.txt nyn.txt\\r
+ om.txt or.txt os.txt pa.txt pa_Arab.txt\\r
+ pa_Guru.txt pl.txt ps.txt pt.txt pt_AO.txt\\r
+ pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt\\r
+ pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\\r
+ qu.txt qu_BO.txt qu_EC.txt rm.txt rn.txt\\r
+ ro.txt rof.txt ru.txt rw.txt rwk.txt\\r
+ sah.txt saq.txt sbp.txt se.txt seh.txt\\r
+ ses.txt sg.txt shi.txt shi_Latn.txt shi_Tfng.txt\\r
+ si.txt sk.txt sl.txt smn.txt sn.txt\\r
+ so.txt sq.txt sr.txt sr_Cyrl.txt sr_Latn.txt\\r
+ sv.txt sw.txt ta.txt ta_MY.txt ta_SG.txt\\r
+ te.txt teo.txt th.txt ti.txt to.txt\\r
+ tr.txt twq.txt tzm.txt ug.txt uk.txt\\r
+ ur.txt ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt\\r
uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt vi.txt\\r
vun.txt wae.txt xog.txt yav.txt yi.txt\\r
+ yo.txt yue.txt zgh.txt zh.txt zh_Hans.txt\\r
+ zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index 4f60333..b2c543c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rm{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Addis_Ababa"{\r
             ec{"Addis Abeba"}\r
index f2f3398..c881313 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e59f53d..5c51f48 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.60"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ ro{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Timpul universal coordonat"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Oraș necunoscut"}\r
         }\r
index 633aef4..f7499f7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rof{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 348ba74..5cb0cab 100644 (file)
@@ -4,7 +4,7 @@
  * ICU <specials> source: <path>/common/main/root.xml\r
  */\r
 root{\r
-    Version{"2.1.30.58"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Asmera"{\r
             ec{"Asmara"}\r
@@ -90,6 +90,9 @@ root{
         "Atlantic:St_Helena"{\r
             ec{"St. Helena"}\r
         }\r
+        "Etc:UTC"{\r
+            ss{"UTC"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Unknown"}\r
         }\r
index 61265b5..732bf3a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru{\r
-    Version{"2.1.29.20"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
@@ -942,6 +942,9 @@ ru{
         "Australia:Sydney"{\r
             ec{"Сидней"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Всемирное координированное время"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Неизвестный город"}\r
         }\r
index 9cc830e..7c51597 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rw{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         gmtFormat{"GMT{0}"}\r
         hourFormat{"+HH:mm;-HH:mm"}\r
index 7d64e12..8c996fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rwk{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 1151b22..cc7660d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sah{\r
-    Version{"2.1.27.87"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Asia:Almaty"{\r
             ec{"Алматы"}\r
index 0947b62..ab5a439 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 saq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 17b0af4..eda453b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sbp{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 00841f8..b201f1b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "America:Curacao"{\r
             ec{"Curaçao"}\r
index 53e4d29..6ccf497 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 seh{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c074399..1b238a4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ses{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 8e814d3..c9b1cfd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sg{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index c30c82b..815f028 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 09b3284..31a2986 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 22785f4..2db194b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 9a6f5ae..1a72774 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 si{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.28"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"අබිජාන්"}\r
index a075433..56e2d52 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sk{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ sk{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordinovaný svetový čas"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"neznáme mesto"}\r
         }\r
index 54e9187..dcbc52e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sl{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžan"}\r
@@ -942,6 +942,9 @@ sl{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Univerzalni koordinirani čas"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"neznano mesto"}\r
         }\r
index 6283bc6..863f19e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 smn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 980652e..20b742a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sn{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 65645e0..5218ff8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so{\r
-    Version{"2.1.27.78"}\r
+    Version{"2.1.33.76"}\r
     zoneStrings{\r
         "meta:Colombia"{\r
             ld{"Waqtiyada Xagaaga Kolambiya"}\r
index 1fbc8bb..4c3f982 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abixhan"}\r
@@ -942,6 +942,9 @@ sq{
         "Australia:Sydney"{\r
             ec{"Sidnej"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Ora universale e koordinuar"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Qytet i panjohur"}\r
         }\r
index b3dafe7..cb11c2f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.73"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиџан"}\r
@@ -942,6 +942,9 @@ sr{
         "Australia:Sydney"{\r
             ec{"Сиднеј"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Координисано универзално време"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Непознат град"}\r
         }\r
index 0b50a55..2e18268 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index d95006a..1e5c9fc 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.29.33"}\r
+    Version{"2.1.32.73"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžan"}\r
@@ -943,6 +943,9 @@ sr_Latn{
         "Australia:Sydney"{\r
             ec{"Sidnej"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordinisano univerzalno vreme"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Nepoznat grad"}\r
         }\r
index 103109b..997465a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv{\r
-    Version{"2.1.30.7"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ sv{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Koordinerad universell tid"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"okänd stad"}\r
         }\r
index ca545cb..ce21222 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.73"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 28d80ad..ea8586d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.4"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"அபிட்ஜான்"}\r
index a8dee82..8a5007e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta_MY{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:India"{\r
             ss{"∅∅∅"}\r
index 8096cca..b72586f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta_SG{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "meta:India"{\r
             ss{"∅∅∅"}\r
index 76f2c49..2e7ddb5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 te{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"అబిడ్జాన్"}\r
index 05f38b8..0c75fc8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 teo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f9ca787..6770807 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 th{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"อาบีจาน"}\r
@@ -942,6 +942,9 @@ th{
         "Australia:Sydney"{\r
             ec{"ซิดนีย์"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"เวลาสากลเชิงพิกัด"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"เมืองที่ไม่รู้จัก"}\r
         }\r
index 9a39ffc..8a936a0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         gmtFormat{"GMT{0}"}\r
         hourFormat{"+HH:mm;-HH:mm"}\r
index e8d2cc0..2c69abb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 to{\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.74"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 9c62086..723042a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tr{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abican"}\r
@@ -942,6 +942,9 @@ tr{
         "Australia:Sydney"{\r
             ec{"Sidney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Eşgüdümlü Evrensel Zaman"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Bilinmeyen Şehir"}\r
         }\r
index 063f58a..862c84e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 twq{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 03c960c..8d2c876 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tzm{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 749168b..21d4bbf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ug{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Sao_Tome"{\r
             ec{"سان-تومې"}\r
index e21c7dd..1e2f9de 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uk{\r
-    Version{"2.1.29.38"}\r
+    Version{"2.1.32.60"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абіджан"}\r
@@ -942,6 +942,9 @@ uk{
         "Australia:Sydney"{\r
             ec{"Сідней"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Всесвітній координований час"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Невідоме місто"}\r
         }\r
index 81a4efe..a9552f6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"عابدجان"}\r
@@ -942,6 +942,9 @@ ur{
         "Australia:Sydney"{\r
             ec{"سڈنی"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"کوآرڈینیٹڈ یونیورسل ٹائم"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"نامعلوم شہر"}\r
         }\r
index 6efbcb4..fe49056 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur_IN{\r
-    Version{"2.1.27.79"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"اکرا"}\r
index 8896d53..0443e60 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz{\r
-    Version{"2.1.29.44"}\r
+    Version{"2.1.32.60"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 4509ba1..1d331de 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Arab{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Asia:Kabul"{\r
             ec{"کابل"}\r
index 99e9c93..97b1eae 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.98"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Asmera"{\r
             ec{"Asmara"}\r
index bdf99c4..fdd810c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e1e5edb..e22a25b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index f7ddb7b..fe15acc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 38872b5..e66f0f3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 5f035c9..f79033f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vi{\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.32.59"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,6 +942,9 @@ vi{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"Giờ phối hợp quốc tế"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"Thành phố Không xác định"}\r
         }\r
index e42c212..3658070 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vun{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 4af4ab8..9d7f8d1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 wae{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Akra"}\r
index d37f5d9..96cd8df 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 xog{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 2b95845..3122cf5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yav{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 808dc3b..94c5002 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yi{\r
-    Version{"2.1.27.97"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"אַבידזשאַן"}\r
index 9e593d7..9b77773 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yo{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 3fe4088..0b6cd95 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yue{\r
-    Version{"2.1.28.76"}\r
+    Version{"2.1.31.86"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"阿比讓"}\r
index 939af36..8c3ab8d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zgh{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index 030fe0b..8a33c3e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh{\r
-    Version{"2.1.29.84"}\r
+    Version{"2.1.33.94"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"阿比让"}\r
@@ -942,6 +942,9 @@ zh{
         "Australia:Sydney"{\r
             ec{"悉尼"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"协调世界时"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"未知城市"}\r
         }\r
index c64cac5..1e311fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index dd4345a..76906ef 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_SG{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "America:Scoresbysund"{\r
             ec{"斯考斯伯松德"}\r
index a82c08d..771bbce 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant{\r
     %%Parent{"root"}\r
-    Version{"2.1.28.79"}\r
+    Version{"2.1.33.94"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"阿比讓"}\r
@@ -943,6 +943,9 @@ zh_Hant{
         "Australia:Sydney"{\r
             ec{"雪梨"}\r
         }\r
+        "Etc:UTC"{\r
+            ls{"世界標準時間"}\r
+        }\r
         "Etc:Unknown"{\r
             ec{"未知城市"}\r
         }\r
index 96a198e..d6c1e06 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_HK{\r
-    Version{"2.1.27.99"}\r
+    Version{"2.1.31.33"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"阿比贊"}\r
index 9d2c5aa..9589854 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.27.40"}\r
+    Version{"2.1.31.33"}\r
 }\r
index e3ff363..52fd931 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zu{\r
-    Version{"2.1.29.22"}\r
+    Version{"2.1.31.74"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"i-Abidjan"}\r
index bd5105a..d36ec61 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index b6b3a2b..0ef5df2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index d4ec850..5792071 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * %W% %E%
index 7d0af04..b614461 100644 (file)
@@ -44,7 +44,7 @@ CLEANFILES = *~ $(DEPS) $(ALL_MAN_FILES)
 ## Target information
 TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil
 CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit
 LIBS = $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
index 2a043f8..3bc807c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************
 *
index dffa4c5..7936e48 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{DBA4088D-F6F9-4F8F-8820-082A4765C16C}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{DBA4088D-F6F9-4F8F-8820-082A4765C16C}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>$(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/uconv.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/uconv.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/uconv.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>x86\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/uconv.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>$(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Release/uconv.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/uconv.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/uconv.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>x86\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/uconv.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>$(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/uconv.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/uconv.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/uconv.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>x86\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/uconv.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>$(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/uconv.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/uconv.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/uconv.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>x86\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/uconv.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>$(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/uconv.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/uconv.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/uconv.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>x64\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/uconv.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>$(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/uconv.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/uconv.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/uconv.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>x64\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/uconv.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>$(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/uconv.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/uconv.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/uconv.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>x64\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/uconv.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="uconv.cpp" />\r
-    <ClCompile Include="uwmsg.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="unicode\uwmsg.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="resources\fr.txt" />\r
-    <None Include="resources\root.txt" />\r
-    <CustomBuild Include="makedata.mak">\r
+</Command>
+      <Outputs>$(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/uconv.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/uconv.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/uconv.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>x64\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/uconv.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="uconv.cpp" />
+    <ClCompile Include="uwmsg.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="unicode\uwmsg.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="resources\fr.txt" />
+    <None Include="resources\root.txt" />
+    <CustomBuild Include="makedata.mak">
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x86\Debug
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug/uconvmsg.lib;%(Outputs)</Outputs>\r
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug/uconvmsg.lib;%(Outputs)</Outputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x64\Debug
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\Debug/uconvmsg.lib;%(Outputs)</Outputs>\r
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\Debug/uconvmsg.lib;%(Outputs)</Outputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x86\Release
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release/uconvmsg.lib;%(Outputs)</Outputs>\r
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release/uconvmsg.lib;%(Outputs)</Outputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x64\Release
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\Release/uconvmsg.lib;%(Outputs)</Outputs>\r
-    </CustomBuild>\r
-    <None Include="resfiles.mk" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\tools\genrb\genrb.vcxproj">\r
-      <Project>{97521d06-ec47-45d4-8bd0-9e16b3f93b2a}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\tools\pkgdata\pkgdata.vcxproj">\r
-      <Project>{4c8454fe-81d3-4ca3-9927-29ba96f03dac}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\Release/uconvmsg.lib;%(Outputs)</Outputs>
+    </CustomBuild>
+    <None Include="resfiles.mk" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tools\genrb\genrb.vcxproj">
+      <Project>{97521d06-ec47-45d4-8bd0-9e16b3f93b2a}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tools\pkgdata\pkgdata.vcxproj">
+      <Project>{4c8454fe-81d3-4ca3-9927-29ba96f03dac}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index e24d5db..d8497d8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ecc98d1..d5b0f62 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 2ca22a1..fcc6f22 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
@@ -13,7 +13,9 @@
 
 #include "unicode/dcfmtsym.h"
 #include "unicode/plurrule.h"
+#include "unicode/strenum.h"
 #include "unicode/ucurr.h"
+#include "unicode/ustring.h"
 #include "affixpatternparser.h"
 #include "charstr.h"
 #include "precision.h"
index 1e534c9..66cbae3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2981e2c..d877cb2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8ec6f83..e7d5375 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************
index d06d2ba..703d42b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***********************************************************************
index 22890ad..8f9cf7a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation
index e854661..a246489 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * Copyright (C) 1996-2008, International Business Machines Corporation *
index bfaef62..54ee5a1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index a2f94f2..861a76a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bocsu.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 56b0350..6b8ed51 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bocsu.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 714a0a8..ab5a803 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 229d6ed..30cf4ea 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index adabb0a..6fac7a8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 3af9ba5..88509ba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index ffa1e1d..2c14b11 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9c8c8b9..ac28365 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  casetrn.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -92,7 +92,6 @@ UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(CaseMapTransliterator)
  */
 CaseMapTransliterator::CaseMapTransliterator(const UnicodeString &id, UCaseMapFull *map) : 
     Transliterator(id, 0),
-    fCsp(ucase_getSingleton()),
     fMap(map)
 {
     // TODO test incremental mode with context-sensitive text (e.g. greek sigma)
@@ -110,7 +109,7 @@ CaseMapTransliterator::~CaseMapTransliterator() {
  */
 CaseMapTransliterator::CaseMapTransliterator(const CaseMapTransliterator& o) :
     Transliterator(o),
-    fCsp(o.fCsp), fMap(o.fMap)
+    fMap(o.fMap)
 {
 }
 
@@ -119,7 +118,6 @@ CaseMapTransliterator::CaseMapTransliterator(const CaseMapTransliterator& o) :
  */
 /*CaseMapTransliterator& CaseMapTransliterator::operator=(const CaseMapTransliterator& o) {
     Transliterator::operator=(o);
-    fCsp = o.fCsp;
     fMap = o.fMap;
     return *this;
 }*/
@@ -151,14 +149,14 @@ void CaseMapTransliterator::handleTransliterate(Replaceable& text,
     UnicodeString tmp;
     const UChar *s;
     UChar32 c;
-    int32_t textPos, delta, result, locCache=0;
+    int32_t textPos, delta, result;
 
     for(textPos=offsets.start; textPos<offsets.limit;) {
         csc.cpStart=textPos;
         c=text.char32At(textPos);
         csc.cpLimit=textPos+=U16_LENGTH(c);
 
-        result=fMap(fCsp, c, utrans_rep_caseContextIterator, &csc, &s, "", &locCache);
+        result=fMap(c, utrans_rep_caseContextIterator, &csc, &s, UCASE_LOC_ROOT);
 
         if(csc.b1 && isIncremental) {
             // fMap() tried to look beyond the context limit
index df80760..744406e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  casetrn.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -84,7 +84,6 @@ protected:
                                      UTransPosition& offsets, 
                                      UBool isIncremental) const;
 
-    const UCaseProps *fCsp;
     UCaseMapFull *fMap;
 
 private:
index 17bf816..00faa8a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ce6f420..c380f0b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 4de390a..82d1c3f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index e9e9515..11a9b43 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
index f6e36a6..42e1fa2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d99f191..64d3ab4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -29,6 +29,7 @@
 
 #if !UCONFIG_NO_COLLATION
 
+#include "unicode/chariter.h"
 #include "unicode/coleitr.h"
 #include "unicode/tblcoll.h"
 #include "unicode/ustring.h"
index 90a6a47..be4b6b8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index bac7498..14cb865 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c82d9a4..e9256c9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0025cfc..954a20d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 7dda928..2f20050 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5d8bd90..cbf32c9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 630b90b..6ad2d06 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d3a62e4..688770f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ab40bbd..ab9b4c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2059b56..98a6ce7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index f2c9a82..fee444d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index df0b2a3..636eb14 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ff8ec3d..44e6939 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 596236b..a91119d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6169e0f..197cd53 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c3e8c98..b98b845 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 00a2d1b..4bac797 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 032e5e8..e889697 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9d38038..8b63b86 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index de1d9a2..86b12b9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1999-2016, International Business Machines
index 150f488..ec7167d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e6e8f27..961c9e9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0161f5a..2666b24 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9130228..4b9e6b5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 74b370e..60d9e50 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index f862e41..71753bd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 26e5071..8cd3046 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 638a245..9b46d14 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 518a24f..7836d8d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ea3ea66..96dcc0d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index bd393c2..e124881 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 1188f31..0958141 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 070d507..aed41f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index bc1d4e6..534e20d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 1522dd5..83e775d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d1ffa30..78a11fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e463005..9a636cf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8b1122a..c60da2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  collationweights.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4a6a7e8..b415882 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  collationweights.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 7a69b68..0767254 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // collunsafe.h
 //  Copyright (C) 2015-2016, International Business Machines Corporation and others.
index 385b3a5..bb2e541 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -771,13 +771,22 @@ static int32_t populatePrefixSuffix(
   if (U_FAILURE(status)) {
     return 0;
   }
-  int32_t firstIdx = formatStr.indexOf(kZero, UPRV_LENGTHOF(kZero), 0);
+
+  // ICU 59 HACK: Ignore negative part of format string, mimicking ICU 58 behavior.
+  // TODO(sffc): Make sure this is fixed during the overhaul port in ICU 60.
+  int32_t semiPos = formatStr.indexOf(';', 0);
+  if (semiPos == -1) {
+    semiPos = formatStr.length();
+  }
+  UnicodeString positivePart = formatStr.tempSubString(0, semiPos);
+
+  int32_t firstIdx = positivePart.indexOf(kZero, UPRV_LENGTHOF(kZero), 0);
   // We must have 0's in format string.
   if (firstIdx == -1) {
     status = U_INTERNAL_PROGRAM_ERROR;
     return 0;
   }
-  int32_t lastIdx = formatStr.lastIndexOf(kZero, UPRV_LENGTHOF(kZero), firstIdx);
+  int32_t lastIdx = positivePart.lastIndexOf(kZero, UPRV_LENGTHOF(kZero), firstIdx);
   CDFUnit* unit = createCDFUnit(variant, log10Value, result, status);
   if (U_FAILURE(status)) {
     return 0;
@@ -790,10 +799,10 @@ static int32_t populatePrefixSuffix(
   unit->markAsSet();
 
   // Everything up to first 0 is the prefix
-  unit->prefix = formatStr.tempSubString(0, firstIdx);
+  unit->prefix = positivePart.tempSubString(0, firstIdx);
   fixQuotes(unit->prefix);
   // Everything beyond the last 0 is the suffix
-  unit->suffix = formatStr.tempSubString(lastIdx + 1);
+  unit->suffix = positivePart.tempSubString(lastIdx + 1);
   fixQuotes(unit->suffix);
 
   // If there is effectively no prefix or suffix, ignore the actual number of
@@ -804,7 +813,7 @@ static int32_t populatePrefixSuffix(
 
   // Calculate number of zeros before decimal point
   int32_t idx = firstIdx + 1;
-  while (idx <= lastIdx && formatStr.charAt(idx) == u_0) {
+  while (idx <= lastIdx && positivePart.charAt(idx) == u_0) {
     ++idx;
   }
   return (idx - firstIdx);
index bcbd8be..ba2040d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index afca9b9..5c38aa6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index bacd420..db2ddb7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ecf23e5..076296a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 5dadf37..36552c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index d0dc0d2..d4bfa75 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 844fc43..83bf531 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 0931ff7..fe379ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 66289ee..ff26e5e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index c0c3318..cde9019 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 503a5a5..31fce5d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 4d0918b..713fd4e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index fef61ba..d98f18a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 6a49a85..8ccf1d5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 10bd9c9..0b0d896 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index a196acf..9768783 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 609ebe4..59f2dbe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 68ebaf3..cef3544 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 2f15379..b42bd8b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 72d65dc..6089eb6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 26ea7f4..d224270 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 
 U_NAMESPACE_BEGIN
 
-CurrencyAmount::CurrencyAmount(const Formattable& amount, const UChar* isoCode,
+CurrencyAmount::CurrencyAmount(const Formattable& amount, ConstChar16Ptr isoCode,
                                UErrorCode& ec) :
     Measure(amount, new CurrencyUnit(isoCode, ec), ec) {
 }
 
-CurrencyAmount::CurrencyAmount(double amount, const UChar* isoCode,
+CurrencyAmount::CurrencyAmount(double amount, ConstChar16Ptr isoCode,
                                UErrorCode& ec) :
     Measure(Formattable(amount), new CurrencyUnit(isoCode, ec), ec) {
 }
index b92aa00..06bdad0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 83e0272..97d44cb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 5140b5e..9a7996b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -20,6 +20,7 @@
 
 #include "unicode/locid.h"
 #include "unicode/plurrule.h"
+#include "unicode/strenum.h"
 #include "unicode/ures.h"
 #include "unicode/numsys.h"
 #include "cstring.h"
index ede1900..1978854 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 
 U_NAMESPACE_BEGIN
 
-CurrencyUnit::CurrencyUnit(const UChar* _isoCode, UErrorCode& ec) {
+CurrencyUnit::CurrencyUnit(ConstChar16Ptr _isoCode, UErrorCode& ec) {
     *isoCode = 0;
     if (U_SUCCESS(ec)) {
-        if (_isoCode && u_strlen(_isoCode)==3) {
+        if (_isoCode != nullptr && u_strlen(_isoCode)==3) {
             u_strcpy(isoCode, _isoCode);
             char simpleIsoCode[4];
             u_UCharsToChars(isoCode, simpleIsoCode, 4);
index 328ad85..73bc421 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 99f3fd8..04bd67b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
index 2767e3f..3e879be 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -80,7 +80,7 @@ public:
             fSkeleton(other.fSkeleton) { }
     virtual ~DateFmtBestPatternKey();
     virtual int32_t hashCode() const {
-        return 37 * LocaleCacheKey<DateFmtBestPattern>::hashCode() + fSkeleton.hashCode();
+        return (int32_t)(37u * (uint32_t)LocaleCacheKey<DateFmtBestPattern>::hashCode() + (uint32_t)fSkeleton.hashCode());
     }
     virtual UBool operator==(const CacheKeyBase &other) const {
        // reflexive
@@ -498,7 +498,7 @@ DateFormat* U_EXPORT2
 DateFormat::create(EStyle timeStyle, EStyle dateStyle, const Locale& locale)
 {
     UErrorCode status = U_ZERO_ERROR;
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
     char buffer[8];
     int32_t count = locale.getKeywordValue("compat", buffer, sizeof(buffer), status);
 
index 3041482..f7ec1e6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -174,7 +174,7 @@ struct DayPeriodRulesDataSink : public ResourceSink {
         }
     }
 
-    void addCutoff(CutoffType type, UnicodeString hour_str, UErrorCode &errorCode) {
+    void addCutoff(CutoffType type, const UnicodeString &hour_str, UErrorCode &errorCode) {
         if (U_FAILURE(errorCode)) { return; }
 
         if (type == CUTOFF_TYPE_UNKNOWN) {
index 3c006cd..610c617 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5885872..e582efb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index caf230d..08a85b5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
diff --git a/source/i18n/decContext.c b/source/i18n/decContext.c
deleted file mode 100644 (file)
index 4e29707..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/* ------------------------------------------------------------------ */
-/* Decimal Context module                                             */
-/* ------------------------------------------------------------------ */
-/* Copyright (c) IBM Corporation, 2000-2012.  All rights reserved.    */
-/*                                                                    */
-/* This software is made available under the terms of the             */
-/* ICU License -- ICU 1.8.1 and later.                                */
-/*                                                                    */
-/* The description and User's Guide ("The decNumber C Library") for   */
-/* this software is called decNumber.pdf.  This document is           */
-/* available, together with arithmetic and format specifications,     */
-/* testcases, and Web links, on the General Decimal Arithmetic page.  */
-/*                                                                    */
-/* Please send comments, suggestions, and corrections to the author:  */
-/*   mfc@uk.ibm.com                                                   */
-/*   Mike Cowlishaw, IBM Fellow                                       */
-/*   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         */
-/* ------------------------------------------------------------------ */
-/* This module comprises the routines for handling arithmetic         */
-/* context structures.                                                */
-/* ------------------------------------------------------------------ */
-
-#include <string.h>           /* for strcmp  */
-#include <stdio.h>            /* for printf if DECCHECK  */
-#include "decContext.h"       /* context and base types  */
-#include "decNumberLocal.h"   /* decNumber local types, etc.  */
-
-#if 0  /* ICU: No need to test endianness at runtime. */
-/* compile-time endian tester [assumes sizeof(Int)>1] */
-static  const  Int mfcone=1;                 /* constant 1  */
-static  const  Flag *mfctop=(Flag *)&mfcone; /* -> top byte  */
-#define LITEND *mfctop             /* named flag; 1=little-endian  */
-#endif
-
-/* ------------------------------------------------------------------ */
-/* decContextClearStatus -- clear bits in current status              */
-/*                                                                    */
-/*  context is the context structure to be queried                    */
-/*  mask indicates the bits to be cleared (the status bit that        */
-/*    corresponds to each 1 bit in the mask is cleared)               */
-/*  returns context                                                   */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI decContext * U_EXPORT2 uprv_decContextClearStatus(decContext *context, uInt mask) {
-  context->status&=~mask;
-  return context;
-  } /* decContextClearStatus  */
-
-/* ------------------------------------------------------------------ */
-/* decContextDefault -- initialize a context structure                */
-/*                                                                    */
-/*  context is the structure to be initialized                        */
-/*  kind selects the required set of default values, one of:          */
-/*      DEC_INIT_BASE       -- select ANSI X3-274 defaults            */
-/*      DEC_INIT_DECIMAL32  -- select IEEE 754 defaults, 32-bit       */
-/*      DEC_INIT_DECIMAL64  -- select IEEE 754 defaults, 64-bit       */
-/*      DEC_INIT_DECIMAL128 -- select IEEE 754 defaults, 128-bit      */
-/*      For any other value a valid context is returned, but with     */
-/*      Invalid_operation set in the status field.                    */
-/*  returns a context structure with the appropriate initial values.  */
-/* ------------------------------------------------------------------ */
-U_CAPI decContext *  U_EXPORT2 uprv_decContextDefault(decContext *context, Int kind) {
-  /* set defaults...  */
-  context->digits=9;                         /* 9 digits  */
-  context->emax=DEC_MAX_EMAX;                /* 9-digit exponents  */
-  context->emin=DEC_MIN_EMIN;                /* .. balanced  */
-  context->round=DEC_ROUND_HALF_UP;          /* 0.5 rises  */
-  context->traps=DEC_Errors;                 /* all but informational  */
-  context->status=0;                         /* cleared  */
-  context->clamp=0;                          /* no clamping  */
-  #if DECSUBSET
-  context->extended=0;                       /* cleared  */
-  #endif
-  switch (kind) {
-    case DEC_INIT_BASE:
-      /* [use defaults]  */
-      break;
-    case DEC_INIT_DECIMAL32:
-      context->digits=7;                     /* digits  */
-      context->emax=96;                      /* Emax  */
-      context->emin=-95;                     /* Emin  */
-      context->round=DEC_ROUND_HALF_EVEN;    /* 0.5 to nearest even  */
-      context->traps=0;                      /* no traps set  */
-      context->clamp=1;                      /* clamp exponents  */
-      #if DECSUBSET
-      context->extended=1;                   /* set  */
-      #endif
-      break;
-    case DEC_INIT_DECIMAL64:
-      context->digits=16;                    /* digits  */
-      context->emax=384;                     /* Emax  */
-      context->emin=-383;                    /* Emin  */
-      context->round=DEC_ROUND_HALF_EVEN;    /* 0.5 to nearest even  */
-      context->traps=0;                      /* no traps set  */
-      context->clamp=1;                      /* clamp exponents  */
-      #if DECSUBSET
-      context->extended=1;                   /* set  */
-      #endif
-      break;
-    case DEC_INIT_DECIMAL128:
-      context->digits=34;                    /* digits  */
-      context->emax=6144;                    /* Emax  */
-      context->emin=-6143;                   /* Emin  */
-      context->round=DEC_ROUND_HALF_EVEN;    /* 0.5 to nearest even  */
-      context->traps=0;                      /* no traps set  */
-      context->clamp=1;                      /* clamp exponents  */
-      #if DECSUBSET
-      context->extended=1;                   /* set  */
-      #endif
-      break;
-
-    default:                                 /* invalid Kind  */
-      /* use defaults, and ..  */
-      uprv_decContextSetStatus(context, DEC_Invalid_operation); /* trap  */
-    }
-
-  return context;} /* decContextDefault  */
-
-/* ------------------------------------------------------------------ */
-/* decContextGetRounding -- return current rounding mode              */
-/*                                                                    */
-/*  context is the context structure to be queried                    */
-/*  returns the rounding mode                                         */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI enum rounding  U_EXPORT2 uprv_decContextGetRounding(decContext *context) {
-  return context->round;
-  } /* decContextGetRounding  */
-
-/* ------------------------------------------------------------------ */
-/* decContextGetStatus -- return current status                       */
-/*                                                                    */
-/*  context is the context structure to be queried                    */
-/*  returns status                                                    */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI uInt  U_EXPORT2 uprv_decContextGetStatus(decContext *context) {
-  return context->status;
-  } /* decContextGetStatus  */
-
-/* ------------------------------------------------------------------ */
-/* decContextRestoreStatus -- restore bits in current status          */
-/*                                                                    */
-/*  context is the context structure to be updated                    */
-/*  newstatus is the source for the bits to be restored               */
-/*  mask indicates the bits to be restored (the status bit that       */
-/*    corresponds to each 1 bit in the mask is set to the value of    */
-/*    the correspnding bit in newstatus)                              */
-/*  returns context                                                   */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI decContext * U_EXPORT2 uprv_decContextRestoreStatus(decContext *context,
-                                    uInt newstatus, uInt mask) {
-  context->status&=~mask;               /* clear the selected bits  */
-  context->status|=(mask&newstatus);    /* or in the new bits  */
-  return context;
-  } /* decContextRestoreStatus  */
-
-/* ------------------------------------------------------------------ */
-/* decContextSaveStatus -- save bits in current status                */
-/*                                                                    */
-/*  context is the context structure to be queried                    */
-/*  mask indicates the bits to be saved (the status bits that         */
-/*    correspond to each 1 bit in the mask are saved)                 */
-/*  returns the AND of the mask and the current status                */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI uInt  U_EXPORT2 uprv_decContextSaveStatus(decContext *context, uInt mask) {
-  return context->status&mask;
-  } /* decContextSaveStatus  */
-
-/* ------------------------------------------------------------------ */
-/* decContextSetRounding -- set current rounding mode                 */
-/*                                                                    */
-/*  context is the context structure to be updated                    */
-/*  newround is the value which will replace the current mode         */
-/*  returns context                                                   */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI decContext * U_EXPORT2 uprv_decContextSetRounding(decContext *context,
-                                  enum rounding newround) {
-  context->round=newround;
-  return context;
-  } /* decContextSetRounding  */
-
-/* ------------------------------------------------------------------ */
-/* decContextSetStatus -- set status and raise trap if appropriate    */
-/*                                                                    */
-/*  context is the context structure to be updated                    */
-/*  status  is the DEC_ exception code                                */
-/*  returns the context structure                                     */
-/*                                                                    */
-/* Control may never return from this routine, if there is a signal   */
-/* handler and it takes a long jump.                                  */
-/* ------------------------------------------------------------------ */
-U_CAPI decContext *  U_EXPORT2 uprv_decContextSetStatus(decContext *context, uInt status) {
-  context->status|=status;
-#if 0  /* ICU: Do not raise signals. */
-  if (status & context->traps) raise(SIGFPE);
-#endif
-  return context;} /* decContextSetStatus  */
-
-/* ------------------------------------------------------------------ */
-/* decContextSetStatusFromString -- set status from a string + trap   */
-/*                                                                    */
-/*  context is the context structure to be updated                    */
-/*  string is a string exactly equal to one that might be returned    */
-/*            by decContextStatusToString                             */
-/*                                                                    */
-/*  The status bit corresponding to the string is set, and a trap     */
-/*  is raised if appropriate.                                         */
-/*                                                                    */
-/*  returns the context structure, unless the string is equal to      */
-/*    DEC_Condition_MU or is not recognized.  In these cases NULL is  */
-/*    returned.                                                       */
-/* ------------------------------------------------------------------ */
-U_CAPI decContext *  U_EXPORT2 uprv_decContextSetStatusFromString(decContext *context,
-                                           const char *string) {
-  if (strcmp(string, DEC_Condition_CS)==0)
-    return uprv_decContextSetStatus(context, DEC_Conversion_syntax);
-  if (strcmp(string, DEC_Condition_DZ)==0)
-    return uprv_decContextSetStatus(context, DEC_Division_by_zero);
-  if (strcmp(string, DEC_Condition_DI)==0)
-    return uprv_decContextSetStatus(context, DEC_Division_impossible);
-  if (strcmp(string, DEC_Condition_DU)==0)
-    return uprv_decContextSetStatus(context, DEC_Division_undefined);
-  if (strcmp(string, DEC_Condition_IE)==0)
-    return uprv_decContextSetStatus(context, DEC_Inexact);
-  if (strcmp(string, DEC_Condition_IS)==0)
-    return uprv_decContextSetStatus(context, DEC_Insufficient_storage);
-  if (strcmp(string, DEC_Condition_IC)==0)
-    return uprv_decContextSetStatus(context, DEC_Invalid_context);
-  if (strcmp(string, DEC_Condition_IO)==0)
-    return uprv_decContextSetStatus(context, DEC_Invalid_operation);
-  #if DECSUBSET
-  if (strcmp(string, DEC_Condition_LD)==0)
-    return uprv_decContextSetStatus(context, DEC_Lost_digits);
-  #endif
-  if (strcmp(string, DEC_Condition_OV)==0)
-    return uprv_decContextSetStatus(context, DEC_Overflow);
-  if (strcmp(string, DEC_Condition_PA)==0)
-    return uprv_decContextSetStatus(context, DEC_Clamped);
-  if (strcmp(string, DEC_Condition_RO)==0)
-    return uprv_decContextSetStatus(context, DEC_Rounded);
-  if (strcmp(string, DEC_Condition_SU)==0)
-    return uprv_decContextSetStatus(context, DEC_Subnormal);
-  if (strcmp(string, DEC_Condition_UN)==0)
-    return uprv_decContextSetStatus(context, DEC_Underflow);
-  if (strcmp(string, DEC_Condition_ZE)==0)
-    return context;
-  return NULL;  /* Multiple status, or unknown  */
-  } /* decContextSetStatusFromString  */
-
-/* ------------------------------------------------------------------ */
-/* decContextSetStatusFromStringQuiet -- set status from a string     */
-/*                                                                    */
-/*  context is the context structure to be updated                    */
-/*  string is a string exactly equal to one that might be returned    */
-/*            by decContextStatusToString                             */
-/*                                                                    */
-/*  The status bit corresponding to the string is set; no trap is     */
-/*  raised.                                                           */
-/*                                                                    */
-/*  returns the context structure, unless the string is equal to      */
-/*    DEC_Condition_MU or is not recognized.  In these cases NULL is  */
-/*    returned.                                                       */
-/* ------------------------------------------------------------------ */
-U_CAPI decContext *  U_EXPORT2 uprv_decContextSetStatusFromStringQuiet(decContext *context,
-                                                const char *string) {
-  if (strcmp(string, DEC_Condition_CS)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Conversion_syntax);
-  if (strcmp(string, DEC_Condition_DZ)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Division_by_zero);
-  if (strcmp(string, DEC_Condition_DI)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Division_impossible);
-  if (strcmp(string, DEC_Condition_DU)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Division_undefined);
-  if (strcmp(string, DEC_Condition_IE)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Inexact);
-  if (strcmp(string, DEC_Condition_IS)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Insufficient_storage);
-  if (strcmp(string, DEC_Condition_IC)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Invalid_context);
-  if (strcmp(string, DEC_Condition_IO)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Invalid_operation);
-  #if DECSUBSET
-  if (strcmp(string, DEC_Condition_LD)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Lost_digits);
-  #endif
-  if (strcmp(string, DEC_Condition_OV)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Overflow);
-  if (strcmp(string, DEC_Condition_PA)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Clamped);
-  if (strcmp(string, DEC_Condition_RO)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Rounded);
-  if (strcmp(string, DEC_Condition_SU)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Subnormal);
-  if (strcmp(string, DEC_Condition_UN)==0)
-    return uprv_decContextSetStatusQuiet(context, DEC_Underflow);
-  if (strcmp(string, DEC_Condition_ZE)==0)
-    return context;
-  return NULL;  /* Multiple status, or unknown  */
-  } /* decContextSetStatusFromStringQuiet  */
-
-/* ------------------------------------------------------------------ */
-/* decContextSetStatusQuiet -- set status without trap                */
-/*                                                                    */
-/*  context is the context structure to be updated                    */
-/*  status  is the DEC_ exception code                                */
-/*  returns the context structure                                     */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI decContext *  U_EXPORT2 uprv_decContextSetStatusQuiet(decContext *context, uInt status) {
-  context->status|=status;
-  return context;} /* decContextSetStatusQuiet  */
-
-/* ------------------------------------------------------------------ */
-/* decContextStatusToString -- convert status flags to a string       */
-/*                                                                    */
-/*  context is a context with valid status field                      */
-/*                                                                    */
-/*  returns a constant string describing the condition.  If multiple  */
-/*    (or no) flags are set, a generic constant message is returned.  */
-/* ------------------------------------------------------------------ */
-U_CAPI const char * U_EXPORT2 uprv_decContextStatusToString(const decContext *context) {
-  Int status=context->status;
-
-  /* test the five IEEE first, as some of the others are ambiguous when  */
-  /* DECEXTFLAG=0  */
-  if (status==DEC_Invalid_operation    ) return DEC_Condition_IO;
-  if (status==DEC_Division_by_zero     ) return DEC_Condition_DZ;
-  if (status==DEC_Overflow             ) return DEC_Condition_OV;
-  if (status==DEC_Underflow            ) return DEC_Condition_UN;
-  if (status==DEC_Inexact              ) return DEC_Condition_IE;
-
-  if (status==DEC_Division_impossible  ) return DEC_Condition_DI;
-  if (status==DEC_Division_undefined   ) return DEC_Condition_DU;
-  if (status==DEC_Rounded              ) return DEC_Condition_RO;
-  if (status==DEC_Clamped              ) return DEC_Condition_PA;
-  if (status==DEC_Subnormal            ) return DEC_Condition_SU;
-  if (status==DEC_Conversion_syntax    ) return DEC_Condition_CS;
-  if (status==DEC_Insufficient_storage ) return DEC_Condition_IS;
-  if (status==DEC_Invalid_context      ) return DEC_Condition_IC;
-  #if DECSUBSET
-  if (status==DEC_Lost_digits          ) return DEC_Condition_LD;
-  #endif
-  if (status==0                        ) return DEC_Condition_ZE;
-  return DEC_Condition_MU;  /* Multiple errors  */
-  } /* decContextStatusToString  */
-
-/* ------------------------------------------------------------------ */
-/* decContextTestEndian -- test whether DECLITEND is set correctly    */
-/*                                                                    */
-/*  quiet is 1 to suppress message; 0 otherwise                       */
-/*  returns 0 if DECLITEND is correct                                 */
-/*          1 if DECLITEND is incorrect and should be 1               */
-/*         -1 if DECLITEND is incorrect and should be 0               */
-/*                                                                    */
-/* A message is displayed if the return value is not 0 and quiet==0.  */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-#if 0  /* ICU: Unused function. Anyway, do not call printf(). */
-U_CAPI Int  U_EXPORT2 uprv_decContextTestEndian(Flag quiet) {
-  Int res=0;                  /* optimist  */
-  uInt dle=(uInt)DECLITEND;   /* unsign  */
-  if (dle>1) dle=1;           /* ensure 0 or 1  */
-
-  if (LITEND!=DECLITEND) {
-    const char *adj;
-    if (!quiet) {
-      if (LITEND) adj="little";
-             else adj="big";
-      printf("Warning: DECLITEND is set to %d, but this computer appears to be %s-endian\n",
-             DECLITEND, adj);
-      }
-    res=(Int)LITEND-dle;
-    }
-  return res;
-  } /* decContextTestEndian  */
-#endif
-
-/* ------------------------------------------------------------------ */
-/* decContextTestSavedStatus -- test bits in saved status             */
-/*                                                                    */
-/*  oldstatus is the status word to be tested                         */
-/*  mask indicates the bits to be tested (the oldstatus bits that     */
-/*    correspond to each 1 bit in the mask are tested)                */
-/*  returns 1 if any of the tested bits are 1, or 0 otherwise         */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI  uInt U_EXPORT2 uprv_decContextTestSavedStatus(uInt oldstatus, uInt mask) {
-  return (oldstatus&mask)!=0;
-  } /* decContextTestSavedStatus  */
-
-/* ------------------------------------------------------------------ */
-/* decContextTestStatus -- test bits in current status                */
-/*                                                                    */
-/*  context is the context structure to be updated                    */
-/*  mask indicates the bits to be tested (the status bits that        */
-/*    correspond to each 1 bit in the mask are tested)                */
-/*  returns 1 if any of the tested bits are 1, or 0 otherwise         */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI uInt  U_EXPORT2 uprv_decContextTestStatus(decContext *context, uInt mask) {
-  return (context->status&mask)!=0;
-  } /* decContextTestStatus  */
-
-/* ------------------------------------------------------------------ */
-/* decContextZeroStatus -- clear all status bits                      */
-/*                                                                    */
-/*  context is the context structure to be updated                    */
-/*  returns context                                                   */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI decContext * U_EXPORT2 uprv_decContextZeroStatus(decContext *context) {
-  context->status=0;
-  return context;
-  } /* decContextZeroStatus  */
-
index 6a8768e..e145777 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /* ------------------------------------------------------------------ */
 /* Decimal Context module header                                      */
diff --git a/source/i18n/decNumber.c b/source/i18n/decNumber.c
deleted file mode 100644 (file)
index 2604c37..0000000
+++ /dev/null
@@ -1,8188 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/* ------------------------------------------------------------------ */
-/* Decimal Number arithmetic module                                   */
-/* ------------------------------------------------------------------ */
-/* Copyright (c) IBM Corporation, 2000-2014.  All rights reserved.    */
-/*                                                                    */
-/* This software is made available under the terms of the             */
-/* ICU License -- ICU 1.8.1 and later.                                */
-/*                                                                    */
-/* The description and User's Guide ("The decNumber C Library") for   */
-/* this software is called decNumber.pdf.  This document is           */
-/* available, together with arithmetic and format specifications,     */
-/* testcases, and Web links, on the General Decimal Arithmetic page.  */
-/*                                                                    */
-/* Please send comments, suggestions, and corrections to the author:  */
-/*   mfc@uk.ibm.com                                                   */
-/*   Mike Cowlishaw, IBM Fellow                                       */
-/*   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         */
-/* ------------------------------------------------------------------ */
-
-/* Modified version, for use from within ICU.
- *    Renamed public functions, to avoid an unwanted export of the 
- *    standard names from the ICU library.
- *
- *    Use ICU's uprv_malloc() and uprv_free()
- *
- *    Revert comment syntax to plain C
- *
- *    Remove a few compiler warnings.
- */
-
-/* This module comprises the routines for arbitrary-precision General */
-/* Decimal Arithmetic as defined in the specification which may be    */
-/* found on the General Decimal Arithmetic pages.  It implements both */
-/* the full ('extended') arithmetic and the simpler ('subset')        */
-/* arithmetic.                                                        */
-/*                                                                    */
-/* Usage notes:                                                       */
-/*                                                                    */
-/* 1. This code is ANSI C89 except:                                   */
-/*                                                                    */
-/*    a) C99 line comments (double forward slash) are used.  (Most C  */
-/*       compilers accept these.  If yours does not, a simple script  */
-/*       can be used to convert them to ANSI C comments.)             */
-/*                                                                    */
-/*    b) Types from C99 stdint.h are used.  If you do not have this   */
-/*       header file, see the User's Guide section of the decNumber   */
-/*       documentation; this lists the necessary definitions.         */
-/*                                                                    */
-/*    c) If DECDPUN>4 or DECUSE64=1, the C99 64-bit int64_t and       */
-/*       uint64_t types may be used.  To avoid these, set DECUSE64=0  */
-/*       and DECDPUN<=4 (see documentation).                          */
-/*                                                                    */
-/*    The code also conforms to C99 restrictions; in particular,      */
-/*    strict aliasing rules are observed.                             */
-/*                                                                    */
-/* 2. The decNumber format which this library uses is optimized for   */
-/*    efficient processing of relatively short numbers; in particular */
-/*    it allows the use of fixed sized structures and minimizes copy  */
-/*    and move operations.  It does, however, support arbitrary       */
-/*    precision (up to 999,999,999 digits) and arbitrary exponent     */
-/*    range (Emax in the range 0 through 999,999,999 and Emin in the  */
-/*    range -999,999,999 through 0).  Mathematical functions (for     */
-/*    example decNumberExp) as identified below are restricted more   */
-/*    tightly: digits, emax, and -emin in the context must be <=      */
-/*    DEC_MAX_MATH (999999), and their operand(s) must be within      */
-/*    these bounds.                                                   */
-/*                                                                    */
-/* 3. Logical functions are further restricted; their operands must   */
-/*    be finite, positive, have an exponent of zero, and all digits   */
-/*    must be either 0 or 1.  The result will only contain digits     */
-/*    which are 0 or 1 (and will have exponent=0 and a sign of 0).    */
-/*                                                                    */
-/* 4. Operands to operator functions are never modified unless they   */
-/*    are also specified to be the result number (which is always     */
-/*    permitted).  Other than that case, operands must not overlap.   */
-/*                                                                    */
-/* 5. Error handling: the type of the error is ORed into the status   */
-/*    flags in the current context (decContext structure).  The       */
-/*    SIGFPE signal is then raised if the corresponding trap-enabler  */
-/*    flag in the decContext is set (is 1).                           */
-/*                                                                    */
-/*    It is the responsibility of the caller to clear the status      */
-/*    flags as required.                                              */
-/*                                                                    */
-/*    The result of any routine which returns a number will always    */
-/*    be a valid number (which may be a special value, such as an     */
-/*    Infinity or NaN).                                               */
-/*                                                                    */
-/* 6. The decNumber format is not an exchangeable concrete            */
-/*    representation as it comprises fields which may be machine-     */
-/*    dependent (packed or unpacked, or special length, for example). */
-/*    Canonical conversions to and from strings are provided; other   */
-/*    conversions are available in separate modules.                  */
-/*                                                                    */
-/* 7. Normally, input operands are assumed to be valid.  Set DECCHECK */
-/*    to 1 for extended operand checking (including NULL operands).   */
-/*    Results are undefined if a badly-formed structure (or a NULL    */
-/*    pointer to a structure) is provided, though with DECCHECK       */
-/*    enabled the operator routines are protected against exceptions. */
-/*    (Except if the result pointer is NULL, which is unrecoverable.) */
-/*                                                                    */
-/*    However, the routines will never cause exceptions if they are   */
-/*    given well-formed operands, even if the value of the operands   */
-/*    is inappropriate for the operation and DECCHECK is not set.     */
-/*    (Except for SIGFPE, as and where documented.)                   */
-/*                                                                    */
-/* 8. Subset arithmetic is available only if DECSUBSET is set to 1.   */
-/* ------------------------------------------------------------------ */
-/* Implementation notes for maintenance of this module:               */
-/*                                                                    */
-/* 1. Storage leak protection:  Routines which use malloc are not     */
-/*    permitted to use return for fastpath or error exits (i.e.,      */
-/*    they follow strict structured programming conventions).         */
-/*    Instead they have a do{}while(0); construct surrounding the     */
-/*    code which is protected -- break may be used to exit this.      */
-/*    Other routines can safely use the return statement inline.      */
-/*                                                                    */
-/*    Storage leak accounting can be enabled using DECALLOC.          */
-/*                                                                    */
-/* 2. All loops use the for(;;) construct.  Any do construct does     */
-/*    not loop; it is for allocation protection as just described.    */
-/*                                                                    */
-/* 3. Setting status in the context must always be the very last      */
-/*    action in a routine, as non-0 status may raise a trap and hence */
-/*    the call to set status may not return (if the handler uses long */
-/*    jump).  Therefore all cleanup must be done first.  In general,  */
-/*    to achieve this status is accumulated and is only applied just  */
-/*    before return by calling decContextSetStatus (via decStatus).   */
-/*                                                                    */
-/*    Routines which allocate storage cannot, in general, use the     */
-/*    'top level' routines which could cause a non-returning          */
-/*    transfer of control.  The decXxxxOp routines are safe (do not   */
-/*    call decStatus even if traps are set in the context) and should */
-/*    be used instead (they are also a little faster).                */
-/*                                                                    */
-/* 4. Exponent checking is minimized by allowing the exponent to      */
-/*    grow outside its limits during calculations, provided that      */
-/*    the decFinalize function is called later.  Multiplication and   */
-/*    division, and intermediate calculations in exponentiation,      */
-/*    require more careful checks because of the risk of 31-bit       */
-/*    overflow (the most negative valid exponent is -1999999997, for  */
-/*    a 999999999-digit number with adjusted exponent of -999999999). */
-/*                                                                    */
-/* 5. Rounding is deferred until finalization of results, with any    */
-/*    'off to the right' data being represented as a single digit     */
-/*    residue (in the range -1 through 9).  This avoids any double-   */
-/*    rounding when more than one shortening takes place (for         */
-/*    example, when a result is subnormal).                           */
-/*                                                                    */
-/* 6. The digits count is allowed to rise to a multiple of DECDPUN    */
-/*    during many operations, so whole Units are handled and exact    */
-/*    accounting of digits is not needed.  The correct digits value   */
-/*    is found by decGetDigits, which accounts for leading zeros.     */
-/*    This must be called before any rounding if the number of digits */
-/*    is not known exactly.                                           */
-/*                                                                    */
-/* 7. The multiply-by-reciprocal 'trick' is used for partitioning     */
-/*    numbers up to four digits, using appropriate constants.  This   */
-/*    is not useful for longer numbers because overflow of 32 bits    */
-/*    would lead to 4 multiplies, which is almost as expensive as     */
-/*    a divide (unless a floating-point or 64-bit multiply is         */
-/*    assumed to be available).                                       */
-/*                                                                    */
-/* 8. Unusual abbreviations that may be used in the commentary:       */
-/*      lhs -- left hand side (operand, of an operation)              */
-/*      lsd -- least significant digit (of coefficient)               */
-/*      lsu -- least significant Unit (of coefficient)                */
-/*      msd -- most significant digit (of coefficient)                */
-/*      msi -- most significant item (in an array)                    */
-/*      msu -- most significant Unit (of coefficient)                 */
-/*      rhs -- right hand side (operand, of an operation)             */
-/*      +ve -- positive                                               */
-/*      -ve -- negative                                               */
-/*      **  -- raise to the power                                     */
-/* ------------------------------------------------------------------ */
-
-#include <stdlib.h>                /* for malloc, free, etc.  */
-/*  #include <stdio.h>   */        /* for printf [if needed]  */
-#include <string.h>                /* for strcpy  */
-#include <ctype.h>                 /* for lower  */
-#include "cmemory.h"               /* for uprv_malloc, etc., in ICU */
-#include "decNumber.h"             /* base number library  */
-#include "decNumberLocal.h"        /* decNumber local types, etc.  */
-#include "uassert.h"
-
-/* Constants */
-/* Public lookup table used by the D2U macro  */
-static const uByte d2utable[DECMAXD2U+1]=D2UTABLE;
-
-#define DECVERB     1              /* set to 1 for verbose DECCHECK  */
-#define powers      DECPOWERS      /* old internal name  */
-
-/* Local constants  */
-#define DIVIDE      0x80           /* Divide operators  */
-#define REMAINDER   0x40           /* ..  */
-#define DIVIDEINT   0x20           /* ..  */
-#define REMNEAR     0x10           /* ..  */
-#define COMPARE     0x01           /* Compare operators  */
-#define COMPMAX     0x02           /* ..  */
-#define COMPMIN     0x03           /* ..  */
-#define COMPTOTAL   0x04           /* ..  */
-#define COMPNAN     0x05           /* .. [NaN processing]  */
-#define COMPSIG     0x06           /* .. [signaling COMPARE]  */
-#define COMPMAXMAG  0x07           /* ..  */
-#define COMPMINMAG  0x08           /* ..  */
-
-#define DEC_sNaN     0x40000000    /* local status: sNaN signal  */
-#define BADINT  (Int)0x80000000    /* most-negative Int; error indicator  */
-/* Next two indicate an integer >= 10**6, and its parity (bottom bit)  */
-#define BIGEVEN (Int)0x80000002
-#define BIGODD  (Int)0x80000003
-
-static const Unit uarrone[1]={1};   /* Unit array of 1, used for incrementing  */
-
-/* ------------------------------------------------------------------ */
-/* round-for-reround digits                                           */
-/* ------------------------------------------------------------------ */
-#if 0
-static const uByte DECSTICKYTAB[10]={1,1,2,3,4,6,6,7,8,9}; /* used if sticky */
-#endif
-
-/* ------------------------------------------------------------------ */
-/* Powers of ten (powers[n]==10**n, 0<=n<=9)                          */
-/* ------------------------------------------------------------------ */
-static const uInt DECPOWERS[10]={1, 10, 100, 1000, 10000, 100000, 1000000,
-                          10000000, 100000000, 1000000000};
-
-
-/* Granularity-dependent code */
-#if DECDPUN<=4
-  #define eInt  Int           /* extended integer  */
-  #define ueInt uInt          /* unsigned extended integer  */
-  /* Constant multipliers for divide-by-power-of five using reciprocal  */
-  /* multiply, after removing powers of 2 by shifting, and final shift  */
-  /* of 17 [we only need up to **4]  */
-  static const uInt multies[]={131073, 26215, 5243, 1049, 210};
-  /* QUOT10 -- macro to return the quotient of unit u divided by 10**n  */
-  #define QUOT10(u, n) ((((uInt)(u)>>(n))*multies[n])>>17)
-#else
-  /* For DECDPUN>4 non-ANSI-89 64-bit types are needed.  */
-  #if !DECUSE64
-    #error decNumber.c: DECUSE64 must be 1 when DECDPUN>4
-  #endif
-  #define eInt  Long          /* extended integer  */
-  #define ueInt uLong         /* unsigned extended integer  */
-#endif
-
-/* Local routines */
-static decNumber * decAddOp(decNumber *, const decNumber *, const decNumber *,
-                              decContext *, uByte, uInt *);
-static Flag        decBiStr(const char *, const char *, const char *);
-static uInt        decCheckMath(const decNumber *, decContext *, uInt *);
-static void        decApplyRound(decNumber *, decContext *, Int, uInt *);
-static Int         decCompare(const decNumber *lhs, const decNumber *rhs, Flag);
-static decNumber * decCompareOp(decNumber *, const decNumber *,
-                              const decNumber *, decContext *,
-                              Flag, uInt *);
-static void        decCopyFit(decNumber *, const decNumber *, decContext *,
-                              Int *, uInt *);
-static decNumber * decDecap(decNumber *, Int);
-static decNumber * decDivideOp(decNumber *, const decNumber *,
-                              const decNumber *, decContext *, Flag, uInt *);
-static decNumber * decExpOp(decNumber *, const decNumber *,
-                              decContext *, uInt *);
-static void        decFinalize(decNumber *, decContext *, Int *, uInt *);
-static Int         decGetDigits(Unit *, Int);
-static Int         decGetInt(const decNumber *);
-static decNumber * decLnOp(decNumber *, const decNumber *,
-                              decContext *, uInt *);
-static decNumber * decMultiplyOp(decNumber *, const decNumber *,
-                              const decNumber *, decContext *,
-                              uInt *);
-static decNumber * decNaNs(decNumber *, const decNumber *,
-                              const decNumber *, decContext *, uInt *);
-static decNumber * decQuantizeOp(decNumber *, const decNumber *,
-                              const decNumber *, decContext *, Flag,
-                              uInt *);
-static void        decReverse(Unit *, Unit *);
-static void        decSetCoeff(decNumber *, decContext *, const Unit *,
-                              Int, Int *, uInt *);
-static void        decSetMaxValue(decNumber *, decContext *);
-static void        decSetOverflow(decNumber *, decContext *, uInt *);
-static void        decSetSubnormal(decNumber *, decContext *, Int *, uInt *);
-static Int         decShiftToLeast(Unit *, Int, Int);
-static Int         decShiftToMost(Unit *, Int, Int);
-static void        decStatus(decNumber *, uInt, decContext *);
-static void        decToString(const decNumber *, char[], Flag);
-static decNumber * decTrim(decNumber *, decContext *, Flag, Flag, Int *);
-static Int         decUnitAddSub(const Unit *, Int, const Unit *, Int, Int,
-                              Unit *, Int);
-static Int         decUnitCompare(const Unit *, Int, const Unit *, Int, Int);
-
-#if !DECSUBSET
-/* decFinish == decFinalize when no subset arithmetic needed */
-#define decFinish(a,b,c,d) decFinalize(a,b,c,d)
-#else
-static void        decFinish(decNumber *, decContext *, Int *, uInt *);
-static decNumber * decRoundOperand(const decNumber *, decContext *, uInt *);
-#endif
-
-/* Local macros */
-/* masked special-values bits  */
-#define SPECIALARG  (rhs->bits & DECSPECIAL)
-#define SPECIALARGS ((lhs->bits | rhs->bits) & DECSPECIAL)
-
-/* For use in ICU */
-#define malloc(a) uprv_malloc(a)
-#define free(a) uprv_free(a)
-
-/* Diagnostic macros, etc. */
-#if DECALLOC
-/* Handle malloc/free accounting.  If enabled, our accountable routines  */
-/* are used; otherwise the code just goes straight to the system malloc  */
-/* and free routines.  */
-#define malloc(a) decMalloc(a)
-#define free(a) decFree(a)
-#define DECFENCE 0x5a              /* corruption detector  */
-/* 'Our' malloc and free:  */
-static void *decMalloc(size_t);
-static void  decFree(void *);
-uInt decAllocBytes=0;              /* count of bytes allocated  */
-/* Note that DECALLOC code only checks for storage buffer overflow.  */
-/* To check for memory leaks, the decAllocBytes variable must be  */
-/* checked to be 0 at appropriate times (e.g., after the test  */
-/* harness completes a set of tests).  This checking may be unreliable  */
-/* if the testing is done in a multi-thread environment.  */
-#endif
-
-#if DECCHECK
-/* Optional checking routines.  Enabling these means that decNumber  */
-/* and decContext operands to operator routines are checked for  */
-/* correctness.  This roughly doubles the execution time of the  */
-/* fastest routines (and adds 600+ bytes), so should not normally be  */
-/* used in 'production'.  */
-/* decCheckInexact is used to check that inexact results have a full  */
-/* complement of digits (where appropriate -- this is not the case  */
-/* for Quantize, for example)  */
-#define DECUNRESU ((decNumber *)(void *)0xffffffff)
-#define DECUNUSED ((const decNumber *)(void *)0xffffffff)
-#define DECUNCONT ((decContext *)(void *)(0xffffffff))
-static Flag decCheckOperands(decNumber *, const decNumber *,
-                             const decNumber *, decContext *);
-static Flag decCheckNumber(const decNumber *);
-static void decCheckInexact(const decNumber *, decContext *);
-#endif
-
-#if DECTRACE || DECCHECK
-/* Optional trace/debugging routines (may or may not be used)  */
-void decNumberShow(const decNumber *);  /* displays the components of a number  */
-static void decDumpAr(char, const Unit *, Int);
-#endif
-
-/* ================================================================== */
-/* Conversions                                                        */
-/* ================================================================== */
-
-/* ------------------------------------------------------------------ */
-/* from-int32 -- conversion from Int or uInt                          */
-/*                                                                    */
-/*  dn is the decNumber to receive the integer                        */
-/*  in or uin is the integer to be converted                          */
-/*  returns dn                                                        */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromInt32(decNumber *dn, Int in) {
-  uInt unsig;
-  if (in>=0) unsig=in;
-   else {                               /* negative (possibly BADINT)  */
-    if (in==BADINT) unsig=(uInt)1073741824*2; /* special case  */
-     else unsig=-in;                    /* invert  */
-    }
-  /* in is now positive  */
-  uprv_decNumberFromUInt32(dn, unsig);
-  if (in<0) dn->bits=DECNEG;            /* sign needed  */
-  return dn;
-  } /* decNumberFromInt32  */
-
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromUInt32(decNumber *dn, uInt uin) {
-  Unit *up;                             /* work pointer  */
-  uprv_decNumberZero(dn);                    /* clean  */
-  if (uin==0) return dn;                /* [or decGetDigits bad call]  */
-  for (up=dn->lsu; uin>0; up++) {
-    *up=(Unit)(uin%(DECDPUNMAX+1));
-    uin=uin/(DECDPUNMAX+1);
-    }
-  dn->digits=decGetDigits(dn->lsu, up-dn->lsu);
-  return dn;
-  } /* decNumberFromUInt32  */
-
-/* ------------------------------------------------------------------ */
-/* to-int32 -- conversion to Int or uInt                              */
-/*                                                                    */
-/*  dn is the decNumber to convert                                    */
-/*  set is the context for reporting errors                           */
-/*  returns the converted decNumber, or 0 if Invalid is set           */
-/*                                                                    */
-/* Invalid is set if the decNumber does not have exponent==0 or if    */
-/* it is a NaN, Infinite, or out-of-range.                            */
-/* ------------------------------------------------------------------ */
-U_CAPI Int U_EXPORT2 uprv_decNumberToInt32(const decNumber *dn, decContext *set) {
-  #if DECCHECK
-  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, set)) return 0;
-  #endif
-
-  /* special or too many digits, or bad exponent  */
-  if (dn->bits&DECSPECIAL || dn->digits>10 || dn->exponent!=0) ; /* bad  */
-   else { /* is a finite integer with 10 or fewer digits  */
-    Int d;                         /* work  */
-    const Unit *up;                /* ..  */
-    uInt hi=0, lo;                 /* ..  */
-    up=dn->lsu;                    /* -> lsu  */
-    lo=*up;                        /* get 1 to 9 digits  */
-    #if DECDPUN>1                  /* split to higher  */
-      hi=lo/10;
-      lo=lo%10;
-    #endif
-    up++;
-    /* collect remaining Units, if any, into hi  */
-    for (d=DECDPUN; d<dn->digits; up++, d+=DECDPUN) hi+=*up*powers[d-1];
-    /* now low has the lsd, hi the remainder  */
-    if (hi>214748364 || (hi==214748364 && lo>7)) { /* out of range?  */
-      /* most-negative is a reprieve  */
-      if (dn->bits&DECNEG && hi==214748364 && lo==8) return 0x80000000;
-      /* bad -- drop through  */
-      }
-     else { /* in-range always  */
-      Int i=X10(hi)+lo;
-      if (dn->bits&DECNEG) return -i;
-      return i;
-      }
-    } /* integer  */
-  uprv_decContextSetStatus(set, DEC_Invalid_operation); /* [may not return]  */
-  return 0;
-  } /* decNumberToInt32  */
-
-U_CAPI uInt U_EXPORT2 uprv_decNumberToUInt32(const decNumber *dn, decContext *set) {
-  #if DECCHECK
-  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, set)) return 0;
-  #endif
-  /* special or too many digits, or bad exponent, or negative (<0)  */
-  if (dn->bits&DECSPECIAL || dn->digits>10 || dn->exponent!=0
-    || (dn->bits&DECNEG && !ISZERO(dn)));                   /* bad  */
-   else { /* is a finite integer with 10 or fewer digits  */
-    Int d;                         /* work  */
-    const Unit *up;                /* ..  */
-    uInt hi=0, lo;                 /* ..  */
-    up=dn->lsu;                    /* -> lsu  */
-    lo=*up;                        /* get 1 to 9 digits  */
-    #if DECDPUN>1                  /* split to higher  */
-      hi=lo/10;
-      lo=lo%10;
-    #endif
-    up++;
-    /* collect remaining Units, if any, into hi  */
-    for (d=DECDPUN; d<dn->digits; up++, d+=DECDPUN) hi+=*up*powers[d-1];
-
-    /* now low has the lsd, hi the remainder  */
-    if (hi>429496729 || (hi==429496729 && lo>5)) ; /* no reprieve possible  */
-     else return X10(hi)+lo;
-    } /* integer  */
-  uprv_decContextSetStatus(set, DEC_Invalid_operation); /* [may not return]  */
-  return 0;
-  } /* decNumberToUInt32  */
-
-/* ------------------------------------------------------------------ */
-/* to-scientific-string -- conversion to numeric string               */
-/* to-engineering-string -- conversion to numeric string              */
-/*                                                                    */
-/*   decNumberToString(dn, string);                                   */
-/*   decNumberToEngString(dn, string);                                */
-/*                                                                    */
-/*  dn is the decNumber to convert                                    */
-/*  string is the string where the result will be laid out            */
-/*                                                                    */
-/*  string must be at least dn->digits+14 characters long             */
-/*                                                                    */
-/*  No error is possible, and no status can be set.                   */
-/* ------------------------------------------------------------------ */
-U_CAPI char * U_EXPORT2 uprv_decNumberToString(const decNumber *dn, char *string){
-  decToString(dn, string, 0);
-  return string;
-  } /* DecNumberToString  */
-
-U_CAPI char * U_EXPORT2 uprv_decNumberToEngString(const decNumber *dn, char *string){
-  decToString(dn, string, 1);
-  return string;
-  } /* DecNumberToEngString  */
-
-/* ------------------------------------------------------------------ */
-/* to-number -- conversion from numeric string                        */
-/*                                                                    */
-/* decNumberFromString -- convert string to decNumber                 */
-/*   dn        -- the number structure to fill                        */
-/*   chars[]   -- the string to convert ('\0' terminated)             */
-/*   set       -- the context used for processing any error,          */
-/*                determining the maximum precision available         */
-/*                (set.digits), determining the maximum and minimum   */
-/*                exponent (set.emax and set.emin), determining if    */
-/*                extended values are allowed, and checking the       */
-/*                rounding mode if overflow occurs or rounding is     */
-/*                needed.                                             */
-/*                                                                    */
-/* The length of the coefficient and the size of the exponent are     */
-/* checked by this routine, so the correct error (Underflow or        */
-/* Overflow) can be reported or rounding applied, as necessary.       */
-/*                                                                    */
-/* If bad syntax is detected, the result will be a quiet NaN.         */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char chars[],
-                                decContext *set) {
-  Int   exponent=0;                /* working exponent [assume 0]  */
-  uByte bits=0;                    /* working flags [assume +ve]  */
-  Unit  *res;                      /* where result will be built  */
-  Unit  resbuff[SD2U(DECBUFFER+9)];/* local buffer in case need temporary  */
-                                   /* [+9 allows for ln() constants]  */
-  Unit  *allocres=NULL;            /* -> allocated result, iff allocated  */
-  Int   d=0;                       /* count of digits found in decimal part  */
-  const char *dotchar=NULL;        /* where dot was found  */
-  const char *cfirst=chars;        /* -> first character of decimal part  */
-  const char *last=NULL;           /* -> last digit of decimal part  */
-  const char *c;                   /* work  */
-  Unit  *up;                       /* ..  */
-  #if DECDPUN>1
-  Int   cut, out;                  /* ..  */
-  #endif
-  Int   residue;                   /* rounding residue  */
-  uInt  status=0;                  /* error code  */
-
-  #if DECCHECK
-  if (decCheckOperands(DECUNRESU, DECUNUSED, DECUNUSED, set))
-    return uprv_decNumberZero(dn);
-  #endif
-
-  do {                             /* status & malloc protection  */
-    for (c=chars;; c++) {          /* -> input character  */
-      if (*c>='0' && *c<='9') {    /* test for Arabic digit  */
-        last=c;
-        d++;                       /* count of real digits  */
-        continue;                  /* still in decimal part  */
-        }
-      if (*c=='.' && dotchar==NULL) { /* first '.'  */
-        dotchar=c;                 /* record offset into decimal part  */
-        if (c==cfirst) cfirst++;   /* first digit must follow  */
-        continue;}
-      if (c==chars) {              /* first in string...  */
-        if (*c=='-') {             /* valid - sign  */
-          cfirst++;
-          bits=DECNEG;
-          continue;}
-        if (*c=='+') {             /* valid + sign  */
-          cfirst++;
-          continue;}
-        }
-      /* *c is not a digit, or a valid +, -, or '.'  */
-      break;
-      } /* c  */
-
-    if (last==NULL) {              /* no digits yet  */
-      status=DEC_Conversion_syntax;/* assume the worst  */
-      if (*c=='\0') break;         /* and no more to come...  */
-      #if DECSUBSET
-      /* if subset then infinities and NaNs are not allowed  */
-      if (!set->extended) break;   /* hopeless  */
-      #endif
-      /* Infinities and NaNs are possible, here  */
-      if (dotchar!=NULL) break;    /* .. unless had a dot  */
-      uprv_decNumberZero(dn);           /* be optimistic  */
-      if (decBiStr(c, "infinity", "INFINITY")
-       || decBiStr(c, "inf", "INF")) {
-        dn->bits=bits | DECINF;
-        status=0;                  /* is OK  */
-        break; /* all done  */
-        }
-      /* a NaN expected  */
-      /* 2003.09.10 NaNs are now permitted to have a sign  */
-      dn->bits=bits | DECNAN;      /* assume simple NaN  */
-      if (*c=='s' || *c=='S') {    /* looks like an sNaN  */
-        c++;
-        dn->bits=bits | DECSNAN;
-        }
-      if (*c!='n' && *c!='N') break;    /* check caseless "NaN"  */
-      c++;
-      if (*c!='a' && *c!='A') break;    /* ..  */
-      c++;
-      if (*c!='n' && *c!='N') break;    /* ..  */
-      c++;
-      /* now either nothing, or nnnn payload, expected  */
-      /* -> start of integer and skip leading 0s [including plain 0]  */
-      for (cfirst=c; *cfirst=='0';) cfirst++;
-      if (*cfirst=='\0') {         /* "NaN" or "sNaN", maybe with all 0s  */
-        status=0;                  /* it's good  */
-        break;                     /* ..  */
-        }
-      /* something other than 0s; setup last and d as usual [no dots]  */
-      for (c=cfirst;; c++, d++) {
-        if (*c<'0' || *c>'9') break; /* test for Arabic digit  */
-        last=c;
-        }
-      if (*c!='\0') break;         /* not all digits  */
-      if (d>set->digits-1) {
-        /* [NB: payload in a decNumber can be full length unless  */
-        /* clamped, in which case can only be digits-1]  */
-        if (set->clamp) break;
-        if (d>set->digits) break;
-        } /* too many digits?  */
-      /* good; drop through to convert the integer to coefficient  */
-      status=0;                    /* syntax is OK  */
-      bits=dn->bits;               /* for copy-back  */
-      } /* last==NULL  */
-
-     else if (*c!='\0') {          /* more to process...  */
-      /* had some digits; exponent is only valid sequence now  */
-      Flag nege;                   /* 1=negative exponent  */
-      const char *firstexp;        /* -> first significant exponent digit  */
-      status=DEC_Conversion_syntax;/* assume the worst  */
-      if (*c!='e' && *c!='E') break;
-      /* Found 'e' or 'E' -- now process explicit exponent */
-      /* 1998.07.11: sign no longer required  */
-      nege=0;
-      c++;                         /* to (possible) sign  */
-      if (*c=='-') {nege=1; c++;}
-       else if (*c=='+') c++;
-      if (*c=='\0') break;
-
-      for (; *c=='0' && *(c+1)!='\0';) c++;  /* strip insignificant zeros  */
-      firstexp=c;                            /* save exponent digit place  */
-      for (; ;c++) {
-        if (*c<'0' || *c>'9') break;         /* not a digit  */
-        exponent=X10(exponent)+(Int)*c-(Int)'0';
-        } /* c  */
-      /* if not now on a '\0', *c must not be a digit  */
-      if (*c!='\0') break;
-
-      /* (this next test must be after the syntax checks)  */
-      /* if it was too long the exponent may have wrapped, so check  */
-      /* carefully and set it to a certain overflow if wrap possible  */
-      if (c>=firstexp+9+1) {
-        if (c>firstexp+9+1 || *firstexp>'1') exponent=DECNUMMAXE*2;
-        /* [up to 1999999999 is OK, for example 1E-1000000998]  */
-        }
-      if (nege) exponent=-exponent;     /* was negative  */
-      status=0;                         /* is OK  */
-      } /* stuff after digits  */
-
-    /* Here when whole string has been inspected; syntax is good  */
-    /* cfirst->first digit (never dot), last->last digit (ditto)  */
-
-    /* strip leading zeros/dot [leave final 0 if all 0's]  */
-    if (*cfirst=='0') {                 /* [cfirst has stepped over .]  */
-      for (c=cfirst; c<last; c++, cfirst++) {
-        if (*c=='.') continue;          /* ignore dots  */
-        if (*c!='0') break;             /* non-zero found  */
-        d--;                            /* 0 stripped  */
-        } /* c  */
-      #if DECSUBSET
-      /* make a rapid exit for easy zeros if !extended  */
-      if (*cfirst=='0' && !set->extended) {
-        uprv_decNumberZero(dn);              /* clean result  */
-        break;                          /* [could be return]  */
-        }
-      #endif
-      } /* at least one leading 0  */
-
-    /* Handle decimal point...  */
-    if (dotchar!=NULL && dotchar<last)  /* non-trailing '.' found?  */
-      exponent-=(last-dotchar);         /* adjust exponent  */
-    /* [we can now ignore the .]  */
-
-    /* OK, the digits string is good.  Assemble in the decNumber, or in  */
-    /* a temporary units array if rounding is needed  */
-    if (d<=set->digits) res=dn->lsu;    /* fits into supplied decNumber  */
-     else {                             /* rounding needed  */
-      Int needbytes=D2U(d)*sizeof(Unit);/* bytes needed  */
-      res=resbuff;                      /* assume use local buffer  */
-      if (needbytes>(Int)sizeof(resbuff)) { /* too big for local  */
-        allocres=(Unit *)malloc(needbytes);
-        if (allocres==NULL) {status|=DEC_Insufficient_storage; break;}
-        res=allocres;
-        }
-      }
-    /* res now -> number lsu, buffer, or allocated storage for Unit array  */
-
-    /* Place the coefficient into the selected Unit array  */
-    /* [this is often 70% of the cost of this function when DECDPUN>1]  */
-    #if DECDPUN>1
-    out=0;                         /* accumulator  */
-    up=res+D2U(d)-1;               /* -> msu  */
-    cut=d-(up-res)*DECDPUN;        /* digits in top unit  */
-    for (c=cfirst;; c++) {         /* along the digits  */
-      if (*c=='.') continue;       /* ignore '.' [don't decrement cut]  */
-      out=X10(out)+(Int)*c-(Int)'0';
-      if (c==last) break;          /* done [never get to trailing '.']  */
-      cut--;
-      if (cut>0) continue;         /* more for this unit  */
-      *up=(Unit)out;               /* write unit  */
-      up--;                        /* prepare for unit below..  */
-      cut=DECDPUN;                 /* ..  */
-      out=0;                       /* ..  */
-      } /* c  */
-    *up=(Unit)out;                 /* write lsu  */
-
-    #else
-    /* DECDPUN==1  */
-    up=res;                        /* -> lsu  */
-    for (c=last; c>=cfirst; c--) { /* over each character, from least  */
-      if (*c=='.') continue;       /* ignore . [don't step up]  */
-      *up=(Unit)((Int)*c-(Int)'0');
-      up++;
-      } /* c  */
-    #endif
-
-    dn->bits=bits;
-    dn->exponent=exponent;
-    dn->digits=d;
-
-    /* if not in number (too long) shorten into the number  */
-    if (d>set->digits) {
-      residue=0;
-      decSetCoeff(dn, set, res, d, &residue, &status);
-      /* always check for overflow or subnormal and round as needed  */
-      decFinalize(dn, set, &residue, &status);
-      }
-     else { /* no rounding, but may still have overflow or subnormal  */
-      /* [these tests are just for performance; finalize repeats them]  */
-      if ((dn->exponent-1<set->emin-dn->digits)
-       || (dn->exponent-1>set->emax-set->digits)) {
-        residue=0;
-        decFinalize(dn, set, &residue, &status);
-        }
-      }
-    /* decNumberShow(dn);  */
-    } while(0);                         /* [for break]  */
-
-  if (allocres!=NULL) free(allocres);   /* drop any storage used  */
-  if (status!=0) decStatus(dn, status, set);
-  return dn;
-  } /* decNumberFromString */
-
-/* ================================================================== */
-/* Operators                                                          */
-/* ================================================================== */
-
-/* ------------------------------------------------------------------ */
-/* decNumberAbs -- absolute value operator                            */
-/*                                                                    */
-/*   This computes C = abs(A)                                         */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* See also decNumberCopyAbs for a quiet bitwise version of this.     */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-/* This has the same effect as decNumberPlus unless A is negative,    */
-/* in which case it has the same effect as decNumberMinus.            */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberAbs(decNumber *res, const decNumber *rhs,
-                         decContext *set) {
-  decNumber dzero;                      /* for 0  */
-  uInt status=0;                        /* accumulator  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  uprv_decNumberZero(&dzero);                /* set 0  */
-  dzero.exponent=rhs->exponent;         /* [no coefficient expansion]  */
-  decAddOp(res, &dzero, rhs, set, (uByte)(rhs->bits & DECNEG), &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberAbs  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberAdd -- add two Numbers                                    */
-/*                                                                    */
-/*   This computes C = A + B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X+X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-/* This just calls the routine shared with Subtract                   */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberAdd(decNumber *res, const decNumber *lhs,
-                         const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decAddOp(res, lhs, rhs, set, 0, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberAdd  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberAnd -- AND two Numbers, digitwise                         */
-/*                                                                    */
-/*   This computes C = A & B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X&X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context (used for result length and error report)     */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Logical function restrictions apply (see above); a NaN is          */
-/* returned with Invalid_operation if a restriction is violated.      */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberAnd(decNumber *res, const decNumber *lhs,
-                         const decNumber *rhs, decContext *set) {
-  const Unit *ua, *ub;                  /* -> operands  */
-  const Unit *msua, *msub;              /* -> operand msus  */
-  Unit *uc,  *msuc;                     /* -> result and its msu  */
-  Int   msudigs;                        /* digits in res msu  */
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  if (lhs->exponent!=0 || decNumberIsSpecial(lhs) || decNumberIsNegative(lhs)
-   || rhs->exponent!=0 || decNumberIsSpecial(rhs) || decNumberIsNegative(rhs)) {
-    decStatus(res, DEC_Invalid_operation, set);
-    return res;
-    }
-
-  /* operands are valid  */
-  ua=lhs->lsu;                          /* bottom-up  */
-  ub=rhs->lsu;                          /* ..  */
-  uc=res->lsu;                          /* ..  */
-  msua=ua+D2U(lhs->digits)-1;           /* -> msu of lhs  */
-  msub=ub+D2U(rhs->digits)-1;           /* -> msu of rhs  */
-  msuc=uc+D2U(set->digits)-1;           /* -> msu of result  */
-  msudigs=MSUDIGITS(set->digits);       /* [faster than remainder]  */
-  for (; uc<=msuc; ua++, ub++, uc++) {  /* Unit loop  */
-    Unit a, b;                          /* extract units  */
-    if (ua>msua) a=0;
-     else a=*ua;
-    if (ub>msub) b=0;
-     else b=*ub;
-    *uc=0;                              /* can now write back  */
-    if (a|b) {                          /* maybe 1 bits to examine  */
-      Int i, j;
-      *uc=0;                            /* can now write back  */
-      /* This loop could be unrolled and/or use BIN2BCD tables  */
-      for (i=0; i<DECDPUN; i++) {
-        if (a&b&1) *uc=*uc+(Unit)powers[i];  /* effect AND  */
-        j=a%10;
-        a=a/10;
-        j|=b%10;
-        b=b/10;
-        if (j>1) {
-          decStatus(res, DEC_Invalid_operation, set);
-          return res;
-          }
-        if (uc==msuc && i==msudigs-1) break; /* just did final digit  */
-        } /* each digit  */
-      } /* both OK  */
-    } /* each unit  */
-  /* [here uc-1 is the msu of the result]  */
-  res->digits=decGetDigits(res->lsu, uc-res->lsu);
-  res->exponent=0;                      /* integer  */
-  res->bits=0;                          /* sign=0  */
-  return res;  /* [no status to set]  */
-  } /* decNumberAnd  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberCompare -- compare two Numbers                            */
-/*                                                                    */
-/*   This computes C = A ? B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for one digit (or NaN).                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompare(decNumber *res, const decNumber *lhs,
-                             const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decCompareOp(res, lhs, rhs, set, COMPARE, &status);
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberCompare  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberCompareSignal -- compare, signalling on all NaNs          */
-/*                                                                    */
-/*   This computes C = A ? B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for one digit (or NaN).                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareSignal(decNumber *res, const decNumber *lhs,
-                                   const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decCompareOp(res, lhs, rhs, set, COMPSIG, &status);
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberCompareSignal  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberCompareTotal -- compare two Numbers, using total ordering */
-/*                                                                    */
-/*   This computes C = A ? B, under total ordering                    */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for one digit; the result will always be one of  */
-/* -1, 0, or 1.                                                       */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotal(decNumber *res, const decNumber *lhs,
-                                  const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decCompareOp(res, lhs, rhs, set, COMPTOTAL, &status);
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberCompareTotal  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberCompareTotalMag -- compare, total ordering of magnitudes  */
-/*                                                                    */
-/*   This computes C = |A| ? |B|, under total ordering                */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for one digit; the result will always be one of  */
-/* -1, 0, or 1.                                                       */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *res, const decNumber *lhs,
-                                     const decNumber *rhs, decContext *set) {
-  uInt status=0;                   /* accumulator  */
-  uInt needbytes;                  /* for space calculations  */
-  decNumber bufa[D2N(DECBUFFER+1)];/* +1 in case DECBUFFER=0  */
-  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
-  decNumber bufb[D2N(DECBUFFER+1)];
-  decNumber *allocbufb=NULL;       /* -> allocated bufb, iff allocated  */
-  decNumber *a, *b;                /* temporary pointers  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  do {                                  /* protect allocated storage  */
-    /* if either is negative, take a copy and absolute  */
-    if (decNumberIsNegative(lhs)) {     /* lhs<0  */
-      a=bufa;
-      needbytes=sizeof(decNumber)+(D2U(lhs->digits)-1)*sizeof(Unit);
-      if (needbytes>sizeof(bufa)) {     /* need malloc space  */
-        allocbufa=(decNumber *)malloc(needbytes);
-        if (allocbufa==NULL) {          /* hopeless -- abandon  */
-          status|=DEC_Insufficient_storage;
-          break;}
-        a=allocbufa;                    /* use the allocated space  */
-        }
-      uprv_decNumberCopy(a, lhs);            /* copy content  */
-      a->bits&=~DECNEG;                 /* .. and clear the sign  */
-      lhs=a;                            /* use copy from here on  */
-      }
-    if (decNumberIsNegative(rhs)) {     /* rhs<0  */
-      b=bufb;
-      needbytes=sizeof(decNumber)+(D2U(rhs->digits)-1)*sizeof(Unit);
-      if (needbytes>sizeof(bufb)) {     /* need malloc space  */
-        allocbufb=(decNumber *)malloc(needbytes);
-        if (allocbufb==NULL) {          /* hopeless -- abandon  */
-          status|=DEC_Insufficient_storage;
-          break;}
-        b=allocbufb;                    /* use the allocated space  */
-        }
-      uprv_decNumberCopy(b, rhs);            /* copy content  */
-      b->bits&=~DECNEG;                 /* .. and clear the sign  */
-      rhs=b;                            /* use copy from here on  */
-      }
-    decCompareOp(res, lhs, rhs, set, COMPTOTAL, &status);
-    } while(0);                         /* end protected  */
-
-  if (allocbufa!=NULL) free(allocbufa); /* drop any storage used  */
-  if (allocbufb!=NULL) free(allocbufb); /* ..  */
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberCompareTotalMag  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberDivide -- divide one number by another                    */
-/*                                                                    */
-/*   This computes C = A / B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X/X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberDivide(decNumber *res, const decNumber *lhs,
-                            const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decDivideOp(res, lhs, rhs, set, DIVIDE, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberDivide  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberDivideInteger -- divide and return integer quotient       */
-/*                                                                    */
-/*   This computes C = A # B, where # is the integer divide operator  */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X#X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberDivideInteger(decNumber *res, const decNumber *lhs,
-                                   const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decDivideOp(res, lhs, rhs, set, DIVIDEINT, &status);
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberDivideInteger  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberExp -- exponentiation                                     */
-/*                                                                    */
-/*   This computes C = exp(A)                                         */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context; note that rounding mode has no effect        */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Mathematical function restrictions apply (see above); a NaN is     */
-/* returned with Invalid_operation if a restriction is violated.      */
-/*                                                                    */
-/* Finite results will always be full precision and Inexact, except   */
-/* when A is a zero or -Infinity (giving 1 or 0 respectively).        */
-/*                                                                    */
-/* An Inexact result is rounded using DEC_ROUND_HALF_EVEN; it will    */
-/* almost always be correctly rounded, but may be up to 1 ulp in      */
-/* error in rare cases.                                               */
-/* ------------------------------------------------------------------ */
-/* This is a wrapper for decExpOp which can handle the slightly wider */
-/* (double) range needed by Ln (which has to be able to calculate     */
-/* exp(-a) where a can be the tiniest number (Ntiny).                 */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberExp(decNumber *res, const decNumber *rhs,
-                         decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  #if DECSUBSET
-  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
-  #endif
-
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  /* Check restrictions; these restrictions ensure that if h=8 (see  */
-  /* decExpOp) then the result will either overflow or underflow to 0.  */
-  /* Other math functions restrict the input range, too, for inverses.  */
-  /* If not violated then carry out the operation.  */
-  if (!decCheckMath(rhs, set, &status)) do { /* protect allocation  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operand and set lostDigits status, as needed  */
-      if (rhs->digits>set->digits) {
-        allocrhs=decRoundOperand(rhs, set, &status);
-        if (allocrhs==NULL) break;
-        rhs=allocrhs;
-        }
-      }
-    #endif
-    decExpOp(res, rhs, set, &status);
-    } while(0);                         /* end protected  */
-
-  #if DECSUBSET
-  if (allocrhs !=NULL) free(allocrhs);  /* drop any storage used  */
-  #endif
-  /* apply significant status  */
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberExp  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberFMA -- fused multiply add                                 */
-/*                                                                    */
-/*   This computes D = (A * B) + C with only one rounding             */
-/*                                                                    */
-/*   res is D, the result.  D may be A or B or C (e.g., X=FMA(X,X,X)) */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   fhs is C [far hand side]                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* Mathematical function restrictions apply (see above); a NaN is     */
-/* returned with Invalid_operation if a restriction is violated.      */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberFMA(decNumber *res, const decNumber *lhs,
-                         const decNumber *rhs, const decNumber *fhs,
-                         decContext *set) {
-  uInt status=0;                   /* accumulator  */
-  decContext dcmul;                /* context for the multiplication  */
-  uInt needbytes;                  /* for space calculations  */
-  decNumber bufa[D2N(DECBUFFER*2+1)];
-  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
-  decNumber *acc;                  /* accumulator pointer  */
-  decNumber dzero;                 /* work  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  if (decCheckOperands(res, fhs, DECUNUSED, set)) return res;
-  #endif
-
-  do {                                  /* protect allocated storage  */
-    #if DECSUBSET
-    if (!set->extended) {               /* [undefined if subset]  */
-      status|=DEC_Invalid_operation;
-      break;}
-    #endif
-    /* Check math restrictions [these ensure no overflow or underflow]  */
-    if ((!decNumberIsSpecial(lhs) && decCheckMath(lhs, set, &status))
-     || (!decNumberIsSpecial(rhs) && decCheckMath(rhs, set, &status))
-     || (!decNumberIsSpecial(fhs) && decCheckMath(fhs, set, &status))) break;
-    /* set up context for multiply  */
-    dcmul=*set;
-    dcmul.digits=lhs->digits+rhs->digits; /* just enough  */
-    /* [The above may be an over-estimate for subset arithmetic, but that's OK]  */
-    dcmul.emax=DEC_MAX_EMAX;            /* effectively unbounded ..  */
-    dcmul.emin=DEC_MIN_EMIN;            /* [thanks to Math restrictions]  */
-    /* set up decNumber space to receive the result of the multiply  */
-    acc=bufa;                           /* may fit  */
-    needbytes=sizeof(decNumber)+(D2U(dcmul.digits)-1)*sizeof(Unit);
-    if (needbytes>sizeof(bufa)) {       /* need malloc space  */
-      allocbufa=(decNumber *)malloc(needbytes);
-      if (allocbufa==NULL) {            /* hopeless -- abandon  */
-        status|=DEC_Insufficient_storage;
-        break;}
-      acc=allocbufa;                    /* use the allocated space  */
-      }
-    /* multiply with extended range and necessary precision  */
-    /*printf("emin=%ld\n", dcmul.emin);  */
-    decMultiplyOp(acc, lhs, rhs, &dcmul, &status);
-    /* Only Invalid operation (from sNaN or Inf * 0) is possible in  */
-    /* status; if either is seen than ignore fhs (in case it is  */
-    /* another sNaN) and set acc to NaN unless we had an sNaN  */
-    /* [decMultiplyOp leaves that to caller]  */
-    /* Note sNaN has to go through addOp to shorten payload if  */
-    /* necessary  */
-    if ((status&DEC_Invalid_operation)!=0) {
-      if (!(status&DEC_sNaN)) {         /* but be true invalid  */
-        uprv_decNumberZero(res);             /* acc not yet set  */
-        res->bits=DECNAN;
-        break;
-        }
-      uprv_decNumberZero(&dzero);            /* make 0 (any non-NaN would do)  */
-      fhs=&dzero;                       /* use that  */
-      }
-    #if DECCHECK
-     else { /* multiply was OK  */
-      if (status!=0) printf("Status=%08lx after FMA multiply\n", (LI)status);
-      }
-    #endif
-    /* add the third operand and result -> res, and all is done  */
-    decAddOp(res, acc, fhs, set, 0, &status);
-    } while(0);                         /* end protected  */
-
-  if (allocbufa!=NULL) free(allocbufa); /* drop any storage used  */
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberFMA  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberInvert -- invert a Number, digitwise                      */
-/*                                                                    */
-/*   This computes C = ~A                                             */
-/*                                                                    */
-/*   res is C, the result.  C may be A (e.g., X=~X)                   */
-/*   rhs is A                                                         */
-/*   set is the context (used for result length and error report)     */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Logical function restrictions apply (see above); a NaN is          */
-/* returned with Invalid_operation if a restriction is violated.      */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberInvert(decNumber *res, const decNumber *rhs,
-                            decContext *set) {
-  const Unit *ua, *msua;                /* -> operand and its msu  */
-  Unit  *uc, *msuc;                     /* -> result and its msu  */
-  Int   msudigs;                        /* digits in res msu  */
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  if (rhs->exponent!=0 || decNumberIsSpecial(rhs) || decNumberIsNegative(rhs)) {
-    decStatus(res, DEC_Invalid_operation, set);
-    return res;
-    }
-  /* operand is valid  */
-  ua=rhs->lsu;                          /* bottom-up  */
-  uc=res->lsu;                          /* ..  */
-  msua=ua+D2U(rhs->digits)-1;           /* -> msu of rhs  */
-  msuc=uc+D2U(set->digits)-1;           /* -> msu of result  */
-  msudigs=MSUDIGITS(set->digits);       /* [faster than remainder]  */
-  for (; uc<=msuc; ua++, uc++) {        /* Unit loop  */
-    Unit a;                             /* extract unit  */
-    Int  i, j;                          /* work  */
-    if (ua>msua) a=0;
-     else a=*ua;
-    *uc=0;                              /* can now write back  */
-    /* always need to examine all bits in rhs  */
-    /* This loop could be unrolled and/or use BIN2BCD tables  */
-    for (i=0; i<DECDPUN; i++) {
-      if ((~a)&1) *uc=*uc+(Unit)powers[i];   /* effect INVERT  */
-      j=a%10;
-      a=a/10;
-      if (j>1) {
-        decStatus(res, DEC_Invalid_operation, set);
-        return res;
-        }
-      if (uc==msuc && i==msudigs-1) break;   /* just did final digit  */
-      } /* each digit  */
-    } /* each unit  */
-  /* [here uc-1 is the msu of the result]  */
-  res->digits=decGetDigits(res->lsu, uc-res->lsu);
-  res->exponent=0;                      /* integer  */
-  res->bits=0;                          /* sign=0  */
-  return res;  /* [no status to set]  */
-  } /* decNumberInvert  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberLn -- natural logarithm                                   */
-/*                                                                    */
-/*   This computes C = ln(A)                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context; note that rounding mode has no effect        */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Notable cases:                                                     */
-/*   A<0 -> Invalid                                                   */
-/*   A=0 -> -Infinity (Exact)                                         */
-/*   A=+Infinity -> +Infinity (Exact)                                 */
-/*   A=1 exactly -> 0 (Exact)                                         */
-/*                                                                    */
-/* Mathematical function restrictions apply (see above); a NaN is     */
-/* returned with Invalid_operation if a restriction is violated.      */
-/*                                                                    */
-/* An Inexact result is rounded using DEC_ROUND_HALF_EVEN; it will    */
-/* almost always be correctly rounded, but may be up to 1 ulp in      */
-/* error in rare cases.                                               */
-/* ------------------------------------------------------------------ */
-/* This is a wrapper for decLnOp which can handle the slightly wider  */
-/* (+11) range needed by Ln, Log10, etc. (which may have to be able   */
-/* to calculate at p+e+2).                                            */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberLn(decNumber *res, const decNumber *rhs,
-                        decContext *set) {
-  uInt status=0;                   /* accumulator  */
-  #if DECSUBSET
-  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
-  #endif
-
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  /* Check restrictions; this is a math function; if not violated  */
-  /* then carry out the operation.  */
-  if (!decCheckMath(rhs, set, &status)) do { /* protect allocation  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operand and set lostDigits status, as needed  */
-      if (rhs->digits>set->digits) {
-        allocrhs=decRoundOperand(rhs, set, &status);
-        if (allocrhs==NULL) break;
-        rhs=allocrhs;
-        }
-      /* special check in subset for rhs=0  */
-      if (ISZERO(rhs)) {                /* +/- zeros -> error  */
-        status|=DEC_Invalid_operation;
-        break;}
-      } /* extended=0  */
-    #endif
-    decLnOp(res, rhs, set, &status);
-    } while(0);                         /* end protected  */
-
-  #if DECSUBSET
-  if (allocrhs !=NULL) free(allocrhs);  /* drop any storage used  */
-  #endif
-  /* apply significant status  */
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberLn  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberLogB - get adjusted exponent, by 754 rules                */
-/*                                                                    */
-/*   This computes C = adjustedexponent(A)                            */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context, used only for digits and status              */
-/*                                                                    */
-/* C must have space for 10 digits (A might have 10**9 digits and     */
-/* an exponent of +999999999, or one digit and an exponent of         */
-/* -1999999999).                                                      */
-/*                                                                    */
-/* This returns the adjusted exponent of A after (in theory) padding  */
-/* with zeros on the right to set->digits digits while keeping the    */
-/* same value.  The exponent is not limited by emin/emax.             */
-/*                                                                    */
-/* Notable cases:                                                     */
-/*   A<0 -> Use |A|                                                   */
-/*   A=0 -> -Infinity (Division by zero)                              */
-/*   A=Infinite -> +Infinity (Exact)                                  */
-/*   A=1 exactly -> 0 (Exact)                                         */
-/*   NaNs are propagated as usual                                     */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberLogB(decNumber *res, const decNumber *rhs,
-                          decContext *set) {
-  uInt status=0;                   /* accumulator  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  /* NaNs as usual; Infinities return +Infinity; 0->oops  */
-  if (decNumberIsNaN(rhs)) decNaNs(res, rhs, NULL, set, &status);
-   else if (decNumberIsInfinite(rhs)) uprv_decNumberCopyAbs(res, rhs);
-   else if (decNumberIsZero(rhs)) {
-    uprv_decNumberZero(res);                 /* prepare for Infinity  */
-    res->bits=DECNEG|DECINF;            /* -Infinity  */
-    status|=DEC_Division_by_zero;       /* as per 754  */
-    }
-   else { /* finite non-zero  */
-    Int ae=rhs->exponent+rhs->digits-1; /* adjusted exponent  */
-    uprv_decNumberFromInt32(res, ae);        /* lay it out  */
-    }
-
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberLogB  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberLog10 -- logarithm in base 10                             */
-/*                                                                    */
-/*   This computes C = log10(A)                                       */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context; note that rounding mode has no effect        */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Notable cases:                                                     */
-/*   A<0 -> Invalid                                                   */
-/*   A=0 -> -Infinity (Exact)                                         */
-/*   A=+Infinity -> +Infinity (Exact)                                 */
-/*   A=10**n (if n is an integer) -> n (Exact)                        */
-/*                                                                    */
-/* Mathematical function restrictions apply (see above); a NaN is     */
-/* returned with Invalid_operation if a restriction is violated.      */
-/*                                                                    */
-/* An Inexact result is rounded using DEC_ROUND_HALF_EVEN; it will    */
-/* almost always be correctly rounded, but may be up to 1 ulp in      */
-/* error in rare cases.                                               */
-/* ------------------------------------------------------------------ */
-/* This calculates ln(A)/ln(10) using appropriate precision.  For     */
-/* ln(A) this is the max(p, rhs->digits + t) + 3, where p is the      */
-/* requested digits and t is the number of digits in the exponent     */
-/* (maximum 6).  For ln(10) it is p + 3; this is often handled by the */
-/* fastpath in decLnOp.  The final division is done to the requested  */
-/* precision.                                                         */
-/* ------------------------------------------------------------------ */
-#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Warray-bounds"
-#endif
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *res, const decNumber *rhs,
-                          decContext *set) {
-  uInt status=0, ignore=0;         /* status accumulators  */
-  uInt needbytes;                  /* for space calculations  */
-  Int p;                           /* working precision  */
-  Int t;                           /* digits in exponent of A  */
-
-  /* buffers for a and b working decimals  */
-  /* (adjustment calculator, same size)  */
-  decNumber bufa[D2N(DECBUFFER+2)];
-  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
-  decNumber *a=bufa;               /* temporary a  */
-  decNumber bufb[D2N(DECBUFFER+2)];
-  decNumber *allocbufb=NULL;       /* -> allocated bufb, iff allocated  */
-  decNumber *b=bufb;               /* temporary b  */
-  decNumber bufw[D2N(10)];         /* working 2-10 digit number  */
-  decNumber *w=bufw;               /* ..  */
-  #if DECSUBSET
-  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
-  #endif
-
-  decContext aset;                 /* working context  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  /* Check restrictions; this is a math function; if not violated  */
-  /* then carry out the operation.  */
-  if (!decCheckMath(rhs, set, &status)) do { /* protect malloc  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operand and set lostDigits status, as needed  */
-      if (rhs->digits>set->digits) {
-        allocrhs=decRoundOperand(rhs, set, &status);
-        if (allocrhs==NULL) break;
-        rhs=allocrhs;
-        }
-      /* special check in subset for rhs=0  */
-      if (ISZERO(rhs)) {                /* +/- zeros -> error  */
-        status|=DEC_Invalid_operation;
-        break;}
-      } /* extended=0  */
-    #endif
-
-    uprv_decContextDefault(&aset, DEC_INIT_DECIMAL64); /* clean context  */
-
-    /* handle exact powers of 10; only check if +ve finite  */
-    if (!(rhs->bits&(DECNEG|DECSPECIAL)) && !ISZERO(rhs)) {
-      Int residue=0;               /* (no residue)  */
-      uInt copystat=0;             /* clean status  */
-
-      /* round to a single digit...  */
-      aset.digits=1;
-      decCopyFit(w, rhs, &aset, &residue, &copystat); /* copy & shorten  */
-      /* if exact and the digit is 1, rhs is a power of 10  */
-      if (!(copystat&DEC_Inexact) && w->lsu[0]==1) {
-        /* the exponent, conveniently, is the power of 10; making  */
-        /* this the result needs a little care as it might not fit,  */
-        /* so first convert it into the working number, and then move  */
-        /* to res  */
-        uprv_decNumberFromInt32(w, w->exponent);
-        residue=0;
-        decCopyFit(res, w, set, &residue, &status); /* copy & round  */
-        decFinish(res, set, &residue, &status);     /* cleanup/set flags  */
-        break;
-        } /* not a power of 10  */
-      } /* not a candidate for exact  */
-
-    /* simplify the information-content calculation to use 'total  */
-    /* number of digits in a, including exponent' as compared to the  */
-    /* requested digits, as increasing this will only rarely cost an  */
-    /* iteration in ln(a) anyway  */
-    t=6;                                /* it can never be >6  */
-
-    /* allocate space when needed...  */
-    p=(rhs->digits+t>set->digits?rhs->digits+t:set->digits)+3;
-    needbytes=sizeof(decNumber)+(D2U(p)-1)*sizeof(Unit);
-    if (needbytes>sizeof(bufa)) {       /* need malloc space  */
-      allocbufa=(decNumber *)malloc(needbytes);
-      if (allocbufa==NULL) {            /* hopeless -- abandon  */
-        status|=DEC_Insufficient_storage;
-        break;}
-      a=allocbufa;                      /* use the allocated space  */
-      }
-    aset.digits=p;                      /* as calculated  */
-    aset.emax=DEC_MAX_MATH;             /* usual bounds  */
-    aset.emin=-DEC_MAX_MATH;            /* ..  */
-    aset.clamp=0;                       /* and no concrete format  */
-    decLnOp(a, rhs, &aset, &status);    /* a=ln(rhs)  */
-
-    /* skip the division if the result so far is infinite, NaN, or  */
-    /* zero, or there was an error; note NaN from sNaN needs copy  */
-    if (status&DEC_NaNs && !(status&DEC_sNaN)) break;
-    if (a->bits&DECSPECIAL || ISZERO(a)) {
-      uprv_decNumberCopy(res, a);            /* [will fit]  */
-      break;}
-
-    /* for ln(10) an extra 3 digits of precision are needed  */
-    p=set->digits+3;
-    needbytes=sizeof(decNumber)+(D2U(p)-1)*sizeof(Unit);
-    if (needbytes>sizeof(bufb)) {       /* need malloc space  */
-      allocbufb=(decNumber *)malloc(needbytes);
-      if (allocbufb==NULL) {            /* hopeless -- abandon  */
-        status|=DEC_Insufficient_storage;
-        break;}
-      b=allocbufb;                      /* use the allocated space  */
-      }
-    uprv_decNumberZero(w);                   /* set up 10...  */
-    #if DECDPUN==1
-    w->lsu[1]=1; w->lsu[0]=0;           /* ..  */
-    #else
-    w->lsu[0]=10;                       /* ..  */
-    #endif
-    w->digits=2;                        /* ..  */
-
-    aset.digits=p;
-    decLnOp(b, w, &aset, &ignore);      /* b=ln(10)  */
-
-    aset.digits=set->digits;            /* for final divide  */
-    decDivideOp(res, a, b, &aset, DIVIDE, &status); /* into result  */
-    } while(0);                         /* [for break]  */
-
-  if (allocbufa!=NULL) free(allocbufa); /* drop any storage used  */
-  if (allocbufb!=NULL) free(allocbufb); /* ..  */
-  #if DECSUBSET
-  if (allocrhs !=NULL) free(allocrhs);  /* ..  */
-  #endif
-  /* apply significant status  */
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberLog10  */
-#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
-#pragma GCC diagnostic pop
-#endif
-
-/* ------------------------------------------------------------------ */
-/* decNumberMax -- compare two Numbers and return the maximum         */
-/*                                                                    */
-/*   This computes C = A ? B, returning the maximum by 754 rules      */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberMax(decNumber *res, const decNumber *lhs,
-                         const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decCompareOp(res, lhs, rhs, set, COMPMAX, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberMax  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberMaxMag -- compare and return the maximum by magnitude     */
-/*                                                                    */
-/*   This computes C = A ? B, returning the maximum by 754 rules      */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberMaxMag(decNumber *res, const decNumber *lhs,
-                         const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decCompareOp(res, lhs, rhs, set, COMPMAXMAG, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberMaxMag  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberMin -- compare two Numbers and return the minimum         */
-/*                                                                    */
-/*   This computes C = A ? B, returning the minimum by 754 rules      */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberMin(decNumber *res, const decNumber *lhs,
-                         const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decCompareOp(res, lhs, rhs, set, COMPMIN, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberMin  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberMinMag -- compare and return the minimum by magnitude     */
-/*                                                                    */
-/*   This computes C = A ? B, returning the minimum by 754 rules      */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberMinMag(decNumber *res, const decNumber *lhs,
-                         const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decCompareOp(res, lhs, rhs, set, COMPMINMAG, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberMinMag  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberMinus -- prefix minus operator                            */
-/*                                                                    */
-/*   This computes C = 0 - A                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* See also decNumberCopyNegate for a quiet bitwise version of this.  */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-/* Simply use AddOp for the subtract, which will do the necessary.    */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberMinus(decNumber *res, const decNumber *rhs,
-                           decContext *set) {
-  decNumber dzero;
-  uInt status=0;                        /* accumulator  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  uprv_decNumberZero(&dzero);                /* make 0  */
-  dzero.exponent=rhs->exponent;         /* [no coefficient expansion]  */
-  decAddOp(res, &dzero, rhs, set, DECNEG, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberMinus  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberNextMinus -- next towards -Infinity                       */
-/*                                                                    */
-/*   This computes C = A - infinitesimal, rounded towards -Infinity   */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* This is a generalization of 754 NextDown.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberNextMinus(decNumber *res, const decNumber *rhs,
-                               decContext *set) {
-  decNumber dtiny;                           /* constant  */
-  decContext workset=*set;                   /* work  */
-  uInt status=0;                             /* accumulator  */
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  /* +Infinity is the special case  */
-  if ((rhs->bits&(DECINF|DECNEG))==DECINF) {
-    decSetMaxValue(res, set);                /* is +ve  */
-    /* there is no status to set  */
-    return res;
-    }
-  uprv_decNumberZero(&dtiny);                     /* start with 0  */
-  dtiny.lsu[0]=1;                            /* make number that is ..  */
-  dtiny.exponent=DEC_MIN_EMIN-1;             /* .. smaller than tiniest  */
-  workset.round=DEC_ROUND_FLOOR;
-  decAddOp(res, rhs, &dtiny, &workset, DECNEG, &status);
-  status&=DEC_Invalid_operation|DEC_sNaN;    /* only sNaN Invalid please  */
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberNextMinus  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberNextPlus -- next towards +Infinity                        */
-/*                                                                    */
-/*   This computes C = A + infinitesimal, rounded towards +Infinity   */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* This is a generalization of 754 NextUp.                            */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberNextPlus(decNumber *res, const decNumber *rhs,
-                              decContext *set) {
-  decNumber dtiny;                           /* constant  */
-  decContext workset=*set;                   /* work  */
-  uInt status=0;                             /* accumulator  */
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  /* -Infinity is the special case  */
-  if ((rhs->bits&(DECINF|DECNEG))==(DECINF|DECNEG)) {
-    decSetMaxValue(res, set);
-    res->bits=DECNEG;                        /* negative  */
-    /* there is no status to set  */
-    return res;
-    }
-  uprv_decNumberZero(&dtiny);                     /* start with 0  */
-  dtiny.lsu[0]=1;                            /* make number that is ..  */
-  dtiny.exponent=DEC_MIN_EMIN-1;             /* .. smaller than tiniest  */
-  workset.round=DEC_ROUND_CEILING;
-  decAddOp(res, rhs, &dtiny, &workset, 0, &status);
-  status&=DEC_Invalid_operation|DEC_sNaN;    /* only sNaN Invalid please  */
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberNextPlus  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberNextToward -- next towards rhs                            */
-/*                                                                    */
-/*   This computes C = A +/- infinitesimal, rounded towards           */
-/*   +/-Infinity in the direction of B, as per 754-1985 nextafter     */
-/*   modified during revision but dropped from 754-2008.              */
-/*                                                                    */
-/*   res is C, the result.  C may be A or B.                          */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* This is a generalization of 754-1985 NextAfter.                    */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberNextToward(decNumber *res, const decNumber *lhs,
-                                const decNumber *rhs, decContext *set) {
-  decNumber dtiny;                           /* constant  */
-  decContext workset=*set;                   /* work  */
-  Int result;                                /* ..  */
-  uInt status=0;                             /* accumulator  */
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs)) {
-    decNaNs(res, lhs, rhs, set, &status);
-    }
-   else { /* Is numeric, so no chance of sNaN Invalid, etc.  */
-    result=decCompare(lhs, rhs, 0);     /* sign matters  */
-    if (result==BADINT) status|=DEC_Insufficient_storage; /* rare  */
-     else { /* valid compare  */
-      if (result==0) uprv_decNumberCopySign(res, lhs, rhs); /* easy  */
-       else { /* differ: need NextPlus or NextMinus  */
-        uByte sub;                      /* add or subtract  */
-        if (result<0) {                 /* lhs<rhs, do nextplus  */
-          /* -Infinity is the special case  */
-          if ((lhs->bits&(DECINF|DECNEG))==(DECINF|DECNEG)) {
-            decSetMaxValue(res, set);
-            res->bits=DECNEG;           /* negative  */
-            return res;                 /* there is no status to set  */
-            }
-          workset.round=DEC_ROUND_CEILING;
-          sub=0;                        /* add, please  */
-          } /* plus  */
-         else {                         /* lhs>rhs, do nextminus  */
-          /* +Infinity is the special case  */
-          if ((lhs->bits&(DECINF|DECNEG))==DECINF) {
-            decSetMaxValue(res, set);
-            return res;                 /* there is no status to set  */
-            }
-          workset.round=DEC_ROUND_FLOOR;
-          sub=DECNEG;                   /* subtract, please  */
-          } /* minus  */
-        uprv_decNumberZero(&dtiny);          /* start with 0  */
-        dtiny.lsu[0]=1;                 /* make number that is ..  */
-        dtiny.exponent=DEC_MIN_EMIN-1;  /* .. smaller than tiniest  */
-        decAddOp(res, lhs, &dtiny, &workset, sub, &status); /* + or -  */
-        /* turn off exceptions if the result is a normal number  */
-        /* (including Nmin), otherwise let all status through  */
-        if (uprv_decNumberIsNormal(res, set)) status=0;
-        } /* unequal  */
-      } /* compare OK  */
-    } /* numeric  */
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberNextToward  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberOr -- OR two Numbers, digitwise                           */
-/*                                                                    */
-/*   This computes C = A | B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X|X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context (used for result length and error report)     */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Logical function restrictions apply (see above); a NaN is          */
-/* returned with Invalid_operation if a restriction is violated.      */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberOr(decNumber *res, const decNumber *lhs,
-                        const decNumber *rhs, decContext *set) {
-  const Unit *ua, *ub;                  /* -> operands  */
-  const Unit *msua, *msub;              /* -> operand msus  */
-  Unit  *uc, *msuc;                     /* -> result and its msu  */
-  Int   msudigs;                        /* digits in res msu  */
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  if (lhs->exponent!=0 || decNumberIsSpecial(lhs) || decNumberIsNegative(lhs)
-   || rhs->exponent!=0 || decNumberIsSpecial(rhs) || decNumberIsNegative(rhs)) {
-    decStatus(res, DEC_Invalid_operation, set);
-    return res;
-    }
-  /* operands are valid  */
-  ua=lhs->lsu;                          /* bottom-up  */
-  ub=rhs->lsu;                          /* ..  */
-  uc=res->lsu;                          /* ..  */
-  msua=ua+D2U(lhs->digits)-1;           /* -> msu of lhs  */
-  msub=ub+D2U(rhs->digits)-1;           /* -> msu of rhs  */
-  msuc=uc+D2U(set->digits)-1;           /* -> msu of result  */
-  msudigs=MSUDIGITS(set->digits);       /* [faster than remainder]  */
-  for (; uc<=msuc; ua++, ub++, uc++) {  /* Unit loop  */
-    Unit a, b;                          /* extract units  */
-    if (ua>msua) a=0;
-     else a=*ua;
-    if (ub>msub) b=0;
-     else b=*ub;
-    *uc=0;                              /* can now write back  */
-    if (a|b) {                          /* maybe 1 bits to examine  */
-      Int i, j;
-      /* This loop could be unrolled and/or use BIN2BCD tables  */
-      for (i=0; i<DECDPUN; i++) {
-        if ((a|b)&1) *uc=*uc+(Unit)powers[i];     /* effect OR  */
-        j=a%10;
-        a=a/10;
-        j|=b%10;
-        b=b/10;
-        if (j>1) {
-          decStatus(res, DEC_Invalid_operation, set);
-          return res;
-          }
-        if (uc==msuc && i==msudigs-1) break;      /* just did final digit  */
-        } /* each digit  */
-      } /* non-zero  */
-    } /* each unit  */
-  /* [here uc-1 is the msu of the result]  */
-  res->digits=decGetDigits(res->lsu, uc-res->lsu);
-  res->exponent=0;                      /* integer  */
-  res->bits=0;                          /* sign=0  */
-  return res;  /* [no status to set]  */
-  } /* decNumberOr  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberPlus -- prefix plus operator                              */
-/*                                                                    */
-/*   This computes C = 0 + A                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* See also decNumberCopy for a quiet bitwise version of this.        */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-/* This simply uses AddOp; Add will take fast path after preparing A. */
-/* Performance is a concern here, as this routine is often used to    */
-/* check operands and apply rounding and overflow/underflow testing.  */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberPlus(decNumber *res, const decNumber *rhs,
-                          decContext *set) {
-  decNumber dzero;
-  uInt status=0;                        /* accumulator  */
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  uprv_decNumberZero(&dzero);                /* make 0  */
-  dzero.exponent=rhs->exponent;         /* [no coefficient expansion]  */
-  decAddOp(res, &dzero, rhs, set, 0, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberPlus  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberMultiply -- multiply two Numbers                          */
-/*                                                                    */
-/*   This computes C = A x B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X+X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberMultiply(decNumber *res, const decNumber *lhs,
-                              const decNumber *rhs, decContext *set) {
-  uInt status=0;                   /* accumulator  */
-  decMultiplyOp(res, lhs, rhs, set, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberMultiply  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberPower -- raise a number to a power                        */
-/*                                                                    */
-/*   This computes C = A ** B                                         */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X**X)        */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Mathematical function restrictions apply (see above); a NaN is     */
-/* returned with Invalid_operation if a restriction is violated.      */
-/*                                                                    */
-/* However, if 1999999997<=B<=999999999 and B is an integer then the  */
-/* restrictions on A and the context are relaxed to the usual bounds, */
-/* for compatibility with the earlier (integer power only) version    */
-/* of this function.                                                  */
-/*                                                                    */
-/* When B is an integer, the result may be exact, even if rounded.    */
-/*                                                                    */
-/* The final result is rounded according to the context; it will      */
-/* almost always be correctly rounded, but may be up to 1 ulp in      */
-/* error in rare cases.                                               */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *res, const decNumber *lhs,
-                           const decNumber *rhs, decContext *set) {
-  #if DECSUBSET
-  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
-  decNumber *allocrhs=NULL;        /* .., rhs  */
-  #endif
-  decNumber *allocdac=NULL;        /* -> allocated acc buffer, iff used  */
-  decNumber *allocinv=NULL;        /* -> allocated 1/x buffer, iff used  */
-  Int   reqdigits=set->digits;     /* requested DIGITS  */
-  Int   n;                         /* rhs in binary  */
-  Flag  rhsint=0;                  /* 1 if rhs is an integer  */
-  Flag  useint=0;                  /* 1 if can use integer calculation  */
-  Flag  isoddint=0;                /* 1 if rhs is an integer and odd  */
-  Int   i;                         /* work  */
-  #if DECSUBSET
-  Int   dropped;                   /* ..  */
-  #endif
-  uInt  needbytes;                 /* buffer size needed  */
-  Flag  seenbit;                   /* seen a bit while powering  */
-  Int   residue=0;                 /* rounding residue  */
-  uInt  status=0;                  /* accumulators  */
-  uByte bits=0;                    /* result sign if errors  */
-  decContext aset;                 /* working context  */
-  decNumber dnOne;                 /* work value 1...  */
-  /* local accumulator buffer [a decNumber, with digits+elength+1 digits]  */
-  decNumber dacbuff[D2N(DECBUFFER+9)];
-  decNumber *dac=dacbuff;          /* -> result accumulator  */
-  /* same again for possible 1/lhs calculation  */
-  decNumber invbuff[D2N(DECBUFFER+9)];
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  do {                             /* protect allocated storage  */
-    #if DECSUBSET
-    if (!set->extended) { /* reduce operands and set status, as needed  */
-      if (lhs->digits>reqdigits) {
-        alloclhs=decRoundOperand(lhs, set, &status);
-        if (alloclhs==NULL) break;
-        lhs=alloclhs;
-        }
-      if (rhs->digits>reqdigits) {
-        allocrhs=decRoundOperand(rhs, set, &status);
-        if (allocrhs==NULL) break;
-        rhs=allocrhs;
-        }
-      }
-    #endif
-    /* [following code does not require input rounding]  */
-
-    /* handle NaNs and rhs Infinity (lhs infinity is harder)  */
-    if (SPECIALARGS) {
-      if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs)) { /* NaNs  */
-        decNaNs(res, lhs, rhs, set, &status);
-        break;}
-      if (decNumberIsInfinite(rhs)) {   /* rhs Infinity  */
-        Flag rhsneg=rhs->bits&DECNEG;   /* save rhs sign  */
-        if (decNumberIsNegative(lhs)    /* lhs<0  */
-         && !decNumberIsZero(lhs))      /* ..  */
-          status|=DEC_Invalid_operation;
-         else {                         /* lhs >=0  */
-          uprv_decNumberZero(&dnOne);        /* set up 1  */
-          dnOne.lsu[0]=1;
-          uprv_decNumberCompare(dac, lhs, &dnOne, set); /* lhs ? 1  */
-          uprv_decNumberZero(res);           /* prepare for 0/1/Infinity  */
-          if (decNumberIsNegative(dac)) {    /* lhs<1  */
-            if (rhsneg) res->bits|=DECINF;   /* +Infinity [else is +0]  */
-            }
-           else if (dac->lsu[0]==0) {        /* lhs=1  */
-            /* 1**Infinity is inexact, so return fully-padded 1.0000  */
-            Int shift=set->digits-1;
-            *res->lsu=1;                     /* was 0, make int 1  */
-            res->digits=decShiftToMost(res->lsu, 1, shift);
-            res->exponent=-shift;            /* make 1.0000...  */
-            status|=DEC_Inexact|DEC_Rounded; /* deemed inexact  */
-            }
-           else {                            /* lhs>1  */
-            if (!rhsneg) res->bits|=DECINF;  /* +Infinity [else is +0]  */
-            }
-          } /* lhs>=0  */
-        break;}
-      /* [lhs infinity drops through]  */
-      } /* specials  */
-
-    /* Original rhs may be an integer that fits and is in range  */
-    n=decGetInt(rhs);
-    if (n!=BADINT) {                    /* it is an integer  */
-      rhsint=1;                         /* record the fact for 1**n  */
-      isoddint=(Flag)n&1;               /* [works even if big]  */
-      if (n!=BIGEVEN && n!=BIGODD)      /* can use integer path?  */
-        useint=1;                       /* looks good  */
-      }
-
-    if (decNumberIsNegative(lhs)        /* -x ..  */
-      && isoddint) bits=DECNEG;         /* .. to an odd power  */
-
-    /* handle LHS infinity  */
-    if (decNumberIsInfinite(lhs)) {     /* [NaNs already handled]  */
-      uByte rbits=rhs->bits;            /* save  */
-      uprv_decNumberZero(res);               /* prepare  */
-      if (n==0) *res->lsu=1;            /* [-]Inf**0 => 1  */
-       else {
-        /* -Inf**nonint -> error  */
-        if (!rhsint && decNumberIsNegative(lhs)) {
-          status|=DEC_Invalid_operation;     /* -Inf**nonint is error  */
-          break;}
-        if (!(rbits & DECNEG)) bits|=DECINF; /* was not a **-n  */
-        /* [otherwise will be 0 or -0]  */
-        res->bits=bits;
-        }
-      break;}
-
-    /* similarly handle LHS zero  */
-    if (decNumberIsZero(lhs)) {
-      if (n==0) {                            /* 0**0 => Error  */
-        #if DECSUBSET
-        if (!set->extended) {                /* [unless subset]  */
-          uprv_decNumberZero(res);
-          *res->lsu=1;                       /* return 1  */
-          break;}
-        #endif
-        status|=DEC_Invalid_operation;
-        }
-       else {                                /* 0**x  */
-        uByte rbits=rhs->bits;               /* save  */
-        if (rbits & DECNEG) {                /* was a 0**(-n)  */
-          #if DECSUBSET
-          if (!set->extended) {              /* [bad if subset]  */
-            status|=DEC_Invalid_operation;
-            break;}
-          #endif
-          bits|=DECINF;
-          }
-        uprv_decNumberZero(res);                  /* prepare  */
-        /* [otherwise will be 0 or -0]  */
-        res->bits=bits;
-        }
-      break;}
-
-    /* here both lhs and rhs are finite; rhs==0 is handled in the  */
-    /* integer path.  Next handle the non-integer cases  */
-    if (!useint) {                      /* non-integral rhs  */
-      /* any -ve lhs is bad, as is either operand or context out of  */
-      /* bounds  */
-      if (decNumberIsNegative(lhs)) {
-        status|=DEC_Invalid_operation;
-        break;}
-      if (decCheckMath(lhs, set, &status)
-       || decCheckMath(rhs, set, &status)) break; /* variable status  */
-
-      uprv_decContextDefault(&aset, DEC_INIT_DECIMAL64); /* clean context  */
-      aset.emax=DEC_MAX_MATH;           /* usual bounds  */
-      aset.emin=-DEC_MAX_MATH;          /* ..  */
-      aset.clamp=0;                     /* and no concrete format  */
-
-      /* calculate the result using exp(ln(lhs)*rhs), which can  */
-      /* all be done into the accumulator, dac.  The precision needed  */
-      /* is enough to contain the full information in the lhs (which  */
-      /* is the total digits, including exponent), or the requested  */
-      /* precision, if larger, + 4; 6 is used for the exponent  */
-      /* maximum length, and this is also used when it is shorter  */
-      /* than the requested digits as it greatly reduces the >0.5 ulp  */
-      /* cases at little cost (because Ln doubles digits each  */
-      /* iteration so a few extra digits rarely causes an extra  */
-      /* iteration)  */
-      aset.digits=MAXI(lhs->digits, set->digits)+6+4;
-      } /* non-integer rhs  */
-
-     else { /* rhs is in-range integer  */
-      if (n==0) {                       /* x**0 = 1  */
-        /* (0**0 was handled above)  */
-        uprv_decNumberZero(res);             /* result=1  */
-        *res->lsu=1;                    /* ..  */
-        break;}
-      /* rhs is a non-zero integer  */
-      if (n<0) n=-n;                    /* use abs(n)  */
-
-      aset=*set;                        /* clone the context  */
-      aset.round=DEC_ROUND_HALF_EVEN;   /* internally use balanced  */
-      /* calculate the working DIGITS  */
-      aset.digits=reqdigits+(rhs->digits+rhs->exponent)+2;
-      #if DECSUBSET
-      if (!set->extended) aset.digits--;     /* use classic precision  */
-      #endif
-      /* it's an error if this is more than can be handled  */
-      if (aset.digits>DECNUMMAXP) {status|=DEC_Invalid_operation; break;}
-      } /* integer path  */
-
-    /* aset.digits is the count of digits for the accumulator needed  */
-    /* if accumulator is too long for local storage, then allocate  */
-    needbytes=sizeof(decNumber)+(D2U(aset.digits)-1)*sizeof(Unit);
-    /* [needbytes also used below if 1/lhs needed]  */
-    if (needbytes>sizeof(dacbuff)) {
-      allocdac=(decNumber *)malloc(needbytes);
-      if (allocdac==NULL) {   /* hopeless -- abandon  */
-        status|=DEC_Insufficient_storage;
-        break;}
-      dac=allocdac;           /* use the allocated space  */
-      }
-    /* here, aset is set up and accumulator is ready for use  */
-
-    if (!useint) {                           /* non-integral rhs  */
-      /* x ** y; special-case x=1 here as it will otherwise always  */
-      /* reduce to integer 1; decLnOp has a fastpath which detects  */
-      /* the case of x=1  */
-      decLnOp(dac, lhs, &aset, &status);     /* dac=ln(lhs)  */
-      /* [no error possible, as lhs 0 already handled]  */
-      if (ISZERO(dac)) {                     /* x==1, 1.0, etc.  */
-        /* need to return fully-padded 1.0000 etc., but rhsint->1  */
-        *dac->lsu=1;                         /* was 0, make int 1  */
-        if (!rhsint) {                       /* add padding  */
-          Int shift=set->digits-1;
-          dac->digits=decShiftToMost(dac->lsu, 1, shift);
-          dac->exponent=-shift;              /* make 1.0000...  */
-          status|=DEC_Inexact|DEC_Rounded;   /* deemed inexact  */
-          }
-        }
-       else {
-        decMultiplyOp(dac, dac, rhs, &aset, &status);  /* dac=dac*rhs  */
-        decExpOp(dac, dac, &aset, &status);            /* dac=exp(dac)  */
-        }
-      /* and drop through for final rounding  */
-      } /* non-integer rhs  */
-
-     else {                             /* carry on with integer  */
-      uprv_decNumberZero(dac);               /* acc=1  */
-      *dac->lsu=1;                      /* ..  */
-
-      /* if a negative power the constant 1 is needed, and if not subset  */
-      /* invert the lhs now rather than inverting the result later  */
-      if (decNumberIsNegative(rhs)) {   /* was a **-n [hence digits>0]  */
-        decNumber *inv=invbuff;         /* asssume use fixed buffer  */
-        uprv_decNumberCopy(&dnOne, dac);     /* dnOne=1;  [needed now or later]  */
-        #if DECSUBSET
-        if (set->extended) {            /* need to calculate 1/lhs  */
-        #endif
-          /* divide lhs into 1, putting result in dac [dac=1/dac]  */
-          decDivideOp(dac, &dnOne, lhs, &aset, DIVIDE, &status);
-          /* now locate or allocate space for the inverted lhs  */
-          if (needbytes>sizeof(invbuff)) {
-            allocinv=(decNumber *)malloc(needbytes);
-            if (allocinv==NULL) {       /* hopeless -- abandon  */
-              status|=DEC_Insufficient_storage;
-              break;}
-            inv=allocinv;               /* use the allocated space  */
-            }
-          /* [inv now points to big-enough buffer or allocated storage]  */
-          uprv_decNumberCopy(inv, dac);      /* copy the 1/lhs  */
-          uprv_decNumberCopy(dac, &dnOne);   /* restore acc=1  */
-          lhs=inv;                      /* .. and go forward with new lhs  */
-        #if DECSUBSET
-          }
-        #endif
-        }
-
-      /* Raise-to-the-power loop...  */
-      seenbit=0;                   /* set once a 1-bit is encountered  */
-      for (i=1;;i++){              /* for each bit [top bit ignored]  */
-        /* abandon if had overflow or terminal underflow  */
-        if (status & (DEC_Overflow|DEC_Underflow)) { /* interesting?  */
-          if (status&DEC_Overflow || ISZERO(dac)) break;
-          }
-        /* [the following two lines revealed an optimizer bug in a C++  */
-        /* compiler, with symptom: 5**3 -> 25, when n=n+n was used]  */
-        n=n<<1;                    /* move next bit to testable position  */
-        if (n<0) {                 /* top bit is set  */
-          seenbit=1;               /* OK, significant bit seen  */
-          decMultiplyOp(dac, dac, lhs, &aset, &status); /* dac=dac*x  */
-          }
-        if (i==31) break;          /* that was the last bit  */
-        if (!seenbit) continue;    /* no need to square 1  */
-        decMultiplyOp(dac, dac, dac, &aset, &status); /* dac=dac*dac [square]  */
-        } /*i*/ /* 32 bits  */
-
-      /* complete internal overflow or underflow processing  */
-      if (status & (DEC_Overflow|DEC_Underflow)) {
-        #if DECSUBSET
-        /* If subset, and power was negative, reverse the kind of -erflow  */
-        /* [1/x not yet done]  */
-        if (!set->extended && decNumberIsNegative(rhs)) {
-          if (status & DEC_Overflow)
-            status^=DEC_Overflow | DEC_Underflow | DEC_Subnormal;
-           else { /* trickier -- Underflow may or may not be set  */
-            status&=~(DEC_Underflow | DEC_Subnormal); /* [one or both]  */
-            status|=DEC_Overflow;
-            }
-          }
-        #endif
-        dac->bits=(dac->bits & ~DECNEG) | bits; /* force correct sign  */
-        /* round subnormals [to set.digits rather than aset.digits]  */
-        /* or set overflow result similarly as required  */
-        decFinalize(dac, set, &residue, &status);
-        uprv_decNumberCopy(res, dac);   /* copy to result (is now OK length)  */
-        break;
-        }
-
-      #if DECSUBSET
-      if (!set->extended &&                  /* subset math  */
-          decNumberIsNegative(rhs)) {        /* was a **-n [hence digits>0]  */
-        /* so divide result into 1 [dac=1/dac]  */
-        decDivideOp(dac, &dnOne, dac, &aset, DIVIDE, &status);
-        }
-      #endif
-      } /* rhs integer path  */
-
-    /* reduce result to the requested length and copy to result  */
-    decCopyFit(res, dac, set, &residue, &status);
-    decFinish(res, set, &residue, &status);  /* final cleanup  */
-    #if DECSUBSET
-    if (!set->extended) decTrim(res, set, 0, 1, &dropped); /* trailing zeros  */
-    #endif
-    } while(0);                         /* end protected  */
-
-  if (allocdac!=NULL) free(allocdac);   /* drop any storage used  */
-  if (allocinv!=NULL) free(allocinv);   /* ..  */
-  #if DECSUBSET
-  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
-  if (allocrhs!=NULL) free(allocrhs);   /* ..  */
-  #endif
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberPower  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberQuantize -- force exponent to requested value             */
-/*                                                                    */
-/*   This computes C = op(A, B), where op adjusts the coefficient     */
-/*   of C (by rounding or shifting) such that the exponent (-scale)   */
-/*   of C has exponent of B.  The numerical value of C will equal A,  */
-/*   except for the effects of any rounding that occurred.            */
-/*                                                                    */
-/*   res is C, the result.  C may be A or B                           */
-/*   lhs is A, the number to adjust                                   */
-/*   rhs is B, the number with exponent to match                      */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Unless there is an error or the result is infinite, the exponent   */
-/* after the operation is guaranteed to be equal to that of B.        */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberQuantize(decNumber *res, const decNumber *lhs,
-                              const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decQuantizeOp(res, lhs, rhs, set, 1, &status);
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberQuantize  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberReduce -- remove trailing zeros                           */
-/*                                                                    */
-/*   This computes C = 0 + A, and normalizes the result               */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-/* Previously known as Normalize  */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberNormalize(decNumber *res, const decNumber *rhs,
-                               decContext *set) {
-  return uprv_decNumberReduce(res, rhs, set);
-  } /* decNumberNormalize  */
-
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *res, const decNumber *rhs,
-                            decContext *set) {
-  #if DECSUBSET
-  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
-  #endif
-  uInt status=0;                   /* as usual  */
-  Int  residue=0;                  /* as usual  */
-  Int  dropped;                    /* work  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  do {                             /* protect allocated storage  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operand and set lostDigits status, as needed  */
-      if (rhs->digits>set->digits) {
-        allocrhs=decRoundOperand(rhs, set, &status);
-        if (allocrhs==NULL) break;
-        rhs=allocrhs;
-        }
-      }
-    #endif
-    /* [following code does not require input rounding]  */
-
-    /* Infinities copy through; NaNs need usual treatment  */
-    if (decNumberIsNaN(rhs)) {
-      decNaNs(res, rhs, NULL, set, &status);
-      break;
-      }
-
-    /* reduce result to the requested length and copy to result  */
-    decCopyFit(res, rhs, set, &residue, &status); /* copy & round  */
-    decFinish(res, set, &residue, &status);       /* cleanup/set flags  */
-    decTrim(res, set, 1, 0, &dropped);            /* normalize in place  */
-                                                  /* [may clamp]  */
-    } while(0);                              /* end protected  */
-
-  #if DECSUBSET
-  if (allocrhs !=NULL) free(allocrhs);       /* ..  */
-  #endif
-  if (status!=0) decStatus(res, status, set);/* then report status  */
-  return res;
-  } /* decNumberReduce  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberRescale -- force exponent to requested value              */
-/*                                                                    */
-/*   This computes C = op(A, B), where op adjusts the coefficient     */
-/*   of C (by rounding or shifting) such that the exponent (-scale)   */
-/*   of C has the value B.  The numerical value of C will equal A,    */
-/*   except for the effects of any rounding that occurred.            */
-/*                                                                    */
-/*   res is C, the result.  C may be A or B                           */
-/*   lhs is A, the number to adjust                                   */
-/*   rhs is B, the requested exponent                                 */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Unless there is an error or the result is infinite, the exponent   */
-/* after the operation is guaranteed to be equal to B.                */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberRescale(decNumber *res, const decNumber *lhs,
-                             const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decQuantizeOp(res, lhs, rhs, set, 0, &status);
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberRescale  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberRemainder -- divide and return remainder                  */
-/*                                                                    */
-/*   This computes C = A % B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X%X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberRemainder(decNumber *res, const decNumber *lhs,
-                               const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decDivideOp(res, lhs, rhs, set, REMAINDER, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberRemainder  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberRemainderNear -- divide and return remainder from nearest */
-/*                                                                    */
-/*   This computes C = A % B, where % is the IEEE remainder operator  */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X%X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberRemainderNear(decNumber *res, const decNumber *lhs,
-                                   const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-  decDivideOp(res, lhs, rhs, set, REMNEAR, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberRemainderNear  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberRotate -- rotate the coefficient of a Number left/right   */
-/*                                                                    */
-/*   This computes C = A rot B  (in base ten and rotating set->digits */
-/*   digits).                                                         */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=XrotX)       */
-/*   lhs is A                                                         */
-/*   rhs is B, the number of digits to rotate (-ve to right)          */
-/*   set is the context                                               */
-/*                                                                    */
-/* The digits of the coefficient of A are rotated to the left (if B   */
-/* is positive) or to the right (if B is negative) without adjusting  */
-/* the exponent or the sign of A.  If lhs->digits is less than        */
-/* set->digits the coefficient is padded with zeros on the left       */
-/* before the rotate.  Any leading zeros in the result are removed    */
-/* as usual.                                                          */
-/*                                                                    */
-/* B must be an integer (q=0) and in the range -set->digits through   */
-/* +set->digits.                                                      */
-/* C must have space for set->digits digits.                          */
-/* NaNs are propagated as usual.  Infinities are unaffected (but      */
-/* B must be valid).  No status is set unless B is invalid or an      */
-/* operand is an sNaN.                                                */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberRotate(decNumber *res, const decNumber *lhs,
-                           const decNumber *rhs, decContext *set) {
-  uInt status=0;              /* accumulator  */
-  Int  rotate;                /* rhs as an Int  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  /* NaNs propagate as normal  */
-  if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs))
-    decNaNs(res, lhs, rhs, set, &status);
-   /* rhs must be an integer  */
-   else if (decNumberIsInfinite(rhs) || rhs->exponent!=0)
-    status=DEC_Invalid_operation;
-   else { /* both numeric, rhs is an integer  */
-    rotate=decGetInt(rhs);                   /* [cannot fail]  */
-    if (rotate==BADINT                       /* something bad ..  */
-     || rotate==BIGODD || rotate==BIGEVEN    /* .. very big ..  */
-     || abs(rotate)>set->digits)             /* .. or out of range  */
-      status=DEC_Invalid_operation;
-     else {                                  /* rhs is OK  */
-      uprv_decNumberCopy(res, lhs);
-      /* convert -ve rotate to equivalent positive rotation  */
-      if (rotate<0) rotate=set->digits+rotate;
-      if (rotate!=0 && rotate!=set->digits   /* zero or full rotation  */
-       && !decNumberIsInfinite(res)) {       /* lhs was infinite  */
-        /* left-rotate to do; 0 < rotate < set->digits  */
-        uInt units, shift;                   /* work  */
-        uInt msudigits;                      /* digits in result msu  */
-        Unit *msu=res->lsu+D2U(res->digits)-1;    /* current msu  */
-        Unit *msumax=res->lsu+D2U(set->digits)-1; /* rotation msu  */
-        for (msu++; msu<=msumax; msu++) *msu=0;   /* ensure high units=0  */
-        res->digits=set->digits;                  /* now full-length  */
-        msudigits=MSUDIGITS(res->digits);         /* actual digits in msu  */
-
-        /* rotation here is done in-place, in three steps  */
-        /* 1. shift all to least up to one unit to unit-align final  */
-        /*    lsd [any digits shifted out are rotated to the left,  */
-        /*    abutted to the original msd (which may require split)]  */
-        /*  */
-        /*    [if there are no whole units left to rotate, the  */
-        /*    rotation is now complete]  */
-        /*  */
-        /* 2. shift to least, from below the split point only, so that  */
-        /*    the final msd is in the right place in its Unit [any  */
-        /*    digits shifted out will fit exactly in the current msu,  */
-        /*    left aligned, no split required]  */
-        /*  */
-        /* 3. rotate all the units by reversing left part, right  */
-        /*    part, and then whole  */
-        /*  */
-        /* example: rotate right 8 digits (2 units + 2), DECDPUN=3.  */
-        /*  */
-        /*   start: 00a bcd efg hij klm npq  */
-        /*  */
-        /*      1a  000 0ab cde fgh|ijk lmn [pq saved]  */
-        /*      1b  00p qab cde fgh|ijk lmn  */
-        /*  */
-        /*      2a  00p qab cde fgh|00i jkl [mn saved]  */
-        /*      2b  mnp qab cde fgh|00i jkl  */
-        /*  */
-        /*      3a  fgh cde qab mnp|00i jkl  */
-        /*      3b  fgh cde qab mnp|jkl 00i  */
-        /*      3c  00i jkl mnp qab cde fgh  */
-
-        /* Step 1: amount to shift is the partial right-rotate count  */
-        rotate=set->digits-rotate;      /* make it right-rotate  */
-        units=rotate/DECDPUN;           /* whole units to rotate  */
-        shift=rotate%DECDPUN;           /* left-over digits count  */
-        if (shift>0) {                  /* not an exact number of units  */
-          uInt save=res->lsu[0]%powers[shift];    /* save low digit(s)  */
-          decShiftToLeast(res->lsu, D2U(res->digits), shift);
-          if (shift>msudigits) {        /* msumax-1 needs >0 digits  */
-            uInt rem=save%powers[shift-msudigits];/* split save  */
-            *msumax=(Unit)(save/powers[shift-msudigits]); /* and insert  */
-            *(msumax-1)=*(msumax-1)
-                       +(Unit)(rem*powers[DECDPUN-(shift-msudigits)]); /* ..  */
-            }
-           else { /* all fits in msumax  */
-            *msumax=*msumax+(Unit)(save*powers[msudigits-shift]); /* [maybe *1]  */
-            }
-          } /* digits shift needed  */
-
-        /* If whole units to rotate...  */
-        if (units>0) {                  /* some to do  */
-          /* Step 2: the units to touch are the whole ones in rotate,  */
-          /*   if any, and the shift is DECDPUN-msudigits (which may be  */
-          /*   0, again)  */
-          shift=DECDPUN-msudigits;
-          if (shift>0) {                /* not an exact number of units  */
-            uInt save=res->lsu[0]%powers[shift];  /* save low digit(s)  */
-            decShiftToLeast(res->lsu, units, shift);
-            *msumax=*msumax+(Unit)(save*powers[msudigits]);
-            } /* partial shift needed  */
-
-          /* Step 3: rotate the units array using triple reverse  */
-          /* (reversing is easy and fast)  */
-          decReverse(res->lsu+units, msumax);     /* left part  */
-          decReverse(res->lsu, res->lsu+units-1); /* right part  */
-          decReverse(res->lsu, msumax);           /* whole  */
-          } /* whole units to rotate  */
-        /* the rotation may have left an undetermined number of zeros  */
-        /* on the left, so true length needs to be calculated  */
-        res->digits=decGetDigits(res->lsu, msumax-res->lsu+1);
-        } /* rotate needed  */
-      } /* rhs OK  */
-    } /* numerics  */
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberRotate  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberSameQuantum -- test for equal exponents                   */
-/*                                                                    */
-/*   res is the result number, which will contain either 0 or 1       */
-/*   lhs is a number to test                                          */
-/*   rhs is the second (usually a pattern)                            */
-/*                                                                    */
-/* No errors are possible and no context is needed.                   */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberSameQuantum(decNumber *res, const decNumber *lhs,
-                                 const decNumber *rhs) {
-  Unit ret=0;                      /* return value  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, DECUNCONT)) return res;
-  #endif
-
-  if (SPECIALARGS) {
-    if (decNumberIsNaN(lhs) && decNumberIsNaN(rhs)) ret=1;
-     else if (decNumberIsInfinite(lhs) && decNumberIsInfinite(rhs)) ret=1;
-     /* [anything else with a special gives 0]  */
-    }
-   else if (lhs->exponent==rhs->exponent) ret=1;
-
-  uprv_decNumberZero(res);              /* OK to overwrite an operand now  */
-  *res->lsu=ret;
-  return res;
-  } /* decNumberSameQuantum  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberScaleB -- multiply by a power of 10                       */
-/*                                                                    */
-/* This computes C = A x 10**B where B is an integer (q=0) with       */
-/* maximum magnitude 2*(emax+digits)                                  */
-/*                                                                    */
-/*   res is C, the result.  C may be A or B                           */
-/*   lhs is A, the number to adjust                                   */
-/*   rhs is B, the requested power of ten to use                      */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* The result may underflow or overflow.                              */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberScaleB(decNumber *res, const decNumber *lhs,
-                            const decNumber *rhs, decContext *set) {
-  Int  reqexp;                /* requested exponent change [B]  */
-  uInt status=0;              /* accumulator  */
-  Int  residue;               /* work  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  /* Handle special values except lhs infinite  */
-  if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs))
-    decNaNs(res, lhs, rhs, set, &status);
-    /* rhs must be an integer  */
-   else if (decNumberIsInfinite(rhs) || rhs->exponent!=0)
-    status=DEC_Invalid_operation;
-   else {
-    /* lhs is a number; rhs is a finite with q==0  */
-    reqexp=decGetInt(rhs);                   /* [cannot fail]  */
-    if (reqexp==BADINT                       /* something bad ..  */
-     || reqexp==BIGODD || reqexp==BIGEVEN    /* .. very big ..  */
-     || abs(reqexp)>(2*(set->digits+set->emax))) /* .. or out of range  */
-      status=DEC_Invalid_operation;
-     else {                                  /* rhs is OK  */
-      uprv_decNumberCopy(res, lhs);               /* all done if infinite lhs  */
-      if (!decNumberIsInfinite(res)) {       /* prepare to scale  */
-        res->exponent+=reqexp;               /* adjust the exponent  */
-        residue=0;
-        decFinalize(res, set, &residue, &status); /* .. and check  */
-        } /* finite LHS  */
-      } /* rhs OK  */
-    } /* rhs finite  */
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberScaleB  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberShift -- shift the coefficient of a Number left or right  */
-/*                                                                    */
-/*   This computes C = A << B or C = A >> -B  (in base ten).          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X<<X)        */
-/*   lhs is A                                                         */
-/*   rhs is B, the number of digits to shift (-ve to right)           */
-/*   set is the context                                               */
-/*                                                                    */
-/* The digits of the coefficient of A are shifted to the left (if B   */
-/* is positive) or to the right (if B is negative) without adjusting  */
-/* the exponent or the sign of A.                                     */
-/*                                                                    */
-/* B must be an integer (q=0) and in the range -set->digits through   */
-/* +set->digits.                                                      */
-/* C must have space for set->digits digits.                          */
-/* NaNs are propagated as usual.  Infinities are unaffected (but      */
-/* B must be valid).  No status is set unless B is invalid or an      */
-/* operand is an sNaN.                                                */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberShift(decNumber *res, const decNumber *lhs,
-                           const decNumber *rhs, decContext *set) {
-  uInt status=0;              /* accumulator  */
-  Int  shift;                 /* rhs as an Int  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  /* NaNs propagate as normal  */
-  if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs))
-    decNaNs(res, lhs, rhs, set, &status);
-   /* rhs must be an integer  */
-   else if (decNumberIsInfinite(rhs) || rhs->exponent!=0)
-    status=DEC_Invalid_operation;
-   else { /* both numeric, rhs is an integer  */
-    shift=decGetInt(rhs);                    /* [cannot fail]  */
-    if (shift==BADINT                        /* something bad ..  */
-     || shift==BIGODD || shift==BIGEVEN      /* .. very big ..  */
-     || abs(shift)>set->digits)              /* .. or out of range  */
-      status=DEC_Invalid_operation;
-     else {                                  /* rhs is OK  */
-      uprv_decNumberCopy(res, lhs);
-      if (shift!=0 && !decNumberIsInfinite(res)) { /* something to do  */
-        if (shift>0) {                       /* to left  */
-          if (shift==set->digits) {          /* removing all  */
-            *res->lsu=0;                     /* so place 0  */
-            res->digits=1;                   /* ..  */
-            }
-           else {                            /*  */
-            /* first remove leading digits if necessary  */
-            if (res->digits+shift>set->digits) {
-              decDecap(res, res->digits+shift-set->digits);
-              /* that updated res->digits; may have gone to 1 (for a  */
-              /* single digit or for zero  */
-              }
-            if (res->digits>1 || *res->lsu)  /* if non-zero..  */
-              res->digits=decShiftToMost(res->lsu, res->digits, shift);
-            } /* partial left  */
-          } /* left  */
-         else { /* to right  */
-          if (-shift>=res->digits) {         /* discarding all  */
-            *res->lsu=0;                     /* so place 0  */
-            res->digits=1;                   /* ..  */
-            }
-           else {
-            decShiftToLeast(res->lsu, D2U(res->digits), -shift);
-            res->digits-=(-shift);
-            }
-          } /* to right  */
-        } /* non-0 non-Inf shift  */
-      } /* rhs OK  */
-    } /* numerics  */
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberShift  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberSquareRoot -- square root operator                        */
-/*                                                                    */
-/*   This computes C = squareroot(A)                                  */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context; note that rounding mode has no effect        */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-/* This uses the following varying-precision algorithm in:            */
-/*                                                                    */
-/*   Properly Rounded Variable Precision Square Root, T. E. Hull and  */
-/*   A. Abrham, ACM Transactions on Mathematical Software, Vol 11 #3, */
-/*   pp229-237, ACM, September 1985.                                  */
-/*                                                                    */
-/* The square-root is calculated using Newton's method, after which   */
-/* a check is made to ensure the result is correctly rounded.         */
-/*                                                                    */
-/* % [Reformatted original Numerical Turing source code follows.]     */
-/* function sqrt(x : real) : real                                     */
-/* % sqrt(x) returns the properly rounded approximation to the square */
-/* % root of x, in the precision of the calling environment, or it    */
-/* % fails if x < 0.                                                  */
-/* % t e hull and a abrham, august, 1984                              */
-/* if x <= 0 then                                                     */
-/*   if x < 0 then                                                    */
-/*     assert false                                                   */
-/*   else                                                             */
-/*     result 0                                                       */
-/*   end if                                                           */
-/* end if                                                             */
-/* var f := setexp(x, 0)  % fraction part of x   [0.1 <= x < 1]       */
-/* var e := getexp(x)     % exponent part of x                        */
-/* var approx : real                                                  */
-/* if e mod 2 = 0  then                                               */
-/*   approx := .259 + .819 * f   % approx to root of f                */
-/* else                                                               */
-/*   f := f/l0                   % adjustments                        */
-/*   e := e + 1                  %   for odd                          */
-/*   approx := .0819 + 2.59 * f  %   exponent                         */
-/* end if                                                             */
-/*                                                                    */
-/* var p:= 3                                                          */
-/* const maxp := currentprecision + 2                                 */
-/* loop                                                               */
-/*   p := min(2*p - 2, maxp)     % p = 4,6,10, . . . , maxp           */
-/*   precision p                                                      */
-/*   approx := .5 * (approx + f/approx)                               */
-/*   exit when p = maxp                                               */
-/* end loop                                                           */
-/*                                                                    */
-/* % approx is now within 1 ulp of the properly rounded square root   */
-/* % of f; to ensure proper rounding, compare squares of (approx -    */
-/* % l/2 ulp) and (approx + l/2 ulp) with f.                          */
-/* p := currentprecision                                              */
-/* begin                                                              */
-/*   precision p + 2                                                  */
-/*   const approxsubhalf := approx - setexp(.5, -p)                   */
-/*   if mulru(approxsubhalf, approxsubhalf) > f then                  */
-/*     approx := approx - setexp(.l, -p + 1)                          */
-/*   else                                                             */
-/*     const approxaddhalf := approx + setexp(.5, -p)                 */
-/*     if mulrd(approxaddhalf, approxaddhalf) < f then                */
-/*       approx := approx + setexp(.l, -p + 1)                        */
-/*     end if                                                         */
-/*   end if                                                           */
-/* end                                                                */
-/* result setexp(approx, e div 2)  % fix exponent                     */
-/* end sqrt                                                           */
-/* ------------------------------------------------------------------ */
-#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Warray-bounds"
-#endif
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decNumber *rhs,
-                                decContext *set) {
-  decContext workset, approxset;   /* work contexts  */
-  decNumber dzero;                 /* used for constant zero  */
-  Int  maxp;                       /* largest working precision  */
-  Int  workp;                      /* working precision  */
-  Int  residue=0;                  /* rounding residue  */
-  uInt status=0, ignore=0;         /* status accumulators  */
-  uInt rstatus;                    /* ..  */
-  Int  exp;                        /* working exponent  */
-  Int  ideal;                      /* ideal (preferred) exponent  */
-  Int  needbytes;                  /* work  */
-  Int  dropped;                    /* ..  */
-
-  #if DECSUBSET
-  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
-  #endif
-  /* buffer for f [needs +1 in case DECBUFFER 0]  */
-  decNumber buff[D2N(DECBUFFER+1)];
-  /* buffer for a [needs +2 to match likely maxp]  */
-  decNumber bufa[D2N(DECBUFFER+2)];
-  /* buffer for temporary, b [must be same size as a]  */
-  decNumber bufb[D2N(DECBUFFER+2)];
-  decNumber *allocbuff=NULL;       /* -> allocated buff, iff allocated  */
-  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
-  decNumber *allocbufb=NULL;       /* -> allocated bufb, iff allocated  */
-  decNumber *f=buff;               /* reduced fraction  */
-  decNumber *a=bufa;               /* approximation to result  */
-  decNumber *b=bufb;               /* intermediate result  */
-  /* buffer for temporary variable, up to 3 digits  */
-  decNumber buft[D2N(3)];
-  decNumber *t=buft;               /* up-to-3-digit constant or work  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  do {                             /* protect allocated storage  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operand and set lostDigits status, as needed  */
-      if (rhs->digits>set->digits) {
-        allocrhs=decRoundOperand(rhs, set, &status);
-        if (allocrhs==NULL) break;
-        /* [Note: 'f' allocation below could reuse this buffer if  */
-        /* used, but as this is rare they are kept separate for clarity.]  */
-        rhs=allocrhs;
-        }
-      }
-    #endif
-    /* [following code does not require input rounding]  */
-
-    /* handle infinities and NaNs  */
-    if (SPECIALARG) {
-      if (decNumberIsInfinite(rhs)) {         /* an infinity  */
-        if (decNumberIsNegative(rhs)) status|=DEC_Invalid_operation;
-         else uprv_decNumberCopy(res, rhs);        /* +Infinity  */
-        }
-       else decNaNs(res, rhs, NULL, set, &status); /* a NaN  */
-      break;
-      }
-
-    /* calculate the ideal (preferred) exponent [floor(exp/2)]  */
-    /* [It would be nicer to write: ideal=rhs->exponent>>1, but this  */
-    /* generates a compiler warning.  Generated code is the same.]  */
-    ideal=(rhs->exponent&~1)/2;         /* target  */
-
-    /* handle zeros  */
-    if (ISZERO(rhs)) {
-      uprv_decNumberCopy(res, rhs);          /* could be 0 or -0  */
-      res->exponent=ideal;              /* use the ideal [safe]  */
-      /* use decFinish to clamp any out-of-range exponent, etc.  */
-      decFinish(res, set, &residue, &status);
-      break;
-      }
-
-    /* any other -x is an oops  */
-    if (decNumberIsNegative(rhs)) {
-      status|=DEC_Invalid_operation;
-      break;
-      }
-
-    /* space is needed for three working variables  */
-    /*   f -- the same precision as the RHS, reduced to 0.01->0.99...  */
-    /*   a -- Hull's approximation -- precision, when assigned, is  */
-    /*        currentprecision+1 or the input argument precision,  */
-    /*        whichever is larger (+2 for use as temporary)  */
-    /*   b -- intermediate temporary result (same size as a)  */
-    /* if any is too long for local storage, then allocate  */
-    workp=MAXI(set->digits+1, rhs->digits);  /* actual rounding precision  */
-    workp=MAXI(workp, 7);                    /* at least 7 for low cases  */
-    maxp=workp+2;                            /* largest working precision  */
-
-    needbytes=sizeof(decNumber)+(D2U(rhs->digits)-1)*sizeof(Unit);
-    if (needbytes>(Int)sizeof(buff)) {
-      allocbuff=(decNumber *)malloc(needbytes);
-      if (allocbuff==NULL) {  /* hopeless -- abandon  */
-        status|=DEC_Insufficient_storage;
-        break;}
-      f=allocbuff;            /* use the allocated space  */
-      }
-    /* a and b both need to be able to hold a maxp-length number  */
-    needbytes=sizeof(decNumber)+(D2U(maxp)-1)*sizeof(Unit);
-    if (needbytes>(Int)sizeof(bufa)) {            /* [same applies to b]  */
-      allocbufa=(decNumber *)malloc(needbytes);
-      allocbufb=(decNumber *)malloc(needbytes);
-      if (allocbufa==NULL || allocbufb==NULL) {   /* hopeless  */
-        status|=DEC_Insufficient_storage;
-        break;}
-      a=allocbufa;            /* use the allocated spaces  */
-      b=allocbufb;            /* ..  */
-      }
-
-    /* copy rhs -> f, save exponent, and reduce so 0.1 <= f < 1  */
-    uprv_decNumberCopy(f, rhs);
-    exp=f->exponent+f->digits;               /* adjusted to Hull rules  */
-    f->exponent=-(f->digits);                /* to range  */
-
-    /* set up working context  */
-    uprv_decContextDefault(&workset, DEC_INIT_DECIMAL64);
-    workset.emax=DEC_MAX_EMAX;
-    workset.emin=DEC_MIN_EMIN;
-
-    /* [Until further notice, no error is possible and status bits  */
-    /* (Rounded, etc.) should be ignored, not accumulated.]  */
-
-    /* Calculate initial approximation, and allow for odd exponent  */
-    workset.digits=workp;                    /* p for initial calculation  */
-    t->bits=0; t->digits=3;
-    a->bits=0; a->digits=3;
-    if ((exp & 1)==0) {                      /* even exponent  */
-      /* Set t=0.259, a=0.819  */
-      t->exponent=-3;
-      a->exponent=-3;
-      #if DECDPUN>=3
-        t->lsu[0]=259;
-        a->lsu[0]=819;
-      #elif DECDPUN==2
-        t->lsu[0]=59; t->lsu[1]=2;
-        a->lsu[0]=19; a->lsu[1]=8;
-      #else
-        t->lsu[0]=9; t->lsu[1]=5; t->lsu[2]=2;
-        a->lsu[0]=9; a->lsu[1]=1; a->lsu[2]=8;
-      #endif
-      }
-     else {                                  /* odd exponent  */
-      /* Set t=0.0819, a=2.59  */
-      f->exponent--;                         /* f=f/10  */
-      exp++;                                 /* e=e+1  */
-      t->exponent=-4;
-      a->exponent=-2;
-      #if DECDPUN>=3
-        t->lsu[0]=819;
-        a->lsu[0]=259;
-      #elif DECDPUN==2
-        t->lsu[0]=19; t->lsu[1]=8;
-        a->lsu[0]=59; a->lsu[1]=2;
-      #else
-        t->lsu[0]=9; t->lsu[1]=1; t->lsu[2]=8;
-        a->lsu[0]=9; a->lsu[1]=5; a->lsu[2]=2;
-      #endif
-      }
-
-    decMultiplyOp(a, a, f, &workset, &ignore);    /* a=a*f  */
-    decAddOp(a, a, t, &workset, 0, &ignore);      /* ..+t  */
-    /* [a is now the initial approximation for sqrt(f), calculated with  */
-    /* currentprecision, which is also a's precision.]  */
-
-    /* the main calculation loop  */
-    uprv_decNumberZero(&dzero);                   /* make 0  */
-    uprv_decNumberZero(t);                        /* set t = 0.5  */
-    t->lsu[0]=5;                             /* ..  */
-    t->exponent=-1;                          /* ..  */
-    workset.digits=3;                        /* initial p  */
-    for (; workset.digits<maxp;) {
-      /* set p to min(2*p - 2, maxp)  [hence 3; or: 4, 6, 10, ... , maxp]  */
-      workset.digits=MINI(workset.digits*2-2, maxp);
-      /* a = 0.5 * (a + f/a)  */
-      /* [calculated at p then rounded to currentprecision]  */
-      decDivideOp(b, f, a, &workset, DIVIDE, &ignore); /* b=f/a  */
-      decAddOp(b, b, a, &workset, 0, &ignore);         /* b=b+a  */
-      decMultiplyOp(a, b, t, &workset, &ignore);       /* a=b*0.5  */
-      } /* loop  */
-
-    /* Here, 0.1 <= a < 1 [Hull], and a has maxp digits  */
-    /* now reduce to length, etc.; this needs to be done with a  */
-    /* having the correct exponent so as to handle subnormals  */
-    /* correctly  */
-    approxset=*set;                          /* get emin, emax, etc.  */
-    approxset.round=DEC_ROUND_HALF_EVEN;
-    a->exponent+=exp/2;                      /* set correct exponent  */
-    rstatus=0;                               /* clear status  */
-    residue=0;                               /* .. and accumulator  */
-    decCopyFit(a, a, &approxset, &residue, &rstatus);  /* reduce (if needed)  */
-    decFinish(a, &approxset, &residue, &rstatus);      /* clean and finalize  */
-
-    /* Overflow was possible if the input exponent was out-of-range,  */
-    /* in which case quit  */
-    if (rstatus&DEC_Overflow) {
-      status=rstatus;                        /* use the status as-is  */
-      uprv_decNumberCopy(res, a);                 /* copy to result  */
-      break;
-      }
-
-    /* Preserve status except Inexact/Rounded  */
-    status|=(rstatus & ~(DEC_Rounded|DEC_Inexact));
-
-    /* Carry out the Hull correction  */
-    a->exponent-=exp/2;                      /* back to 0.1->1  */
-
-    /* a is now at final precision and within 1 ulp of the properly  */
-    /* rounded square root of f; to ensure proper rounding, compare  */
-    /* squares of (a - l/2 ulp) and (a + l/2 ulp) with f.  */
-    /* Here workset.digits=maxp and t=0.5, and a->digits determines  */
-    /* the ulp  */
-    workset.digits--;                             /* maxp-1 is OK now  */
-    t->exponent=-a->digits-1;                     /* make 0.5 ulp  */
-    decAddOp(b, a, t, &workset, DECNEG, &ignore); /* b = a - 0.5 ulp  */
-    workset.round=DEC_ROUND_UP;
-    decMultiplyOp(b, b, b, &workset, &ignore);    /* b = mulru(b, b)  */
-    decCompareOp(b, f, b, &workset, COMPARE, &ignore); /* b ? f, reversed  */
-    if (decNumberIsNegative(b)) {                 /* f < b [i.e., b > f]  */
-      /* this is the more common adjustment, though both are rare  */
-      t->exponent++;                              /* make 1.0 ulp  */
-      t->lsu[0]=1;                                /* ..  */
-      decAddOp(a, a, t, &workset, DECNEG, &ignore); /* a = a - 1 ulp  */
-      /* assign to approx [round to length]  */
-      approxset.emin-=exp/2;                      /* adjust to match a  */
-      approxset.emax-=exp/2;
-      decAddOp(a, &dzero, a, &approxset, 0, &ignore);
-      }
-     else {
-      decAddOp(b, a, t, &workset, 0, &ignore);    /* b = a + 0.5 ulp  */
-      workset.round=DEC_ROUND_DOWN;
-      decMultiplyOp(b, b, b, &workset, &ignore);  /* b = mulrd(b, b)  */
-      decCompareOp(b, b, f, &workset, COMPARE, &ignore);   /* b ? f  */
-      if (decNumberIsNegative(b)) {               /* b < f  */
-        t->exponent++;                            /* make 1.0 ulp  */
-        t->lsu[0]=1;                              /* ..  */
-        decAddOp(a, a, t, &workset, 0, &ignore);  /* a = a + 1 ulp  */
-        /* assign to approx [round to length]  */
-        approxset.emin-=exp/2;                    /* adjust to match a  */
-        approxset.emax-=exp/2;
-        decAddOp(a, &dzero, a, &approxset, 0, &ignore);
-        }
-      }
-    /* [no errors are possible in the above, and rounding/inexact during  */
-    /* estimation are irrelevant, so status was not accumulated]  */
-
-    /* Here, 0.1 <= a < 1  (still), so adjust back  */
-    a->exponent+=exp/2;                      /* set correct exponent  */
-
-    /* count droppable zeros [after any subnormal rounding] by  */
-    /* trimming a copy  */
-    uprv_decNumberCopy(b, a);
-    decTrim(b, set, 1, 1, &dropped);         /* [drops trailing zeros]  */
-
-    /* Set Inexact and Rounded.  The answer can only be exact if  */
-    /* it is short enough so that squaring it could fit in workp  */
-    /* digits, so this is the only (relatively rare) condition that  */
-    /* a careful check is needed  */
-    if (b->digits*2-1 > workp) {             /* cannot fit  */
-      status|=DEC_Inexact|DEC_Rounded;
-      }
-     else {                                  /* could be exact/unrounded  */
-      uInt mstatus=0;                        /* local status  */
-      decMultiplyOp(b, b, b, &workset, &mstatus); /* try the multiply  */
-      if (mstatus&DEC_Overflow) {            /* result just won't fit  */
-        status|=DEC_Inexact|DEC_Rounded;
-        }
-       else {                                /* plausible  */
-        decCompareOp(t, b, rhs, &workset, COMPARE, &mstatus); /* b ? rhs  */
-        if (!ISZERO(t)) status|=DEC_Inexact|DEC_Rounded; /* not equal  */
-         else {                              /* is Exact  */
-          /* here, dropped is the count of trailing zeros in 'a'  */
-          /* use closest exponent to ideal...  */
-          Int todrop=ideal-a->exponent;      /* most that can be dropped  */
-          if (todrop<0) status|=DEC_Rounded; /* ideally would add 0s  */
-           else {                            /* unrounded  */
-            /* there are some to drop, but emax may not allow all  */
-            Int maxexp=set->emax-set->digits+1;
-            Int maxdrop=maxexp-a->exponent;
-            if (todrop>maxdrop && set->clamp) { /* apply clamping  */
-              todrop=maxdrop;
-              status|=DEC_Clamped;
-              }
-            if (dropped<todrop) {            /* clamp to those available  */
-              todrop=dropped;
-              status|=DEC_Clamped;
-              }
-            if (todrop>0) {                  /* have some to drop  */
-              decShiftToLeast(a->lsu, D2U(a->digits), todrop);
-              a->exponent+=todrop;           /* maintain numerical value  */
-              a->digits-=todrop;             /* new length  */
-              }
-            }
-          }
-        }
-      }
-
-    /* double-check Underflow, as perhaps the result could not have  */
-    /* been subnormal (initial argument too big), or it is now Exact  */
-    if (status&DEC_Underflow) {
-      Int ae=rhs->exponent+rhs->digits-1;    /* adjusted exponent  */
-      /* check if truly subnormal  */
-      #if DECEXTFLAG                         /* DEC_Subnormal too  */
-        if (ae>=set->emin*2) status&=~(DEC_Subnormal|DEC_Underflow);
-      #else
-        if (ae>=set->emin*2) status&=~DEC_Underflow;
-      #endif
-      /* check if truly inexact  */
-      if (!(status&DEC_Inexact)) status&=~DEC_Underflow;
-      }
-
-    uprv_decNumberCopy(res, a);                   /* a is now the result  */
-    } while(0);                              /* end protected  */
-
-  if (allocbuff!=NULL) free(allocbuff);      /* drop any storage used  */
-  if (allocbufa!=NULL) free(allocbufa);      /* ..  */
-  if (allocbufb!=NULL) free(allocbufb);      /* ..  */
-  #if DECSUBSET
-  if (allocrhs !=NULL) free(allocrhs);       /* ..  */
-  #endif
-  if (status!=0) decStatus(res, status, set);/* then report status  */
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberSquareRoot  */
-#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
-#pragma GCC diagnostic pop
-#endif
-
-/* ------------------------------------------------------------------ */
-/* decNumberSubtract -- subtract two Numbers                          */
-/*                                                                    */
-/*   This computes C = A - B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X-X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberSubtract(decNumber *res, const decNumber *lhs,
-                              const decNumber *rhs, decContext *set) {
-  uInt status=0;                        /* accumulator  */
-
-  decAddOp(res, lhs, rhs, set, DECNEG, &status);
-  if (status!=0) decStatus(res, status, set);
-  #if DECCHECK
-  decCheckInexact(res, set);
-  #endif
-  return res;
-  } /* decNumberSubtract  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberToIntegralExact -- round-to-integral-value with InExact   */
-/* decNumberToIntegralValue -- round-to-integral-value                */
-/*                                                                    */
-/*   res is the result                                                */
-/*   rhs is input number                                              */
-/*   set is the context                                               */
-/*                                                                    */
-/* res must have space for any value of rhs.                          */
-/*                                                                    */
-/* This implements the IEEE special operators and therefore treats    */
-/* special values as valid.  For finite numbers it returns            */
-/* rescale(rhs, 0) if rhs->exponent is <0.                            */
-/* Otherwise the result is rhs (so no error is possible, except for   */
-/* sNaN).                                                             */
-/*                                                                    */
-/* The context is used for rounding mode and status after sNaN, but   */
-/* the digits setting is ignored.  The Exact version will signal      */
-/* Inexact if the result differs numerically from rhs; the other      */
-/* never signals Inexact.                                             */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberToIntegralExact(decNumber *res, const decNumber *rhs,
-                                     decContext *set) {
-  decNumber dn;
-  decContext workset;              /* working context  */
-  uInt status=0;                   /* accumulator  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  /* handle infinities and NaNs  */
-  if (SPECIALARG) {
-    if (decNumberIsInfinite(rhs)) uprv_decNumberCopy(res, rhs); /* an Infinity  */
-     else decNaNs(res, rhs, NULL, set, &status); /* a NaN  */
-    }
-   else { /* finite  */
-    /* have a finite number; no error possible (res must be big enough)  */
-    if (rhs->exponent>=0) return uprv_decNumberCopy(res, rhs);
-    /* that was easy, but if negative exponent there is work to do...  */
-    workset=*set;                  /* clone rounding, etc.  */
-    workset.digits=rhs->digits;    /* no length rounding  */
-    workset.traps=0;               /* no traps  */
-    uprv_decNumberZero(&dn);            /* make a number with exponent 0  */
-    uprv_decNumberQuantize(res, rhs, &dn, &workset);
-    status|=workset.status;
-    }
-  if (status!=0) decStatus(res, status, set);
-  return res;
-  } /* decNumberToIntegralExact  */
-
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberToIntegralValue(decNumber *res, const decNumber *rhs,
-                                     decContext *set) {
-  decContext workset=*set;         /* working context  */
-  workset.traps=0;                 /* no traps  */
-  uprv_decNumberToIntegralExact(res, rhs, &workset);
-  /* this never affects set, except for sNaNs; NaN will have been set  */
-  /* or propagated already, so no need to call decStatus  */
-  set->status|=workset.status&DEC_Invalid_operation;
-  return res;
-  } /* decNumberToIntegralValue  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberXor -- XOR two Numbers, digitwise                         */
-/*                                                                    */
-/*   This computes C = A ^ B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X^X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context (used for result length and error report)     */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Logical function restrictions apply (see above); a NaN is          */
-/* returned with Invalid_operation if a restriction is violated.      */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberXor(decNumber *res, const decNumber *lhs,
-                         const decNumber *rhs, decContext *set) {
-  const Unit *ua, *ub;                  /* -> operands  */
-  const Unit *msua, *msub;              /* -> operand msus  */
-  Unit  *uc, *msuc;                     /* -> result and its msu  */
-  Int   msudigs;                        /* digits in res msu  */
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  if (lhs->exponent!=0 || decNumberIsSpecial(lhs) || decNumberIsNegative(lhs)
-   || rhs->exponent!=0 || decNumberIsSpecial(rhs) || decNumberIsNegative(rhs)) {
-    decStatus(res, DEC_Invalid_operation, set);
-    return res;
-    }
-  /* operands are valid  */
-  ua=lhs->lsu;                          /* bottom-up  */
-  ub=rhs->lsu;                          /* ..  */
-  uc=res->lsu;                          /* ..  */
-  msua=ua+D2U(lhs->digits)-1;           /* -> msu of lhs  */
-  msub=ub+D2U(rhs->digits)-1;           /* -> msu of rhs  */
-  msuc=uc+D2U(set->digits)-1;           /* -> msu of result  */
-  msudigs=MSUDIGITS(set->digits);       /* [faster than remainder]  */
-  for (; uc<=msuc; ua++, ub++, uc++) {  /* Unit loop  */
-    Unit a, b;                          /* extract units  */
-    if (ua>msua) a=0;
-     else a=*ua;
-    if (ub>msub) b=0;
-     else b=*ub;
-    *uc=0;                              /* can now write back  */
-    if (a|b) {                          /* maybe 1 bits to examine  */
-      Int i, j;
-      /* This loop could be unrolled and/or use BIN2BCD tables  */
-      for (i=0; i<DECDPUN; i++) {
-        if ((a^b)&1) *uc=*uc+(Unit)powers[i];     /* effect XOR  */
-        j=a%10;
-        a=a/10;
-        j|=b%10;
-        b=b/10;
-        if (j>1) {
-          decStatus(res, DEC_Invalid_operation, set);
-          return res;
-          }
-        if (uc==msuc && i==msudigs-1) break;      /* just did final digit  */
-        } /* each digit  */
-      } /* non-zero  */
-    } /* each unit  */
-  /* [here uc-1 is the msu of the result]  */
-  res->digits=decGetDigits(res->lsu, uc-res->lsu);
-  res->exponent=0;                      /* integer  */
-  res->bits=0;                          /* sign=0  */
-  return res;  /* [no status to set]  */
-  } /* decNumberXor  */
-
-
-/* ================================================================== */
-/* Utility routines                                                   */
-/* ================================================================== */
-
-/* ------------------------------------------------------------------ */
-/* decNumberClass -- return the decClass of a decNumber               */
-/*   dn -- the decNumber to test                                      */
-/*   set -- the context to use for Emin                               */
-/*   returns the decClass enum                                        */
-/* ------------------------------------------------------------------ */
-enum decClass uprv_decNumberClass(const decNumber *dn, decContext *set) {
-  if (decNumberIsSpecial(dn)) {
-    if (decNumberIsQNaN(dn)) return DEC_CLASS_QNAN;
-    if (decNumberIsSNaN(dn)) return DEC_CLASS_SNAN;
-    /* must be an infinity  */
-    if (decNumberIsNegative(dn)) return DEC_CLASS_NEG_INF;
-    return DEC_CLASS_POS_INF;
-    }
-  /* is finite  */
-  if (uprv_decNumberIsNormal(dn, set)) { /* most common  */
-    if (decNumberIsNegative(dn)) return DEC_CLASS_NEG_NORMAL;
-    return DEC_CLASS_POS_NORMAL;
-    }
-  /* is subnormal or zero  */
-  if (decNumberIsZero(dn)) {    /* most common  */
-    if (decNumberIsNegative(dn)) return DEC_CLASS_NEG_ZERO;
-    return DEC_CLASS_POS_ZERO;
-    }
-  if (decNumberIsNegative(dn)) return DEC_CLASS_NEG_SUBNORMAL;
-  return DEC_CLASS_POS_SUBNORMAL;
-  } /* decNumberClass  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberClassToString -- convert decClass to a string             */
-/*                                                                    */
-/*  eclass is a valid decClass                                        */
-/*  returns a constant string describing the class (max 13+1 chars)   */
-/* ------------------------------------------------------------------ */
-const char *uprv_decNumberClassToString(enum decClass eclass) {
-  if (eclass==DEC_CLASS_POS_NORMAL)    return DEC_ClassString_PN;
-  if (eclass==DEC_CLASS_NEG_NORMAL)    return DEC_ClassString_NN;
-  if (eclass==DEC_CLASS_POS_ZERO)      return DEC_ClassString_PZ;
-  if (eclass==DEC_CLASS_NEG_ZERO)      return DEC_ClassString_NZ;
-  if (eclass==DEC_CLASS_POS_SUBNORMAL) return DEC_ClassString_PS;
-  if (eclass==DEC_CLASS_NEG_SUBNORMAL) return DEC_ClassString_NS;
-  if (eclass==DEC_CLASS_POS_INF)       return DEC_ClassString_PI;
-  if (eclass==DEC_CLASS_NEG_INF)       return DEC_ClassString_NI;
-  if (eclass==DEC_CLASS_QNAN)          return DEC_ClassString_QN;
-  if (eclass==DEC_CLASS_SNAN)          return DEC_ClassString_SN;
-  return DEC_ClassString_UN;           /* Unknown  */
-  } /* decNumberClassToString  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberCopy -- copy a number                                     */
-/*                                                                    */
-/*   dest is the target decNumber                                     */
-/*   src  is the source decNumber                                     */
-/*   returns dest                                                     */
-/*                                                                    */
-/* (dest==src is allowed and is a no-op)                              */
-/* All fields are updated as required.  This is a utility operation,  */
-/* so special values are unchanged and no error is possible.          */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberCopy(decNumber *dest, const decNumber *src) {
-
-  #if DECCHECK
-  if (src==NULL) return uprv_decNumberZero(dest);
-  #endif
-
-  if (dest==src) return dest;                /* no copy required  */
-
-  /* Use explicit assignments here as structure assignment could copy  */
-  /* more than just the lsu (for small DECDPUN).  This would not affect  */
-  /* the value of the results, but could disturb test harness spill  */
-  /* checking.  */
-  dest->bits=src->bits;
-  dest->exponent=src->exponent;
-  dest->digits=src->digits;
-  dest->lsu[0]=src->lsu[0];
-  if (src->digits>DECDPUN) {                 /* more Units to come  */
-    const Unit *smsup, *s;                   /* work  */
-    Unit  *d;                                /* ..  */
-    /* memcpy for the remaining Units would be safe as they cannot  */
-    /* overlap.  However, this explicit loop is faster in short cases.  */
-    d=dest->lsu+1;                           /* -> first destination  */
-    smsup=src->lsu+D2U(src->digits);         /* -> source msu+1  */
-    for (s=src->lsu+1; s<smsup; s++, d++) *d=*s;
-    }
-  return dest;
-  } /* decNumberCopy  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberCopyAbs -- quiet absolute value operator                  */
-/*                                                                    */
-/*   This sets C = abs(A)                                             */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* No exception or error can occur; this is a quiet bitwise operation.*/
-/* See also decNumberAbs for a checking version of this.              */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberCopyAbs(decNumber *res, const decNumber *rhs) {
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, DECUNCONT)) return res;
-  #endif
-  uprv_decNumberCopy(res, rhs);
-  res->bits&=~DECNEG;                   /* turn off sign  */
-  return res;
-  } /* decNumberCopyAbs  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberCopyNegate -- quiet negate value operator                 */
-/*                                                                    */
-/*   This sets C = negate(A)                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* No exception or error can occur; this is a quiet bitwise operation.*/
-/* See also decNumberMinus for a checking version of this.            */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberCopyNegate(decNumber *res, const decNumber *rhs) {
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, DECUNCONT)) return res;
-  #endif
-  uprv_decNumberCopy(res, rhs);
-  res->bits^=DECNEG;                    /* invert the sign  */
-  return res;
-  } /* decNumberCopyNegate  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberCopySign -- quiet copy and set sign operator              */
-/*                                                                    */
-/*   This sets C = A with the sign of B                               */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* No exception or error can occur; this is a quiet bitwise operation.*/
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberCopySign(decNumber *res, const decNumber *lhs,
-                              const decNumber *rhs) {
-  uByte sign;                           /* rhs sign  */
-  #if DECCHECK
-  if (decCheckOperands(res, DECUNUSED, rhs, DECUNCONT)) return res;
-  #endif
-  sign=rhs->bits & DECNEG;              /* save sign bit  */
-  uprv_decNumberCopy(res, lhs);
-  res->bits&=~DECNEG;                   /* clear the sign  */
-  res->bits|=sign;                      /* set from rhs  */
-  return res;
-  } /* decNumberCopySign  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberGetBCD -- get the coefficient in BCD8                     */
-/*   dn is the source decNumber                                       */
-/*   bcd is the uInt array that will receive dn->digits BCD bytes,    */
-/*     most-significant at offset 0                                   */
-/*   returns bcd                                                      */
-/*                                                                    */
-/* bcd must have at least dn->digits bytes.  No error is possible; if */
-/* dn is a NaN or Infinite, digits must be 1 and the coefficient 0.   */
-/* ------------------------------------------------------------------ */
-U_CAPI uByte * U_EXPORT2 uprv_decNumberGetBCD(const decNumber *dn, uByte *bcd) {
-  uByte *ub=bcd+dn->digits-1;      /* -> lsd  */
-  const Unit *up=dn->lsu;          /* Unit pointer, -> lsu  */
-
-  #if DECDPUN==1                   /* trivial simple copy  */
-    for (; ub>=bcd; ub--, up++) *ub=*up;
-  #else                            /* chopping needed  */
-    uInt u=*up;                    /* work  */
-    uInt cut=DECDPUN;              /* downcounter through unit  */
-    for (; ub>=bcd; ub--) {
-      *ub=(uByte)(u%10);           /* [*6554 trick inhibits, here]  */
-      u=u/10;
-      cut--;
-      if (cut>0) continue;         /* more in this unit  */
-      up++;
-      u=*up;
-      cut=DECDPUN;
-      }
-  #endif
-  return bcd;
-  } /* decNumberGetBCD  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberSetBCD -- set (replace) the coefficient from BCD8         */
-/*   dn is the target decNumber                                       */
-/*   bcd is the uInt array that will source n BCD bytes, most-        */
-/*     significant at offset 0                                        */
-/*   n is the number of digits in the source BCD array (bcd)          */
-/*   returns dn                                                       */
-/*                                                                    */
-/* dn must have space for at least n digits.  No error is possible;   */
-/* if dn is a NaN, or Infinite, or is to become a zero, n must be 1   */
-/* and bcd[0] zero.                                                   */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberSetBCD(decNumber *dn, const uByte *bcd, uInt n) {
-  Unit *up=dn->lsu+D2U(dn->digits)-1;   /* -> msu [target pointer]  */
-  const uByte *ub=bcd;                  /* -> source msd  */
-
-  #if DECDPUN==1                        /* trivial simple copy  */
-    for (; ub<bcd+n; ub++, up--) *up=*ub;
-  #else                                 /* some assembly needed  */
-    /* calculate how many digits in msu, and hence first cut  */
-    Int cut=MSUDIGITS(n);               /* [faster than remainder]  */
-    for (;up>=dn->lsu; up--) {          /* each Unit from msu  */
-      *up=0;                            /* will take <=DECDPUN digits  */
-      for (; cut>0; ub++, cut--) *up=X10(*up)+*ub;
-      cut=DECDPUN;                      /* next Unit has all digits  */
-      }
-  #endif
-  dn->digits=n;                         /* set digit count  */
-  return dn;
-  } /* decNumberSetBCD  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberIsNormal -- test normality of a decNumber                 */
-/*   dn is the decNumber to test                                      */
-/*   set is the context to use for Emin                               */
-/*   returns 1 if |dn| is finite and >=Nmin, 0 otherwise              */
-/* ------------------------------------------------------------------ */
-Int uprv_decNumberIsNormal(const decNumber *dn, decContext *set) {
-  Int ae;                               /* adjusted exponent  */
-  #if DECCHECK
-  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, set)) return 0;
-  #endif
-
-  if (decNumberIsSpecial(dn)) return 0; /* not finite  */
-  if (decNumberIsZero(dn)) return 0;    /* not non-zero  */
-
-  ae=dn->exponent+dn->digits-1;         /* adjusted exponent  */
-  if (ae<set->emin) return 0;           /* is subnormal  */
-  return 1;
-  } /* decNumberIsNormal  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberIsSubnormal -- test subnormality of a decNumber           */
-/*   dn is the decNumber to test                                      */
-/*   set is the context to use for Emin                               */
-/*   returns 1 if |dn| is finite, non-zero, and <Nmin, 0 otherwise    */
-/* ------------------------------------------------------------------ */
-Int uprv_decNumberIsSubnormal(const decNumber *dn, decContext *set) {
-  Int ae;                               /* adjusted exponent  */
-  #if DECCHECK
-  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, set)) return 0;
-  #endif
-
-  if (decNumberIsSpecial(dn)) return 0; /* not finite  */
-  if (decNumberIsZero(dn)) return 0;    /* not non-zero  */
-
-  ae=dn->exponent+dn->digits-1;         /* adjusted exponent  */
-  if (ae<set->emin) return 1;           /* is subnormal  */
-  return 0;
-  } /* decNumberIsSubnormal  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberTrim -- remove insignificant zeros                        */
-/*                                                                    */
-/*   dn is the number to trim                                         */
-/*   returns dn                                                       */
-/*                                                                    */
-/* All fields are updated as required.  This is a utility operation,  */
-/* so special values are unchanged and no error is possible.  The     */
-/* zeros are removed unconditionally.                                 */
-/* ------------------------------------------------------------------ */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberTrim(decNumber *dn) {
-  Int  dropped;                    /* work  */
-  decContext set;                  /* ..  */
-  #if DECCHECK
-  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, DECUNCONT)) return dn;
-  #endif
-  uprv_decContextDefault(&set, DEC_INIT_BASE);    /* clamp=0  */
-  return decTrim(dn, &set, 0, 1, &dropped);
-  } /* decNumberTrim  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberVersion -- return the name and version of this module     */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-const char * uprv_decNumberVersion(void) {
-  return DECVERSION;
-  } /* decNumberVersion  */
-
-/* ------------------------------------------------------------------ */
-/* decNumberZero -- set a number to 0                                 */
-/*                                                                    */
-/*   dn is the number to set, with space for one digit                */
-/*   returns dn                                                       */
-/*                                                                    */
-/* No error is possible.                                              */
-/* ------------------------------------------------------------------ */
-/* Memset is not used as it is much slower in some environments.  */
-U_CAPI decNumber * U_EXPORT2 uprv_decNumberZero(decNumber *dn) {
-
-  #if DECCHECK
-  if (decCheckOperands(dn, DECUNUSED, DECUNUSED, DECUNCONT)) return dn;
-  #endif
-
-  dn->bits=0;
-  dn->exponent=0;
-  dn->digits=1;
-  dn->lsu[0]=0;
-  return dn;
-  } /* decNumberZero  */
-
-/* ================================================================== */
-/* Local routines                                                     */
-/* ================================================================== */
-
-/* ------------------------------------------------------------------ */
-/* decToString -- lay out a number into a string                      */
-/*                                                                    */
-/*   dn     is the number to lay out                                  */
-/*   string is where to lay out the number                            */
-/*   eng    is 1 if Engineering, 0 if Scientific                      */
-/*                                                                    */
-/* string must be at least dn->digits+14 characters long              */
-/* No error is possible.                                              */
-/*                                                                    */
-/* Note that this routine can generate a -0 or 0.000.  These are      */
-/* never generated in subset to-number or arithmetic, but can occur   */
-/* in non-subset arithmetic (e.g., -1*0 or 1.234-1.234).              */
-/* ------------------------------------------------------------------ */
-/* If DECCHECK is enabled the string "?" is returned if a number is  */
-/* invalid.  */
-static void decToString(const decNumber *dn, char *string, Flag eng) {
-  Int exp=dn->exponent;       /* local copy  */
-  Int e;                      /* E-part value  */
-  Int pre;                    /* digits before the '.'  */
-  Int cut;                    /* for counting digits in a Unit  */
-  char *c=string;             /* work [output pointer]  */
-  const Unit *up=dn->lsu+D2U(dn->digits)-1; /* -> msu [input pointer]  */
-  uInt u, pow;                /* work  */
-
-  #if DECCHECK
-  if (decCheckOperands(DECUNRESU, dn, DECUNUSED, DECUNCONT)) {
-    strcpy(string, "?");
-    return;}
-  #endif
-
-  if (decNumberIsNegative(dn)) {   /* Negatives get a minus  */
-    *c='-';
-    c++;
-    }
-  if (dn->bits&DECSPECIAL) {       /* Is a special value  */
-    if (decNumberIsInfinite(dn)) {
-      strcpy(c,   "Inf");
-      strcpy(c+3, "inity");
-      return;}
-    /* a NaN  */
-    if (dn->bits&DECSNAN) {        /* signalling NaN  */
-      *c='s';
-      c++;
-      }
-    strcpy(c, "NaN");
-    c+=3;                          /* step past  */
-    /* if not a clean non-zero coefficient, that's all there is in a  */
-    /* NaN string  */
-    if (exp!=0 || (*dn->lsu==0 && dn->digits==1)) return;
-    /* [drop through to add integer]  */
-    }
-
-  /* calculate how many digits in msu, and hence first cut  */
-  cut=MSUDIGITS(dn->digits);       /* [faster than remainder]  */
-  cut--;                           /* power of ten for digit  */
-
-  if (exp==0) {                    /* simple integer [common fastpath]  */
-    for (;up>=dn->lsu; up--) {     /* each Unit from msu  */
-      u=*up;                       /* contains DECDPUN digits to lay out  */
-      for (; cut>=0; c++, cut--) TODIGIT(u, cut, c, pow);
-      cut=DECDPUN-1;               /* next Unit has all digits  */
-      }
-    *c='\0';                       /* terminate the string  */
-    return;}
-
-  /* non-0 exponent -- assume plain form */
-  pre=dn->digits+exp;              /* digits before '.'  */
-  e=0;                             /* no E  */
-  if ((exp>0) || (pre<-5)) {       /* need exponential form  */
-    e=exp+dn->digits-1;            /* calculate E value  */
-    pre=1;                         /* assume one digit before '.'  */
-    if (eng && (e!=0)) {           /* engineering: may need to adjust  */
-      Int adj;                     /* adjustment  */
-      /* The C remainder operator is undefined for negative numbers, so  */
-      /* a positive remainder calculation must be used here  */
-      if (e<0) {
-        adj=(-e)%3;
-        if (adj!=0) adj=3-adj;
-        }
-       else { /* e>0  */
-        adj=e%3;
-        }
-      e=e-adj;
-      /* if dealing with zero still produce an exponent which is a  */
-      /* multiple of three, as expected, but there will only be the  */
-      /* one zero before the E, still.  Otherwise note the padding.  */
-      if (!ISZERO(dn)) pre+=adj;
-       else {  /* is zero  */
-        if (adj!=0) {              /* 0.00Esnn needed  */
-          e=e+3;
-          pre=-(2-adj);
-          }
-        } /* zero  */
-      } /* eng  */
-    } /* need exponent  */
-
-  /* lay out the digits of the coefficient, adding 0s and . as needed */
-  u=*up;
-  if (pre>0) {                     /* xxx.xxx or xx00 (engineering) form  */
-    Int n=pre;
-    for (; pre>0; pre--, c++, cut--) {
-      if (cut<0) {                 /* need new Unit  */
-        if (up==dn->lsu) break;    /* out of input digits (pre>digits)  */
-        up--;
-        cut=DECDPUN-1;
-        u=*up;
-        }
-      TODIGIT(u, cut, c, pow);
-      }
-    if (n<dn->digits) {            /* more to come, after '.'  */
-      *c='.'; c++;
-      for (;; c++, cut--) {
-        if (cut<0) {               /* need new Unit  */
-          if (up==dn->lsu) break;  /* out of input digits  */
-          up--;
-          cut=DECDPUN-1;
-          u=*up;
-          }
-        TODIGIT(u, cut, c, pow);
-        }
-      }
-     else for (; pre>0; pre--, c++) *c='0'; /* 0 padding (for engineering) needed  */
-    }
-   else {                          /* 0.xxx or 0.000xxx form  */
-    *c='0'; c++;
-    *c='.'; c++;
-    for (; pre<0; pre++, c++) *c='0';   /* add any 0's after '.'  */
-    for (; ; c++, cut--) {
-      if (cut<0) {                 /* need new Unit  */
-        if (up==dn->lsu) break;    /* out of input digits  */
-        up--;
-        cut=DECDPUN-1;
-        u=*up;
-        }
-      TODIGIT(u, cut, c, pow);
-      }
-    }
-
-  /* Finally add the E-part, if needed.  It will never be 0, has a
-     base maximum and minimum of +999999999 through -999999999, but
-     could range down to -1999999998 for anormal numbers */
-  if (e!=0) {
-    Flag had=0;               /* 1=had non-zero  */
-    *c='E'; c++;
-    *c='+'; c++;              /* assume positive  */
-    u=e;                      /* ..  */
-    if (e<0) {
-      *(c-1)='-';             /* oops, need -  */
-      u=-e;                   /* uInt, please  */
-      }
-    /* lay out the exponent [_itoa or equivalent is not ANSI C]  */
-    for (cut=9; cut>=0; cut--) {
-      TODIGIT(u, cut, c, pow);
-      if (*c=='0' && !had) continue;    /* skip leading zeros  */
-      had=1;                            /* had non-0  */
-      c++;                              /* step for next  */
-      } /* cut  */
-    }
-  *c='\0';          /* terminate the string (all paths)  */
-  return;
-  } /* decToString  */
-
-/* ------------------------------------------------------------------ */
-/* decAddOp -- add/subtract operation                                 */
-/*                                                                    */
-/*   This computes C = A + B                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X+X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*   negate is DECNEG if rhs should be negated, or 0 otherwise        */
-/*   status accumulates status for the caller                         */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/* Inexact in status must be 0 for correct Exact zero sign in result  */
-/* ------------------------------------------------------------------ */
-/* If possible, the coefficient is calculated directly into C.        */
-/* However, if:                                                       */
-/*   -- a digits+1 calculation is needed because the numbers are      */
-/*      unaligned and span more than set->digits digits               */
-/*   -- a carry to digits+1 digits looks possible                     */
-/*   -- C is the same as A or B, and the result would destructively   */
-/*      overlap the A or B coefficient                                */
-/* then the result must be calculated into a temporary buffer.  In    */
-/* this case a local (stack) buffer is used if possible, and only if  */
-/* too long for that does malloc become the final resort.             */
-/*                                                                    */
-/* Misalignment is handled as follows:                                */
-/*   Apad: (AExp>BExp) Swap operands and proceed as for BExp>AExp.    */
-/*   BPad: Apply the padding by a combination of shifting (whole      */
-/*         units) and multiplication (part units).                    */
-/*                                                                    */
-/* Addition, especially x=x+1, is speed-critical.                     */
-/* The static buffer is larger than might be expected to allow for    */
-/* calls from higher-level funtions (notable exp).                    */
-/* ------------------------------------------------------------------ */
-static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
-                            const decNumber *rhs, decContext *set,
-                            uByte negate, uInt *status) {
-  #if DECSUBSET
-  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
-  decNumber *allocrhs=NULL;        /* .., rhs  */
-  #endif
-  Int   rhsshift;                  /* working shift (in Units)  */
-  Int   maxdigits;                 /* longest logical length  */
-  Int   mult;                      /* multiplier  */
-  Int   residue;                   /* rounding accumulator  */
-  uByte bits;                      /* result bits  */
-  Flag  diffsign;                  /* non-0 if arguments have different sign  */
-  Unit  *acc;                      /* accumulator for result  */
-  Unit  accbuff[SD2U(DECBUFFER*2+20)]; /* local buffer [*2+20 reduces many  */
-                                   /* allocations when called from  */
-                                   /* other operations, notable exp]  */
-  Unit  *allocacc=NULL;            /* -> allocated acc buffer, iff allocated  */
-  Int   reqdigits=set->digits;     /* local copy; requested DIGITS  */
-  Int   padding;                   /* work  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  do {                             /* protect allocated storage  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operands and set lostDigits status, as needed  */
-      if (lhs->digits>reqdigits) {
-        alloclhs=decRoundOperand(lhs, set, status);
-        if (alloclhs==NULL) break;
-        lhs=alloclhs;
-        }
-      if (rhs->digits>reqdigits) {
-        allocrhs=decRoundOperand(rhs, set, status);
-        if (allocrhs==NULL) break;
-        rhs=allocrhs;
-        }
-      }
-    #endif
-    /* [following code does not require input rounding]  */
-
-    /* note whether signs differ [used all paths]  */
-    diffsign=(Flag)((lhs->bits^rhs->bits^negate)&DECNEG);
-
-    /* handle infinities and NaNs  */
-    if (SPECIALARGS) {                  /* a special bit set  */
-      if (SPECIALARGS & (DECSNAN | DECNAN))  /* a NaN  */
-        decNaNs(res, lhs, rhs, set, status);
-       else { /* one or two infinities  */
-        if (decNumberIsInfinite(lhs)) { /* LHS is infinity  */
-          /* two infinities with different signs is invalid  */
-          if (decNumberIsInfinite(rhs) && diffsign) {
-            *status|=DEC_Invalid_operation;
-            break;
-            }
-          bits=lhs->bits & DECNEG;      /* get sign from LHS  */
-          }
-         else bits=(rhs->bits^negate) & DECNEG;/* RHS must be Infinity  */
-        bits|=DECINF;
-        uprv_decNumberZero(res);
-        res->bits=bits;                 /* set +/- infinity  */
-        } /* an infinity  */
-      break;
-      }
-
-    /* Quick exit for add 0s; return the non-0, modified as need be  */
-    if (ISZERO(lhs)) {
-      Int adjust;                       /* work  */
-      Int lexp=lhs->exponent;           /* save in case LHS==RES  */
-      bits=lhs->bits;                   /* ..  */
-      residue=0;                        /* clear accumulator  */
-      decCopyFit(res, rhs, set, &residue, status); /* copy (as needed)  */
-      res->bits^=negate;                /* flip if rhs was negated  */
-      #if DECSUBSET
-      if (set->extended) {              /* exponents on zeros count  */
-      #endif
-        /* exponent will be the lower of the two  */
-        adjust=lexp-res->exponent;      /* adjustment needed [if -ve]  */
-        if (ISZERO(res)) {              /* both 0: special IEEE 754 rules  */
-          if (adjust<0) res->exponent=lexp;  /* set exponent  */
-          /* 0-0 gives +0 unless rounding to -infinity, and -0-0 gives -0  */
-          if (diffsign) {
-            if (set->round!=DEC_ROUND_FLOOR) res->bits=0;
-             else res->bits=DECNEG;     /* preserve 0 sign  */
-            }
-          }
-         else { /* non-0 res  */
-          if (adjust<0) {     /* 0-padding needed  */
-            if ((res->digits-adjust)>set->digits) {
-              adjust=res->digits-set->digits;     /* to fit exactly  */
-              *status|=DEC_Rounded;               /* [but exact]  */
-              }
-            res->digits=decShiftToMost(res->lsu, res->digits, -adjust);
-            res->exponent+=adjust;                /* set the exponent.  */
-            }
-          } /* non-0 res  */
-      #if DECSUBSET
-        } /* extended  */
-      #endif
-      decFinish(res, set, &residue, status);      /* clean and finalize  */
-      break;}
-
-    if (ISZERO(rhs)) {                  /* [lhs is non-zero]  */
-      Int adjust;                       /* work  */
-      Int rexp=rhs->exponent;           /* save in case RHS==RES  */
-      bits=rhs->bits;                   /* be clean  */
-      residue=0;                        /* clear accumulator  */
-      decCopyFit(res, lhs, set, &residue, status); /* copy (as needed)  */
-      #if DECSUBSET
-      if (set->extended) {              /* exponents on zeros count  */
-      #endif
-        /* exponent will be the lower of the two  */
-        /* [0-0 case handled above]  */
-        adjust=rexp-res->exponent;      /* adjustment needed [if -ve]  */
-        if (adjust<0) {     /* 0-padding needed  */
-          if ((res->digits-adjust)>set->digits) {
-            adjust=res->digits-set->digits;     /* to fit exactly  */
-            *status|=DEC_Rounded;               /* [but exact]  */
-            }
-          res->digits=decShiftToMost(res->lsu, res->digits, -adjust);
-          res->exponent+=adjust;                /* set the exponent.  */
-          }
-      #if DECSUBSET
-        } /* extended  */
-      #endif
-      decFinish(res, set, &residue, status);      /* clean and finalize  */
-      break;}
-
-    /* [NB: both fastpath and mainpath code below assume these cases  */
-    /* (notably 0-0) have already been handled]  */
-
-    /* calculate the padding needed to align the operands  */
-    padding=rhs->exponent-lhs->exponent;
-
-    /* Fastpath cases where the numbers are aligned and normal, the RHS  */
-    /* is all in one unit, no operand rounding is needed, and no carry,  */
-    /* lengthening, or borrow is needed  */
-    if (padding==0
-        && rhs->digits<=DECDPUN
-        && rhs->exponent>=set->emin     /* [some normals drop through]  */
-        && rhs->exponent<=set->emax-set->digits+1 /* [could clamp]  */
-        && rhs->digits<=reqdigits
-        && lhs->digits<=reqdigits) {
-      Int partial=*lhs->lsu;
-      if (!diffsign) {                  /* adding  */
-        partial+=*rhs->lsu;
-        if ((partial<=DECDPUNMAX)       /* result fits in unit  */
-         && (lhs->digits>=DECDPUN ||    /* .. and no digits-count change  */
-             partial<(Int)powers[lhs->digits])) { /* ..  */
-          if (res!=lhs) uprv_decNumberCopy(res, lhs);  /* not in place  */
-          *res->lsu=(Unit)partial;      /* [copy could have overwritten RHS]  */
-          break;
-          }
-        /* else drop out for careful add  */
-        }
-       else {                           /* signs differ  */
-        partial-=*rhs->lsu;
-        if (partial>0) { /* no borrow needed, and non-0 result  */
-          if (res!=lhs) uprv_decNumberCopy(res, lhs);  /* not in place  */
-          *res->lsu=(Unit)partial;
-          /* this could have reduced digits [but result>0]  */
-          res->digits=decGetDigits(res->lsu, D2U(res->digits));
-          break;
-          }
-        /* else drop out for careful subtract  */
-        }
-      }
-
-    /* Now align (pad) the lhs or rhs so they can be added or  */
-    /* subtracted, as necessary.  If one number is much larger than  */
-    /* the other (that is, if in plain form there is a least one  */
-    /* digit between the lowest digit of one and the highest of the  */
-    /* other) padding with up to DIGITS-1 trailing zeros may be  */
-    /* needed; then apply rounding (as exotic rounding modes may be  */
-    /* affected by the residue).  */
-    rhsshift=0;               /* rhs shift to left (padding) in Units  */
-    bits=lhs->bits;           /* assume sign is that of LHS  */
-    mult=1;                   /* likely multiplier  */
-
-    /* [if padding==0 the operands are aligned; no padding is needed]  */
-    if (padding!=0) {
-      /* some padding needed; always pad the RHS, as any required  */
-      /* padding can then be effected by a simple combination of  */
-      /* shifts and a multiply  */
-      Flag swapped=0;
-      if (padding<0) {                  /* LHS needs the padding  */
-        const decNumber *t;
-        padding=-padding;               /* will be +ve  */
-        bits=(uByte)(rhs->bits^negate); /* assumed sign is now that of RHS  */
-        t=lhs; lhs=rhs; rhs=t;
-        swapped=1;
-        }
-
-      /* If, after pad, rhs would be longer than lhs by digits+1 or  */
-      /* more then lhs cannot affect the answer, except as a residue,  */
-      /* so only need to pad up to a length of DIGITS+1.  */
-      if (rhs->digits+padding > lhs->digits+reqdigits+1) {
-        /* The RHS is sufficient  */
-        /* for residue use the relative sign indication...  */
-        Int shift=reqdigits-rhs->digits;     /* left shift needed  */
-        residue=1;                           /* residue for rounding  */
-        if (diffsign) residue=-residue;      /* signs differ  */
-        /* copy, shortening if necessary  */
-        decCopyFit(res, rhs, set, &residue, status);
-        /* if it was already shorter, then need to pad with zeros  */
-        if (shift>0) {
-          res->digits=decShiftToMost(res->lsu, res->digits, shift);
-          res->exponent-=shift;              /* adjust the exponent.  */
-          }
-        /* flip the result sign if unswapped and rhs was negated  */
-        if (!swapped) res->bits^=negate;
-        decFinish(res, set, &residue, status);    /* done  */
-        break;}
-
-      /* LHS digits may affect result  */
-      rhsshift=D2U(padding+1)-1;        /* this much by Unit shift ..  */
-      mult=powers[padding-(rhsshift*DECDPUN)]; /* .. this by multiplication  */
-      } /* padding needed  */
-
-    if (diffsign) mult=-mult;           /* signs differ  */
-
-    /* determine the longer operand  */
-    maxdigits=rhs->digits+padding;      /* virtual length of RHS  */
-    if (lhs->digits>maxdigits) maxdigits=lhs->digits;
-
-    /* Decide on the result buffer to use; if possible place directly  */
-    /* into result.  */
-    acc=res->lsu;                       /* assume add direct to result  */
-    /* If destructive overlap, or the number is too long, or a carry or  */
-    /* borrow to DIGITS+1 might be possible, a buffer must be used.  */
-    /* [Might be worth more sophisticated tests when maxdigits==reqdigits]  */
-    if ((maxdigits>=reqdigits)          /* is, or could be, too large  */
-     || (res==rhs && rhsshift>0)) {     /* destructive overlap  */
-      /* buffer needed, choose it; units for maxdigits digits will be  */
-      /* needed, +1 Unit for carry or borrow  */
-      Int need=D2U(maxdigits)+1;
-      acc=accbuff;                      /* assume use local buffer  */
-      if (need*sizeof(Unit)>sizeof(accbuff)) {
-        /* printf("malloc add %ld %ld\n", need, sizeof(accbuff));  */
-        allocacc=(Unit *)malloc(need*sizeof(Unit));
-        if (allocacc==NULL) {           /* hopeless -- abandon  */
-          *status|=DEC_Insufficient_storage;
-          break;}
-        acc=allocacc;
-        }
-      }
-
-    res->bits=(uByte)(bits&DECNEG);     /* it's now safe to overwrite..  */
-    res->exponent=lhs->exponent;        /* .. operands (even if aliased)  */
-
-    #if DECTRACE
-      decDumpAr('A', lhs->lsu, D2U(lhs->digits));
-      decDumpAr('B', rhs->lsu, D2U(rhs->digits));
-      printf("  :h: %ld %ld\n", rhsshift, mult);
-    #endif
-
-    /* add [A+B*m] or subtract [A+B*(-m)]  */
-    U_ASSERT(rhs->digits > 0);
-    U_ASSERT(lhs->digits > 0);
-    res->digits=decUnitAddSub(lhs->lsu, D2U(lhs->digits),
-                              rhs->lsu, D2U(rhs->digits),
-                              rhsshift, acc, mult)
-               *DECDPUN;           /* [units -> digits]  */
-    if (res->digits<0) {           /* borrowed...  */
-      res->digits=-res->digits;
-      res->bits^=DECNEG;           /* flip the sign  */
-      }
-    #if DECTRACE
-      decDumpAr('+', acc, D2U(res->digits));
-    #endif
-
-    /* If a buffer was used the result must be copied back, possibly  */
-    /* shortening.  (If no buffer was used then the result must have  */
-    /* fit, so can't need rounding and residue must be 0.)  */
-    residue=0;                     /* clear accumulator  */
-    if (acc!=res->lsu) {
-      #if DECSUBSET
-      if (set->extended) {         /* round from first significant digit  */
-      #endif
-        /* remove leading zeros that were added due to rounding up to  */
-        /* integral Units -- before the test for rounding.  */
-        if (res->digits>reqdigits)
-          res->digits=decGetDigits(acc, D2U(res->digits));
-        decSetCoeff(res, set, acc, res->digits, &residue, status);
-      #if DECSUBSET
-        }
-       else { /* subset arithmetic rounds from original significant digit  */
-        /* May have an underestimate.  This only occurs when both  */
-        /* numbers fit in DECDPUN digits and are padding with a  */
-        /* negative multiple (-10, -100...) and the top digit(s) become  */
-        /* 0.  (This only matters when using X3.274 rules where the  */
-        /* leading zero could be included in the rounding.)  */
-        if (res->digits<maxdigits) {
-          *(acc+D2U(res->digits))=0; /* ensure leading 0 is there  */
-          res->digits=maxdigits;
-          }
-         else {
-          /* remove leading zeros that added due to rounding up to  */
-          /* integral Units (but only those in excess of the original  */
-          /* maxdigits length, unless extended) before test for rounding.  */
-          if (res->digits>reqdigits) {
-            res->digits=decGetDigits(acc, D2U(res->digits));
-            if (res->digits<maxdigits) res->digits=maxdigits;
-            }
-          }
-        decSetCoeff(res, set, acc, res->digits, &residue, status);
-        /* Now apply rounding if needed before removing leading zeros.  */
-        /* This is safe because subnormals are not a possibility  */
-        if (residue!=0) {
-          decApplyRound(res, set, residue, status);
-          residue=0;                 /* did what needed to be done  */
-          }
-        } /* subset  */
-      #endif
-      } /* used buffer  */
-
-    /* strip leading zeros [these were left on in case of subset subtract]  */
-    res->digits=decGetDigits(res->lsu, D2U(res->digits));
-
-    /* apply checks and rounding  */
-    decFinish(res, set, &residue, status);
-
-    /* "When the sum of two operands with opposite signs is exactly  */
-    /* zero, the sign of that sum shall be '+' in all rounding modes  */
-    /* except round toward -Infinity, in which mode that sign shall be  */
-    /* '-'."  [Subset zeros also never have '-', set by decFinish.]  */
-    if (ISZERO(res) && diffsign
-     #if DECSUBSET
-     && set->extended
-     #endif
-     && (*status&DEC_Inexact)==0) {
-      if (set->round==DEC_ROUND_FLOOR) res->bits|=DECNEG;   /* sign -  */
-                                  else res->bits&=~DECNEG;  /* sign +  */
-      }
-    } while(0);                              /* end protected  */
-
-  if (allocacc!=NULL) free(allocacc);        /* drop any storage used  */
-  #if DECSUBSET
-  if (allocrhs!=NULL) free(allocrhs);        /* ..  */
-  if (alloclhs!=NULL) free(alloclhs);        /* ..  */
-  #endif
-  return res;
-  } /* decAddOp  */
-
-/* ------------------------------------------------------------------ */
-/* decDivideOp -- division operation                                  */
-/*                                                                    */
-/*  This routine performs the calculations for all four division      */
-/*  operators (divide, divideInteger, remainder, remainderNear).      */
-/*                                                                    */
-/*  C=A op B                                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X/X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*   op  is DIVIDE, DIVIDEINT, REMAINDER, or REMNEAR respectively.    */
-/*   status is the usual accumulator                                  */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* ------------------------------------------------------------------ */
-/*   The underlying algorithm of this routine is the same as in the   */
-/*   1981 S/370 implementation, that is, non-restoring long division  */
-/*   with bi-unit (rather than bi-digit) estimation for each unit     */
-/*   multiplier.  In this pseudocode overview, complications for the  */
-/*   Remainder operators and division residues for exact rounding are */
-/*   omitted for clarity.                                             */
-/*                                                                    */
-/*     Prepare operands and handle special values                     */
-/*     Test for x/0 and then 0/x                                      */
-/*     Exp =Exp1 - Exp2                                               */
-/*     Exp =Exp +len(var1) -len(var2)                                 */
-/*     Sign=Sign1 * Sign2                                             */
-/*     Pad accumulator (Var1) to double-length with 0's (pad1)        */
-/*     Pad Var2 to same length as Var1                                */
-/*     msu2pair/plus=1st 2 or 1 units of var2, +1 to allow for round  */
-/*     have=0                                                         */
-/*     Do until (have=digits+1 OR residue=0)                          */
-/*       if exp<0 then if integer divide/residue then leave           */
-/*       this_unit=0                                                  */
-/*       Do forever                                                   */
-/*          compare numbers                                           */
-/*          if <0 then leave inner_loop                               */
-/*          if =0 then (* quick exit without subtract *) do           */
-/*             this_unit=this_unit+1; output this_unit                */
-/*             leave outer_loop; end                                  */
-/*          Compare lengths of numbers (mantissae):                   */
-/*          If same then tops2=msu2pair -- {units 1&2 of var2}        */
-/*                  else tops2=msu2plus -- {0, unit 1 of var2}        */
-/*          tops1=first_unit_of_Var1*10**DECDPUN +second_unit_of_var1 */
-/*          mult=tops1/tops2  -- Good and safe guess at divisor       */
-/*          if mult=0 then mult=1                                     */
-/*          this_unit=this_unit+mult                                  */
-/*          subtract                                                  */
-/*          end inner_loop                                            */
-/*        if have\=0 | this_unit\=0 then do                           */
-/*          output this_unit                                          */
-/*          have=have+1; end                                          */
-/*        var2=var2/10                                                */
-/*        exp=exp-1                                                   */
-/*        end outer_loop                                              */
-/*     exp=exp+1   -- set the proper exponent                         */
-/*     if have=0 then generate answer=0                               */
-/*     Return (Result is defined by Var1)                             */
-/*                                                                    */
-/* ------------------------------------------------------------------ */
-/* Two working buffers are needed during the division; one (digits+   */
-/* 1) to accumulate the result, and the other (up to 2*digits+1) for  */
-/* long subtractions.  These are acc and var1 respectively.           */
-/* var1 is a copy of the lhs coefficient, var2 is the rhs coefficient.*/
-/* The static buffers may be larger than might be expected to allow   */
-/* for calls from higher-level funtions (notable exp).                */
-/* ------------------------------------------------------------------ */
-static decNumber * decDivideOp(decNumber *res,
-                               const decNumber *lhs, const decNumber *rhs,
-                               decContext *set, Flag op, uInt *status) {
-  #if DECSUBSET
-  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
-  decNumber *allocrhs=NULL;        /* .., rhs  */
-  #endif
-  Unit  accbuff[SD2U(DECBUFFER+DECDPUN+10)]; /* local buffer  */
-  Unit  *acc=accbuff;              /* -> accumulator array for result  */
-  Unit  *allocacc=NULL;            /* -> allocated buffer, iff allocated  */
-  Unit  *accnext;                  /* -> where next digit will go  */
-  Int   acclength;                 /* length of acc needed [Units]  */
-  Int   accunits;                  /* count of units accumulated  */
-  Int   accdigits;                 /* count of digits accumulated  */
-
-  Unit  varbuff[SD2U(DECBUFFER*2+DECDPUN)];  /* buffer for var1  */
-  Unit  *var1=varbuff;             /* -> var1 array for long subtraction  */
-  Unit  *varalloc=NULL;            /* -> allocated buffer, iff used  */
-  Unit  *msu1;                     /* -> msu of var1  */
-
-  const Unit *var2;                /* -> var2 array  */
-  const Unit *msu2;                /* -> msu of var2  */
-  Int   msu2plus;                  /* msu2 plus one [does not vary]  */
-  eInt  msu2pair;                  /* msu2 pair plus one [does not vary]  */
-
-  Int   var1units, var2units;      /* actual lengths  */
-  Int   var2ulen;                  /* logical length (units)  */
-  Int   var1initpad=0;             /* var1 initial padding (digits)  */
-  Int   maxdigits;                 /* longest LHS or required acc length  */
-  Int   mult;                      /* multiplier for subtraction  */
-  Unit  thisunit;                  /* current unit being accumulated  */
-  Int   residue;                   /* for rounding  */
-  Int   reqdigits=set->digits;     /* requested DIGITS  */
-  Int   exponent;                  /* working exponent  */
-  Int   maxexponent=0;             /* DIVIDE maximum exponent if unrounded  */
-  uByte bits;                      /* working sign  */
-  Unit  *target;                   /* work  */
-  const Unit *source;              /* ..  */
-  uInt  const *pow;                /* ..  */
-  Int   shift, cut;                /* ..  */
-  #if DECSUBSET
-  Int   dropped;                   /* work  */
-  #endif
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  do {                             /* protect allocated storage  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operands and set lostDigits status, as needed  */
-      if (lhs->digits>reqdigits) {
-        alloclhs=decRoundOperand(lhs, set, status);
-        if (alloclhs==NULL) break;
-        lhs=alloclhs;
-        }
-      if (rhs->digits>reqdigits) {
-        allocrhs=decRoundOperand(rhs, set, status);
-        if (allocrhs==NULL) break;
-        rhs=allocrhs;
-        }
-      }
-    #endif
-    /* [following code does not require input rounding]  */
-
-    bits=(lhs->bits^rhs->bits)&DECNEG;  /* assumed sign for divisions  */
-
-    /* handle infinities and NaNs  */
-    if (SPECIALARGS) {                  /* a special bit set  */
-      if (SPECIALARGS & (DECSNAN | DECNAN)) { /* one or two NaNs  */
-        decNaNs(res, lhs, rhs, set, status);
-        break;
-        }
-      /* one or two infinities  */
-      if (decNumberIsInfinite(lhs)) {   /* LHS (dividend) is infinite  */
-        if (decNumberIsInfinite(rhs) || /* two infinities are invalid ..  */
-            op & (REMAINDER | REMNEAR)) { /* as is remainder of infinity  */
-          *status|=DEC_Invalid_operation;
-          break;
-          }
-        /* [Note that infinity/0 raises no exceptions]  */
-        uprv_decNumberZero(res);
-        res->bits=bits|DECINF;          /* set +/- infinity  */
-        break;
-        }
-       else {                           /* RHS (divisor) is infinite  */
-        residue=0;
-        if (op&(REMAINDER|REMNEAR)) {
-          /* result is [finished clone of] lhs  */
-          decCopyFit(res, lhs, set, &residue, status);
-          }
-         else {  /* a division  */
-          uprv_decNumberZero(res);
-          res->bits=bits;               /* set +/- zero  */
-          /* for DIVIDEINT the exponent is always 0.  For DIVIDE, result  */
-          /* is a 0 with infinitely negative exponent, clamped to minimum  */
-          if (op&DIVIDE) {
-            res->exponent=set->emin-set->digits+1;
-            *status|=DEC_Clamped;
-            }
-          }
-        decFinish(res, set, &residue, status);
-        break;
-        }
-      }
-
-    /* handle 0 rhs (x/0)  */
-    if (ISZERO(rhs)) {                  /* x/0 is always exceptional  */
-      if (ISZERO(lhs)) {
-        uprv_decNumberZero(res);             /* [after lhs test]  */
-        *status|=DEC_Division_undefined;/* 0/0 will become NaN  */
-        }
-       else {
-        uprv_decNumberZero(res);
-        if (op&(REMAINDER|REMNEAR)) *status|=DEC_Invalid_operation;
-         else {
-          *status|=DEC_Division_by_zero; /* x/0  */
-          res->bits=bits|DECINF;         /* .. is +/- Infinity  */
-          }
-        }
-      break;}
-
-    /* handle 0 lhs (0/x)  */
-    if (ISZERO(lhs)) {                  /* 0/x [x!=0]  */
-      #if DECSUBSET
-      if (!set->extended) uprv_decNumberZero(res);
-       else {
-      #endif
-        if (op&DIVIDE) {
-          residue=0;
-          exponent=lhs->exponent-rhs->exponent; /* ideal exponent  */
-          uprv_decNumberCopy(res, lhs);      /* [zeros always fit]  */
-          res->bits=bits;               /* sign as computed  */
-          res->exponent=exponent;       /* exponent, too  */
-          decFinalize(res, set, &residue, status);   /* check exponent  */
-          }
-         else if (op&DIVIDEINT) {
-          uprv_decNumberZero(res);           /* integer 0  */
-          res->bits=bits;               /* sign as computed  */
-          }
-         else {                         /* a remainder  */
-          exponent=rhs->exponent;       /* [save in case overwrite]  */
-          uprv_decNumberCopy(res, lhs);      /* [zeros always fit]  */
-          if (exponent<res->exponent) res->exponent=exponent; /* use lower  */
-          }
-      #if DECSUBSET
-        }
-      #endif
-      break;}
-
-    /* Precalculate exponent.  This starts off adjusted (and hence fits  */
-    /* in 31 bits) and becomes the usual unadjusted exponent as the  */
-    /* division proceeds.  The order of evaluation is important, here,  */
-    /* to avoid wrap.  */
-    exponent=(lhs->exponent+lhs->digits)-(rhs->exponent+rhs->digits);
-
-    /* If the working exponent is -ve, then some quick exits are  */
-    /* possible because the quotient is known to be <1  */
-    /* [for REMNEAR, it needs to be < -1, as -0.5 could need work]  */
-    if (exponent<0 && !(op==DIVIDE)) {
-      if (op&DIVIDEINT) {
-        uprv_decNumberZero(res);                  /* integer part is 0  */
-        #if DECSUBSET
-        if (set->extended)
-        #endif
-          res->bits=bits;                    /* set +/- zero  */
-        break;}
-      /* fastpath remainders so long as the lhs has the smaller  */
-      /* (or equal) exponent  */
-      if (lhs->exponent<=rhs->exponent) {
-        if (op&REMAINDER || exponent<-1) {
-          /* It is REMAINDER or safe REMNEAR; result is [finished  */
-          /* clone of] lhs  (r = x - 0*y)  */
-          residue=0;
-          decCopyFit(res, lhs, set, &residue, status);
-          decFinish(res, set, &residue, status);
-          break;
-          }
-        /* [unsafe REMNEAR drops through]  */
-        }
-      } /* fastpaths  */
-
-    /* Long (slow) division is needed; roll up the sleeves... */
-
-    /* The accumulator will hold the quotient of the division.  */
-    /* If it needs to be too long for stack storage, then allocate.  */
-    acclength=D2U(reqdigits+DECDPUN);   /* in Units  */
-    if (acclength*sizeof(Unit)>sizeof(accbuff)) {
-      /* printf("malloc dvacc %ld units\n", acclength);  */
-      allocacc=(Unit *)malloc(acclength*sizeof(Unit));
-      if (allocacc==NULL) {             /* hopeless -- abandon  */
-        *status|=DEC_Insufficient_storage;
-        break;}
-      acc=allocacc;                     /* use the allocated space  */
-      }
-
-    /* var1 is the padded LHS ready for subtractions.  */
-    /* If it needs to be too long for stack storage, then allocate.  */
-    /* The maximum units needed for var1 (long subtraction) is:  */
-    /* Enough for  */
-    /*     (rhs->digits+reqdigits-1) -- to allow full slide to right  */
-    /* or  (lhs->digits)             -- to allow for long lhs  */
-    /* whichever is larger  */
-    /*   +1                -- for rounding of slide to right  */
-    /*   +1                -- for leading 0s  */
-    /*   +1                -- for pre-adjust if a remainder or DIVIDEINT  */
-    /* [Note: unused units do not participate in decUnitAddSub data]  */
-    maxdigits=rhs->digits+reqdigits-1;
-    if (lhs->digits>maxdigits) maxdigits=lhs->digits;
-    var1units=D2U(maxdigits)+2;
-    /* allocate a guard unit above msu1 for REMAINDERNEAR  */
-    if (!(op&DIVIDE)) var1units++;
-    if ((var1units+1)*sizeof(Unit)>sizeof(varbuff)) {
-      /* printf("malloc dvvar %ld units\n", var1units+1);  */
-      varalloc=(Unit *)malloc((var1units+1)*sizeof(Unit));
-      if (varalloc==NULL) {             /* hopeless -- abandon  */
-        *status|=DEC_Insufficient_storage;
-        break;}
-      var1=varalloc;                    /* use the allocated space  */
-      }
-
-    /* Extend the lhs and rhs to full long subtraction length.  The lhs  */
-    /* is truly extended into the var1 buffer, with 0 padding, so a  */
-    /* subtract in place is always possible.  The rhs (var2) has  */
-    /* virtual padding (implemented by decUnitAddSub).  */
-    /* One guard unit was allocated above msu1 for rem=rem+rem in  */
-    /* REMAINDERNEAR.  */
-    msu1=var1+var1units-1;              /* msu of var1  */
-    source=lhs->lsu+D2U(lhs->digits)-1; /* msu of input array  */
-    for (target=msu1; source>=lhs->lsu; source--, target--) *target=*source;
-    for (; target>=var1; target--) *target=0;
-
-    /* rhs (var2) is left-aligned with var1 at the start  */
-    var2ulen=var1units;                 /* rhs logical length (units)  */
-    var2units=D2U(rhs->digits);         /* rhs actual length (units)  */
-    var2=rhs->lsu;                      /* -> rhs array  */
-    msu2=var2+var2units-1;              /* -> msu of var2 [never changes]  */
-    /* now set up the variables which will be used for estimating the  */
-    /* multiplication factor.  If these variables are not exact, add  */
-    /* 1 to make sure that the multiplier is never overestimated.  */
-    msu2plus=*msu2;                     /* it's value ..  */
-    if (var2units>1) msu2plus++;        /* .. +1 if any more  */
-    msu2pair=(eInt)*msu2*(DECDPUNMAX+1);/* top two pair ..  */
-    if (var2units>1) {                  /* .. [else treat 2nd as 0]  */
-      msu2pair+=*(msu2-1);              /* ..  */
-      if (var2units>2) msu2pair++;      /* .. +1 if any more  */
-      }
-
-    /* The calculation is working in units, which may have leading zeros,  */
-    /* but the exponent was calculated on the assumption that they are  */
-    /* both left-aligned.  Adjust the exponent to compensate: add the  */
-    /* number of leading zeros in var1 msu and subtract those in var2 msu.  */
-    /* [This is actually done by counting the digits and negating, as  */
-    /* lead1=DECDPUN-digits1, and similarly for lead2.]  */
-    for (pow=&powers[1]; *msu1>=*pow; pow++) exponent--;
-    for (pow=&powers[1]; *msu2>=*pow; pow++) exponent++;
-
-    /* Now, if doing an integer divide or remainder, ensure that  */
-    /* the result will be Unit-aligned.  To do this, shift the var1  */
-    /* accumulator towards least if need be.  (It's much easier to  */
-    /* do this now than to reassemble the residue afterwards, if  */
-    /* doing a remainder.)  Also ensure the exponent is not negative.  */
-    if (!(op&DIVIDE)) {
-      Unit *u;                          /* work  */
-      /* save the initial 'false' padding of var1, in digits  */
-      var1initpad=(var1units-D2U(lhs->digits))*DECDPUN;
-      /* Determine the shift to do.  */
-      if (exponent<0) cut=-exponent;
-       else cut=DECDPUN-exponent%DECDPUN;
-      decShiftToLeast(var1, var1units, cut);
-      exponent+=cut;                    /* maintain numerical value  */
-      var1initpad-=cut;                 /* .. and reduce padding  */
-      /* clean any most-significant units which were just emptied  */
-      for (u=msu1; cut>=DECDPUN; cut-=DECDPUN, u--) *u=0;
-      } /* align  */
-     else { /* is DIVIDE  */
-      maxexponent=lhs->exponent-rhs->exponent;    /* save  */
-      /* optimization: if the first iteration will just produce 0,  */
-      /* preadjust to skip it [valid for DIVIDE only]  */
-      if (*msu1<*msu2) {
-        var2ulen--;                     /* shift down  */
-        exponent-=DECDPUN;              /* update the exponent  */
-        }
-      }
-
-    /* ---- start the long-division loops ------------------------------  */
-    accunits=0;                         /* no units accumulated yet  */
-    accdigits=0;                        /* .. or digits  */
-    accnext=acc+acclength-1;            /* -> msu of acc [NB: allows digits+1]  */
-    for (;;) {                          /* outer forever loop  */
-      thisunit=0;                       /* current unit assumed 0  */
-      /* find the next unit  */
-      for (;;) {                        /* inner forever loop  */
-        /* strip leading zero units [from either pre-adjust or from  */
-        /* subtract last time around].  Leave at least one unit.  */
-        for (; *msu1==0 && msu1>var1; msu1--) var1units--;
-
-        if (var1units<var2ulen) break;       /* var1 too low for subtract  */
-        if (var1units==var2ulen) {           /* unit-by-unit compare needed  */
-          /* compare the two numbers, from msu  */
-          const Unit *pv1, *pv2;
-          Unit v2;                           /* units to compare  */
-          pv2=msu2;                          /* -> msu  */
-          for (pv1=msu1; ; pv1--, pv2--) {
-            /* v1=*pv1 -- always OK  */
-            v2=0;                            /* assume in padding  */
-            if (pv2>=var2) v2=*pv2;          /* in range  */
-            if (*pv1!=v2) break;             /* no longer the same  */
-            if (pv1==var1) break;            /* done; leave pv1 as is  */
-            }
-          /* here when all inspected or a difference seen  */
-          if (*pv1<v2) break;                /* var1 too low to subtract  */
-          if (*pv1==v2) {                    /* var1 == var2  */
-            /* reach here if var1 and var2 are identical; subtraction  */
-            /* would increase digit by one, and the residue will be 0 so  */
-            /* the calculation is done; leave the loop with residue=0.  */
-            thisunit++;                      /* as though subtracted  */
-            *var1=0;                         /* set var1 to 0  */
-            var1units=1;                     /* ..  */
-            break;  /* from inner  */
-            } /* var1 == var2  */
-          /* *pv1>v2.  Prepare for real subtraction; the lengths are equal  */
-          /* Estimate the multiplier (there's always a msu1-1)...  */
-          /* Bring in two units of var2 to provide a good estimate.  */
-          mult=(Int)(((eInt)*msu1*(DECDPUNMAX+1)+*(msu1-1))/msu2pair);
-          } /* lengths the same  */
-         else { /* var1units > var2ulen, so subtraction is safe  */
-          /* The var2 msu is one unit towards the lsu of the var1 msu,  */
-          /* so only one unit for var2 can be used.  */
-          mult=(Int)(((eInt)*msu1*(DECDPUNMAX+1)+*(msu1-1))/msu2plus);
-          }
-        if (mult==0) mult=1;                 /* must always be at least 1  */
-        /* subtraction needed; var1 is > var2  */
-        thisunit=(Unit)(thisunit+mult);      /* accumulate  */
-        /* subtract var1-var2, into var1; only the overlap needs  */
-        /* processing, as this is an in-place calculation  */
-        shift=var2ulen-var2units;
-        #if DECTRACE
-          decDumpAr('1', &var1[shift], var1units-shift);
-          decDumpAr('2', var2, var2units);
-          printf("m=%ld\n", -mult);
-        #endif
-        decUnitAddSub(&var1[shift], var1units-shift,
-                      var2, var2units, 0,
-                      &var1[shift], -mult);
-        #if DECTRACE
-          decDumpAr('#', &var1[shift], var1units-shift);
-        #endif
-        /* var1 now probably has leading zeros; these are removed at the  */
-        /* top of the inner loop.  */
-        } /* inner loop  */
-
-      /* The next unit has been calculated in full; unless it's a  */
-      /* leading zero, add to acc  */
-      if (accunits!=0 || thisunit!=0) {      /* is first or non-zero  */
-        *accnext=thisunit;                   /* store in accumulator  */
-        /* account exactly for the new digits  */
-        if (accunits==0) {
-          accdigits++;                       /* at least one  */
-          for (pow=&powers[1]; thisunit>=*pow; pow++) accdigits++;
-          }
-         else accdigits+=DECDPUN;
-        accunits++;                          /* update count  */
-        accnext--;                           /* ready for next  */
-        if (accdigits>reqdigits) break;      /* have enough digits  */
-        }
-
-      /* if the residue is zero, the operation is done (unless divide  */
-      /* or divideInteger and still not enough digits yet)  */
-      if (*var1==0 && var1units==1) {        /* residue is 0  */
-        if (op&(REMAINDER|REMNEAR)) break;
-        if ((op&DIVIDE) && (exponent<=maxexponent)) break;
-        /* [drop through if divideInteger]  */
-        }
-      /* also done enough if calculating remainder or integer  */
-      /* divide and just did the last ('units') unit  */
-      if (exponent==0 && !(op&DIVIDE)) break;
-
-      /* to get here, var1 is less than var2, so divide var2 by the per-  */
-      /* Unit power of ten and go for the next digit  */
-      var2ulen--;                            /* shift down  */
-      exponent-=DECDPUN;                     /* update the exponent  */
-      } /* outer loop  */
-
-    /* ---- division is complete ---------------------------------------  */
-    /* here: acc      has at least reqdigits+1 of good results (or fewer  */
-    /*                if early stop), starting at accnext+1 (its lsu)  */
-    /*       var1     has any residue at the stopping point  */
-    /*       accunits is the number of digits collected in acc  */
-    if (accunits==0) {             /* acc is 0  */
-      accunits=1;                  /* show have a unit ..  */
-      accdigits=1;                 /* ..  */
-      *accnext=0;                  /* .. whose value is 0  */
-      }
-     else accnext++;               /* back to last placed  */
-    /* accnext now -> lowest unit of result  */
-
-    residue=0;                     /* assume no residue  */
-    if (op&DIVIDE) {
-      /* record the presence of any residue, for rounding  */
-      if (*var1!=0 || var1units>1) residue=1;
-       else { /* no residue  */
-        /* Had an exact division; clean up spurious trailing 0s.  */
-        /* There will be at most DECDPUN-1, from the final multiply,  */
-        /* and then only if the result is non-0 (and even) and the  */
-        /* exponent is 'loose'.  */
-        #if DECDPUN>1
-        Unit lsu=*accnext;
-        if (!(lsu&0x01) && (lsu!=0)) {
-          /* count the trailing zeros  */
-          Int drop=0;
-          for (;; drop++) {    /* [will terminate because lsu!=0]  */
-            if (exponent>=maxexponent) break;     /* don't chop real 0s  */
-            #if DECDPUN<=4
-              if ((lsu-QUOT10(lsu, drop+1)
-                  *powers[drop+1])!=0) break;     /* found non-0 digit  */
-            #else
-              if (lsu%powers[drop+1]!=0) break;   /* found non-0 digit  */
-            #endif
-            exponent++;
-            }
-          if (drop>0) {
-            accunits=decShiftToLeast(accnext, accunits, drop);
-            accdigits=decGetDigits(accnext, accunits);
-            accunits=D2U(accdigits);
-            /* [exponent was adjusted in the loop]  */
-            }
-          } /* neither odd nor 0  */
-        #endif
-        } /* exact divide  */
-      } /* divide  */
-     else /* op!=DIVIDE */ {
-      /* check for coefficient overflow  */
-      if (accdigits+exponent>reqdigits) {
-        *status|=DEC_Division_impossible;
-        break;
-        }
-      if (op & (REMAINDER|REMNEAR)) {
-        /* [Here, the exponent will be 0, because var1 was adjusted  */
-        /* appropriately.]  */
-        Int postshift;                       /* work  */
-        Flag wasodd=0;                       /* integer was odd  */
-        Unit *quotlsu;                       /* for save  */
-        Int  quotdigits;                     /* ..  */
-
-        bits=lhs->bits;                      /* remainder sign is always as lhs  */
-
-        /* Fastpath when residue is truly 0 is worthwhile [and  */
-        /* simplifies the code below]  */
-        if (*var1==0 && var1units==1) {      /* residue is 0  */
-          Int exp=lhs->exponent;             /* save min(exponents)  */
-          if (rhs->exponent<exp) exp=rhs->exponent;
-          uprv_decNumberZero(res);                /* 0 coefficient  */
-          #if DECSUBSET
-          if (set->extended)
-          #endif
-          res->exponent=exp;                 /* .. with proper exponent  */
-          res->bits=(uByte)(bits&DECNEG);          /* [cleaned]  */
-          decFinish(res, set, &residue, status);   /* might clamp  */
-          break;
-          }
-        /* note if the quotient was odd  */
-        if (*accnext & 0x01) wasodd=1;       /* acc is odd  */
-        quotlsu=accnext;                     /* save in case need to reinspect  */
-        quotdigits=accdigits;                /* ..  */
-
-        /* treat the residue, in var1, as the value to return, via acc  */
-        /* calculate the unused zero digits.  This is the smaller of:  */
-        /*   var1 initial padding (saved above)  */
-        /*   var2 residual padding, which happens to be given by:  */
-        postshift=var1initpad+exponent-lhs->exponent+rhs->exponent;
-        /* [the 'exponent' term accounts for the shifts during divide]  */
-        if (var1initpad<postshift) postshift=var1initpad;
-
-        /* shift var1 the requested amount, and adjust its digits  */
-        var1units=decShiftToLeast(var1, var1units, postshift);
-        accnext=var1;
-        accdigits=decGetDigits(var1, var1units);
-        accunits=D2U(accdigits);
-
-        exponent=lhs->exponent;         /* exponent is smaller of lhs & rhs  */
-        if (rhs->exponent<exponent) exponent=rhs->exponent;
-
-        /* Now correct the result if doing remainderNear; if it  */
-        /* (looking just at coefficients) is > rhs/2, or == rhs/2 and  */
-        /* the integer was odd then the result should be rem-rhs.  */
-        if (op&REMNEAR) {
-          Int compare, tarunits;        /* work  */
-          Unit *up;                     /* ..  */
-          /* calculate remainder*2 into the var1 buffer (which has  */
-          /* 'headroom' of an extra unit and hence enough space)  */
-          /* [a dedicated 'double' loop would be faster, here]  */
-          tarunits=decUnitAddSub(accnext, accunits, accnext, accunits,
-                                 0, accnext, 1);
-          /* decDumpAr('r', accnext, tarunits);  */
-
-          /* Here, accnext (var1) holds tarunits Units with twice the  */
-          /* remainder's coefficient, which must now be compared to the  */
-          /* RHS.  The remainder's exponent may be smaller than the RHS's.  */
-          compare=decUnitCompare(accnext, tarunits, rhs->lsu, D2U(rhs->digits),
-                                 rhs->exponent-exponent);
-          if (compare==BADINT) {             /* deep trouble  */
-            *status|=DEC_Insufficient_storage;
-            break;}
-
-          /* now restore the remainder by dividing by two; the lsu  */
-          /* is known to be even.  */
-          for (up=accnext; up<accnext+tarunits; up++) {
-            Int half;              /* half to add to lower unit  */
-            half=*up & 0x01;
-            *up/=2;                /* [shift]  */
-            if (!half) continue;
-            *(up-1)+=(DECDPUNMAX+1)/2;
-            }
-          /* [accunits still describes the original remainder length]  */
-
-          if (compare>0 || (compare==0 && wasodd)) { /* adjustment needed  */
-            Int exp, expunits, exprem;       /* work  */
-            /* This is effectively causing round-up of the quotient,  */
-            /* so if it was the rare case where it was full and all  */
-            /* nines, it would overflow and hence division-impossible  */
-            /* should be raised  */
-            Flag allnines=0;                 /* 1 if quotient all nines  */
-            if (quotdigits==reqdigits) {     /* could be borderline  */
-              for (up=quotlsu; ; up++) {
-                if (quotdigits>DECDPUN) {
-                  if (*up!=DECDPUNMAX) break;/* non-nines  */
-                  }
-                 else {                      /* this is the last Unit  */
-                  if (*up==powers[quotdigits]-1) allnines=1;
-                  break;
-                  }
-                quotdigits-=DECDPUN;         /* checked those digits  */
-                } /* up  */
-              } /* borderline check  */
-            if (allnines) {
-              *status|=DEC_Division_impossible;
-              break;}
-
-            /* rem-rhs is needed; the sign will invert.  Again, var1  */
-            /* can safely be used for the working Units array.  */
-            exp=rhs->exponent-exponent;      /* RHS padding needed  */
-            /* Calculate units and remainder from exponent.  */
-            expunits=exp/DECDPUN;
-            exprem=exp%DECDPUN;
-            /* subtract [A+B*(-m)]; the result will always be negative  */
-            accunits=-decUnitAddSub(accnext, accunits,
-                                    rhs->lsu, D2U(rhs->digits),
-                                    expunits, accnext, -(Int)powers[exprem]);
-            accdigits=decGetDigits(accnext, accunits); /* count digits exactly  */
-            accunits=D2U(accdigits);    /* and recalculate the units for copy  */
-            /* [exponent is as for original remainder]  */
-            bits^=DECNEG;               /* flip the sign  */
-            }
-          } /* REMNEAR  */
-        } /* REMAINDER or REMNEAR  */
-      } /* not DIVIDE  */
-
-    /* Set exponent and bits  */
-    res->exponent=exponent;
-    res->bits=(uByte)(bits&DECNEG);          /* [cleaned]  */
-
-    /* Now the coefficient.  */
-    decSetCoeff(res, set, accnext, accdigits, &residue, status);
-
-    decFinish(res, set, &residue, status);   /* final cleanup  */
-
-    #if DECSUBSET
-    /* If a divide then strip trailing zeros if subset [after round]  */
-    if (!set->extended && (op==DIVIDE)) decTrim(res, set, 0, 1, &dropped);
-    #endif
-    } while(0);                              /* end protected  */
-
-  if (varalloc!=NULL) free(varalloc);   /* drop any storage used  */
-  if (allocacc!=NULL) free(allocacc);   /* ..  */
-  #if DECSUBSET
-  if (allocrhs!=NULL) free(allocrhs);   /* ..  */
-  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
-  #endif
-  return res;
-  } /* decDivideOp  */
-
-/* ------------------------------------------------------------------ */
-/* decMultiplyOp -- multiplication operation                          */
-/*                                                                    */
-/*  This routine performs the multiplication C=A x B.                 */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X*X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*   status is the usual accumulator                                  */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* ------------------------------------------------------------------ */
-/* 'Classic' multiplication is used rather than Karatsuba, as the     */
-/* latter would give only a minor improvement for the short numbers   */
-/* expected to be handled most (and uses much more memory).           */
-/*                                                                    */
-/* There are two major paths here: the general-purpose ('old code')   */
-/* path which handles all DECDPUN values, and a fastpath version      */
-/* which is used if 64-bit ints are available, DECDPUN<=4, and more   */
-/* than two calls to decUnitAddSub would be made.                     */
-/*                                                                    */
-/* The fastpath version lumps units together into 8-digit or 9-digit  */
-/* chunks, and also uses a lazy carry strategy to minimise expensive  */
-/* 64-bit divisions.  The chunks are then broken apart again into     */
-/* units for continuing processing.  Despite this overhead, the       */
-/* fastpath can speed up some 16-digit operations by 10x (and much    */
-/* more for higher-precision calculations).                           */
-/*                                                                    */
-/* A buffer always has to be used for the accumulator; in the         */
-/* fastpath, buffers are also always needed for the chunked copies of */
-/* of the operand coefficients.                                       */
-/* Static buffers are larger than needed just for multiply, to allow  */
-/* for calls from other operations (notably exp).                     */
-/* ------------------------------------------------------------------ */
-#define FASTMUL (DECUSE64 && DECDPUN<5)
-static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
-                                 const decNumber *rhs, decContext *set,
-                                 uInt *status) {
-  Int    accunits;                 /* Units of accumulator in use  */
-  Int    exponent;                 /* work  */
-  Int    residue=0;                /* rounding residue  */
-  uByte  bits;                     /* result sign  */
-  Unit  *acc;                      /* -> accumulator Unit array  */
-  Int    needbytes;                /* size calculator  */
-  void  *allocacc=NULL;            /* -> allocated accumulator, iff allocated  */
-  Unit  accbuff[SD2U(DECBUFFER*4+1)]; /* buffer (+1 for DECBUFFER==0,  */
-                                   /* *4 for calls from other operations)  */
-  const Unit *mer, *mermsup;       /* work  */
-  Int   madlength;                 /* Units in multiplicand  */
-  Int   shift;                     /* Units to shift multiplicand by  */
-
-  #if FASTMUL
-    /* if DECDPUN is 1 or 3 work in base 10**9, otherwise  */
-    /* (DECDPUN is 2 or 4) then work in base 10**8  */
-    #if DECDPUN & 1                /* odd  */
-      #define FASTBASE 1000000000  /* base  */
-      #define FASTDIGS          9  /* digits in base  */
-      #define FASTLAZY         18  /* carry resolution point [1->18]  */
-    #else
-      #define FASTBASE  100000000
-      #define FASTDIGS          8
-      #define FASTLAZY       1844  /* carry resolution point [1->1844]  */
-    #endif
-    /* three buffers are used, two for chunked copies of the operands  */
-    /* (base 10**8 or base 10**9) and one base 2**64 accumulator with  */
-    /* lazy carry evaluation  */
-    uInt   zlhibuff[(DECBUFFER*2+1)/8+1]; /* buffer (+1 for DECBUFFER==0)  */
-    uInt  *zlhi=zlhibuff;                 /* -> lhs array  */
-    uInt  *alloclhi=NULL;                 /* -> allocated buffer, iff allocated  */
-    uInt   zrhibuff[(DECBUFFER*2+1)/8+1]; /* buffer (+1 for DECBUFFER==0)  */
-    uInt  *zrhi=zrhibuff;                 /* -> rhs array  */
-    uInt  *allocrhi=NULL;                 /* -> allocated buffer, iff allocated  */
-    uLong  zaccbuff[(DECBUFFER*2+1)/4+2]; /* buffer (+1 for DECBUFFER==0)  */
-    /* [allocacc is shared for both paths, as only one will run]  */
-    uLong *zacc=zaccbuff;          /* -> accumulator array for exact result  */
-    #if DECDPUN==1
-    Int    zoff;                   /* accumulator offset  */
-    #endif
-    uInt  *lip, *rip;              /* item pointers  */
-    uInt  *lmsi, *rmsi;            /* most significant items  */
-    Int    ilhs, irhs, iacc;       /* item counts in the arrays  */
-    Int    lazy;                   /* lazy carry counter  */
-    uLong  lcarry;                 /* uLong carry  */
-    uInt   carry;                  /* carry (NB not uLong)  */
-    Int    count;                  /* work  */
-    const  Unit *cup;              /* ..  */
-    Unit  *up;                     /* ..  */
-    uLong *lp;                     /* ..  */
-    Int    p;                      /* ..  */
-  #endif
-
-  #if DECSUBSET
-    decNumber *alloclhs=NULL;      /* -> allocated buffer, iff allocated  */
-    decNumber *allocrhs=NULL;      /* -> allocated buffer, iff allocated  */
-  #endif
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  /* precalculate result sign  */
-  bits=(uByte)((lhs->bits^rhs->bits)&DECNEG);
-
-  /* handle infinities and NaNs  */
-  if (SPECIALARGS) {               /* a special bit set  */
-    if (SPECIALARGS & (DECSNAN | DECNAN)) { /* one or two NaNs  */
-      decNaNs(res, lhs, rhs, set, status);
-      return res;}
-    /* one or two infinities; Infinity * 0 is invalid  */
-    if (((lhs->bits & DECINF)==0 && ISZERO(lhs))
-      ||((rhs->bits & DECINF)==0 && ISZERO(rhs))) {
-      *status|=DEC_Invalid_operation;
-      return res;}
-    uprv_decNumberZero(res);
-    res->bits=bits|DECINF;         /* infinity  */
-    return res;}
-
-  /* For best speed, as in DMSRCN [the original Rexx numerics  */
-  /* module], use the shorter number as the multiplier (rhs) and  */
-  /* the longer as the multiplicand (lhs) to minimise the number of  */
-  /* adds (partial products)  */
-  if (lhs->digits<rhs->digits) {   /* swap...  */
-    const decNumber *hold=lhs;
-    lhs=rhs;
-    rhs=hold;
-    }
-
-  do {                             /* protect allocated storage  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operands and set lostDigits status, as needed  */
-      if (lhs->digits>set->digits) {
-        alloclhs=decRoundOperand(lhs, set, status);
-        if (alloclhs==NULL) break;
-        lhs=alloclhs;
-        }
-      if (rhs->digits>set->digits) {
-        allocrhs=decRoundOperand(rhs, set, status);
-        if (allocrhs==NULL) break;
-        rhs=allocrhs;
-        }
-      }
-    #endif
-    /* [following code does not require input rounding]  */
-
-    #if FASTMUL                    /* fastpath can be used  */
-    /* use the fast path if there are enough digits in the shorter  */
-    /* operand to make the setup and takedown worthwhile  */
-    #define NEEDTWO (DECDPUN*2)    /* within two decUnitAddSub calls  */
-    if (rhs->digits>NEEDTWO) {     /* use fastpath...  */
-      /* calculate the number of elements in each array  */
-      ilhs=(lhs->digits+FASTDIGS-1)/FASTDIGS; /* [ceiling]  */
-      irhs=(rhs->digits+FASTDIGS-1)/FASTDIGS; /* ..  */
-      iacc=ilhs+irhs;
-
-      /* allocate buffers if required, as usual  */
-      needbytes=ilhs*sizeof(uInt);
-      if (needbytes>(Int)sizeof(zlhibuff)) {
-        alloclhi=(uInt *)malloc(needbytes);
-        zlhi=alloclhi;}
-      needbytes=irhs*sizeof(uInt);
-      if (needbytes>(Int)sizeof(zrhibuff)) {
-        allocrhi=(uInt *)malloc(needbytes);
-        zrhi=allocrhi;}
-
-      /* Allocating the accumulator space needs a special case when  */
-      /* DECDPUN=1 because when converting the accumulator to Units  */
-      /* after the multiplication each 8-byte item becomes 9 1-byte  */
-      /* units.  Therefore iacc extra bytes are needed at the front  */
-      /* (rounded up to a multiple of 8 bytes), and the uLong  */
-      /* accumulator starts offset the appropriate number of units  */
-      /* to the right to avoid overwrite during the unchunking.  */
-
-      /* Make sure no signed int overflow below. This is always true */
-      /* if the given numbers have less digits than DEC_MAX_DIGITS. */
-      U_ASSERT(iacc <= INT32_MAX/sizeof(uLong));
-      needbytes=iacc*sizeof(uLong);
-      #if DECDPUN==1
-      zoff=(iacc+7)/8;        /* items to offset by  */
-      needbytes+=zoff*8;
-      #endif
-      if (needbytes>(Int)sizeof(zaccbuff)) {
-        allocacc=(uLong *)malloc(needbytes);
-        zacc=(uLong *)allocacc;}
-      if (zlhi==NULL||zrhi==NULL||zacc==NULL) {
-        *status|=DEC_Insufficient_storage;
-        break;}
-
-      acc=(Unit *)zacc;       /* -> target Unit array  */
-      #if DECDPUN==1
-      zacc+=zoff;             /* start uLong accumulator to right  */
-      #endif
-
-      /* assemble the chunked copies of the left and right sides  */
-      for (count=lhs->digits, cup=lhs->lsu, lip=zlhi; count>0; lip++)
-        for (p=0, *lip=0; p<FASTDIGS && count>0;
-             p+=DECDPUN, cup++, count-=DECDPUN)
-          *lip+=*cup*powers[p];
-      lmsi=lip-1;     /* save -> msi  */
-      for (count=rhs->digits, cup=rhs->lsu, rip=zrhi; count>0; rip++)
-        for (p=0, *rip=0; p<FASTDIGS && count>0;
-             p+=DECDPUN, cup++, count-=DECDPUN)
-          *rip+=*cup*powers[p];
-      rmsi=rip-1;     /* save -> msi  */
-
-      /* zero the accumulator  */
-      for (lp=zacc; lp<zacc+iacc; lp++) *lp=0;
-
-      /* Start the multiplication */
-      /* Resolving carries can dominate the cost of accumulating the  */
-      /* partial products, so this is only done when necessary.  */
-      /* Each uLong item in the accumulator can hold values up to  */
-      /* 2**64-1, and each partial product can be as large as  */
-      /* (10**FASTDIGS-1)**2.  When FASTDIGS=9, this can be added to  */
-      /* itself 18.4 times in a uLong without overflowing, so during  */
-      /* the main calculation resolution is carried out every 18th  */
-      /* add -- every 162 digits.  Similarly, when FASTDIGS=8, the  */
-      /* partial products can be added to themselves 1844.6 times in  */
-      /* a uLong without overflowing, so intermediate carry  */
-      /* resolution occurs only every 14752 digits.  Hence for common  */
-      /* short numbers usually only the one final carry resolution  */
-      /* occurs.  */
-      /* (The count is set via FASTLAZY to simplify experiments to  */
-      /* measure the value of this approach: a 35% improvement on a  */
-      /* [34x34] multiply.)  */
-      lazy=FASTLAZY;                         /* carry delay count  */
-      for (rip=zrhi; rip<=rmsi; rip++) {     /* over each item in rhs  */
-        lp=zacc+(rip-zrhi);                  /* where to add the lhs  */
-        for (lip=zlhi; lip<=lmsi; lip++, lp++) { /* over each item in lhs  */
-          *lp+=(uLong)(*lip)*(*rip);         /* [this should in-line]  */
-          } /* lip loop  */
-        lazy--;
-        if (lazy>0 && rip!=rmsi) continue;
-        lazy=FASTLAZY;                       /* reset delay count  */
-        /* spin up the accumulator resolving overflows  */
-        for (lp=zacc; lp<zacc+iacc; lp++) {
-          if (*lp<FASTBASE) continue;        /* it fits  */
-          lcarry=*lp/FASTBASE;               /* top part [slow divide]  */
-          /* lcarry can exceed 2**32-1, so check again; this check  */
-          /* and occasional extra divide (slow) is well worth it, as  */
-          /* it allows FASTLAZY to be increased to 18 rather than 4  */
-          /* in the FASTDIGS=9 case  */
-          if (lcarry<FASTBASE) carry=(uInt)lcarry;  /* [usual]  */
-           else { /* two-place carry [fairly rare]  */
-            uInt carry2=(uInt)(lcarry/FASTBASE);    /* top top part  */
-            *(lp+2)+=carry2;                        /* add to item+2  */
-            *lp-=((uLong)FASTBASE*FASTBASE*carry2); /* [slow]  */
-            carry=(uInt)(lcarry-((uLong)FASTBASE*carry2)); /* [inline]  */
-            }
-          *(lp+1)+=carry;                    /* add to item above [inline]  */
-          *lp-=((uLong)FASTBASE*carry);      /* [inline]  */
-          } /* carry resolution  */
-        } /* rip loop  */
-
-      /* The multiplication is complete; time to convert back into  */
-      /* units.  This can be done in-place in the accumulator and in  */
-      /* 32-bit operations, because carries were resolved after the  */
-      /* final add.  This needs N-1 divides and multiplies for  */
-      /* each item in the accumulator (which will become up to N  */
-      /* units, where 2<=N<=9).  */
-      for (lp=zacc, up=acc; lp<zacc+iacc; lp++) {
-        uInt item=(uInt)*lp;                 /* decapitate to uInt  */
-        for (p=0; p<FASTDIGS-DECDPUN; p+=DECDPUN, up++) {
-          uInt part=item/(DECDPUNMAX+1);
-          *up=(Unit)(item-(part*(DECDPUNMAX+1)));
-          item=part;
-          } /* p  */
-        *up=(Unit)item; up++;                /* [final needs no division]  */
-        } /* lp  */
-      accunits=up-acc;                       /* count of units  */
-      }
-     else { /* here to use units directly, without chunking ['old code']  */
-    #endif
-
-      /* if accumulator will be too long for local storage, then allocate  */
-      acc=accbuff;                 /* -> assume buffer for accumulator  */
-      needbytes=(D2U(lhs->digits)+D2U(rhs->digits))*sizeof(Unit);
-      if (needbytes>(Int)sizeof(accbuff)) {
-        allocacc=(Unit *)malloc(needbytes);
-        if (allocacc==NULL) {*status|=DEC_Insufficient_storage; break;}
-        acc=(Unit *)allocacc;                /* use the allocated space  */
-        }
-
-      /* Now the main long multiplication loop */
-      /* Unlike the equivalent in the IBM Java implementation, there  */
-      /* is no advantage in calculating from msu to lsu.  So, do it  */
-      /* by the book, as it were.  */
-      /* Each iteration calculates ACC=ACC+MULTAND*MULT  */
-      accunits=1;                  /* accumulator starts at '0'  */
-      *acc=0;                      /* .. (lsu=0)  */
-      shift=0;                     /* no multiplicand shift at first  */
-      madlength=D2U(lhs->digits);  /* this won't change  */
-      mermsup=rhs->lsu+D2U(rhs->digits); /* -> msu+1 of multiplier  */
-
-      for (mer=rhs->lsu; mer<mermsup; mer++) {
-        /* Here, *mer is the next Unit in the multiplier to use  */
-        /* If non-zero [optimization] add it...  */
-        if (*mer!=0) accunits=decUnitAddSub(&acc[shift], accunits-shift,
-                                            lhs->lsu, madlength, 0,
-                                            &acc[shift], *mer)
-                                            + shift;
-         else { /* extend acc with a 0; it will be used shortly  */
-          *(acc+accunits)=0;       /* [this avoids length of <=0 later]  */
-          accunits++;
-          }
-        /* multiply multiplicand by 10**DECDPUN for next Unit to left  */
-        shift++;                   /* add this for 'logical length'  */
-        } /* n  */
-    #if FASTMUL
-      } /* unchunked units  */
-    #endif
-    /* common end-path  */
-    #if DECTRACE
-      decDumpAr('*', acc, accunits);         /* Show exact result  */
-    #endif
-
-    /* acc now contains the exact result of the multiplication,  */
-    /* possibly with a leading zero unit; build the decNumber from  */
-    /* it, noting if any residue  */
-    res->bits=bits;                          /* set sign  */
-    res->digits=decGetDigits(acc, accunits); /* count digits exactly  */
-
-    /* There can be a 31-bit wrap in calculating the exponent.  */
-    /* This can only happen if both input exponents are negative and  */
-    /* both their magnitudes are large.  If there was a wrap, set a  */
-    /* safe very negative exponent, from which decFinalize() will  */
-    /* raise a hard underflow shortly.  */
-    exponent=lhs->exponent+rhs->exponent;    /* calculate exponent  */
-    if (lhs->exponent<0 && rhs->exponent<0 && exponent>0)
-      exponent=-2*DECNUMMAXE;                /* force underflow  */
-    res->exponent=exponent;                  /* OK to overwrite now  */
-
-
-    /* Set the coefficient.  If any rounding, residue records  */
-    decSetCoeff(res, set, acc, res->digits, &residue, status);
-    decFinish(res, set, &residue, status);   /* final cleanup  */
-    } while(0);                         /* end protected  */
-
-  if (allocacc!=NULL) free(allocacc);   /* drop any storage used  */
-  #if DECSUBSET
-  if (allocrhs!=NULL) free(allocrhs);   /* ..  */
-  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
-  #endif
-  #if FASTMUL
-  if (allocrhi!=NULL) free(allocrhi);   /* ..  */
-  if (alloclhi!=NULL) free(alloclhi);   /* ..  */
-  #endif
-  return res;
-  } /* decMultiplyOp  */
-
-/* ------------------------------------------------------------------ */
-/* decExpOp -- effect exponentiation                                  */
-/*                                                                    */
-/*   This computes C = exp(A)                                         */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context; note that rounding mode has no effect        */
-/*                                                                    */
-/* C must have space for set->digits digits. status is updated but    */
-/* not set.                                                           */
-/*                                                                    */
-/* Restrictions:                                                      */
-/*                                                                    */
-/*   digits, emax, and -emin in the context must be less than         */
-/*   2*DEC_MAX_MATH (1999998), and the rhs must be within these       */
-/*   bounds or a zero.  This is an internal routine, so these         */
-/*   restrictions are contractual and not enforced.                   */
-/*                                                                    */
-/* A finite result is rounded using DEC_ROUND_HALF_EVEN; it will      */
-/* almost always be correctly rounded, but may be up to 1 ulp in      */
-/* error in rare cases.                                               */
-/*                                                                    */
-/* Finite results will always be full precision and Inexact, except   */
-/* when A is a zero or -Infinity (giving 1 or 0 respectively).        */
-/* ------------------------------------------------------------------ */
-/* This approach used here is similar to the algorithm described in   */
-/*                                                                    */
-/*   Variable Precision Exponential Function, T. E. Hull and          */
-/*   A. Abrham, ACM Transactions on Mathematical Software, Vol 12 #2, */
-/*   pp79-91, ACM, June 1986.                                         */
-/*                                                                    */
-/* with the main difference being that the iterations in the series   */
-/* evaluation are terminated dynamically (which does not require the  */
-/* extra variable-precision variables which are expensive in this     */
-/* context).                                                          */
-/*                                                                    */
-/* The error analysis in Hull & Abrham's paper applies except for the */
-/* round-off error accumulation during the series evaluation.  This   */
-/* code does not precalculate the number of iterations and so cannot  */
-/* use Horner's scheme.  Instead, the accumulation is done at double- */
-/* precision, which ensures that the additions of the terms are exact */
-/* and do not accumulate round-off (and any round-off errors in the   */
-/* terms themselves move 'to the right' faster than they can          */
-/* accumulate).  This code also extends the calculation by allowing,  */
-/* in the spirit of other decNumber operators, the input to be more   */
-/* precise than the result (the precision used is based on the more   */
-/* precise of the input or requested result).                         */
-/*                                                                    */
-/* Implementation notes:                                              */
-/*                                                                    */
-/* 1. This is separated out as decExpOp so it can be called from      */
-/*    other Mathematical functions (notably Ln) with a wider range    */
-/*    than normal.  In particular, it can handle the slightly wider   */
-/*    (double) range needed by Ln (which has to be able to calculate  */
-/*    exp(-x) where x can be the tiniest number (Ntiny).              */
-/*                                                                    */
-/* 2. Normalizing x to be <=0.1 (instead of <=1) reduces loop         */
-/*    iterations by appoximately a third with additional (although    */
-/*    diminishing) returns as the range is reduced to even smaller    */
-/*    fractions.  However, h (the power of 10 used to correct the     */
-/*    result at the end, see below) must be kept <=8 as otherwise     */
-/*    the final result cannot be computed.  Hence the leverage is a   */
-/*    sliding value (8-h), where potentially the range is reduced     */
-/*    more for smaller values.                                        */
-/*                                                                    */
-/*    The leverage that can be applied in this way is severely        */
-/*    limited by the cost of the raise-to-the power at the end,       */
-/*    which dominates when the number of iterations is small (less    */
-/*    than ten) or when rhs is short.  As an example, the adjustment  */
-/*    x**10,000,000 needs 31 multiplications, all but one full-width. */
-/*                                                                    */
-/* 3. The restrictions (especially precision) could be raised with    */
-/*    care, but the full decNumber range seems very hard within the   */
-/*    32-bit limits.                                                  */
-/*                                                                    */
-/* 4. The working precisions for the static buffers are twice the     */
-/*    obvious size to allow for calls from decNumberPower.            */
-/* ------------------------------------------------------------------ */
-decNumber * decExpOp(decNumber *res, const decNumber *rhs,
-                         decContext *set, uInt *status) {
-  uInt ignore=0;                   /* working status  */
-  Int h;                           /* adjusted exponent for 0.xxxx  */
-  Int p;                           /* working precision  */
-  Int residue;                     /* rounding residue  */
-  uInt needbytes;                  /* for space calculations  */
-  const decNumber *x=rhs;          /* (may point to safe copy later)  */
-  decContext aset, tset, dset;     /* working contexts  */
-  Int comp;                        /* work  */
-
-  /* the argument is often copied to normalize it, so (unusually) it  */
-  /* is treated like other buffers, using DECBUFFER, +1 in case  */
-  /* DECBUFFER is 0  */
-  decNumber bufr[D2N(DECBUFFER*2+1)];
-  decNumber *allocrhs=NULL;        /* non-NULL if rhs buffer allocated  */
-
-  /* the working precision will be no more than set->digits+8+1  */
-  /* so for on-stack buffers DECBUFFER+9 is used, +1 in case DECBUFFER  */
-  /* is 0 (and twice that for the accumulator)  */
-
-  /* buffer for t, term (working precision plus)  */
-  decNumber buft[D2N(DECBUFFER*2+9+1)];
-  decNumber *allocbuft=NULL;       /* -> allocated buft, iff allocated  */
-  decNumber *t=buft;               /* term  */
-  /* buffer for a, accumulator (working precision * 2), at least 9  */
-  decNumber bufa[D2N(DECBUFFER*4+18+1)];
-  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
-  decNumber *a=bufa;               /* accumulator  */
-  /* decNumber for the divisor term; this needs at most 9 digits  */
-  /* and so can be fixed size [16 so can use standard context]  */
-  decNumber bufd[D2N(16)];
-  decNumber *d=bufd;               /* divisor  */
-  decNumber numone;                /* constant 1  */
-
-  #if DECCHECK
-  Int iterations=0;                /* for later sanity check  */
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  do {                                  /* protect allocated storage  */
-    if (SPECIALARG) {                   /* handle infinities and NaNs  */
-      if (decNumberIsInfinite(rhs)) {   /* an infinity  */
-        if (decNumberIsNegative(rhs))   /* -Infinity -> +0  */
-          uprv_decNumberZero(res);
-         else uprv_decNumberCopy(res, rhs);  /* +Infinity -> self  */
-        }
-       else decNaNs(res, rhs, NULL, set, status); /* a NaN  */
-      break;}
-
-    if (ISZERO(rhs)) {                  /* zeros -> exact 1  */
-      uprv_decNumberZero(res);               /* make clean 1  */
-      *res->lsu=1;                      /* ..  */
-      break;}                           /* [no status to set]  */
-
-    /* e**x when 0 < x < 0.66 is < 1+3x/2, hence can fast-path  */
-    /* positive and negative tiny cases which will result in inexact  */
-    /* 1.  This also allows the later add-accumulate to always be  */
-    /* exact (because its length will never be more than twice the  */
-    /* working precision).  */
-    /* The comparator (tiny) needs just one digit, so use the  */
-    /* decNumber d for it (reused as the divisor, etc., below); its  */
-    /* exponent is such that if x is positive it will have  */
-    /* set->digits-1 zeros between the decimal point and the digit,  */
-    /* which is 4, and if x is negative one more zero there as the  */
-    /* more precise result will be of the form 0.9999999 rather than  */
-    /* 1.0000001.  Hence, tiny will be 0.0000004  if digits=7 and x>0  */
-    /* or 0.00000004 if digits=7 and x<0.  If RHS not larger than  */
-    /* this then the result will be 1.000000  */
-    uprv_decNumberZero(d);                   /* clean  */
-    *d->lsu=4;                          /* set 4 ..  */
-    d->exponent=-set->digits;           /* * 10**(-d)  */
-    if (decNumberIsNegative(rhs)) d->exponent--;  /* negative case  */
-    comp=decCompare(d, rhs, 1);         /* signless compare  */
-    if (comp==BADINT) {
-      *status|=DEC_Insufficient_storage;
-      break;}
-    if (comp>=0) {                      /* rhs < d  */
-      Int shift=set->digits-1;
-      uprv_decNumberZero(res);               /* set 1  */
-      *res->lsu=1;                      /* ..  */
-      res->digits=decShiftToMost(res->lsu, 1, shift);
-      res->exponent=-shift;                  /* make 1.0000...  */
-      *status|=DEC_Inexact | DEC_Rounded;    /* .. inexactly  */
-      break;} /* tiny  */
-
-    /* set up the context to be used for calculating a, as this is  */
-    /* used on both paths below  */
-    uprv_decContextDefault(&aset, DEC_INIT_DECIMAL64);
-    /* accumulator bounds are as requested (could underflow)  */
-    aset.emax=set->emax;                /* usual bounds  */
-    aset.emin=set->emin;                /* ..  */
-    aset.clamp=0;                       /* and no concrete format  */
-
-    /* calculate the adjusted (Hull & Abrham) exponent (where the  */
-    /* decimal point is just to the left of the coefficient msd)  */
-    h=rhs->exponent+rhs->digits;
-    /* if h>8 then 10**h cannot be calculated safely; however, when  */
-    /* h=8 then exp(|rhs|) will be at least exp(1E+7) which is at  */
-    /* least 6.59E+4342944, so (due to the restriction on Emax/Emin)  */
-    /* overflow (or underflow to 0) is guaranteed -- so this case can  */
-    /* be handled by simply forcing the appropriate excess  */
-    if (h>8) {                          /* overflow/underflow  */
-      /* set up here so Power call below will over or underflow to  */
-      /* zero; set accumulator to either 2 or 0.02  */
-      /* [stack buffer for a is always big enough for this]  */
-      uprv_decNumberZero(a);
-      *a->lsu=2;                        /* not 1 but < exp(1)  */
-      if (decNumberIsNegative(rhs)) a->exponent=-2; /* make 0.02  */
-      h=8;                              /* clamp so 10**h computable  */
-      p=9;                              /* set a working precision  */
-      }
-     else {                             /* h<=8  */
-      Int maxlever=(rhs->digits>8?1:0);
-      /* [could/should increase this for precisions >40 or so, too]  */
-
-      /* if h is 8, cannot normalize to a lower upper limit because  */
-      /* the final result will not be computable (see notes above),  */
-      /* but leverage can be applied whenever h is less than 8.  */
-      /* Apply as much as possible, up to a MAXLEVER digits, which  */
-      /* sets the tradeoff against the cost of the later a**(10**h).  */
-      /* As h is increased, the working precision below also  */
-      /* increases to compensate for the "constant digits at the  */
-      /* front" effect.  */
-      Int lever=MINI(8-h, maxlever);    /* leverage attainable  */
-      Int use=-rhs->digits-lever;       /* exponent to use for RHS  */
-      h+=lever;                         /* apply leverage selected  */
-      if (h<0) {                        /* clamp  */
-        use+=h;                         /* [may end up subnormal]  */
-        h=0;
-        }
-      /* Take a copy of RHS if it needs normalization (true whenever x>=1)  */
-      if (rhs->exponent!=use) {
-        decNumber *newrhs=bufr;         /* assume will fit on stack  */
-        needbytes=sizeof(decNumber)+(D2U(rhs->digits)-1)*sizeof(Unit);
-        if (needbytes>sizeof(bufr)) {   /* need malloc space  */
-          allocrhs=(decNumber *)malloc(needbytes);
-          if (allocrhs==NULL) {         /* hopeless -- abandon  */
-            *status|=DEC_Insufficient_storage;
-            break;}
-          newrhs=allocrhs;              /* use the allocated space  */
-          }
-        uprv_decNumberCopy(newrhs, rhs);     /* copy to safe space  */
-        newrhs->exponent=use;           /* normalize; now <1  */
-        x=newrhs;                       /* ready for use  */
-        /* decNumberShow(x);  */
-        }
-
-      /* Now use the usual power series to evaluate exp(x).  The  */
-      /* series starts as 1 + x + x^2/2 ... so prime ready for the  */
-      /* third term by setting the term variable t=x, the accumulator  */
-      /* a=1, and the divisor d=2.  */
-
-      /* First determine the working precision.  From Hull & Abrham  */
-      /* this is set->digits+h+2.  However, if x is 'over-precise' we  */
-      /* need to allow for all its digits to potentially participate  */
-      /* (consider an x where all the excess digits are 9s) so in  */
-      /* this case use x->digits+h+2  */
-      p=MAXI(x->digits, set->digits)+h+2;    /* [h<=8]  */
-
-      /* a and t are variable precision, and depend on p, so space  */
-      /* must be allocated for them if necessary  */
-
-      /* the accumulator needs to be able to hold 2p digits so that  */
-      /* the additions on the second and subsequent iterations are  */
-      /* sufficiently exact.  */
-      needbytes=sizeof(decNumber)+(D2U(p*2)-1)*sizeof(Unit);
-      if (needbytes>sizeof(bufa)) {     /* need malloc space  */
-        allocbufa=(decNumber *)malloc(needbytes);
-        if (allocbufa==NULL) {          /* hopeless -- abandon  */
-          *status|=DEC_Insufficient_storage;
-          break;}
-        a=allocbufa;                    /* use the allocated space  */
-        }
-      /* the term needs to be able to hold p digits (which is  */
-      /* guaranteed to be larger than x->digits, so the initial copy  */
-      /* is safe); it may also be used for the raise-to-power  */
-      /* calculation below, which needs an extra two digits  */
-      needbytes=sizeof(decNumber)+(D2U(p+2)-1)*sizeof(Unit);
-      if (needbytes>sizeof(buft)) {     /* need malloc space  */
-        allocbuft=(decNumber *)malloc(needbytes);
-        if (allocbuft==NULL) {          /* hopeless -- abandon  */
-          *status|=DEC_Insufficient_storage;
-          break;}
-        t=allocbuft;                    /* use the allocated space  */
-        }
-
-      uprv_decNumberCopy(t, x);              /* term=x  */
-      uprv_decNumberZero(a); *a->lsu=1;      /* accumulator=1  */
-      uprv_decNumberZero(d); *d->lsu=2;      /* divisor=2  */
-      uprv_decNumberZero(&numone); *numone.lsu=1; /* constant 1 for increment  */
-
-      /* set up the contexts for calculating a, t, and d  */
-      uprv_decContextDefault(&tset, DEC_INIT_DECIMAL64);
-      dset=tset;
-      /* accumulator bounds are set above, set precision now  */
-      aset.digits=p*2;                  /* double  */
-      /* term bounds avoid any underflow or overflow  */
-      tset.digits=p;
-      tset.emin=DEC_MIN_EMIN;           /* [emax is plenty]  */
-      /* [dset.digits=16, etc., are sufficient]  */
-
-      /* finally ready to roll  */
-      for (;;) {
-        #if DECCHECK
-        iterations++;
-        #endif
-        /* only the status from the accumulation is interesting  */
-        /* [but it should remain unchanged after first add]  */
-        decAddOp(a, a, t, &aset, 0, status);           /* a=a+t  */
-        decMultiplyOp(t, t, x, &tset, &ignore);        /* t=t*x  */
-        decDivideOp(t, t, d, &tset, DIVIDE, &ignore);  /* t=t/d  */
-        /* the iteration ends when the term cannot affect the result,  */
-        /* if rounded to p digits, which is when its value is smaller  */
-        /* than the accumulator by p+1 digits.  There must also be  */
-        /* full precision in a.  */
-        if (((a->digits+a->exponent)>=(t->digits+t->exponent+p+1))
-            && (a->digits>=p)) break;
-        decAddOp(d, d, &numone, &dset, 0, &ignore);    /* d=d+1  */
-        } /* iterate  */
-
-      #if DECCHECK
-      /* just a sanity check; comment out test to show always  */
-      if (iterations>p+3)
-        printf("Exp iterations=%ld, status=%08lx, p=%ld, d=%ld\n",
-               (LI)iterations, (LI)*status, (LI)p, (LI)x->digits);
-      #endif
-      } /* h<=8  */
-
-    /* apply postconditioning: a=a**(10**h) -- this is calculated  */
-    /* at a slightly higher precision than Hull & Abrham suggest  */
-    if (h>0) {
-      Int seenbit=0;               /* set once a 1-bit is seen  */
-      Int i;                       /* counter  */
-      Int n=powers[h];             /* always positive  */
-      aset.digits=p+2;             /* sufficient precision  */
-      /* avoid the overhead and many extra digits of decNumberPower  */
-      /* as all that is needed is the short 'multipliers' loop; here  */
-      /* accumulate the answer into t  */
-      uprv_decNumberZero(t); *t->lsu=1; /* acc=1  */
-      for (i=1;;i++){              /* for each bit [top bit ignored]  */
-        /* abandon if have had overflow or terminal underflow  */
-        if (*status & (DEC_Overflow|DEC_Underflow)) { /* interesting?  */
-          if (*status&DEC_Overflow || ISZERO(t)) break;}
-        n=n<<1;                    /* move next bit to testable position  */
-        if (n<0) {                 /* top bit is set  */
-          seenbit=1;               /* OK, have a significant bit  */
-          decMultiplyOp(t, t, a, &aset, status); /* acc=acc*x  */
-          }
-        if (i==31) break;          /* that was the last bit  */
-        if (!seenbit) continue;    /* no need to square 1  */
-        decMultiplyOp(t, t, t, &aset, status); /* acc=acc*acc [square]  */
-        } /*i*/ /* 32 bits  */
-      /* decNumberShow(t);  */
-      a=t;                         /* and carry on using t instead of a  */
-      }
-
-    /* Copy and round the result to res  */
-    residue=1;                          /* indicate dirt to right ..  */
-    if (ISZERO(a)) residue=0;           /* .. unless underflowed to 0  */
-    aset.digits=set->digits;            /* [use default rounding]  */
-    decCopyFit(res, a, &aset, &residue, status); /* copy & shorten  */
-    decFinish(res, set, &residue, status);       /* cleanup/set flags  */
-    } while(0);                         /* end protected  */
-
-  if (allocrhs !=NULL) free(allocrhs);  /* drop any storage used  */
-  if (allocbufa!=NULL) free(allocbufa); /* ..  */
-  if (allocbuft!=NULL) free(allocbuft); /* ..  */
-  /* [status is handled by caller]  */
-  return res;
-  } /* decExpOp  */
-
-/* ------------------------------------------------------------------ */
-/* Initial-estimate natural logarithm table                           */
-/*                                                                    */
-/*   LNnn -- 90-entry 16-bit table for values from .10 through .99.   */
-/*           The result is a 4-digit encode of the coefficient (c=the */
-/*           top 14 bits encoding 0-9999) and a 2-digit encode of the */
-/*           exponent (e=the bottom 2 bits encoding 0-3)              */
-/*                                                                    */
-/*           The resulting value is given by:                         */
-/*                                                                    */
-/*             v = -c * 10**(-e-3)                                    */
-/*                                                                    */
-/*           where e and c are extracted from entry k = LNnn[x-10]    */
-/*           where x is truncated (NB) into the range 10 through 99,  */
-/*           and then c = k>>2 and e = k&3.                           */
-/* ------------------------------------------------------------------ */
-static const uShort LNnn[90]={9016,  8652,  8316,  8008,  7724,  7456,  7208,
-  6972,  6748,  6540,  6340,  6148,  5968,  5792,  5628,  5464,  5312,
-  5164,  5020,  4884,  4748,  4620,  4496,  4376,  4256,  4144,  4032,
- 39233, 38181, 37157, 36157, 35181, 34229, 33297, 32389, 31501, 30629,
- 29777, 28945, 28129, 27329, 26545, 25777, 25021, 24281, 23553, 22837,
- 22137, 21445, 20769, 20101, 19445, 18801, 18165, 17541, 16925, 16321,
- 15721, 15133, 14553, 13985, 13421, 12865, 12317, 11777, 11241, 10717,
- 10197,  9685,  9177,  8677,  8185,  7697,  7213,  6737,  6269,  5801,
-  5341,  4889,  4437, 39930, 35534, 31186, 26886, 22630, 18418, 14254,
- 10130,  6046, 20055};
-
-/* ------------------------------------------------------------------ */
-/* decLnOp -- effect natural logarithm                                */
-/*                                                                    */
-/*   This computes C = ln(A)                                          */
-/*                                                                    */
-/*   res is C, the result.  C may be A                                */
-/*   rhs is A                                                         */
-/*   set is the context; note that rounding mode has no effect        */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Notable cases:                                                     */
-/*   A<0 -> Invalid                                                   */
-/*   A=0 -> -Infinity (Exact)                                         */
-/*   A=+Infinity -> +Infinity (Exact)                                 */
-/*   A=1 exactly -> 0 (Exact)                                         */
-/*                                                                    */
-/* Restrictions (as for Exp):                                         */
-/*                                                                    */
-/*   digits, emax, and -emin in the context must be less than         */
-/*   DEC_MAX_MATH+11 (1000010), and the rhs must be within these      */
-/*   bounds or a zero.  This is an internal routine, so these         */
-/*   restrictions are contractual and not enforced.                   */
-/*                                                                    */
-/* A finite result is rounded using DEC_ROUND_HALF_EVEN; it will      */
-/* almost always be correctly rounded, but may be up to 1 ulp in      */
-/* error in rare cases.                                               */
-/* ------------------------------------------------------------------ */
-/* The result is calculated using Newton's method, with each          */
-/* iteration calculating a' = a + x * exp(-a) - 1.  See, for example, */
-/* Epperson 1989.                                                     */
-/*                                                                    */
-/* The iteration ends when the adjustment x*exp(-a)-1 is tiny enough. */
-/* This has to be calculated at the sum of the precision of x and the */
-/* working precision.                                                 */
-/*                                                                    */
-/* Implementation notes:                                              */
-/*                                                                    */
-/* 1. This is separated out as decLnOp so it can be called from       */
-/*    other Mathematical functions (e.g., Log 10) with a wider range  */
-/*    than normal.  In particular, it can handle the slightly wider   */
-/*    (+9+2) range needed by a power function.                        */
-/*                                                                    */
-/* 2. The speed of this function is about 10x slower than exp, as     */
-/*    it typically needs 4-6 iterations for short numbers, and the    */
-/*    extra precision needed adds a squaring effect, twice.           */
-/*                                                                    */
-/* 3. Fastpaths are included for ln(10) and ln(2), up to length 40,   */
-/*    as these are common requests.  ln(10) is used by log10(x).      */
-/*                                                                    */
-/* 4. An iteration might be saved by widening the LNnn table, and     */
-/*    would certainly save at least one if it were made ten times     */
-/*    bigger, too (for truncated fractions 0.100 through 0.999).      */
-/*    However, for most practical evaluations, at least four or five  */
-/*    iterations will be neede -- so this would only speed up by      */
-/*    20-25% and that probably does not justify increasing the table  */
-/*    size.                                                           */
-/*                                                                    */
-/* 5. The static buffers are larger than might be expected to allow   */
-/*    for calls from decNumberPower.                                  */
-/* ------------------------------------------------------------------ */
-#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Warray-bounds"
-#endif
-decNumber * decLnOp(decNumber *res, const decNumber *rhs,
-                    decContext *set, uInt *status) {
-  uInt ignore=0;                   /* working status accumulator  */
-  uInt needbytes;                  /* for space calculations  */
-  Int residue;                     /* rounding residue  */
-  Int r;                           /* rhs=f*10**r [see below]  */
-  Int p;                           /* working precision  */
-  Int pp;                          /* precision for iteration  */
-  Int t;                           /* work  */
-
-  /* buffers for a (accumulator, typically precision+2) and b  */
-  /* (adjustment calculator, same size)  */
-  decNumber bufa[D2N(DECBUFFER+12)];
-  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
-  decNumber *a=bufa;               /* accumulator/work  */
-  decNumber bufb[D2N(DECBUFFER*2+2)];
-  decNumber *allocbufb=NULL;       /* -> allocated bufa, iff allocated  */
-  decNumber *b=bufb;               /* adjustment/work  */
-
-  decNumber  numone;               /* constant 1  */
-  decNumber  cmp;                  /* work  */
-  decContext aset, bset;           /* working contexts  */
-
-  #if DECCHECK
-  Int iterations=0;                /* for later sanity check  */
-  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
-  #endif
-
-  do {                                  /* protect allocated storage  */
-    if (SPECIALARG) {                   /* handle infinities and NaNs  */
-      if (decNumberIsInfinite(rhs)) {   /* an infinity  */
-        if (decNumberIsNegative(rhs))   /* -Infinity -> error  */
-          *status|=DEC_Invalid_operation;
-         else uprv_decNumberCopy(res, rhs);  /* +Infinity -> self  */
-        }
-       else decNaNs(res, rhs, NULL, set, status); /* a NaN  */
-      break;}
-
-    if (ISZERO(rhs)) {                  /* +/- zeros -> -Infinity  */
-      uprv_decNumberZero(res);               /* make clean  */
-      res->bits=DECINF|DECNEG;          /* set - infinity  */
-      break;}                           /* [no status to set]  */
-
-    /* Non-zero negatives are bad...  */
-    if (decNumberIsNegative(rhs)) {     /* -x -> error  */
-      *status|=DEC_Invalid_operation;
-      break;}
-
-    /* Here, rhs is positive, finite, and in range  */
-
-    /* lookaside fastpath code for ln(2) and ln(10) at common lengths  */
-    if (rhs->exponent==0 && set->digits<=40) {
-      #if DECDPUN==1
-      if (rhs->lsu[0]==0 && rhs->lsu[1]==1 && rhs->digits==2) { /* ln(10)  */
-      #else
-      if (rhs->lsu[0]==10 && rhs->digits==2) {                  /* ln(10)  */
-      #endif
-        aset=*set; aset.round=DEC_ROUND_HALF_EVEN;
-        #define LN10 "2.302585092994045684017991454684364207601"
-        uprv_decNumberFromString(res, LN10, &aset);
-        *status|=(DEC_Inexact | DEC_Rounded); /* is inexact  */
-        break;}
-      if (rhs->lsu[0]==2 && rhs->digits==1) { /* ln(2)  */
-        aset=*set; aset.round=DEC_ROUND_HALF_EVEN;
-        #define LN2 "0.6931471805599453094172321214581765680755"
-        uprv_decNumberFromString(res, LN2, &aset);
-        *status|=(DEC_Inexact | DEC_Rounded);
-        break;}
-      } /* integer and short  */
-
-    /* Determine the working precision.  This is normally the  */
-    /* requested precision + 2, with a minimum of 9.  However, if  */
-    /* the rhs is 'over-precise' then allow for all its digits to  */
-    /* potentially participate (consider an rhs where all the excess  */
-    /* digits are 9s) so in this case use rhs->digits+2.  */
-    p=MAXI(rhs->digits, MAXI(set->digits, 7))+2;
-
-    /* Allocate space for the accumulator and the high-precision  */
-    /* adjustment calculator, if necessary.  The accumulator must  */
-    /* be able to hold p digits, and the adjustment up to  */
-    /* rhs->digits+p digits.  They are also made big enough for 16  */
-    /* digits so that they can be used for calculating the initial  */
-    /* estimate.  */
-    needbytes=sizeof(decNumber)+(D2U(MAXI(p,16))-1)*sizeof(Unit);
-    if (needbytes>sizeof(bufa)) {     /* need malloc space  */
-      allocbufa=(decNumber *)malloc(needbytes);
-      if (allocbufa==NULL) {          /* hopeless -- abandon  */
-        *status|=DEC_Insufficient_storage;
-        break;}
-      a=allocbufa;                    /* use the allocated space  */
-      }
-    pp=p+rhs->digits;
-    needbytes=sizeof(decNumber)+(D2U(MAXI(pp,16))-1)*sizeof(Unit);
-    if (needbytes>sizeof(bufb)) {     /* need malloc space  */
-      allocbufb=(decNumber *)malloc(needbytes);
-      if (allocbufb==NULL) {          /* hopeless -- abandon  */
-        *status|=DEC_Insufficient_storage;
-        break;}
-      b=allocbufb;                    /* use the allocated space  */
-      }
-
-    /* Prepare an initial estimate in acc. Calculate this by  */
-    /* considering the coefficient of x to be a normalized fraction,  */
-    /* f, with the decimal point at far left and multiplied by  */
-    /* 10**r.  Then, rhs=f*10**r and 0.1<=f<1, and  */
-    /*   ln(x) = ln(f) + ln(10)*r  */
-    /* Get the initial estimate for ln(f) from a small lookup  */
-    /* table (see above) indexed by the first two digits of f,  */
-    /* truncated.  */
-
-    uprv_decContextDefault(&aset, DEC_INIT_DECIMAL64); /* 16-digit extended  */
-    r=rhs->exponent+rhs->digits;        /* 'normalised' exponent  */
-    uprv_decNumberFromInt32(a, r);           /* a=r  */
-    uprv_decNumberFromInt32(b, 2302585);     /* b=ln(10) (2.302585)  */
-    b->exponent=-6;                     /*  ..  */
-    decMultiplyOp(a, a, b, &aset, &ignore);  /* a=a*b  */
-    /* now get top two digits of rhs into b by simple truncate and  */
-    /* force to integer  */
-    residue=0;                          /* (no residue)  */
-    aset.digits=2; aset.round=DEC_ROUND_DOWN;
-    decCopyFit(b, rhs, &aset, &residue, &ignore); /* copy & shorten  */
-    b->exponent=0;                      /* make integer  */
-    t=decGetInt(b);                     /* [cannot fail]  */
-    if (t<10) t=X10(t);                 /* adjust single-digit b  */
-    t=LNnn[t-10];                       /* look up ln(b)  */
-    uprv_decNumberFromInt32(b, t>>2);        /* b=ln(b) coefficient  */
-    b->exponent=-(t&3)-3;               /* set exponent  */
-    b->bits=DECNEG;                     /* ln(0.10)->ln(0.99) always -ve  */
-    aset.digits=16; aset.round=DEC_ROUND_HALF_EVEN; /* restore  */
-    decAddOp(a, a, b, &aset, 0, &ignore); /* acc=a+b  */
-    /* the initial estimate is now in a, with up to 4 digits correct.  */
-    /* When rhs is at or near Nmax the estimate will be low, so we  */
-    /* will approach it from below, avoiding overflow when calling exp.  */
-
-    uprv_decNumberZero(&numone); *numone.lsu=1;   /* constant 1 for adjustment  */
-
-    /* accumulator bounds are as requested (could underflow, but  */
-    /* cannot overflow)  */
-    aset.emax=set->emax;
-    aset.emin=set->emin;
-    aset.clamp=0;                       /* no concrete format  */
-    /* set up a context to be used for the multiply and subtract  */
-    bset=aset;
-    bset.emax=DEC_MAX_MATH*2;           /* use double bounds for the  */
-    bset.emin=-DEC_MAX_MATH*2;          /* adjustment calculation  */
-                                        /* [see decExpOp call below]  */
-    /* for each iteration double the number of digits to calculate,  */
-    /* up to a maximum of p  */
-    pp=9;                               /* initial precision  */
-    /* [initially 9 as then the sequence starts 7+2, 16+2, and  */
-    /* 34+2, which is ideal for standard-sized numbers]  */
-    aset.digits=pp;                     /* working context  */
-    bset.digits=pp+rhs->digits;         /* wider context  */
-    for (;;) {                          /* iterate  */
-      #if DECCHECK
-      iterations++;
-      if (iterations>24) break;         /* consider 9 * 2**24  */
-      #endif
-      /* calculate the adjustment (exp(-a)*x-1) into b.  This is a  */
-      /* catastrophic subtraction but it really is the difference  */
-      /* from 1 that is of interest.  */
-      /* Use the internal entry point to Exp as it allows the double  */
-      /* range for calculating exp(-a) when a is the tiniest subnormal.  */
-      a->bits^=DECNEG;                  /* make -a  */
-      decExpOp(b, a, &bset, &ignore);   /* b=exp(-a)  */
-      a->bits^=DECNEG;                  /* restore sign of a  */
-      /* now multiply by rhs and subtract 1, at the wider precision  */
-      decMultiplyOp(b, b, rhs, &bset, &ignore);        /* b=b*rhs  */
-      decAddOp(b, b, &numone, &bset, DECNEG, &ignore); /* b=b-1  */
-
-      /* the iteration ends when the adjustment cannot affect the  */
-      /* result by >=0.5 ulp (at the requested digits), which  */
-      /* is when its value is smaller than the accumulator by  */
-      /* set->digits+1 digits (or it is zero) -- this is a looser  */
-      /* requirement than for Exp because all that happens to the  */
-      /* accumulator after this is the final rounding (but note that  */
-      /* there must also be full precision in a, or a=0).  */
-
-      if (decNumberIsZero(b) ||
-          (a->digits+a->exponent)>=(b->digits+b->exponent+set->digits+1)) {
-        if (a->digits==p) break;
-        if (decNumberIsZero(a)) {
-          decCompareOp(&cmp, rhs, &numone, &aset, COMPARE, &ignore); /* rhs=1 ?  */
-          if (cmp.lsu[0]==0) a->exponent=0;            /* yes, exact 0  */
-           else *status|=(DEC_Inexact | DEC_Rounded);  /* no, inexact  */
-          break;
-          }
-        /* force padding if adjustment has gone to 0 before full length  */
-        if (decNumberIsZero(b)) b->exponent=a->exponent-p;
-        }
-
-      /* not done yet ...  */
-      decAddOp(a, a, b, &aset, 0, &ignore);  /* a=a+b for next estimate  */
-      if (pp==p) continue;                   /* precision is at maximum  */
-      /* lengthen the next calculation  */
-      pp=pp*2;                               /* double precision  */
-      if (pp>p) pp=p;                        /* clamp to maximum  */
-      aset.digits=pp;                        /* working context  */
-      bset.digits=pp+rhs->digits;            /* wider context  */
-      } /* Newton's iteration  */
-
-    #if DECCHECK
-    /* just a sanity check; remove the test to show always  */
-    if (iterations>24)
-      printf("Ln iterations=%ld, status=%08lx, p=%ld, d=%ld\n",
-            (LI)iterations, (LI)*status, (LI)p, (LI)rhs->digits);
-    #endif
-
-    /* Copy and round the result to res  */
-    residue=1;                          /* indicate dirt to right  */
-    if (ISZERO(a)) residue=0;           /* .. unless underflowed to 0  */
-    aset.digits=set->digits;            /* [use default rounding]  */
-    decCopyFit(res, a, &aset, &residue, status); /* copy & shorten  */
-    decFinish(res, set, &residue, status);       /* cleanup/set flags  */
-    } while(0);                         /* end protected  */
-
-  if (allocbufa!=NULL) free(allocbufa); /* drop any storage used  */
-  if (allocbufb!=NULL) free(allocbufb); /* ..  */
-  /* [status is handled by caller]  */
-  return res;
-  } /* decLnOp  */
-#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
-#pragma GCC diagnostic pop
-#endif
-
-/* ------------------------------------------------------------------ */
-/* decQuantizeOp  -- force exponent to requested value                */
-/*                                                                    */
-/*   This computes C = op(A, B), where op adjusts the coefficient     */
-/*   of C (by rounding or shifting) such that the exponent (-scale)   */
-/*   of C has the value B or matches the exponent of B.               */
-/*   The numerical value of C will equal A, except for the effects of */
-/*   any rounding that occurred.                                      */
-/*                                                                    */
-/*   res is C, the result.  C may be A or B                           */
-/*   lhs is A, the number to adjust                                   */
-/*   rhs is B, the requested exponent                                 */
-/*   set is the context                                               */
-/*   quant is 1 for quantize or 0 for rescale                         */
-/*   status is the status accumulator (this can be called without     */
-/*          risk of control loss)                                     */
-/*                                                                    */
-/* C must have space for set->digits digits.                          */
-/*                                                                    */
-/* Unless there is an error or the result is infinite, the exponent   */
-/* after the operation is guaranteed to be that requested.            */
-/* ------------------------------------------------------------------ */
-static decNumber * decQuantizeOp(decNumber *res, const decNumber *lhs,
-                                 const decNumber *rhs, decContext *set,
-                                 Flag quant, uInt *status) {
-  #if DECSUBSET
-  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
-  decNumber *allocrhs=NULL;        /* .., rhs  */
-  #endif
-  const decNumber *inrhs=rhs;      /* save original rhs  */
-  Int   reqdigits=set->digits;     /* requested DIGITS  */
-  Int   reqexp;                    /* requested exponent [-scale]  */
-  Int   residue=0;                 /* rounding residue  */
-  Int   etiny=set->emin-(reqdigits-1);
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  do {                             /* protect allocated storage  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operands and set lostDigits status, as needed  */
-      if (lhs->digits>reqdigits) {
-        alloclhs=decRoundOperand(lhs, set, status);
-        if (alloclhs==NULL) break;
-        lhs=alloclhs;
-        }
-      if (rhs->digits>reqdigits) { /* [this only checks lostDigits]  */
-        allocrhs=decRoundOperand(rhs, set, status);
-        if (allocrhs==NULL) break;
-        rhs=allocrhs;
-        }
-      }
-    #endif
-    /* [following code does not require input rounding]  */
-
-    /* Handle special values  */
-    if (SPECIALARGS) {
-      /* NaNs get usual processing  */
-      if (SPECIALARGS & (DECSNAN | DECNAN))
-        decNaNs(res, lhs, rhs, set, status);
-      /* one infinity but not both is bad  */
-      else if ((lhs->bits ^ rhs->bits) & DECINF)
-        *status|=DEC_Invalid_operation;
-      /* both infinity: return lhs  */
-      else uprv_decNumberCopy(res, lhs);          /* [nop if in place]  */
-      break;
-      }
-
-    /* set requested exponent  */
-    if (quant) reqexp=inrhs->exponent;  /* quantize -- match exponents  */
-     else {                             /* rescale -- use value of rhs  */
-      /* Original rhs must be an integer that fits and is in range,  */
-      /* which could be from -1999999997 to +999999999, thanks to  */
-      /* subnormals  */
-      reqexp=decGetInt(inrhs);               /* [cannot fail]  */
-      }
-
-    #if DECSUBSET
-    if (!set->extended) etiny=set->emin;     /* no subnormals  */
-    #endif
-
-    if (reqexp==BADINT                       /* bad (rescale only) or ..  */
-     || reqexp==BIGODD || reqexp==BIGEVEN    /* very big (ditto) or ..  */
-     || (reqexp<etiny)                       /* < lowest  */
-     || (reqexp>set->emax)) {                /* > emax  */
-      *status|=DEC_Invalid_operation;
-      break;}
-
-    /* the RHS has been processed, so it can be overwritten now if necessary  */
-    if (ISZERO(lhs)) {                       /* zero coefficient unchanged  */
-      uprv_decNumberCopy(res, lhs);               /* [nop if in place]  */
-      res->exponent=reqexp;                  /* .. just set exponent  */
-      #if DECSUBSET
-      if (!set->extended) res->bits=0;       /* subset specification; no -0  */
-      #endif
-      }
-     else {                                  /* non-zero lhs  */
-      Int adjust=reqexp-lhs->exponent;       /* digit adjustment needed  */
-      /* if adjusted coefficient will definitely not fit, give up now  */
-      if ((lhs->digits-adjust)>reqdigits) {
-        *status|=DEC_Invalid_operation;
-        break;
-        }
-
-      if (adjust>0) {                        /* increasing exponent  */
-        /* this will decrease the length of the coefficient by adjust  */
-        /* digits, and must round as it does so  */
-        decContext workset;                  /* work  */
-        workset=*set;                        /* clone rounding, etc.  */
-        workset.digits=lhs->digits-adjust;   /* set requested length  */
-        /* [note that the latter can be <1, here]  */
-        decCopyFit(res, lhs, &workset, &residue, status); /* fit to result  */
-        decApplyRound(res, &workset, residue, status);    /* .. and round  */
-        residue=0;                                        /* [used]  */
-        /* If just rounded a 999s case, exponent will be off by one;  */
-        /* adjust back (after checking space), if so.  */
-        if (res->exponent>reqexp) {
-          /* re-check needed, e.g., for quantize(0.9999, 0.001) under  */
-          /* set->digits==3  */
-          if (res->digits==reqdigits) {      /* cannot shift by 1  */
-            *status&=~(DEC_Inexact | DEC_Rounded); /* [clean these]  */
-            *status|=DEC_Invalid_operation;
-            break;
-            }
-          res->digits=decShiftToMost(res->lsu, res->digits, 1); /* shift  */
-          res->exponent--;                   /* (re)adjust the exponent.  */
-          }
-        #if DECSUBSET
-        if (ISZERO(res) && !set->extended) res->bits=0; /* subset; no -0  */
-        #endif
-        } /* increase  */
-       else /* adjust<=0 */ {                /* decreasing or = exponent  */
-        /* this will increase the length of the coefficient by -adjust  */
-        /* digits, by adding zero or more trailing zeros; this is  */
-        /* already checked for fit, above  */
-        uprv_decNumberCopy(res, lhs);             /* [it will fit]  */
-        /* if padding needed (adjust<0), add it now...  */
-        if (adjust<0) {
-          res->digits=decShiftToMost(res->lsu, res->digits, -adjust);
-          res->exponent+=adjust;             /* adjust the exponent  */
-          }
-        } /* decrease  */
-      } /* non-zero  */
-
-    /* Check for overflow [do not use Finalize in this case, as an  */
-    /* overflow here is a "don't fit" situation]  */
-    if (res->exponent>set->emax-res->digits+1) {  /* too big  */
-      *status|=DEC_Invalid_operation;
-      break;
-      }
-     else {
-      decFinalize(res, set, &residue, status);    /* set subnormal flags  */
-      *status&=~DEC_Underflow;          /* suppress Underflow [as per 754]  */
-      }
-    } while(0);                         /* end protected  */
-
-  #if DECSUBSET
-  if (allocrhs!=NULL) free(allocrhs);   /* drop any storage used  */
-  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
-  #endif
-  return res;
-  } /* decQuantizeOp  */
-
-/* ------------------------------------------------------------------ */
-/* decCompareOp -- compare, min, or max two Numbers                   */
-/*                                                                    */
-/*   This computes C = A ? B and carries out one of four operations:  */
-/*     COMPARE    -- returns the signum (as a number) giving the      */
-/*                   result of a comparison unless one or both        */
-/*                   operands is a NaN (in which case a NaN results)  */
-/*     COMPSIG    -- as COMPARE except that a quiet NaN raises        */
-/*                   Invalid operation.                               */
-/*     COMPMAX    -- returns the larger of the operands, using the    */
-/*                   754 maxnum operation                             */
-/*     COMPMAXMAG -- ditto, comparing absolute values                 */
-/*     COMPMIN    -- the 754 minnum operation                         */
-/*     COMPMINMAG -- ditto, comparing absolute values                 */
-/*     COMTOTAL   -- returns the signum (as a number) giving the      */
-/*                   result of a comparison using 754 total ordering  */
-/*                                                                    */
-/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
-/*   lhs is A                                                         */
-/*   rhs is B                                                         */
-/*   set is the context                                               */
-/*   op  is the operation flag                                        */
-/*   status is the usual accumulator                                  */
-/*                                                                    */
-/* C must have space for one digit for COMPARE or set->digits for     */
-/* COMPMAX, COMPMIN, COMPMAXMAG, or COMPMINMAG.                       */
-/* ------------------------------------------------------------------ */
-/* The emphasis here is on speed for common cases, and avoiding       */
-/* coefficient comparison if possible.                                */
-/* ------------------------------------------------------------------ */
-static decNumber * decCompareOp(decNumber *res, const decNumber *lhs,
-                         const decNumber *rhs, decContext *set,
-                         Flag op, uInt *status) {
-  #if DECSUBSET
-  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
-  decNumber *allocrhs=NULL;        /* .., rhs  */
-  #endif
-  Int   result=0;                  /* default result value  */
-  uByte merged;                    /* work  */
-
-  #if DECCHECK
-  if (decCheckOperands(res, lhs, rhs, set)) return res;
-  #endif
-
-  do {                             /* protect allocated storage  */
-    #if DECSUBSET
-    if (!set->extended) {
-      /* reduce operands and set lostDigits status, as needed  */
-      if (lhs->digits>set->digits) {
-        alloclhs=decRoundOperand(lhs, set, status);
-        if (alloclhs==NULL) {result=BADINT; break;}
-        lhs=alloclhs;
-        }
-      if (rhs->digits>set->digits) {
-        allocrhs=decRoundOperand(rhs, set, status);
-        if (allocrhs==NULL) {result=BADINT; break;}
-        rhs=allocrhs;
-        }
-      }
-    #endif
-    /* [following code does not require input rounding]  */
-
-    /* If total ordering then handle differing signs 'up front'  */
-    if (op==COMPTOTAL) {                /* total ordering  */
-      if (decNumberIsNegative(lhs) && !decNumberIsNegative(rhs)) {
-        result=-1;
-        break;
-        }
-      if (!decNumberIsNegative(lhs) && decNumberIsNegative(rhs)) {
-        result=+1;
-        break;
-        }
-      }
-
-    /* handle NaNs specially; let infinities drop through  */
-    /* This assumes sNaN (even just one) leads to NaN.  */
-    merged=(lhs->bits | rhs->bits) & (DECSNAN | DECNAN);
-    if (merged) {                       /* a NaN bit set  */
-      if (op==COMPARE);                 /* result will be NaN  */
-       else if (op==COMPSIG)            /* treat qNaN as sNaN  */
-        *status|=DEC_Invalid_operation | DEC_sNaN;
-       else if (op==COMPTOTAL) {        /* total ordering, always finite  */
-        /* signs are known to be the same; compute the ordering here  */
-        /* as if the signs are both positive, then invert for negatives  */
-        if (!decNumberIsNaN(lhs)) result=-1;
-         else if (!decNumberIsNaN(rhs)) result=+1;
-         /* here if both NaNs  */
-         else if (decNumberIsSNaN(lhs) && decNumberIsQNaN(rhs)) result=-1;
-         else if (decNumberIsQNaN(lhs) && decNumberIsSNaN(rhs)) result=+1;
-         else { /* both NaN or both sNaN  */
-          /* now it just depends on the payload  */
-          result=decUnitCompare(lhs->lsu, D2U(lhs->digits),
-                                rhs->lsu, D2U(rhs->digits), 0);
-          /* [Error not possible, as these are 'aligned']  */
-          } /* both same NaNs  */
-        if (decNumberIsNegative(lhs)) result=-result;
-        break;
-        } /* total order  */
-
-       else if (merged & DECSNAN);           /* sNaN -> qNaN  */
-       else { /* here if MIN or MAX and one or two quiet NaNs  */
-        /* min or max -- 754 rules ignore single NaN  */
-        if (!decNumberIsNaN(lhs) || !decNumberIsNaN(rhs)) {
-          /* just one NaN; force choice to be the non-NaN operand  */
-          op=COMPMAX;
-          if (lhs->bits & DECNAN) result=-1; /* pick rhs  */
-                             else result=+1; /* pick lhs  */
-          break;
-          }
-        } /* max or min  */
-      op=COMPNAN;                            /* use special path  */
-      decNaNs(res, lhs, rhs, set, status);   /* propagate NaN  */
-      break;
-      }
-    /* have numbers  */
-    if (op==COMPMAXMAG || op==COMPMINMAG) result=decCompare(lhs, rhs, 1);
-     else result=decCompare(lhs, rhs, 0);    /* sign matters  */
-    } while(0);                              /* end protected  */
-
-  if (result==BADINT) *status|=DEC_Insufficient_storage; /* rare  */
-   else {
-    if (op==COMPARE || op==COMPSIG ||op==COMPTOTAL) { /* returning signum  */
-      if (op==COMPTOTAL && result==0) {
-        /* operands are numerically equal or same NaN (and same sign,  */
-        /* tested first); if identical, leave result 0  */
-        if (lhs->exponent!=rhs->exponent) {
-          if (lhs->exponent<rhs->exponent) result=-1;
-           else result=+1;
-          if (decNumberIsNegative(lhs)) result=-result;
-          } /* lexp!=rexp  */
-        } /* total-order by exponent  */
-      uprv_decNumberZero(res);               /* [always a valid result]  */
-      if (result!=0) {                  /* must be -1 or +1  */
-        *res->lsu=1;
-        if (result<0) res->bits=DECNEG;
-        }
-      }
-     else if (op==COMPNAN);             /* special, drop through  */
-     else {                             /* MAX or MIN, non-NaN result  */
-      Int residue=0;                    /* rounding accumulator  */
-      /* choose the operand for the result  */
-      const decNumber *choice;
-      if (result==0) { /* operands are numerically equal  */
-        /* choose according to sign then exponent (see 754)  */
-        uByte slhs=(lhs->bits & DECNEG);
-        uByte srhs=(rhs->bits & DECNEG);
-        #if DECSUBSET
-        if (!set->extended) {           /* subset: force left-hand  */
-          op=COMPMAX;
-          result=+1;
-          }
-        else
-        #endif
-        if (slhs!=srhs) {          /* signs differ  */
-          if (slhs) result=-1;     /* rhs is max  */
-               else result=+1;     /* lhs is max  */
-          }
-         else if (slhs && srhs) {  /* both negative  */
-          if (lhs->exponent<rhs->exponent) result=+1;
-                                      else result=-1;
-          /* [if equal, use lhs, technically identical]  */
-          }
-         else {                    /* both positive  */
-          if (lhs->exponent>rhs->exponent) result=+1;
-                                      else result=-1;
-          /* [ditto]  */
-          }
-        } /* numerically equal  */
-      /* here result will be non-0; reverse if looking for MIN  */
-      if (op==COMPMIN || op==COMPMINMAG) result=-result;
-      choice=(result>0 ? lhs : rhs);    /* choose  */
-      /* copy chosen to result, rounding if need be  */
-      decCopyFit(res, choice, set, &residue, status);
-      decFinish(res, set, &residue, status);
-      }
-    }
-  #if DECSUBSET
-  if (allocrhs!=NULL) free(allocrhs);   /* free any storage used  */
-  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
-  #endif
-  return res;
-  } /* decCompareOp  */
-
-/* ------------------------------------------------------------------ */
-/* decCompare -- compare two decNumbers by numerical value            */
-/*                                                                    */
-/*  This routine compares A ? B without altering them.                */
-/*                                                                    */
-/*  Arg1 is A, a decNumber which is not a NaN                         */
-/*  Arg2 is B, a decNumber which is not a NaN                         */
-/*  Arg3 is 1 for a sign-independent compare, 0 otherwise             */
-/*                                                                    */
-/*  returns -1, 0, or 1 for A<B, A==B, or A>B, or BADINT if failure   */
-/*  (the only possible failure is an allocation error)                */
-/* ------------------------------------------------------------------ */
-static Int decCompare(const decNumber *lhs, const decNumber *rhs,
-                      Flag abs_c) {
-  Int   result;                    /* result value  */
-  Int   sigr;                      /* rhs signum  */
-  Int   compare;                   /* work  */
-
-  result=1;                                  /* assume signum(lhs)  */
-  if (ISZERO(lhs)) result=0;
-  if (abs_c) {
-    if (ISZERO(rhs)) return result;          /* LHS wins or both 0  */
-    /* RHS is non-zero  */
-    if (result==0) return -1;                /* LHS is 0; RHS wins  */
-    /* [here, both non-zero, result=1]  */
-    }
-   else {                                    /* signs matter  */
-    if (result && decNumberIsNegative(lhs)) result=-1;
-    sigr=1;                                  /* compute signum(rhs)  */
-    if (ISZERO(rhs)) sigr=0;
-     else if (decNumberIsNegative(rhs)) sigr=-1;
-    if (result > sigr) return +1;            /* L > R, return 1  */
-    if (result < sigr) return -1;            /* L < R, return -1  */
-    if (result==0) return 0;                   /* both 0  */
-    }
-
-  /* signums are the same; both are non-zero  */
-  if ((lhs->bits | rhs->bits) & DECINF) {    /* one or more infinities  */
-    if (decNumberIsInfinite(rhs)) {
-      if (decNumberIsInfinite(lhs)) result=0;/* both infinite  */
-       else result=-result;                  /* only rhs infinite  */
-      }
-    return result;
-    }
-  /* must compare the coefficients, allowing for exponents  */
-  if (lhs->exponent>rhs->exponent) {         /* LHS exponent larger  */
-    /* swap sides, and sign  */
-    const decNumber *temp=lhs;
-    lhs=rhs;
-    rhs=temp;
-    result=-result;
-    }
-  compare=decUnitCompare(lhs->lsu, D2U(lhs->digits),
-                         rhs->lsu, D2U(rhs->digits),
-                         rhs->exponent-lhs->exponent);
-  if (compare!=BADINT) compare*=result;      /* comparison succeeded  */
-  return compare;
-  } /* decCompare  */
-
-/* ------------------------------------------------------------------ */
-/* decUnitCompare -- compare two >=0 integers in Unit arrays          */
-/*                                                                    */
-/*  This routine compares A ? B*10**E where A and B are unit arrays   */
-/*  A is a plain integer                                              */
-/*  B has an exponent of E (which must be non-negative)               */
-/*                                                                    */
-/*  Arg1 is A first Unit (lsu)                                        */
-/*  Arg2 is A length in Units                                         */
-/*  Arg3 is B first Unit (lsu)                                        */
-/*  Arg4 is B length in Units                                         */
-/*  Arg5 is E (0 if the units are aligned)                            */
-/*                                                                    */
-/*  returns -1, 0, or 1 for A<B, A==B, or A>B, or BADINT if failure   */
-/*  (the only possible failure is an allocation error, which can      */
-/*  only occur if E!=0)                                               */
-/* ------------------------------------------------------------------ */
-static Int decUnitCompare(const Unit *a, Int alength,
-                          const Unit *b, Int blength, Int exp) {
-  Unit  *acc;                      /* accumulator for result  */
-  Unit  accbuff[SD2U(DECBUFFER*2+1)]; /* local buffer  */
-  Unit  *allocacc=NULL;            /* -> allocated acc buffer, iff allocated  */
-  Int   accunits, need;            /* units in use or needed for acc  */
-  const Unit *l, *r, *u;           /* work  */
-  Int   expunits, exprem, result;  /* ..  */
-
-  if (exp==0) {                    /* aligned; fastpath  */
-    if (alength>blength) return 1;
-    if (alength<blength) return -1;
-    /* same number of units in both -- need unit-by-unit compare  */
-    l=a+alength-1;
-    r=b+alength-1;
-    for (;l>=a; l--, r--) {
-      if (*l>*r) return 1;
-      if (*l<*r) return -1;
-      }
-    return 0;                      /* all units match  */
-    } /* aligned  */
-
-  /* Unaligned.  If one is >1 unit longer than the other, padded  */
-  /* approximately, then can return easily  */
-  if (alength>blength+(Int)D2U(exp)) return 1;
-  if (alength+1<blength+(Int)D2U(exp)) return -1;
-
-  /* Need to do a real subtract.  For this, a result buffer is needed  */
-  /* even though only the sign is of interest.  Its length needs  */
-  /* to be the larger of alength and padded blength, +2  */
-  need=blength+D2U(exp);                /* maximum real length of B  */
-  if (need<alength) need=alength;
-  need+=2;
-  acc=accbuff;                          /* assume use local buffer  */
-  if (need*sizeof(Unit)>sizeof(accbuff)) {
-    allocacc=(Unit *)malloc(need*sizeof(Unit));
-    if (allocacc==NULL) return BADINT;  /* hopeless -- abandon  */
-    acc=allocacc;
-    }
-  /* Calculate units and remainder from exponent.  */
-  expunits=exp/DECDPUN;
-  exprem=exp%DECDPUN;
-  /* subtract [A+B*(-m)]  */
-  accunits=decUnitAddSub(a, alength, b, blength, expunits, acc,
-                         -(Int)powers[exprem]);
-  /* [UnitAddSub result may have leading zeros, even on zero]  */
-  if (accunits<0) result=-1;            /* negative result  */
-   else {                               /* non-negative result  */
-    /* check units of the result before freeing any storage  */
-    for (u=acc; u<acc+accunits-1 && *u==0;) u++;
-    result=(*u==0 ? 0 : +1);
-    }
-  /* clean up and return the result  */
-  if (allocacc!=NULL) free(allocacc);   /* drop any storage used  */
-  return result;
-  } /* decUnitCompare  */
-
-/* ------------------------------------------------------------------ */
-/* decUnitAddSub -- add or subtract two >=0 integers in Unit arrays   */
-/*                                                                    */
-/*  This routine performs the calculation:                            */
-/*                                                                    */
-/*  C=A+(B*M)                                                         */
-/*                                                                    */
-/*  Where M is in the range -DECDPUNMAX through +DECDPUNMAX.          */
-/*                                                                    */
-/*  A may be shorter or longer than B.                                */
-/*                                                                    */
-/*  Leading zeros are not removed after a calculation.  The result is */
-/*  either the same length as the longer of A and B (adding any       */
-/*  shift), or one Unit longer than that (if a Unit carry occurred).  */
-/*                                                                    */
-/*  A and B content are not altered unless C is also A or B.          */
-/*  C may be the same array as A or B, but only if no zero padding is */
-/*  requested (that is, C may be B only if bshift==0).                */
-/*  C is filled from the lsu; only those units necessary to complete  */
-/*  the calculation are referenced.                                   */
-/*                                                                    */
-/*  Arg1 is A first Unit (lsu)                                        */
-/*  Arg2 is A length in Units                                         */
-/*  Arg3 is B first Unit (lsu)                                        */
-/*  Arg4 is B length in Units                                         */
-/*  Arg5 is B shift in Units  (>=0; pads with 0 units if positive)    */
-/*  Arg6 is C first Unit (lsu)                                        */
-/*  Arg7 is M, the multiplier                                         */
-/*                                                                    */
-/*  returns the count of Units written to C, which will be non-zero   */
-/*  and negated if the result is negative.  That is, the sign of the  */
-/*  returned Int is the sign of the result (positive for zero) and    */
-/*  the absolute value of the Int is the count of Units.              */
-/*                                                                    */
-/*  It is the caller's responsibility to make sure that C size is     */
-/*  safe, allowing space if necessary for a one-Unit carry.           */
-/*                                                                    */
-/*  This routine is severely performance-critical; *any* change here  */
-/*  must be measured (timed) to assure no performance degradation.    */
-/*  In particular, trickery here tends to be counter-productive, as   */
-/*  increased complexity of code hurts register optimizations on      */
-/*  register-poor architectures.  Avoiding divisions is nearly        */
-/*  always a Good Idea, however.                                      */
-/*                                                                    */
-/* Special thanks to Rick McGuire (IBM Cambridge, MA) and Dave Clark  */
-/* (IBM Warwick, UK) for some of the ideas used in this routine.      */
-/* ------------------------------------------------------------------ */
-static Int decUnitAddSub(const Unit *a, Int alength,
-                         const Unit *b, Int blength, Int bshift,
-                         Unit *c, Int m) {
-  const Unit *alsu=a;              /* A lsu [need to remember it]  */
-  Unit *clsu=c;                    /* C ditto  */
-  Unit *minC;                      /* low water mark for C  */
-  Unit *maxC;                      /* high water mark for C  */
-  eInt carry=0;                    /* carry integer (could be Long)  */
-  Int  add;                        /* work  */
-  #if DECDPUN<=4                   /* myriadal, millenary, etc.  */
-  Int  est;                        /* estimated quotient  */
-  #endif
-
-  #if DECTRACE
-  if (alength<1 || blength<1)
-    printf("decUnitAddSub: alen blen m %ld %ld [%ld]\n", alength, blength, m);
-  #endif
-
-  maxC=c+alength;                  /* A is usually the longer  */
-  minC=c+blength;                  /* .. and B the shorter  */
-  if (bshift!=0) {                 /* B is shifted; low As copy across  */
-    minC+=bshift;
-    /* if in place [common], skip copy unless there's a gap [rare]  */
-    if (a==c && bshift<=alength) {
-      c+=bshift;
-      a+=bshift;
-      }
-     else for (; c<clsu+bshift; a++, c++) {  /* copy needed  */
-      if (a<alsu+alength) *c=*a;
-       else *c=0;
-      }
-    }
-  if (minC>maxC) { /* swap  */
-    Unit *hold=minC;
-    minC=maxC;
-    maxC=hold;
-    }
-
-  /* For speed, do the addition as two loops; the first where both A  */
-  /* and B contribute, and the second (if necessary) where only one or  */
-  /* other of the numbers contribute.  */
-  /* Carry handling is the same (i.e., duplicated) in each case.  */
-  for (; c<minC; c++) {
-    carry+=*a;
-    a++;
-    carry+=((eInt)*b)*m;                /* [special-casing m=1/-1  */
-    b++;                                /* here is not a win]  */
-    /* here carry is new Unit of digits; it could be +ve or -ve  */
-    if ((ueInt)carry<=DECDPUNMAX) {     /* fastpath 0-DECDPUNMAX  */
-      *c=(Unit)carry;
-      carry=0;
-      continue;
-      }
-    #if DECDPUN==4                           /* use divide-by-multiply  */
-      if (carry>=0) {
-        est=(((ueInt)carry>>11)*53687)>>18;
-        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
-        carry=est;                           /* likely quotient [89%]  */
-        if (*c<DECDPUNMAX+1) continue;       /* estimate was correct  */
-        carry++;
-        *c-=DECDPUNMAX+1;
-        continue;
-        }
-      /* negative case  */
-      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
-      est=(((ueInt)carry>>11)*53687)>>18;
-      *c=(Unit)(carry-est*(DECDPUNMAX+1));
-      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
-      if (*c<DECDPUNMAX+1) continue;         /* was OK  */
-      carry++;
-      *c-=DECDPUNMAX+1;
-    #elif DECDPUN==3
-      if (carry>=0) {
-        est=(((ueInt)carry>>3)*16777)>>21;
-        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
-        carry=est;                           /* likely quotient [99%]  */
-        if (*c<DECDPUNMAX+1) continue;       /* estimate was correct  */
-        carry++;
-        *c-=DECDPUNMAX+1;
-        continue;
-        }
-      /* negative case  */
-      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
-      est=(((ueInt)carry>>3)*16777)>>21;
-      *c=(Unit)(carry-est*(DECDPUNMAX+1));
-      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
-      if (*c<DECDPUNMAX+1) continue;         /* was OK  */
-      carry++;
-      *c-=DECDPUNMAX+1;
-    #elif DECDPUN<=2
-      /* Can use QUOT10 as carry <= 4 digits  */
-      if (carry>=0) {
-        est=QUOT10(carry, DECDPUN);
-        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
-        carry=est;                           /* quotient  */
-        continue;
-        }
-      /* negative case  */
-      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
-      est=QUOT10(carry, DECDPUN);
-      *c=(Unit)(carry-est*(DECDPUNMAX+1));
-      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
-    #else
-      /* remainder operator is undefined if negative, so must test  */
-      if ((ueInt)carry<(DECDPUNMAX+1)*2) {   /* fastpath carry +1  */
-        *c=(Unit)(carry-(DECDPUNMAX+1));     /* [helps additions]  */
-        carry=1;
-        continue;
-        }
-      if (carry>=0) {
-        *c=(Unit)(carry%(DECDPUNMAX+1));
-        carry=carry/(DECDPUNMAX+1);
-        continue;
-        }
-      /* negative case  */
-      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
-      *c=(Unit)(carry%(DECDPUNMAX+1));
-      carry=carry/(DECDPUNMAX+1)-(DECDPUNMAX+1);
-    #endif
-    } /* c  */
-
-  /* now may have one or other to complete  */
-  /* [pretest to avoid loop setup/shutdown]  */
-  if (c<maxC) for (; c<maxC; c++) {
-    if (a<alsu+alength) {               /* still in A  */
-      carry+=*a;
-      a++;
-      }
-     else {                             /* inside B  */
-      carry+=((eInt)*b)*m;
-      b++;
-      }
-    /* here carry is new Unit of digits; it could be +ve or -ve and  */
-    /* magnitude up to DECDPUNMAX squared  */
-    if ((ueInt)carry<=DECDPUNMAX) {     /* fastpath 0-DECDPUNMAX  */
-      *c=(Unit)carry;
-      carry=0;
-      continue;
-      }
-    /* result for this unit is negative or >DECDPUNMAX  */
-    #if DECDPUN==4                           /* use divide-by-multiply  */
-      if (carry>=0) {
-        est=(((ueInt)carry>>11)*53687)>>18;
-        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
-        carry=est;                           /* likely quotient [79.7%]  */
-        if (*c<DECDPUNMAX+1) continue;       /* estimate was correct  */
-        carry++;
-        *c-=DECDPUNMAX+1;
-        continue;
-        }
-      /* negative case  */
-      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
-      est=(((ueInt)carry>>11)*53687)>>18;
-      *c=(Unit)(carry-est*(DECDPUNMAX+1));
-      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
-      if (*c<DECDPUNMAX+1) continue;         /* was OK  */
-      carry++;
-      *c-=DECDPUNMAX+1;
-    #elif DECDPUN==3
-      if (carry>=0) {
-        est=(((ueInt)carry>>3)*16777)>>21;
-        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
-        carry=est;                           /* likely quotient [99%]  */
-        if (*c<DECDPUNMAX+1) continue;       /* estimate was correct  */
-        carry++;
-        *c-=DECDPUNMAX+1;
-        continue;
-        }
-      /* negative case  */
-      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
-      est=(((ueInt)carry>>3)*16777)>>21;
-      *c=(Unit)(carry-est*(DECDPUNMAX+1));
-      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
-      if (*c<DECDPUNMAX+1) continue;         /* was OK  */
-      carry++;
-      *c-=DECDPUNMAX+1;
-    #elif DECDPUN<=2
-      if (carry>=0) {
-        est=QUOT10(carry, DECDPUN);
-        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
-        carry=est;                           /* quotient  */
-        continue;
-        }
-      /* negative case  */
-      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
-      est=QUOT10(carry, DECDPUN);
-      *c=(Unit)(carry-est*(DECDPUNMAX+1));
-      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
-    #else
-      if ((ueInt)carry<(DECDPUNMAX+1)*2){    /* fastpath carry 1  */
-        *c=(Unit)(carry-(DECDPUNMAX+1));
-        carry=1;
-        continue;
-        }
-      /* remainder operator is undefined if negative, so must test  */
-      if (carry>=0) {
-        *c=(Unit)(carry%(DECDPUNMAX+1));
-        carry=carry/(DECDPUNMAX+1);
-        continue;
-        }
-      /* negative case  */
-      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
-      *c=(Unit)(carry%(DECDPUNMAX+1));
-      carry=carry/(DECDPUNMAX+1)-(DECDPUNMAX+1);
-    #endif
-    } /* c  */
-
-  /* OK, all A and B processed; might still have carry or borrow  */
-  /* return number of Units in the result, negated if a borrow  */
-  if (carry==0) return c-clsu;     /* no carry, so no more to do  */
-  if (carry>0) {                   /* positive carry  */
-    *c=(Unit)carry;                /* place as new unit  */
-    c++;                           /* ..  */
-    return c-clsu;
-    }
-  /* -ve carry: it's a borrow; complement needed  */
-  add=1;                           /* temporary carry...  */
-  for (c=clsu; c<maxC; c++) {
-    add=DECDPUNMAX+add-*c;
-    if (add<=DECDPUNMAX) {
-      *c=(Unit)add;
-      add=0;
-      }
-     else {
-      *c=0;
-      add=1;
-      }
-    }
-  /* add an extra unit iff it would be non-zero  */
-  #if DECTRACE
-    printf("UAS borrow: add %ld, carry %ld\n", add, carry);
-  #endif
-  if ((add-carry-1)!=0) {
-    *c=(Unit)(add-carry-1);
-    c++;                      /* interesting, include it  */
-    }
-  return clsu-c;              /* -ve result indicates borrowed  */
-  } /* decUnitAddSub  */
-
-/* ------------------------------------------------------------------ */
-/* decTrim -- trim trailing zeros or normalize                        */
-/*                                                                    */
-/*   dn is the number to trim or normalize                            */
-/*   set is the context to use to check for clamp                     */
-/*   all is 1 to remove all trailing zeros, 0 for just fraction ones  */
-/*   noclamp is 1 to unconditional (unclamped) trim                   */
-/*   dropped returns the number of discarded trailing zeros           */
-/*   returns dn                                                       */
-/*                                                                    */
-/* If clamp is set in the context then the number of zeros trimmed    */
-/* may be limited if the exponent is high.                            */
-/* All fields are updated as required.  This is a utility operation,  */
-/* so special values are unchanged and no error is possible.          */
-/* ------------------------------------------------------------------ */
-static decNumber * decTrim(decNumber *dn, decContext *set, Flag all,
-                           Flag noclamp, Int *dropped) {
-  Int   d, exp;                    /* work  */
-  uInt  cut;                       /* ..  */
-  Unit  *up;                       /* -> current Unit  */
-
-  #if DECCHECK
-  if (decCheckOperands(dn, DECUNUSED, DECUNUSED, DECUNCONT)) return dn;
-  #endif
-
-  *dropped=0;                           /* assume no zeros dropped  */
-  if ((dn->bits & DECSPECIAL)           /* fast exit if special ..  */
-    || (*dn->lsu & 0x01)) return dn;    /* .. or odd  */
-  if (ISZERO(dn)) {                     /* .. or 0  */
-    dn->exponent=0;                     /* (sign is preserved)  */
-    return dn;
-    }
-
-  /* have a finite number which is even  */
-  exp=dn->exponent;
-  cut=1;                           /* digit (1-DECDPUN) in Unit  */
-  up=dn->lsu;                      /* -> current Unit  */
-  for (d=0; d<dn->digits-1; d++) { /* [don't strip the final digit]  */
-    /* slice by powers  */
-    #if DECDPUN<=4
-      uInt quot=QUOT10(*up, cut);
-      if ((*up-quot*powers[cut])!=0) break;  /* found non-0 digit  */
-    #else
-      if (*up%powers[cut]!=0) break;         /* found non-0 digit  */
-    #endif
-    /* have a trailing 0  */
-    if (!all) {                    /* trimming  */
-      /* [if exp>0 then all trailing 0s are significant for trim]  */
-      if (exp<=0) {                /* if digit might be significant  */
-        if (exp==0) break;         /* then quit  */
-        exp++;                     /* next digit might be significant  */
-        }
-      }
-    cut++;                         /* next power  */
-    if (cut>DECDPUN) {             /* need new Unit  */
-      up++;
-      cut=1;
-      }
-    } /* d  */
-  if (d==0) return dn;             /* none to drop  */
-
-  /* may need to limit drop if clamping  */
-  if (set->clamp && !noclamp) {
-    Int maxd=set->emax-set->digits+1-dn->exponent;
-    if (maxd<=0) return dn;        /* nothing possible  */
-    if (d>maxd) d=maxd;
-    }
-
-  /* effect the drop  */
-  decShiftToLeast(dn->lsu, D2U(dn->digits), d);
-  dn->exponent+=d;                 /* maintain numerical value  */
-  dn->digits-=d;                   /* new length  */
-  *dropped=d;                      /* report the count  */
-  return dn;
-  } /* decTrim  */
-
-/* ------------------------------------------------------------------ */
-/* decReverse -- reverse a Unit array in place                        */
-/*                                                                    */
-/*   ulo    is the start of the array                                 */
-/*   uhi    is the end of the array (highest Unit to include)         */
-/*                                                                    */
-/* The units ulo through uhi are reversed in place (if the number     */
-/* of units is odd, the middle one is untouched).  Note that the      */
-/* digit(s) in each unit are unaffected.                              */
-/* ------------------------------------------------------------------ */
-static void decReverse(Unit *ulo, Unit *uhi) {
-  Unit temp;
-  for (; ulo<uhi; ulo++, uhi--) {
-    temp=*ulo;
-    *ulo=*uhi;
-    *uhi=temp;
-    }
-  return;
-  } /* decReverse  */
-
-/* ------------------------------------------------------------------ */
-/* decShiftToMost -- shift digits in array towards most significant   */
-/*                                                                    */
-/*   uar    is the array                                              */
-/*   digits is the count of digits in use in the array                */
-/*   shift  is the number of zeros to pad with (least significant);   */
-/*     it must be zero or positive                                    */
-/*                                                                    */
-/*   returns the new length of the integer in the array, in digits    */
-/*                                                                    */
-/* No overflow is permitted (that is, the uar array must be known to  */
-/* be large enough to hold the result, after shifting).               */
-/* ------------------------------------------------------------------ */
-static Int decShiftToMost(Unit *uar, Int digits, Int shift) {
-  Unit  *target, *source, *first;  /* work  */
-  Int   cut;                       /* odd 0's to add  */
-  uInt  next;                      /* work  */
-
-  if (shift==0) return digits;     /* [fastpath] nothing to do  */
-  if ((digits+shift)<=DECDPUN) {   /* [fastpath] single-unit case  */
-    *uar=(Unit)(*uar*powers[shift]);
-    return digits+shift;
-    }
-
-  next=0;                          /* all paths  */
-  source=uar+D2U(digits)-1;        /* where msu comes from  */
-  target=source+D2U(shift);        /* where upper part of first cut goes  */
-  cut=DECDPUN-MSUDIGITS(shift);    /* where to slice  */
-  if (cut==0) {                    /* unit-boundary case  */
-    for (; source>=uar; source--, target--) *target=*source;
-    }
-   else {
-    first=uar+D2U(digits+shift)-1; /* where msu of source will end up  */
-    for (; source>=uar; source--, target--) {
-      /* split the source Unit and accumulate remainder for next  */
-      #if DECDPUN<=4
-        uInt quot=QUOT10(*source, cut);
-        uInt rem=*source-quot*powers[cut];
-        next+=quot;
-      #else
-        uInt rem=*source%powers[cut];
-        next+=*source/powers[cut];
-      #endif
-      if (target<=first) *target=(Unit)next;   /* write to target iff valid  */
-      next=rem*powers[DECDPUN-cut];            /* save remainder for next Unit  */
-      }
-    } /* shift-move  */
-
-  /* propagate any partial unit to one below and clear the rest  */
-  for (; target>=uar; target--) {
-    *target=(Unit)next;
-    next=0;
-    }
-  return digits+shift;
-  } /* decShiftToMost  */
-
-/* ------------------------------------------------------------------ */
-/* decShiftToLeast -- shift digits in array towards least significant */
-/*                                                                    */
-/*   uar   is the array                                               */
-/*   units is length of the array, in units                           */
-/*   shift is the number of digits to remove from the lsu end; it     */
-/*     must be zero or positive and <= than units*DECDPUN.            */
-/*                                                                    */
-/*   returns the new length of the integer in the array, in units     */
-/*                                                                    */
-/* Removed digits are discarded (lost).  Units not required to hold   */
-/* the final result are unchanged.                                    */
-/* ------------------------------------------------------------------ */
-static Int decShiftToLeast(Unit *uar, Int units, Int shift) {
-  Unit  *target, *up;              /* work  */
-  Int   cut, count;                /* work  */
-  Int   quot, rem;                 /* for division  */
-
-  if (shift==0) return units;      /* [fastpath] nothing to do  */
-  if (shift==units*DECDPUN) {      /* [fastpath] little to do  */
-    *uar=0;                        /* all digits cleared gives zero  */
-    return 1;                      /* leaves just the one  */
-    }
-
-  target=uar;                      /* both paths  */
-  cut=MSUDIGITS(shift);
-  if (cut==DECDPUN) {              /* unit-boundary case; easy  */
-    up=uar+D2U(shift);
-    for (; up<uar+units; target++, up++) *target=*up;
-    return target-uar;
-    }
-
-  /* messier  */
-  up=uar+D2U(shift-cut);           /* source; correct to whole Units  */
-  count=units*DECDPUN-shift;       /* the maximum new length  */
-  #if DECDPUN<=4
-    quot=QUOT10(*up, cut);
-  #else
-    quot=*up/powers[cut];
-  #endif
-  for (; ; target++) {
-    *target=(Unit)quot;
-    count-=(DECDPUN-cut);
-    if (count<=0) break;
-    up++;
-    quot=*up;
-    #if DECDPUN<=4
-      quot=QUOT10(quot, cut);
-      rem=*up-quot*powers[cut];
-    #else
-      rem=quot%powers[cut];
-      quot=quot/powers[cut];
-    #endif
-    *target=(Unit)(*target+rem*powers[DECDPUN-cut]);
-    count-=cut;
-    if (count<=0) break;
-    }
-  return target-uar+1;
-  } /* decShiftToLeast  */
-
-#if DECSUBSET
-/* ------------------------------------------------------------------ */
-/* decRoundOperand -- round an operand  [used for subset only]        */
-/*                                                                    */
-/*   dn is the number to round (dn->digits is > set->digits)          */
-/*   set is the relevant context                                      */
-/*   status is the status accumulator                                 */
-/*                                                                    */
-/*   returns an allocated decNumber with the rounded result.          */
-/*                                                                    */
-/* lostDigits and other status may be set by this.                    */
-/*                                                                    */
-/* Since the input is an operand, it must not be modified.            */
-/* Instead, return an allocated decNumber, rounded as required.       */
-/* It is the caller's responsibility to free the allocated storage.   */
-/*                                                                    */
-/* If no storage is available then the result cannot be used, so NULL */
-/* is returned.                                                       */
-/* ------------------------------------------------------------------ */
-static decNumber *decRoundOperand(const decNumber *dn, decContext *set,
-                                  uInt *status) {
-  decNumber *res;                       /* result structure  */
-  uInt newstatus=0;                     /* status from round  */
-  Int  residue=0;                       /* rounding accumulator  */
-
-  /* Allocate storage for the returned decNumber, big enough for the  */
-  /* length specified by the context  */
-  res=(decNumber *)malloc(sizeof(decNumber)
-                          +(D2U(set->digits)-1)*sizeof(Unit));
-  if (res==NULL) {
-    *status|=DEC_Insufficient_storage;
-    return NULL;
-    }
-  decCopyFit(res, dn, set, &residue, &newstatus);
-  decApplyRound(res, set, residue, &newstatus);
-
-  /* If that set Inexact then "lost digits" is raised...  */
-  if (newstatus & DEC_Inexact) newstatus|=DEC_Lost_digits;
-  *status|=newstatus;
-  return res;
-  } /* decRoundOperand  */
-#endif
-
-/* ------------------------------------------------------------------ */
-/* decCopyFit -- copy a number, truncating the coefficient if needed  */
-/*                                                                    */
-/*   dest is the target decNumber                                     */
-/*   src  is the source decNumber                                     */
-/*   set is the context [used for length (digits) and rounding mode]  */
-/*   residue is the residue accumulator                               */
-/*   status contains the current status to be updated                 */
-/*                                                                    */
-/* (dest==src is allowed and will be a no-op if fits)                 */
-/* All fields are updated as required.                                */
-/* ------------------------------------------------------------------ */
-static void decCopyFit(decNumber *dest, const decNumber *src,
-                       decContext *set, Int *residue, uInt *status) {
-  dest->bits=src->bits;
-  dest->exponent=src->exponent;
-  decSetCoeff(dest, set, src->lsu, src->digits, residue, status);
-  } /* decCopyFit  */
-
-/* ------------------------------------------------------------------ */
-/* decSetCoeff -- set the coefficient of a number                     */
-/*                                                                    */
-/*   dn    is the number whose coefficient array is to be set.        */
-/*         It must have space for set->digits digits                  */
-/*   set   is the context [for size]                                  */
-/*   lsu   -> lsu of the source coefficient [may be dn->lsu]          */
-/*   len   is digits in the source coefficient [may be dn->digits]    */
-/*   residue is the residue accumulator.  This has values as in       */
-/*         decApplyRound, and will be unchanged unless the            */
-/*         target size is less than len.  In this case, the           */
-/*         coefficient is truncated and the residue is updated to     */
-/*         reflect the previous residue and the dropped digits.       */
-/*   status is the status accumulator, as usual                       */
-/*                                                                    */
-/* The coefficient may already be in the number, or it can be an      */
-/* external intermediate array.  If it is in the number, lsu must ==  */
-/* dn->lsu and len must == dn->digits.                                */
-/*                                                                    */
-/* Note that the coefficient length (len) may be < set->digits, and   */
-/* in this case this merely copies the coefficient (or is a no-op     */
-/* if dn->lsu==lsu).                                                  */
-/*                                                                    */
-/* Note also that (only internally, from decQuantizeOp and            */
-/* decSetSubnormal) the value of set->digits may be less than one,    */
-/* indicating a round to left.  This routine handles that case        */
-/* correctly; caller ensures space.                                   */
-/*                                                                    */
-/* dn->digits, dn->lsu (and as required), and dn->exponent are        */
-/* updated as necessary.   dn->bits (sign) is unchanged.              */
-/*                                                                    */
-/* DEC_Rounded status is set if any digits are discarded.             */
-/* DEC_Inexact status is set if any non-zero digits are discarded, or */
-/*                       incoming residue was non-0 (implies rounded) */
-/* ------------------------------------------------------------------ */
-/* mapping array: maps 0-9 to canonical residues, so that a residue  */
-/* can be adjusted in the range [-1, +1] and achieve correct rounding  */
-/*                             0  1  2  3  4  5  6  7  8  9  */
-static const uByte resmap[10]={0, 3, 3, 3, 3, 5, 7, 7, 7, 7};
-static void decSetCoeff(decNumber *dn, decContext *set, const Unit *lsu,
-                        Int len, Int *residue, uInt *status) {
-  Int   discard;              /* number of digits to discard  */
-  uInt  cut;                  /* cut point in Unit  */
-  const Unit *up;             /* work  */
-  Unit  *target;              /* ..  */
-  Int   count;                /* ..  */
-  #if DECDPUN<=4
-  uInt  temp;                 /* ..  */
-  #endif
-
-  discard=len-set->digits;    /* digits to discard  */
-  if (discard<=0) {           /* no digits are being discarded  */
-    if (dn->lsu!=lsu) {       /* copy needed  */
-      /* copy the coefficient array to the result number; no shift needed  */
-      count=len;              /* avoids D2U  */
-      up=lsu;
-      for (target=dn->lsu; count>0; target++, up++, count-=DECDPUN)
-        *target=*up;
-      dn->digits=len;         /* set the new length  */
-      }
-    /* dn->exponent and residue are unchanged, record any inexactitude  */
-    if (*residue!=0) *status|=(DEC_Inexact | DEC_Rounded);
-    return;
-    }
-
-  /* some digits must be discarded ...  */
-  dn->exponent+=discard;      /* maintain numerical value  */
-  *status|=DEC_Rounded;       /* accumulate Rounded status  */
-  if (*residue>1) *residue=1; /* previous residue now to right, so reduce  */
-
-  if (discard>len) {          /* everything, +1, is being discarded  */
-    /* guard digit is 0  */
-    /* residue is all the number [NB could be all 0s]  */
-    if (*residue<=0) {        /* not already positive  */
-      count=len;              /* avoids D2U  */
-      for (up=lsu; count>0; up++, count-=DECDPUN) if (*up!=0) { /* found non-0  */
-        *residue=1;
-        break;                /* no need to check any others  */
-        }
-      }
-    if (*residue!=0) *status|=DEC_Inexact; /* record inexactitude  */
-    *dn->lsu=0;               /* coefficient will now be 0  */
-    dn->digits=1;             /* ..  */
-    return;
-    } /* total discard  */
-
-  /* partial discard [most common case]  */
-  /* here, at least the first (most significant) discarded digit exists  */
-
-  /* spin up the number, noting residue during the spin, until get to  */
-  /* the Unit with the first discarded digit.  When reach it, extract  */
-  /* it and remember its position  */
-  count=0;
-  for (up=lsu;; up++) {
-    count+=DECDPUN;
-    if (count>=discard) break; /* full ones all checked  */
-    if (*up!=0) *residue=1;
-    } /* up  */
-
-  /* here up -> Unit with first discarded digit  */
-  cut=discard-(count-DECDPUN)-1;
-  if (cut==DECDPUN-1) {       /* unit-boundary case (fast)  */
-    Unit half=(Unit)powers[DECDPUN]>>1;
-    /* set residue directly  */
-    if (*up>=half) {
-      if (*up>half) *residue=7;
-      else *residue+=5;       /* add sticky bit  */
-      }
-     else { /* <half  */
-      if (*up!=0) *residue=3; /* [else is 0, leave as sticky bit]  */
-      }
-    if (set->digits<=0) {     /* special for Quantize/Subnormal :-(  */
-      *dn->lsu=0;             /* .. result is 0  */
-      dn->digits=1;           /* ..  */
-      }
-     else {                   /* shift to least  */
-      count=set->digits;      /* now digits to end up with  */
-      dn->digits=count;       /* set the new length  */
-      up++;                   /* move to next  */
-      /* on unit boundary, so shift-down copy loop is simple  */
-      for (target=dn->lsu; count>0; target++, up++, count-=DECDPUN)
-        *target=*up;
-      }
-    } /* unit-boundary case  */
-
-   else { /* discard digit is in low digit(s), and not top digit  */
-    uInt  discard1;                /* first discarded digit  */
-    uInt  quot, rem;               /* for divisions  */
-    if (cut==0) quot=*up;          /* is at bottom of unit  */
-     else /* cut>0 */ {            /* it's not at bottom of unit  */
-      #if DECDPUN<=4
-        U_ASSERT(/* cut >= 0 &&*/ cut <= 4);
-        quot=QUOT10(*up, cut);
-        rem=*up-quot*powers[cut];
-      #else
-        rem=*up%powers[cut];
-        quot=*up/powers[cut];
-      #endif
-      if (rem!=0) *residue=1;
-      }
-    /* discard digit is now at bottom of quot  */
-    #if DECDPUN<=4
-      temp=(quot*6554)>>16;        /* fast /10  */
-      /* Vowels algorithm here not a win (9 instructions)  */
-      discard1=quot-X10(temp);
-      quot=temp;
-    #else
-      discard1=quot%10;
-      quot=quot/10;
-    #endif
-    /* here, discard1 is the guard digit, and residue is everything  */
-    /* else [use mapping array to accumulate residue safely]  */
-    *residue+=resmap[discard1];
-    cut++;                         /* update cut  */
-    /* here: up -> Unit of the array with bottom digit  */
-    /*       cut is the division point for each Unit  */
-    /*       quot holds the uncut high-order digits for the current unit  */
-    if (set->digits<=0) {          /* special for Quantize/Subnormal :-(  */
-      *dn->lsu=0;                  /* .. result is 0  */
-      dn->digits=1;                /* ..  */
-      }
-     else {                        /* shift to least needed  */
-      count=set->digits;           /* now digits to end up with  */
-      dn->digits=count;            /* set the new length  */
-      /* shift-copy the coefficient array to the result number  */
-      for (target=dn->lsu; ; target++) {
-        *target=(Unit)quot;
-        count-=(DECDPUN-cut);
-        if (count<=0) break;
-        up++;
-        quot=*up;
-        #if DECDPUN<=4
-          quot=QUOT10(quot, cut);
-          rem=*up-quot*powers[cut];
-        #else
-          rem=quot%powers[cut];
-          quot=quot/powers[cut];
-        #endif
-        *target=(Unit)(*target+rem*powers[DECDPUN-cut]);
-        count-=cut;
-        if (count<=0) break;
-        } /* shift-copy loop  */
-      } /* shift to least  */
-    } /* not unit boundary  */
-
-  if (*residue!=0) *status|=DEC_Inexact; /* record inexactitude  */
-  return;
-  } /* decSetCoeff  */
-
-/* ------------------------------------------------------------------ */
-/* decApplyRound -- apply pending rounding to a number                */
-/*                                                                    */
-/*   dn    is the number, with space for set->digits digits           */
-/*   set   is the context [for size and rounding mode]                */
-/*   residue indicates pending rounding, being any accumulated        */
-/*         guard and sticky information.  It may be:                  */
-/*         6-9: rounding digit is >5                                  */
-/*         5:   rounding digit is exactly half-way                    */
-/*         1-4: rounding digit is <5 and >0                           */
-/*         0:   the coefficient is exact                              */
-/*        -1:   as 1, but the hidden digits are subtractive, that     */
-/*              is, of the opposite sign to dn.  In this case the     */
-/*              coefficient must be non-0.  This case occurs when     */
-/*              subtracting a small number (which can be reduced to   */
-/*              a sticky bit); see decAddOp.                          */
-/*   status is the status accumulator, as usual                       */
-/*                                                                    */
-/* This routine applies rounding while keeping the length of the      */
-/* coefficient constant.  The exponent and status are unchanged       */
-/* except if:                                                         */
-/*                                                                    */
-/*   -- the coefficient was increased and is all nines (in which      */
-/*      case Overflow could occur, and is handled directly here so    */
-/*      the caller does not need to re-test for overflow)             */
-/*                                                                    */
-/*   -- the coefficient was decreased and becomes all nines (in which */
-/*      case Underflow could occur, and is also handled directly).    */
-/*                                                                    */
-/* All fields in dn are updated as required.                          */
-/*                                                                    */
-/* ------------------------------------------------------------------ */
-static void decApplyRound(decNumber *dn, decContext *set, Int residue,
-                          uInt *status) {
-  Int  bump;                  /* 1 if coefficient needs to be incremented  */
-                              /* -1 if coefficient needs to be decremented  */
-
-  if (residue==0) return;     /* nothing to apply  */
-
-  bump=0;                     /* assume a smooth ride  */
-
-  /* now decide whether, and how, to round, depending on mode  */
-  switch (set->round) {
-    case DEC_ROUND_05UP: {    /* round zero or five up (for reround)  */
-      /* This is the same as DEC_ROUND_DOWN unless there is a  */
-      /* positive residue and the lsd of dn is 0 or 5, in which case  */
-      /* it is bumped; when residue is <0, the number is therefore  */
-      /* bumped down unless the final digit was 1 or 6 (in which  */
-      /* case it is bumped down and then up -- a no-op)  */
-      Int lsd5=*dn->lsu%5;     /* get lsd and quintate  */
-      if (residue<0 && lsd5!=1) bump=-1;
-       else if (residue>0 && lsd5==0) bump=1;
-      /* [bump==1 could be applied directly; use common path for clarity]  */
-      break;} /* r-05  */
-
-    case DEC_ROUND_DOWN: {
-      /* no change, except if negative residue  */
-      if (residue<0) bump=-1;
-      break;} /* r-d  */
-
-    case DEC_ROUND_HALF_DOWN: {
-      if (residue>5) bump=1;
-      break;} /* r-h-d  */
-
-    case DEC_ROUND_HALF_EVEN: {
-      if (residue>5) bump=1;            /* >0.5 goes up  */
-       else if (residue==5) {           /* exactly 0.5000...  */
-        /* 0.5 goes up iff [new] lsd is odd  */
-        if (*dn->lsu & 0x01) bump=1;
-        }
-      break;} /* r-h-e  */
-
-    case DEC_ROUND_HALF_UP: {
-      if (residue>=5) bump=1;
-      break;} /* r-h-u  */
-
-    case DEC_ROUND_UP: {
-      if (residue>0) bump=1;
-      break;} /* r-u  */
-
-    case DEC_ROUND_CEILING: {
-      /* same as _UP for positive numbers, and as _DOWN for negatives  */
-      /* [negative residue cannot occur on 0]  */
-      if (decNumberIsNegative(dn)) {
-        if (residue<0) bump=-1;
-        }
-       else {
-        if (residue>0) bump=1;
-        }
-      break;} /* r-c  */
-
-    case DEC_ROUND_FLOOR: {
-      /* same as _UP for negative numbers, and as _DOWN for positive  */
-      /* [negative residue cannot occur on 0]  */
-      if (!decNumberIsNegative(dn)) {
-        if (residue<0) bump=-1;
-        }
-       else {
-        if (residue>0) bump=1;
-        }
-      break;} /* r-f  */
-
-    default: {      /* e.g., DEC_ROUND_MAX  */
-      *status|=DEC_Invalid_context;
-      #if DECTRACE || (DECCHECK && DECVERB)
-      printf("Unknown rounding mode: %d\n", set->round);
-      #endif
-      break;}
-    } /* switch  */
-
-  /* now bump the number, up or down, if need be  */
-  if (bump==0) return;                       /* no action required  */
-
-  /* Simply use decUnitAddSub unless bumping up and the number is  */
-  /* all nines.  In this special case set to 100... explicitly  */
-  /* and adjust the exponent by one (as otherwise could overflow  */
-  /* the array)  */
-  /* Similarly handle all-nines result if bumping down.  */
-  if (bump>0) {
-    Unit *up;                                /* work  */
-    uInt count=dn->digits;                   /* digits to be checked  */
-    for (up=dn->lsu; ; up++) {
-      if (count<=DECDPUN) {
-        /* this is the last Unit (the msu)  */
-        if (*up!=powers[count]-1) break;     /* not still 9s  */
-        /* here if it, too, is all nines  */
-        *up=(Unit)powers[count-1];           /* here 999 -> 100 etc.  */
-        for (up=up-1; up>=dn->lsu; up--) *up=0; /* others all to 0  */
-        dn->exponent++;                      /* and bump exponent  */
-        /* [which, very rarely, could cause Overflow...]  */
-        if ((dn->exponent+dn->digits)>set->emax+1) {
-          decSetOverflow(dn, set, status);
-          }
-        return;                              /* done  */
-        }
-      /* a full unit to check, with more to come  */
-      if (*up!=DECDPUNMAX) break;            /* not still 9s  */
-      count-=DECDPUN;
-      } /* up  */
-    } /* bump>0  */
-   else {                                    /* -1  */
-    /* here checking for a pre-bump of 1000... (leading 1, all  */
-    /* other digits zero)  */
-    Unit *up, *sup;                          /* work  */
-    uInt count=dn->digits;                   /* digits to be checked  */
-    for (up=dn->lsu; ; up++) {
-      if (count<=DECDPUN) {
-        /* this is the last Unit (the msu)  */
-        if (*up!=powers[count-1]) break;     /* not 100..  */
-        /* here if have the 1000... case  */
-        sup=up;                              /* save msu pointer  */
-        *up=(Unit)powers[count]-1;           /* here 100 in msu -> 999  */
-        /* others all to all-nines, too  */
-        for (up=up-1; up>=dn->lsu; up--) *up=(Unit)powers[DECDPUN]-1;
-        dn->exponent--;                      /* and bump exponent  */
-
-        /* iff the number was at the subnormal boundary (exponent=etiny)  */
-        /* then the exponent is now out of range, so it will in fact get  */
-        /* clamped to etiny and the final 9 dropped.  */
-        /* printf(">> emin=%d exp=%d sdig=%d\n", set->emin,  */
-        /*        dn->exponent, set->digits);  */
-        if (dn->exponent+1==set->emin-set->digits+1) {
-          if (count==1 && dn->digits==1) *sup=0;  /* here 9 -> 0[.9]  */
-           else {
-            *sup=(Unit)powers[count-1]-1;    /* here 999.. in msu -> 99..  */
-            dn->digits--;
-            }
-          dn->exponent++;
-          *status|=DEC_Underflow | DEC_Subnormal | DEC_Inexact | DEC_Rounded;
-          }
-        return;                              /* done  */
-        }
-
-      /* a full unit to check, with more to come  */
-      if (*up!=0) break;                     /* not still 0s  */
-      count-=DECDPUN;
-      } /* up  */
-
-    } /* bump<0  */
-
-  /* Actual bump needed.  Do it.  */
-  decUnitAddSub(dn->lsu, D2U(dn->digits), uarrone, 1, 0, dn->lsu, bump);
-  } /* decApplyRound  */
-
-#if DECSUBSET
-/* ------------------------------------------------------------------ */
-/* decFinish -- finish processing a number                            */
-/*                                                                    */
-/*   dn is the number                                                 */
-/*   set is the context                                               */
-/*   residue is the rounding accumulator (as in decApplyRound)        */
-/*   status is the accumulator                                        */
-/*                                                                    */
-/* This finishes off the current number by:                           */
-/*    1. If not extended:                                             */
-/*       a. Converting a zero result to clean '0'                     */
-/*       b. Reducing positive exponents to 0, if would fit in digits  */
-/*    2. Checking for overflow and subnormals (always)                */
-/* Note this is just Finalize when no subset arithmetic.              */
-/* All fields are updated as required.                                */
-/* ------------------------------------------------------------------ */
-static void decFinish(decNumber *dn, decContext *set, Int *residue,
-                      uInt *status) {
-  if (!set->extended) {
-    if ISZERO(dn) {                /* value is zero  */
-      dn->exponent=0;              /* clean exponent ..  */
-      dn->bits=0;                  /* .. and sign  */
-      return;                      /* no error possible  */
-      }
-    if (dn->exponent>=0) {         /* non-negative exponent  */
-      /* >0; reduce to integer if possible  */
-      if (set->digits >= (dn->exponent+dn->digits)) {
-        dn->digits=decShiftToMost(dn->lsu, dn->digits, dn->exponent);
-        dn->exponent=0;
-        }
-      }
-    } /* !extended  */
-
-  decFinalize(dn, set, residue, status);
-  } /* decFinish  */
-#endif
-
-/* ------------------------------------------------------------------ */
-/* decFinalize -- final check, clamp, and round of a number           */
-/*                                                                    */
-/*   dn is the number                                                 */
-/*   set is the context                                               */
-/*   residue is the rounding accumulator (as in decApplyRound)        */
-/*   status is the status accumulator                                 */
-/*                                                                    */
-/* This finishes off the current number by checking for subnormal     */
-/* results, applying any pending rounding, checking for overflow,     */
-/* and applying any clamping.                                         */
-/* Underflow and overflow conditions are raised as appropriate.       */
-/* All fields are updated as required.                                */
-/* ------------------------------------------------------------------ */
-static void decFinalize(decNumber *dn, decContext *set, Int *residue,
-                        uInt *status) {
-  Int shift;                            /* shift needed if clamping  */
-  Int tinyexp=set->emin-dn->digits+1;   /* precalculate subnormal boundary  */
-
-  /* Must be careful, here, when checking the exponent as the  */
-  /* adjusted exponent could overflow 31 bits [because it may already  */
-  /* be up to twice the expected].  */
-
-  /* First test for subnormal.  This must be done before any final  */
-  /* round as the result could be rounded to Nmin or 0.  */
-  if (dn->exponent<=tinyexp) {          /* prefilter  */
-    Int comp;
-    decNumber nmin;
-    /* A very nasty case here is dn == Nmin and residue<0  */
-    if (dn->exponent<tinyexp) {
-      /* Go handle subnormals; this will apply round if needed.  */
-      decSetSubnormal(dn, set, residue, status);
-      return;
-      }
-    /* Equals case: only subnormal if dn=Nmin and negative residue  */
-    uprv_decNumberZero(&nmin);
-    nmin.lsu[0]=1;
-    nmin.exponent=set->emin;
-    comp=decCompare(dn, &nmin, 1);                /* (signless compare)  */
-    if (comp==BADINT) {                           /* oops  */
-      *status|=DEC_Insufficient_storage;          /* abandon...  */
-      return;
-      }
-    if (*residue<0 && comp==0) {                  /* neg residue and dn==Nmin  */
-      decApplyRound(dn, set, *residue, status);   /* might force down  */
-      decSetSubnormal(dn, set, residue, status);
-      return;
-      }
-    }
-
-  /* now apply any pending round (this could raise overflow).  */
-  if (*residue!=0) decApplyRound(dn, set, *residue, status);
-
-  /* Check for overflow [redundant in the 'rare' case] or clamp  */
-  if (dn->exponent<=set->emax-set->digits+1) return;   /* neither needed  */
-
-
-  /* here when might have an overflow or clamp to do  */
-  if (dn->exponent>set->emax-dn->digits+1) {           /* too big  */
-    decSetOverflow(dn, set, status);
-    return;
-    }
-  /* here when the result is normal but in clamp range  */
-  if (!set->clamp) return;
-
-  /* here when need to apply the IEEE exponent clamp (fold-down)  */
-  shift=dn->exponent-(set->emax-set->digits+1);
-
-  /* shift coefficient (if non-zero)  */
-  if (!ISZERO(dn)) {
-    dn->digits=decShiftToMost(dn->lsu, dn->digits, shift);
-    }
-  dn->exponent-=shift;   /* adjust the exponent to match  */
-  *status|=DEC_Clamped;  /* and record the dirty deed  */
-  return;
-  } /* decFinalize  */
-
-/* ------------------------------------------------------------------ */
-/* decSetOverflow -- set number to proper overflow value              */
-/*                                                                    */
-/*   dn is the number (used for sign [only] and result)               */
-/*   set is the context [used for the rounding mode, etc.]            */
-/*   status contains the current status to be updated                 */
-/*                                                                    */
-/* This sets the sign of a number and sets its value to either        */
-/* Infinity or the maximum finite value, depending on the sign of     */
-/* dn and the rounding mode, following IEEE 754 rules.                */
-/* ------------------------------------------------------------------ */
-static void decSetOverflow(decNumber *dn, decContext *set, uInt *status) {
-  Flag needmax=0;                  /* result is maximum finite value  */
-  uByte sign=dn->bits&DECNEG;      /* clean and save sign bit  */
-
-  if (ISZERO(dn)) {                /* zero does not overflow magnitude  */
-    Int emax=set->emax;                      /* limit value  */
-    if (set->clamp) emax-=set->digits-1;     /* lower if clamping  */
-    if (dn->exponent>emax) {                 /* clamp required  */
-      dn->exponent=emax;
-      *status|=DEC_Clamped;
-      }
-    return;
-    }
-
-  uprv_decNumberZero(dn);
-  switch (set->round) {
-    case DEC_ROUND_DOWN: {
-      needmax=1;                   /* never Infinity  */
-      break;} /* r-d  */
-    case DEC_ROUND_05UP: {
-      needmax=1;                   /* never Infinity  */
-      break;} /* r-05  */
-    case DEC_ROUND_CEILING: {
-      if (sign) needmax=1;         /* Infinity if non-negative  */
-      break;} /* r-c  */
-    case DEC_ROUND_FLOOR: {
-      if (!sign) needmax=1;        /* Infinity if negative  */
-      break;} /* r-f  */
-    default: break;                /* Infinity in all other cases  */
-    }
-  if (needmax) {
-    decSetMaxValue(dn, set);
-    dn->bits=sign;                 /* set sign  */
-    }
-   else dn->bits=sign|DECINF;      /* Value is +/-Infinity  */
-  *status|=DEC_Overflow | DEC_Inexact | DEC_Rounded;
-  } /* decSetOverflow  */
-
-/* ------------------------------------------------------------------ */
-/* decSetMaxValue -- set number to +Nmax (maximum normal value)       */
-/*                                                                    */
-/*   dn is the number to set                                          */
-/*   set is the context [used for digits and emax]                    */
-/*                                                                    */
-/* This sets the number to the maximum positive value.                */
-/* ------------------------------------------------------------------ */
-static void decSetMaxValue(decNumber *dn, decContext *set) {
-  Unit *up;                        /* work  */
-  Int count=set->digits;           /* nines to add  */
-  dn->digits=count;
-  /* fill in all nines to set maximum value  */
-  for (up=dn->lsu; ; up++) {
-    if (count>DECDPUN) *up=DECDPUNMAX;  /* unit full o'nines  */
-     else {                             /* this is the msu  */
-      *up=(Unit)(powers[count]-1);
-      break;
-      }
-    count-=DECDPUN;                /* filled those digits  */
-    } /* up  */
-  dn->bits=0;                      /* + sign  */
-  dn->exponent=set->emax-set->digits+1;
-  } /* decSetMaxValue  */
-
-/* ------------------------------------------------------------------ */
-/* decSetSubnormal -- process value whose exponent is <Emin           */
-/*                                                                    */
-/*   dn is the number (used as input as well as output; it may have   */
-/*         an allowed subnormal value, which may need to be rounded)  */
-/*   set is the context [used for the rounding mode]                  */
-/*   residue is any pending residue                                   */
-/*   status contains the current status to be updated                 */
-/*                                                                    */
-/* If subset mode, set result to zero and set Underflow flags.        */
-/*                                                                    */
-/* Value may be zero with a low exponent; this does not set Subnormal */
-/* but the exponent will be clamped to Etiny.                         */
-/*                                                                    */
-/* Otherwise ensure exponent is not out of range, and round as        */
-/* necessary.  Underflow is set if the result is Inexact.             */
-/* ------------------------------------------------------------------ */
-static void decSetSubnormal(decNumber *dn, decContext *set, Int *residue,
-                            uInt *status) {
-  decContext workset;         /* work  */
-  Int        etiny, adjust;   /* ..  */
-
-  #if DECSUBSET
-  /* simple set to zero and 'hard underflow' for subset  */
-  if (!set->extended) {
-    uprv_decNumberZero(dn);
-    /* always full overflow  */
-    *status|=DEC_Underflow | DEC_Subnormal | DEC_Inexact | DEC_Rounded;
-    return;
-    }
-  #endif
-
-  /* Full arithmetic -- allow subnormals, rounded to minimum exponent  */
-  /* (Etiny) if needed  */
-  etiny=set->emin-(set->digits-1);      /* smallest allowed exponent  */
-
-  if ISZERO(dn) {                       /* value is zero  */
-    /* residue can never be non-zero here  */
-    #if DECCHECK
-      if (*residue!=0) {
-        printf("++ Subnormal 0 residue %ld\n", (LI)*residue);
-        *status|=DEC_Invalid_operation;
-        }
-    #endif
-    if (dn->exponent<etiny) {           /* clamp required  */
-      dn->exponent=etiny;
-      *status|=DEC_Clamped;
-      }
-    return;
-    }
-
-  *status|=DEC_Subnormal;               /* have a non-zero subnormal  */
-  adjust=etiny-dn->exponent;            /* calculate digits to remove  */
-  if (adjust<=0) {                      /* not out of range; unrounded  */
-    /* residue can never be non-zero here, except in the Nmin-residue  */
-    /* case (which is a subnormal result), so can take fast-path here  */
-    /* it may already be inexact (from setting the coefficient)  */
-    if (*status&DEC_Inexact) *status|=DEC_Underflow;
-    return;
-    }
-
-  /* adjust>0, so need to rescale the result so exponent becomes Etiny  */
-  /* [this code is similar to that in rescale]  */
-  workset=*set;                         /* clone rounding, etc.  */
-  workset.digits=dn->digits-adjust;     /* set requested length  */
-  workset.emin-=adjust;                 /* and adjust emin to match  */
-  /* [note that the latter can be <1, here, similar to Rescale case]  */
-  decSetCoeff(dn, &workset, dn->lsu, dn->digits, residue, status);
-  decApplyRound(dn, &workset, *residue, status);
-
-  /* Use 754 default rule: Underflow is set iff Inexact  */
-  /* [independent of whether trapped]  */
-  if (*status&DEC_Inexact) *status|=DEC_Underflow;
-
-  /* if rounded up a 999s case, exponent will be off by one; adjust  */
-  /* back if so [it will fit, because it was shortened earlier]  */
-  if (dn->exponent>etiny) {
-    dn->digits=decShiftToMost(dn->lsu, dn->digits, 1);
-    dn->exponent--;                     /* (re)adjust the exponent.  */
-    }
-
-  /* if rounded to zero, it is by definition clamped...  */
-  if (ISZERO(dn)) *status|=DEC_Clamped;
-  } /* decSetSubnormal  */
-
-/* ------------------------------------------------------------------ */
-/* decCheckMath - check entry conditions for a math function          */
-/*                                                                    */
-/*   This checks the context and the operand                          */
-/*                                                                    */
-/*   rhs is the operand to check                                      */
-/*   set is the context to check                                      */
-/*   status is unchanged if both are good                             */
-/*                                                                    */
-/* returns non-zero if status is changed, 0 otherwise                 */
-/*                                                                    */
-/* Restrictions enforced:                                             */
-/*                                                                    */
-/*   digits, emax, and -emin in the context must be less than         */
-/*   DEC_MAX_MATH (999999), and A must be within these bounds if      */
-/*   non-zero.  Invalid_operation is set in the status if a           */
-/*   restriction is violated.                                         */
-/* ------------------------------------------------------------------ */
-static uInt decCheckMath(const decNumber *rhs, decContext *set,
-                         uInt *status) {
-  uInt save=*status;                         /* record  */
-  if (set->digits>DEC_MAX_MATH
-   || set->emax>DEC_MAX_MATH
-   || -set->emin>DEC_MAX_MATH) *status|=DEC_Invalid_context;
-   else if ((rhs->digits>DEC_MAX_MATH
-     || rhs->exponent+rhs->digits>DEC_MAX_MATH+1
-     || rhs->exponent+rhs->digits<2*(1-DEC_MAX_MATH))
-     && !ISZERO(rhs)) *status|=DEC_Invalid_operation;
-  return (*status!=save);
-  } /* decCheckMath  */
-
-/* ------------------------------------------------------------------ */
-/* decGetInt -- get integer from a number                             */
-/*                                                                    */
-/*   dn is the number [which will not be altered]                     */
-/*                                                                    */
-/*   returns one of:                                                  */
-/*     BADINT if there is a non-zero fraction                         */
-/*     the converted integer                                          */
-/*     BIGEVEN if the integer is even and magnitude > 2*10**9         */
-/*     BIGODD  if the integer is odd  and magnitude > 2*10**9         */
-/*                                                                    */
-/* This checks and gets a whole number from the input decNumber.      */
-/* The sign can be determined from dn by the caller when BIGEVEN or   */
-/* BIGODD is returned.                                                */
-/* ------------------------------------------------------------------ */
-static Int decGetInt(const decNumber *dn) {
-  Int  theInt;                          /* result accumulator  */
-  const Unit *up;                       /* work  */
-  Int  got;                             /* digits (real or not) processed  */
-  Int  ilength=dn->digits+dn->exponent; /* integral length  */
-  Flag neg=decNumberIsNegative(dn);     /* 1 if -ve  */
-
-  /* The number must be an integer that fits in 10 digits  */
-  /* Assert, here, that 10 is enough for any rescale Etiny  */
-  #if DEC_MAX_EMAX > 999999999
-    #error GetInt may need updating [for Emax]
-  #endif
-  #if DEC_MIN_EMIN < -999999999
-    #error GetInt may need updating [for Emin]
-  #endif
-  if (ISZERO(dn)) return 0;             /* zeros are OK, with any exponent  */
-
-  up=dn->lsu;                           /* ready for lsu  */
-  theInt=0;                             /* ready to accumulate  */
-  if (dn->exponent>=0) {                /* relatively easy  */
-    /* no fractional part [usual]; allow for positive exponent  */
-    got=dn->exponent;
-    }
-   else { /* -ve exponent; some fractional part to check and discard  */
-    Int count=-dn->exponent;            /* digits to discard  */
-    /* spin up whole units until reach the Unit with the unit digit  */
-    for (; count>=DECDPUN; up++) {
-      if (*up!=0) return BADINT;        /* non-zero Unit to discard  */
-      count-=DECDPUN;
-      }
-    if (count==0) got=0;                /* [a multiple of DECDPUN]  */
-     else {                             /* [not multiple of DECDPUN]  */
-      Int rem;                          /* work  */
-      /* slice off fraction digits and check for non-zero  */
-      #if DECDPUN<=4
-        theInt=QUOT10(*up, count);
-        rem=*up-theInt*powers[count];
-      #else
-        rem=*up%powers[count];          /* slice off discards  */
-        theInt=*up/powers[count];
-      #endif
-      if (rem!=0) return BADINT;        /* non-zero fraction  */
-      /* it looks good  */
-      got=DECDPUN-count;                /* number of digits so far  */
-      up++;                             /* ready for next  */
-      }
-    }
-  /* now it's known there's no fractional part  */
-
-  /* tricky code now, to accumulate up to 9.3 digits  */
-  if (got==0) {theInt=*up; got+=DECDPUN; up++;} /* ensure lsu is there  */
-
-  if (ilength<11) {
-    Int save=theInt;
-    /* collect any remaining unit(s)  */
-    for (; got<ilength; up++) {
-      theInt+=*up*powers[got];
-      got+=DECDPUN;
-      }
-    if (ilength==10) {                  /* need to check for wrap  */
-      if (theInt/(Int)powers[got-DECDPUN]!=(Int)*(up-1)) ilength=11;
-         /* [that test also disallows the BADINT result case]  */
-       else if (neg && theInt>1999999997) ilength=11;
-       else if (!neg && theInt>999999999) ilength=11;
-      if (ilength==11) theInt=save;     /* restore correct low bit  */
-      }
-    }
-
-  if (ilength>10) {                     /* too big  */
-    if (theInt&1) return BIGODD;        /* bottom bit 1  */
-    return BIGEVEN;                     /* bottom bit 0  */
-    }
-
-  if (neg) theInt=-theInt;              /* apply sign  */
-  return theInt;
-  } /* decGetInt  */
-
-/* ------------------------------------------------------------------ */
-/* decDecap -- decapitate the coefficient of a number                 */
-/*                                                                    */
-/*   dn   is the number to be decapitated                             */
-/*   drop is the number of digits to be removed from the left of dn;  */
-/*     this must be <= dn->digits (if equal, the coefficient is       */
-/*     set to 0)                                                      */
-/*                                                                    */
-/* Returns dn; dn->digits will be <= the initial digits less drop     */
-/* (after removing drop digits there may be leading zero digits       */
-/* which will also be removed).  Only dn->lsu and dn->digits change.  */
-/* ------------------------------------------------------------------ */
-static decNumber *decDecap(decNumber *dn, Int drop) {
-  Unit *msu;                            /* -> target cut point  */
-  Int cut;                              /* work  */
-  if (drop>=dn->digits) {               /* losing the whole thing  */
-    #if DECCHECK
-    if (drop>dn->digits)
-      printf("decDecap called with drop>digits [%ld>%ld]\n",
-             (LI)drop, (LI)dn->digits);
-    #endif
-    dn->lsu[0]=0;
-    dn->digits=1;
-    return dn;
-    }
-  msu=dn->lsu+D2U(dn->digits-drop)-1;   /* -> likely msu  */
-  cut=MSUDIGITS(dn->digits-drop);       /* digits to be in use in msu  */
-  if (cut!=DECDPUN) *msu%=powers[cut];  /* clear left digits  */
-  /* that may have left leading zero digits, so do a proper count...  */
-  dn->digits=decGetDigits(dn->lsu, msu-dn->lsu+1);
-  return dn;
-  } /* decDecap  */
-
-/* ------------------------------------------------------------------ */
-/* decBiStr -- compare string with pairwise options                   */
-/*                                                                    */
-/*   targ is the string to compare                                    */
-/*   str1 is one of the strings to compare against (length may be 0)  */
-/*   str2 is the other; it must be the same length as str1            */
-/*                                                                    */
-/*   returns 1 if strings compare equal, (that is, it is the same     */
-/*   length as str1 and str2, and each character of targ is in either */
-/*   str1 or str2 in the corresponding position), or 0 otherwise      */
-/*                                                                    */
-/* This is used for generic caseless compare, including the awkward   */
-/* case of the Turkish dotted and dotless Is.  Use as (for example):  */
-/*   if (decBiStr(test, "mike", "MIKE")) ...                          */
-/* ------------------------------------------------------------------ */
-static Flag decBiStr(const char *targ, const char *str1, const char *str2) {
-  for (;;targ++, str1++, str2++) {
-    if (*targ!=*str1 && *targ!=*str2) return 0;
-    /* *targ has a match in one (or both, if terminator)  */
-    if (*targ=='\0') break;
-    } /* forever  */
-  return 1;
-  } /* decBiStr  */
-
-/* ------------------------------------------------------------------ */
-/* decNaNs -- handle NaN operand or operands                          */
-/*                                                                    */
-/*   res     is the result number                                     */
-/*   lhs     is the first operand                                     */
-/*   rhs     is the second operand, or NULL if none                   */
-/*   context is used to limit payload length                          */
-/*   status  contains the current status                              */
-/*   returns res in case convenient                                   */
-/*                                                                    */
-/* Called when one or both operands is a NaN, and propagates the      */
-/* appropriate result to res.  When an sNaN is found, it is changed   */
-/* to a qNaN and Invalid operation is set.                            */
-/* ------------------------------------------------------------------ */
-static decNumber * decNaNs(decNumber *res, const decNumber *lhs,
-                           const decNumber *rhs, decContext *set,
-                           uInt *status) {
-  /* This decision tree ends up with LHS being the source pointer,  */
-  /* and status updated if need be  */
-  if (lhs->bits & DECSNAN)
-    *status|=DEC_Invalid_operation | DEC_sNaN;
-   else if (rhs==NULL);
-   else if (rhs->bits & DECSNAN) {
-    lhs=rhs;
-    *status|=DEC_Invalid_operation | DEC_sNaN;
-    }
-   else if (lhs->bits & DECNAN);
-   else lhs=rhs;
-
-  /* propagate the payload  */
-  if (lhs->digits<=set->digits) uprv_decNumberCopy(res, lhs); /* easy  */
-   else { /* too long  */
-    const Unit *ul;
-    Unit *ur, *uresp1;
-    /* copy safe number of units, then decapitate  */
-    res->bits=lhs->bits;                /* need sign etc.  */
-    uresp1=res->lsu+D2U(set->digits);
-    for (ur=res->lsu, ul=lhs->lsu; ur<uresp1; ur++, ul++) *ur=*ul;
-    res->digits=D2U(set->digits)*DECDPUN;
-    /* maybe still too long  */
-    if (res->digits>set->digits) decDecap(res, res->digits-set->digits);
-    }
-
-  res->bits&=~DECSNAN;        /* convert any sNaN to NaN, while  */
-  res->bits|=DECNAN;          /* .. preserving sign  */
-  res->exponent=0;            /* clean exponent  */
-                              /* [coefficient was copied/decapitated]  */
-  return res;
-  } /* decNaNs  */
-
-/* ------------------------------------------------------------------ */
-/* decStatus -- apply non-zero status                                 */
-/*                                                                    */
-/*   dn     is the number to set if error                             */
-/*   status contains the current status (not yet in context)          */
-/*   set    is the context                                            */
-/*                                                                    */
-/* If the status is an error status, the number is set to a NaN,      */
-/* unless the error was an overflow, divide-by-zero, or underflow,    */
-/* in which case the number will have already been set.               */
-/*                                                                    */
-/* The context status is then updated with the new status.  Note that */
-/* this may raise a signal, so control may never return from this     */
-/* routine (hence resources must be recovered before it is called).   */
-/* ------------------------------------------------------------------ */
-static void decStatus(decNumber *dn, uInt status, decContext *set) {
-  if (status & DEC_NaNs) {              /* error status -> NaN  */
-    /* if cause was an sNaN, clear and propagate [NaN is already set up]  */
-    if (status & DEC_sNaN) status&=~DEC_sNaN;
-     else {
-      uprv_decNumberZero(dn);                /* other error: clean throughout  */
-      dn->bits=DECNAN;                  /* and make a quiet NaN  */
-      }
-    }
-  uprv_decContextSetStatus(set, status);     /* [may not return]  */
-  return;
-  } /* decStatus  */
-
-/* ------------------------------------------------------------------ */
-/* decGetDigits -- count digits in a Units array                      */
-/*                                                                    */
-/*   uar is the Unit array holding the number (this is often an       */
-/*          accumulator of some sort)                                 */
-/*   len is the length of the array in units [>=1]                    */
-/*                                                                    */
-/*   returns the number of (significant) digits in the array          */
-/*                                                                    */
-/* All leading zeros are excluded, except the last if the array has   */
-/* only zero Units.                                                   */
-/* ------------------------------------------------------------------ */
-/* This may be called twice during some operations.  */
-static Int decGetDigits(Unit *uar, Int len) {
-  Unit *up=uar+(len-1);            /* -> msu  */
-  Int  digits=(len-1)*DECDPUN+1;   /* possible digits excluding msu  */
-  #if DECDPUN>4
-  uInt const *pow;                 /* work  */
-  #endif
-                                   /* (at least 1 in final msu)  */
-  #if DECCHECK
-  if (len<1) printf("decGetDigits called with len<1 [%ld]\n", (LI)len);
-  #endif
-
-  for (; up>=uar; up--) {
-    if (*up==0) {                  /* unit is all 0s  */
-      if (digits==1) break;        /* a zero has one digit  */
-      digits-=DECDPUN;             /* adjust for 0 unit  */
-      continue;}
-    /* found the first (most significant) non-zero Unit  */
-    #if DECDPUN>1                  /* not done yet  */
-    if (*up<10) break;             /* is 1-9  */
-    digits++;
-    #if DECDPUN>2                  /* not done yet  */
-    if (*up<100) break;            /* is 10-99  */
-    digits++;
-    #if DECDPUN>3                  /* not done yet  */
-    if (*up<1000) break;           /* is 100-999  */
-    digits++;
-    #if DECDPUN>4                  /* count the rest ...  */
-    for (pow=&powers[4]; *up>=*pow; pow++) digits++;
-    #endif
-    #endif
-    #endif
-    #endif
-    break;
-    } /* up  */
-  return digits;
-  } /* decGetDigits  */
-
-#if DECTRACE | DECCHECK
-/* ------------------------------------------------------------------ */
-/* decNumberShow -- display a number [debug aid]                      */
-/*   dn is the number to show                                         */
-/*                                                                    */
-/* Shows: sign, exponent, coefficient (msu first), digits             */
-/*    or: sign, special-value                                         */
-/* ------------------------------------------------------------------ */
-/* this is public so other modules can use it  */
-void uprv_decNumberShow(const decNumber *dn) {
-  const Unit *up;                  /* work  */
-  uInt u, d;                       /* ..  */
-  Int cut;                         /* ..  */
-  char isign='+';                  /* main sign  */
-  if (dn==NULL) {
-    printf("NULL\n");
-    return;}
-  if (decNumberIsNegative(dn)) isign='-';
-  printf(" >> %c ", isign);
-  if (dn->bits&DECSPECIAL) {       /* Is a special value  */
-    if (decNumberIsInfinite(dn)) printf("Infinity");
-     else {                                  /* a NaN  */
-      if (dn->bits&DECSNAN) printf("sNaN");  /* signalling NaN  */
-       else printf("NaN");
-      }
-    /* if coefficient and exponent are 0, no more to do  */
-    if (dn->exponent==0 && dn->digits==1 && *dn->lsu==0) {
-      printf("\n");
-      return;}
-    /* drop through to report other information  */
-    printf(" ");
-    }
-
-  /* now carefully display the coefficient  */
-  up=dn->lsu+D2U(dn->digits)-1;         /* msu  */
-  printf("%ld", (LI)*up);
-  for (up=up-1; up>=dn->lsu; up--) {
-    u=*up;
-    printf(":");
-    for (cut=DECDPUN-1; cut>=0; cut--) {
-      d=u/powers[cut];
-      u-=d*powers[cut];
-      printf("%ld", (LI)d);
-      } /* cut  */
-    } /* up  */
-  if (dn->exponent!=0) {
-    char esign='+';
-    if (dn->exponent<0) esign='-';
-    printf(" E%c%ld", esign, (LI)abs(dn->exponent));
-    }
-  printf(" [%ld]\n", (LI)dn->digits);
-  } /* decNumberShow  */
-#endif
-
-#if DECTRACE || DECCHECK
-/* ------------------------------------------------------------------ */
-/* decDumpAr -- display a unit array [debug/check aid]                */
-/*   name is a single-character tag name                              */
-/*   ar   is the array to display                                     */
-/*   len  is the length of the array in Units                         */
-/* ------------------------------------------------------------------ */
-static void decDumpAr(char name, const Unit *ar, Int len) {
-  Int i;
-  const char *spec;
-  #if DECDPUN==9
-    spec="%09d ";
-  #elif DECDPUN==8
-    spec="%08d ";
-  #elif DECDPUN==7
-    spec="%07d ";
-  #elif DECDPUN==6
-    spec="%06d ";
-  #elif DECDPUN==5
-    spec="%05d ";
-  #elif DECDPUN==4
-    spec="%04d ";
-  #elif DECDPUN==3
-    spec="%03d ";
-  #elif DECDPUN==2
-    spec="%02d ";
-  #else
-    spec="%d ";
-  #endif
-  printf("  :%c: ", name);
-  for (i=len-1; i>=0; i--) {
-    if (i==len-1) printf("%ld ", (LI)ar[i]);
-     else printf(spec, ar[i]);
-    }
-  printf("\n");
-  return;}
-#endif
-
-#if DECCHECK
-/* ------------------------------------------------------------------ */
-/* decCheckOperands -- check operand(s) to a routine                  */
-/*   res is the result structure (not checked; it will be set to      */
-/*          quiet NaN if error found (and it is not NULL))            */
-/*   lhs is the first operand (may be DECUNRESU)                      */
-/*   rhs is the second (may be DECUNUSED)                             */
-/*   set is the context (may be DECUNCONT)                            */
-/*   returns 0 if both operands, and the context are clean, or 1      */
-/*     otherwise (in which case the context will show an error,       */
-/*     unless NULL).  Note that res is not cleaned; caller should     */
-/*     handle this so res=NULL case is safe.                          */
-/* The caller is expected to abandon immediately if 1 is returned.    */
-/* ------------------------------------------------------------------ */
-static Flag decCheckOperands(decNumber *res, const decNumber *lhs,
-                             const decNumber *rhs, decContext *set) {
-  Flag bad=0;
-  if (set==NULL) {                 /* oops; hopeless  */
-    #if DECTRACE || DECVERB
-    printf("Reference to context is NULL.\n");
-    #endif
-    bad=1;
-    return 1;}
-   else if (set!=DECUNCONT
-     && (set->digits<1 || set->round>=DEC_ROUND_MAX)) {
-    bad=1;
-    #if DECTRACE || DECVERB
-    printf("Bad context [digits=%ld round=%ld].\n",
-           (LI)set->digits, (LI)set->round);
-    #endif
-    }
-   else {
-    if (res==NULL) {
-      bad=1;
-      #if DECTRACE
-      /* this one not DECVERB as standard tests include NULL  */
-      printf("Reference to result is NULL.\n");
-      #endif
-      }
-    if (!bad && lhs!=DECUNUSED) bad=(decCheckNumber(lhs));
-    if (!bad && rhs!=DECUNUSED) bad=(decCheckNumber(rhs));
-    }
-  if (bad) {
-    if (set!=DECUNCONT) uprv_decContextSetStatus(set, DEC_Invalid_operation);
-    if (res!=DECUNRESU && res!=NULL) {
-      uprv_decNumberZero(res);
-      res->bits=DECNAN;       /* qNaN  */
-      }
-    }
-  return bad;
-  } /* decCheckOperands  */
-
-/* ------------------------------------------------------------------ */
-/* decCheckNumber -- check a number                                   */
-/*   dn is the number to check                                        */
-/*   returns 0 if the number is clean, or 1 otherwise                 */
-/*                                                                    */
-/* The number is considered valid if it could be a result from some   */
-/* operation in some valid context.                                   */
-/* ------------------------------------------------------------------ */
-static Flag decCheckNumber(const decNumber *dn) {
-  const Unit *up;             /* work  */
-  uInt maxuint;               /* ..  */
-  Int ae, d, digits;          /* ..  */
-  Int emin, emax;             /* ..  */
-
-  if (dn==NULL) {             /* hopeless  */
-    #if DECTRACE
-    /* this one not DECVERB as standard tests include NULL  */
-    printf("Reference to decNumber is NULL.\n");
-    #endif
-    return 1;}
-
-  /* check special values  */
-  if (dn->bits & DECSPECIAL) {
-    if (dn->exponent!=0) {
-      #if DECTRACE || DECVERB
-      printf("Exponent %ld (not 0) for a special value [%02x].\n",
-             (LI)dn->exponent, dn->bits);
-      #endif
-      return 1;}
-
-    /* 2003.09.08: NaNs may now have coefficients, so next tests Inf only  */
-    if (decNumberIsInfinite(dn)) {
-      if (dn->digits!=1) {
-        #if DECTRACE || DECVERB
-        printf("Digits %ld (not 1) for an infinity.\n", (LI)dn->digits);
-        #endif
-        return 1;}
-      if (*dn->lsu!=0) {
-        #if DECTRACE || DECVERB
-        printf("LSU %ld (not 0) for an infinity.\n", (LI)*dn->lsu);
-        #endif
-        decDumpAr('I', dn->lsu, D2U(dn->digits));
-        return 1;}
-      } /* Inf  */
-    /* 2002.12.26: negative NaNs can now appear through proposed IEEE  */
-    /*             concrete formats (decimal64, etc.).  */
-    return 0;
-    }
-
-  /* check the coefficient  */
-  if (dn->digits<1 || dn->digits>DECNUMMAXP) {
-    #if DECTRACE || DECVERB
-    printf("Digits %ld in number.\n", (LI)dn->digits);
-    #endif
-    return 1;}
-
-  d=dn->digits;
-
-  for (up=dn->lsu; d>0; up++) {
-    if (d>DECDPUN) maxuint=DECDPUNMAX;
-     else {                   /* reached the msu  */
-      maxuint=powers[d]-1;
-      if (dn->digits>1 && *up<powers[d-1]) {
-        #if DECTRACE || DECVERB
-        printf("Leading 0 in number.\n");
-        uprv_decNumberShow(dn);
-        #endif
-        return 1;}
-      }
-    if (*up>maxuint) {
-      #if DECTRACE || DECVERB
-      printf("Bad Unit [%08lx] in %ld-digit number at offset %ld [maxuint %ld].\n",
-              (LI)*up, (LI)dn->digits, (LI)(up-dn->lsu), (LI)maxuint);
-      #endif
-      return 1;}
-    d-=DECDPUN;
-    }
-
-  /* check the exponent.  Note that input operands can have exponents  */
-  /* which are out of the set->emin/set->emax and set->digits range  */
-  /* (just as they can have more digits than set->digits).  */
-  ae=dn->exponent+dn->digits-1;    /* adjusted exponent  */
-  emax=DECNUMMAXE;
-  emin=DECNUMMINE;
-  digits=DECNUMMAXP;
-  if (ae<emin-(digits-1)) {
-    #if DECTRACE || DECVERB
-    printf("Adjusted exponent underflow [%ld].\n", (LI)ae);
-    uprv_decNumberShow(dn);
-    #endif
-    return 1;}
-  if (ae>+emax) {
-    #if DECTRACE || DECVERB
-    printf("Adjusted exponent overflow [%ld].\n", (LI)ae);
-    uprv_decNumberShow(dn);
-    #endif
-    return 1;}
-
-  return 0;              /* it's OK  */
-  } /* decCheckNumber  */
-
-/* ------------------------------------------------------------------ */
-/* decCheckInexact -- check a normal finite inexact result has digits */
-/*   dn is the number to check                                        */
-/*   set is the context (for status and precision)                    */
-/*   sets Invalid operation, etc., if some digits are missing         */
-/* [this check is not made for DECSUBSET compilation or when          */
-/* subnormal is not set]                                              */
-/* ------------------------------------------------------------------ */
-static void decCheckInexact(const decNumber *dn, decContext *set) {
-  #if !DECSUBSET && DECEXTFLAG
-    if ((set->status & (DEC_Inexact|DEC_Subnormal))==DEC_Inexact
-     && (set->digits!=dn->digits) && !(dn->bits & DECSPECIAL)) {
-      #if DECTRACE || DECVERB
-      printf("Insufficient digits [%ld] on normal Inexact result.\n",
-             (LI)dn->digits);
-      uprv_decNumberShow(dn);
-      #endif
-      uprv_decContextSetStatus(set, DEC_Invalid_operation);
-      }
-  #else
-    /* next is a noop for quiet compiler  */
-    if (dn!=NULL && dn->digits==0) set->status|=DEC_Invalid_operation;
-  #endif
-  return;
-  } /* decCheckInexact  */
-#endif
-
-#if DECALLOC
-#undef malloc
-#undef free
-/* ------------------------------------------------------------------ */
-/* decMalloc -- accountable allocation routine                        */
-/*   n is the number of bytes to allocate                             */
-/*                                                                    */
-/* Semantics is the same as the stdlib malloc routine, but bytes      */
-/* allocated are accounted for globally, and corruption fences are    */
-/* added before and after the 'actual' storage.                       */
-/* ------------------------------------------------------------------ */
-/* This routine allocates storage with an extra twelve bytes; 8 are   */
-/* at the start and hold:                                             */
-/*   0-3 the original length requested                                */
-/*   4-7 buffer corruption detection fence (DECFENCE, x4)             */
-/* The 4 bytes at the end also hold a corruption fence (DECFENCE, x4) */
-/* ------------------------------------------------------------------ */
-static void *decMalloc(size_t n) {
-  uInt  size=n+12;                 /* true size  */
-  void  *alloc;                    /* -> allocated storage  */
-  uByte *b, *b0;                   /* work  */
-  uInt  uiwork;                    /* for macros  */
-
-  alloc=malloc(size);              /* -> allocated storage  */
-  if (alloc==NULL) return NULL;    /* out of strorage  */
-  b0=(uByte *)alloc;               /* as bytes  */
-  decAllocBytes+=n;                /* account for storage  */
-  UBFROMUI(alloc, n);              /* save n  */
-  /* printf(" alloc ++ dAB: %ld (%ld)\n", (LI)decAllocBytes, (LI)n);  */
-  for (b=b0+4; b<b0+8; b++) *b=DECFENCE;
-  for (b=b0+n+8; b<b0+n+12; b++) *b=DECFENCE;
-  return b0+8;                     /* -> play area  */
-  } /* decMalloc  */
-
-/* ------------------------------------------------------------------ */
-/* decFree -- accountable free routine                                */
-/*   alloc is the storage to free                                     */
-/*                                                                    */
-/* Semantics is the same as the stdlib malloc routine, except that    */
-/* the global storage accounting is updated and the fences are        */
-/* checked to ensure that no routine has written 'out of bounds'.     */
-/* ------------------------------------------------------------------ */
-/* This routine first checks that the fences have not been corrupted. */
-/* It then frees the storage using the 'truw' storage address (that   */
-/* is, offset by 8).                                                  */
-/* ------------------------------------------------------------------ */
-static void decFree(void *alloc) {
-  uInt  n;                         /* original length  */
-  uByte *b, *b0;                   /* work  */
-  uInt  uiwork;                    /* for macros  */
-
-  if (alloc==NULL) return;         /* allowed; it's a nop  */
-  b0=(uByte *)alloc;               /* as bytes  */
-  b0-=8;                           /* -> true start of storage  */
-  n=UBTOUI(b0);                    /* lift length  */
-  for (b=b0+4; b<b0+8; b++) if (*b!=DECFENCE)
-    printf("=== Corrupt byte [%02x] at offset %d from %ld ===\n", *b,
-           b-b0-8, (LI)b0);
-  for (b=b0+n+8; b<b0+n+12; b++) if (*b!=DECFENCE)
-    printf("=== Corrupt byte [%02x] at offset +%d from %ld, n=%ld ===\n", *b,
-           b-b0-8, (LI)b0, (LI)n);
-  free(b0);                        /* drop the storage  */
-  decAllocBytes-=n;                /* account for storage  */
-  /* printf(" free -- dAB: %d (%d)\n", decAllocBytes, -n);  */
-  } /* decFree  */
-#define malloc(a) decMalloc(a)
-#define free(a) decFree(a)
-#endif
index b83cdb9..7182e78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /* ------------------------------------------------------------------ */
 /* Decimal Number arithmetic module header                            */
index 294d5f5..a45b7d8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /* ------------------------------------------------------------------ */
 /* decNumber package local type, tuning, and macro definitions        */
index 78c01f2..07cdd79 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 719f0aa..63ae50c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index af1ccd2..b07bcdd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c8998f9..fcb5516 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 67bc96d..8cecc8c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index f03143a..613c2dd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -49,6 +49,7 @@
 #include "unicode/utf16.h"
 #include "unicode/numsys.h"
 #include "unicode/localpointer.h"
+#include "unicode/ustring.h"
 #include "uresimp.h"
 #include "ucurrimp.h"
 #include "charstr.h"
index 1bf742d..4b74396 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 82f154e..76e8053 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index bb96fc7..3a02e46 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index a1a1006..005c36f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 716ab4a..487d9a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 65a2313..7c4772b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 62569d5..675b5c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index d92d425..54a54c3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 01a9813..67f8f2b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 934fd4b..131d76b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 94dca9c..fd0e354 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 8e1c83f..55ced94 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ab5b557..4d7c3f4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 45cb49a..a51ebc4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 9b01bad..a4058c6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c6e4b64..6dd4380 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -1368,7 +1368,7 @@ DateFormatSymbols::setZoneStrings(const UnicodeString* const *strings, int32_t r
 
 //------------------------------------------------------
 
-const UChar * U_EXPORT2
+const char16_t * U_EXPORT2
 DateFormatSymbols::getPatternUChars(void)
 {
     return gPatternChars;
index d0dc344..36fa173 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 48068d3..743b534 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*******************************************************************************
 * Copyright (C) 2008-2016, International Business Machines Corporation and
index 07129db..c863a68 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*******************************************************************************
 * Copyright (C) 2008-2016, International Business Machines Corporation and
index 17e7ec7..5ce3630 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -475,7 +475,7 @@ struct AllowedHourFormatsSink : public ResourceSink {
         }
     }
 
-    AllowedHourFormat getHourFormatFromUnicodeString(UnicodeString s) {
+    AllowedHourFormat getHourFormatFromUnicodeString(const UnicodeString &s) {
         if (s.length() == 1) {
             if (s[0] == LOW_H) { return ALLOWED_HOUR_FORMAT_h; }
             if (s[0] == CAP_H) { return ALLOWED_HOUR_FORMAT_H; }
index 00a7075..38afd5f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -15,6 +15,9 @@
 #define __DTPTNGEN_IMPL_H__
 
 #include "unicode/udatpg.h"
+
+#include "unicode/strenum.h"
+#include "unicode/unistr.h"
 #include "uvector.h"
 
 // TODO(claireho): Split off Builder class.
index 41b61ae..6847f1d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9be926f..900bed7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 7afea1b..60ecc74 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 10735ad..995dd6a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 723b32c..acd7c3c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 4c736b4..c2a398d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ff4deae..9a64792 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 7003a18..12cea9a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -12,6 +12,8 @@
 
 #include "digitlst.h"
 
+#if !UCONFIG_NO_FORMATTING
+
 U_NAMESPACE_BEGIN
 
 /**
@@ -35,4 +37,5 @@ static const int64_t MAX_INT64_IN_DOUBLE = 0x001FFFFFFFFFFFFFLL;
 
 U_NAMESPACE_END
 
+#endif // #if !UCONFIG_NO_FORMATTING
 #endif
index e951b30..e5abbe9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6a004a6..abcec97 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b1fe42b..f3ac12c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index eb405f9..47d4b3f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 4af889d..01c8754 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 954150c..a835d5b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index e830f89..9a25dd8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 1108222..0485cca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 1b31360..e62044b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 27303a6..b307416 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 7bba33f..c025be4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index e0f291b..bde6466 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 869d3a9..d54cff5 100644 (file)
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuin58.dll</OutputFile>
+      <OutputFile>..\..\bin\icuin59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib\icuin.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuin58d.dll</OutputFile>
+      <OutputFile>..\..\bin\icuin59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib\icuind.pdb</ProgramDatabaseFile>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuin58.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuin59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib64\icuin.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuin58d.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuin59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib64\icuind.pdb</ProgramDatabaseFile>
     <ClCompile Include="datefmt.cpp" />
     <ClCompile Include="dayperiodrules.cpp" />
     <ClCompile Include="dcfmtsym.cpp" />
-    <ClCompile Include="decContext.c" />
+    <ClCompile Include="decContext.cpp" />
     <ClCompile Include="decfmtst.cpp" />
     <ClCompile Include="decimalformatpattern.cpp" />
     <ClCompile Include="decimfmt.cpp" />
-    <ClCompile Include="decNumber.c" />
+    <ClCompile Include="decNumber.cpp" />
     <ClCompile Include="digitlst.cpp" />
     <ClCompile Include="dtfmtsym.cpp" />
     <ClCompile Include="dtitvfmt.cpp" />
     <ClCompile Include="udateintervalformat.cpp" />
     <ClCompile Include="udatpg.cpp" />
     <ClCompile Include="ufieldpositer.cpp" />
-    <ClCompile Include="ulocdata.c" />
+    <ClCompile Include="ulocdata.cpp" />
     <ClCompile Include="umsg.cpp" />
     <ClCompile Include="unum.cpp" />
     <ClCompile Include="unumsys.cpp" />
     <ClCompile Include="upluralrules.cpp" />
     <ClCompile Include="utf16collationiterator.cpp" />
     <ClCompile Include="utf8collationiterator.cpp" />
-    <ClCompile Include="utmscale.c" />
+    <ClCompile Include="utmscale.cpp" />
     <ClCompile Include="vtzone.cpp" />
     <ClCompile Include="vzone.cpp" />
     <ClCompile Include="windtfmt.cpp">
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 57bf52f..c7b477c 100644 (file)
     <ClCompile Include="dcfmtsym.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="decContext.c">
+    <ClCompile Include="decContext.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="decfmtst.cpp">
     <ClCompile Include="decimfmt.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="decNumber.c">
+    <ClCompile Include="decNumber.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="digitlst.cpp">
     <ClCompile Include="ufieldpositer.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="ulocdata.c">
+    <ClCompile Include="ulocdata.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="umsg.cpp">
     <ClCompile Include="upluralrules.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="utmscale.c">
+    <ClCompile Include="utmscale.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="vtzone.cpp">
index 3033c4f..278f9ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2003-2014, International Business Machines Corporation
index 12d46c7..b5e0f96 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
index c78828f..2d4f8a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index efffb61..8edc561 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 123b245..4fd0e07 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 7f6faed..062733e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 93ab800..17b4e07 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6aef7ea..f05b2ac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index b5a9156..801dbe0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -26,6 +26,7 @@
 #include "unicode/decimfmt.h"
 #include "uresimp.h"
 #include "unicode/ures.h"
+#include "unicode/ustring.h"
 #include "ureslocs.h"
 #include "cstring.h"
 #include "mutex.h"
@@ -41,7 +42,7 @@
 #include "standardplural.h"
 #include "unifiedcache.h"
 
-#define MEAS_UNIT_COUNT 138
+#define MEAS_UNIT_COUNT 135
 #define WIDTH_INDEX_COUNT (UMEASFMT_WIDTH_NARROW + 1)
 
 U_NAMESPACE_BEGIN
@@ -288,10 +289,8 @@ struct UnitDataSink : public ResourceSink {
             return;
         }
 
-        if (value.getType() == URES_STRING) {
-            // Units like "coordinate" that don't have plural variants
-            setFormatterIfAbsent(StandardPlural::OTHER, value, 0, errorCode);
-        } else if (value.getType() == URES_TABLE) {
+        // We no longer handle units like "coordinate" here (which do not have plural variants)
+        if (value.getType() == URES_TABLE) {
             // Units that have plural variants
             ResourceTable patternTableTable = value.getTable(errorCode);
             if (U_FAILURE(errorCode)) { return; }
@@ -333,6 +332,8 @@ struct UnitDataSink : public ResourceSink {
                     consumeCompoundPattern(key, value, errorCode);
                 }
             }
+        } else if (uprv_strcmp(key, "coordinate") == 0) {
+            // special handling but we need to determine what that is
         } else {
             type = key;
             ResourceTable subtypeTable = value.getTable(errorCode);
index d780b80..15497ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -40,21 +40,20 @@ static const int32_t gOffsets[] = {
     16,
     20,
     24,
-    28,
-    288,
-    298,
-    309,
-    313,
-    319,
-    323,
-    342,
-    343,
-    354,
-    360,
-    365,
-    369,
-    373,
-    398
+    285,
+    295,
+    306,
+    310,
+    316,
+    320,
+    340,
+    341,
+    352,
+    358,
+    363,
+    367,
+    371,
+    396
 };
 
 static const int32_t gIndexes[] = {
@@ -64,21 +63,20 @@ static const int32_t gIndexes[] = {
     16,
     20,
     24,
-    28,
-    28,
-    38,
+    24,
+    34,
+    45,
     49,
-    53,
+    55,
     59,
-    63,
-    82,
-    83,
-    94,
-    100,
-    105,
-    109,
-    113,
-    138
+    79,
+    80,
+    91,
+    97,
+    102,
+    106,
+    110,
+    135
 };
 
 // Must be sorted alphabetically.
@@ -88,7 +86,6 @@ static const char * const gTypes[] = {
     "area",
     "concentr",
     "consumption",
-    "coordinate",
     "currency",
     "digital",
     "duration",
@@ -131,10 +128,6 @@ static const char * const gSubTypes[] = {
     "liter-per-kilometer",
     "mile-per-gallon",
     "mile-per-gallon-imperial",
-    "east",
-    "north",
-    "south",
-    "west",
     "ADP",
     "AED",
     "AFA",
@@ -178,6 +171,7 @@ static const char * const gSubTypes[] = {
     "BTN",
     "BWP",
     "BYB",
+    "BYN",
     "BYR",
     "BZD",
     "CAD",
@@ -448,6 +442,7 @@ static const char * const gSubTypes[] = {
     "nautical-mile",
     "parsec",
     "picometer",
+    "point",
     "yard",
     "lux",
     "carat",
@@ -509,14 +504,14 @@ static const char * const gSubTypes[] = {
 
 // Must be sorted by first value and then second value.
 static int32_t unitPerUnitToSingleUnit[][4] = {
-        {330, 300, 17, 0},
-        {332, 306, 17, 2},
-        {334, 300, 17, 3},
-        {334, 387, 4, 2},
-        {334, 388, 4, 3},
-        {348, 385, 3, 1},
-        {351, 11, 16, 4},
-        {390, 330, 4, 1}
+        {327, 297, 16, 0},
+        {329, 303, 16, 2},
+        {331, 297, 16, 3},
+        {331, 385, 4, 2},
+        {331, 386, 4, 3},
+        {346, 383, 3, 1},
+        {349, 11, 15, 4},
+        {388, 327, 4, 1}
 };
 
 MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) {
@@ -615,460 +610,456 @@ MeasureUnit *MeasureUnit::createMilePerGallonImperial(UErrorCode &status) {
     return MeasureUnit::create(4, 3, status);
 }
 
-MeasureUnit *MeasureUnit::createEast(UErrorCode &status) {
-    return MeasureUnit::create(5, 0, status);
-}
+// MeasureUnit *MeasureUnit::createEast(UErrorCode &status) {...}
 
-MeasureUnit *MeasureUnit::createNorth(UErrorCode &status) {
-    return MeasureUnit::create(5, 1, status);
-}
+// MeasureUnit *MeasureUnit::createNorth(UErrorCode &status) {...}
 
-MeasureUnit *MeasureUnit::createSouth(UErrorCode &status) {
-    return MeasureUnit::create(5, 2, status);
-}
+// MeasureUnit *MeasureUnit::createSouth(UErrorCode &status) {...}
 
-MeasureUnit *MeasureUnit::createWest(UErrorCode &status) {
-    return MeasureUnit::create(5, 3, status);
-}
+// MeasureUnit *MeasureUnit::createWest(UErrorCode &status) {...}
 
 MeasureUnit *MeasureUnit::createBit(UErrorCode &status) {
-    return MeasureUnit::create(7, 0, status);
+    return MeasureUnit::create(6, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createByte(UErrorCode &status) {
-    return MeasureUnit::create(7, 1, status);
+    return MeasureUnit::create(6, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createGigabit(UErrorCode &status) {
-    return MeasureUnit::create(7, 2, status);
+    return MeasureUnit::create(6, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createGigabyte(UErrorCode &status) {
-    return MeasureUnit::create(7, 3, status);
+    return MeasureUnit::create(6, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createKilobit(UErrorCode &status) {
-    return MeasureUnit::create(7, 4, status);
+    return MeasureUnit::create(6, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createKilobyte(UErrorCode &status) {
-    return MeasureUnit::create(7, 5, status);
+    return MeasureUnit::create(6, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createMegabit(UErrorCode &status) {
-    return MeasureUnit::create(7, 6, status);
+    return MeasureUnit::create(6, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createMegabyte(UErrorCode &status) {
-    return MeasureUnit::create(7, 7, status);
+    return MeasureUnit::create(6, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createTerabit(UErrorCode &status) {
-    return MeasureUnit::create(7, 8, status);
+    return MeasureUnit::create(6, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createTerabyte(UErrorCode &status) {
-    return MeasureUnit::create(7, 9, status);
+    return MeasureUnit::create(6, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createCentury(UErrorCode &status) {
-    return MeasureUnit::create(8, 0, status);
+    return MeasureUnit::create(7, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createDay(UErrorCode &status) {
-    return MeasureUnit::create(8, 1, status);
+    return MeasureUnit::create(7, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createHour(UErrorCode &status) {
-    return MeasureUnit::create(8, 2, status);
+    return MeasureUnit::create(7, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) {
-    return MeasureUnit::create(8, 3, status);
+    return MeasureUnit::create(7, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) {
-    return MeasureUnit::create(8, 4, status);
+    return MeasureUnit::create(7, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) {
-    return MeasureUnit::create(8, 5, status);
+    return MeasureUnit::create(7, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) {
-    return MeasureUnit::create(8, 6, status);
+    return MeasureUnit::create(7, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) {
-    return MeasureUnit::create(8, 7, status);
+    return MeasureUnit::create(7, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) {
-    return MeasureUnit::create(8, 8, status);
+    return MeasureUnit::create(7, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) {
-    return MeasureUnit::create(8, 9, status);
+    return MeasureUnit::create(7, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createYear(UErrorCode &status) {
-    return MeasureUnit::create(8, 10, status);
+    return MeasureUnit::create(7, 10, status);
 }
 
 MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) {
-    return MeasureUnit::create(9, 0, status);
+    return MeasureUnit::create(8, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createMilliampere(UErrorCode &status) {
-    return MeasureUnit::create(9, 1, status);
+    return MeasureUnit::create(8, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createOhm(UErrorCode &status) {
-    return MeasureUnit::create(9, 2, status);
+    return MeasureUnit::create(8, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createVolt(UErrorCode &status) {
-    return MeasureUnit::create(9, 3, status);
+    return MeasureUnit::create(8, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createCalorie(UErrorCode &status) {
-    return MeasureUnit::create(10, 0, status);
+    return MeasureUnit::create(9, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createFoodcalorie(UErrorCode &status) {
-    return MeasureUnit::create(10, 1, status);
+    return MeasureUnit::create(9, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createJoule(UErrorCode &status) {
-    return MeasureUnit::create(10, 2, status);
+    return MeasureUnit::create(9, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createKilocalorie(UErrorCode &status) {
-    return MeasureUnit::create(10, 3, status);
+    return MeasureUnit::create(9, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createKilojoule(UErrorCode &status) {
-    return MeasureUnit::create(10, 4, status);
+    return MeasureUnit::create(9, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createKilowattHour(UErrorCode &status) {
-    return MeasureUnit::create(10, 5, status);
+    return MeasureUnit::create(9, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createGigahertz(UErrorCode &status) {
-    return MeasureUnit::create(11, 0, status);
+    return MeasureUnit::create(10, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createHertz(UErrorCode &status) {
-    return MeasureUnit::create(11, 1, status);
+    return MeasureUnit::create(10, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createKilohertz(UErrorCode &status) {
-    return MeasureUnit::create(11, 2, status);
+    return MeasureUnit::create(10, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMegahertz(UErrorCode &status) {
-    return MeasureUnit::create(11, 3, status);
+    return MeasureUnit::create(10, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) {
-    return MeasureUnit::create(12, 0, status);
+    return MeasureUnit::create(11, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createCentimeter(UErrorCode &status) {
-    return MeasureUnit::create(12, 1, status);
+    return MeasureUnit::create(11, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createDecimeter(UErrorCode &status) {
-    return MeasureUnit::create(12, 2, status);
+    return MeasureUnit::create(11, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) {
-    return MeasureUnit::create(12, 3, status);
+    return MeasureUnit::create(11, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) {
-    return MeasureUnit::create(12, 4, status);
+    return MeasureUnit::create(11, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) {
-    return MeasureUnit::create(12, 5, status);
+    return MeasureUnit::create(11, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createInch(UErrorCode &status) {
-    return MeasureUnit::create(12, 6, status);
+    return MeasureUnit::create(11, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) {
-    return MeasureUnit::create(12, 7, status);
+    return MeasureUnit::create(11, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) {
-    return MeasureUnit::create(12, 8, status);
+    return MeasureUnit::create(11, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) {
-    return MeasureUnit::create(12, 9, status);
+    return MeasureUnit::create(11, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) {
-    return MeasureUnit::create(12, 10, status);
+    return MeasureUnit::create(11, 10, status);
 }
 
 MeasureUnit *MeasureUnit::createMile(UErrorCode &status) {
-    return MeasureUnit::create(12, 11, status);
+    return MeasureUnit::create(11, 11, status);
 }
 
 MeasureUnit *MeasureUnit::createMileScandinavian(UErrorCode &status) {
-    return MeasureUnit::create(12, 12, status);
+    return MeasureUnit::create(11, 12, status);
 }
 
 MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) {
-    return MeasureUnit::create(12, 13, status);
+    return MeasureUnit::create(11, 13, status);
 }
 
 MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) {
-    return MeasureUnit::create(12, 14, status);
+    return MeasureUnit::create(11, 14, status);
 }
 
 MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) {
-    return MeasureUnit::create(12, 15, status);
+    return MeasureUnit::create(11, 15, status);
 }
 
 MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) {
-    return MeasureUnit::create(12, 16, status);
+    return MeasureUnit::create(11, 16, status);
 }
 
 MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) {
-    return MeasureUnit::create(12, 17, status);
+    return MeasureUnit::create(11, 17, status);
+}
+
+MeasureUnit *MeasureUnit::createPoint(UErrorCode &status) {
+    return MeasureUnit::create(11, 18, status);
 }
 
 MeasureUnit *MeasureUnit::createYard(UErrorCode &status) {
-    return MeasureUnit::create(12, 18, status);
+    return MeasureUnit::create(11, 19, status);
 }
 
 MeasureUnit *MeasureUnit::createLux(UErrorCode &status) {
-    return MeasureUnit::create(13, 0, status);
+    return MeasureUnit::create(12, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) {
-    return MeasureUnit::create(14, 0, status);
+    return MeasureUnit::create(13, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createGram(UErrorCode &status) {
-    return MeasureUnit::create(14, 1, status);
+    return MeasureUnit::create(13, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) {
-    return MeasureUnit::create(14, 2, status);
+    return MeasureUnit::create(13, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) {
-    return MeasureUnit::create(14, 3, status);
+    return MeasureUnit::create(13, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) {
-    return MeasureUnit::create(14, 4, status);
+    return MeasureUnit::create(13, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) {
-    return MeasureUnit::create(14, 5, status);
+    return MeasureUnit::create(13, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) {
-    return MeasureUnit::create(14, 6, status);
+    return MeasureUnit::create(13, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) {
-    return MeasureUnit::create(14, 7, status);
+    return MeasureUnit::create(13, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createPound(UErrorCode &status) {
-    return MeasureUnit::create(14, 8, status);
+    return MeasureUnit::create(13, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createStone(UErrorCode &status) {
-    return MeasureUnit::create(14, 9, status);
+    return MeasureUnit::create(13, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createTon(UErrorCode &status) {
-    return MeasureUnit::create(14, 10, status);
+    return MeasureUnit::create(13, 10, status);
 }
 
 MeasureUnit *MeasureUnit::createGigawatt(UErrorCode &status) {
-    return MeasureUnit::create(15, 0, status);
+    return MeasureUnit::create(14, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createHorsepower(UErrorCode &status) {
-    return MeasureUnit::create(15, 1, status);
+    return MeasureUnit::create(14, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createKilowatt(UErrorCode &status) {
-    return MeasureUnit::create(15, 2, status);
+    return MeasureUnit::create(14, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMegawatt(UErrorCode &status) {
-    return MeasureUnit::create(15, 3, status);
+    return MeasureUnit::create(14, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createMilliwatt(UErrorCode &status) {
-    return MeasureUnit::create(15, 4, status);
+    return MeasureUnit::create(14, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createWatt(UErrorCode &status) {
-    return MeasureUnit::create(15, 5, status);
+    return MeasureUnit::create(14, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) {
-    return MeasureUnit::create(16, 0, status);
+    return MeasureUnit::create(15, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) {
-    return MeasureUnit::create(16, 1, status);
+    return MeasureUnit::create(15, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) {
-    return MeasureUnit::create(16, 2, status);
+    return MeasureUnit::create(15, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) {
-    return MeasureUnit::create(16, 3, status);
+    return MeasureUnit::create(15, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) {
-    return MeasureUnit::create(16, 4, status);
+    return MeasureUnit::create(15, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) {
-    return MeasureUnit::create(17, 0, status);
+    return MeasureUnit::create(16, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createKnot(UErrorCode &status) {
-    return MeasureUnit::create(17, 1, status);
+    return MeasureUnit::create(16, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) {
-    return MeasureUnit::create(17, 2, status);
+    return MeasureUnit::create(16, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) {
-    return MeasureUnit::create(17, 3, status);
+    return MeasureUnit::create(16, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) {
-    return MeasureUnit::create(18, 0, status);
+    return MeasureUnit::create(17, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createFahrenheit(UErrorCode &status) {
-    return MeasureUnit::create(18, 1, status);
+    return MeasureUnit::create(17, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createGenericTemperature(UErrorCode &status) {
-    return MeasureUnit::create(18, 2, status);
+    return MeasureUnit::create(17, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createKelvin(UErrorCode &status) {
-    return MeasureUnit::create(18, 3, status);
+    return MeasureUnit::create(17, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createAcreFoot(UErrorCode &status) {
-    return MeasureUnit::create(19, 0, status);
+    return MeasureUnit::create(18, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createBushel(UErrorCode &status) {
-    return MeasureUnit::create(19, 1, status);
+    return MeasureUnit::create(18, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createCentiliter(UErrorCode &status) {
-    return MeasureUnit::create(19, 2, status);
+    return MeasureUnit::create(18, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicCentimeter(UErrorCode &status) {
-    return MeasureUnit::create(19, 3, status);
+    return MeasureUnit::create(18, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicFoot(UErrorCode &status) {
-    return MeasureUnit::create(19, 4, status);
+    return MeasureUnit::create(18, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicInch(UErrorCode &status) {
-    return MeasureUnit::create(19, 5, status);
+    return MeasureUnit::create(18, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicKilometer(UErrorCode &status) {
-    return MeasureUnit::create(19, 6, status);
+    return MeasureUnit::create(18, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicMeter(UErrorCode &status) {
-    return MeasureUnit::create(19, 7, status);
+    return MeasureUnit::create(18, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicMile(UErrorCode &status) {
-    return MeasureUnit::create(19, 8, status);
+    return MeasureUnit::create(18, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicYard(UErrorCode &status) {
-    return MeasureUnit::create(19, 9, status);
+    return MeasureUnit::create(18, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createCup(UErrorCode &status) {
-    return MeasureUnit::create(19, 10, status);
+    return MeasureUnit::create(18, 10, status);
 }
 
 MeasureUnit *MeasureUnit::createCupMetric(UErrorCode &status) {
-    return MeasureUnit::create(19, 11, status);
+    return MeasureUnit::create(18, 11, status);
 }
 
 MeasureUnit *MeasureUnit::createDeciliter(UErrorCode &status) {
-    return MeasureUnit::create(19, 12, status);
+    return MeasureUnit::create(18, 12, status);
 }
 
 MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) {
-    return MeasureUnit::create(19, 13, status);
+    return MeasureUnit::create(18, 13, status);
 }
 
 MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) {
-    return MeasureUnit::create(19, 14, status);
+    return MeasureUnit::create(18, 14, status);
 }
 
 MeasureUnit *MeasureUnit::createGallonImperial(UErrorCode &status) {
-    return MeasureUnit::create(19, 15, status);
+    return MeasureUnit::create(18, 15, status);
 }
 
 MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) {
-    return MeasureUnit::create(19, 16, status);
+    return MeasureUnit::create(18, 16, status);
 }
 
 MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) {
-    return MeasureUnit::create(19, 17, status);
+    return MeasureUnit::create(18, 17, status);
 }
 
 MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) {
-    return MeasureUnit::create(19, 18, status);
+    return MeasureUnit::create(18, 18, status);
 }
 
 MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) {
-    return MeasureUnit::create(19, 19, status);
+    return MeasureUnit::create(18, 19, status);
 }
 
 MeasureUnit *MeasureUnit::createPint(UErrorCode &status) {
-    return MeasureUnit::create(19, 20, status);
+    return MeasureUnit::create(18, 20, status);
 }
 
 MeasureUnit *MeasureUnit::createPintMetric(UErrorCode &status) {
-    return MeasureUnit::create(19, 21, status);
+    return MeasureUnit::create(18, 21, status);
 }
 
 MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) {
-    return MeasureUnit::create(19, 22, status);
+    return MeasureUnit::create(18, 22, status);
 }
 
 MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) {
-    return MeasureUnit::create(19, 23, status);
+    return MeasureUnit::create(18, 23, status);
 }
 
 MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) {
-    return MeasureUnit::create(19, 24, status);
+    return MeasureUnit::create(18, 24, status);
 }
 
 // End generated code
index 3459e71..d9084f8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 4658528..94a0286 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d8e38f0..1cece1a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 1451592..69e92b8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 2ba4c8f..4c743de 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 6b5b1e6..3eb1882 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfrlist.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 94777b8..05941e8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfrs.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -23,6 +23,7 @@
 #include "nfrule.h"
 #include "nfrlist.h"
 #include "patternprops.h"
+#include "putilimp.h"
 
 #ifdef RBNF_DEBUG
 #include "cmemory.h"
@@ -544,7 +545,7 @@ NFRuleSet::findNormalRule(int64_t number) const
         // an explanation of the rollback rule).  If we do, roll back
         // one rule and return that one instead of the one we'd normally
         // return
-        if (result->shouldRollBack((double)number)) {
+        if (result->shouldRollBack(number)) {
             if (hi == 1) { // bad rule set, no prior rule to rollback to from this base
                 return NULL;
             }
@@ -829,18 +830,20 @@ int64_t util64_fromDouble(double d) {
     return result;
 }
 
-int64_t util64_pow(int32_t r, uint32_t e)  { 
-    if (r == 0) {
+int64_t util64_pow(int32_t base, uint16_t exponent)  { 
+    if (base == 0) {
         return 0;
-    } else if (e == 0) {
-        return 1;
-    } else {
-        int64_t n = r;
-        while (--e > 0) {
-            n *= r;
-        }
-        return n;
     }
+    int64_t result = 1;
+    int64_t pow = base;
+    while (exponent > 0) { 
+        if ((exponent & 1) == 1) { 
+            result *= pow; 
+        } 
+        pow *= pow; 
+        exponent >>= 1; 
+    } 
+    return result;
 }
 
 static const uint8_t asciiDigits[] = { 
index b6aa579..d28c29c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfrs.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -88,7 +88,7 @@ private:
 int64_t util64_fromDouble(double d);
 
 // raise radix to the power exponent, only non-negative exponents
-int64_t util64_pow(int32_t radix, uint32_t exponent);
+int64_t util64_pow(int32_t radix, uint16_t exponent);
 
 // convert n to digit string in buffer, return length of string
 uint32_t util64_tou(int64_t n, UChar* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = FALSE);
index a188fe1..f24be11 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfrule.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -30,6 +30,7 @@
 #include "nfrlist.h"
 #include "nfsubs.h"
 #include "patternprops.h"
+#include "putilimp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -715,6 +716,12 @@ NFRule::_appendRuleText(UnicodeString& result) const
     result.append(gSemicolon);
 }
 
+int64_t NFRule::getDivisor() const
+{
+    return util64_pow(radix, exponent);
+}
+
+
 //-----------------------------------------------------------------------
 // formatting
 //-----------------------------------------------------------------------
@@ -749,7 +756,7 @@ NFRule::doFormat(int64_t number, UnicodeString& toInsertInto, int32_t pos, int32
             toInsertInto.insert(pos, ruleText.tempSubString(pluralRuleEnd + 2));
         }
         toInsertInto.insert(pos,
-            rulePatternFormat->format((int32_t)(number/uprv_pow(radix, exponent)), status));
+            rulePatternFormat->format((int32_t)(number/util64_pow(radix, exponent)), status));
         if (pluralRuleStart > 0) {
             toInsertInto.insert(pos, ruleText.tempSubString(0, pluralRuleStart));
         }
@@ -798,10 +805,10 @@ NFRule::doFormat(double number, UnicodeString& toInsertInto, int32_t pos, int32_
         if (0 <= pluralVal && pluralVal < 1) {
             // We're in a fractional rule, and we have to match the NumeratorSubstitution behavior.
             // 2.3 can become 0.2999999999999998 for the fraction due to rounding errors.
-            pluralVal = uprv_round(pluralVal * uprv_pow(radix, exponent));
+            pluralVal = uprv_round(pluralVal * util64_pow(radix, exponent));
         }
         else {
-            pluralVal = pluralVal / uprv_pow(radix, exponent);
+            pluralVal = pluralVal / util64_pow(radix, exponent);
         }
         toInsertInto.insert(pos, rulePatternFormat->format((int32_t)(pluralVal), status));
         if (pluralRuleStart > 0) {
@@ -827,7 +834,7 @@ NFRule::doFormat(double number, UnicodeString& toInsertInto, int32_t pos, int32_
 * this one in its list; false if it should use this rule
 */
 UBool
-NFRule::shouldRollBack(double number) const
+NFRule::shouldRollBack(int64_t number) const
 {
     // we roll back if the rule contains a modulus substitution,
     // the number being formatted is an even multiple of the rule's
@@ -847,7 +854,7 @@ NFRule::shouldRollBack(double number) const
     // multiple of 100.  This is called the "rollback rule."
     if ((sub1 != NULL && sub1->isModulusSubstitution()) || (sub2 != NULL && sub2->isModulusSubstitution())) {
         int64_t re = util64_pow(radix, exponent);
-        return uprv_fmod(number, (double)re) == 0 && (baseValue % re) != 0;
+        return (number % re) == 0 && (baseValue % re) != 0;
     }
     return FALSE;
 }
index fe00cbe..809119c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -17,7 +17,6 @@
 #include "unicode/utypes.h"
 #include "unicode/uobject.h"
 #include "unicode/unistr.h"
-#include "putilimp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -66,7 +65,7 @@ public:
 
     UChar getDecimalPoint() const { return decimalPoint; }
 
-    double getDivisor() const { return uprv_pow(radix, exponent); }
+    int64_t getDivisor() const;
 
     void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
     void doFormat(double  number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
@@ -77,7 +76,7 @@ public:
                   double upperBound,
                   Formattable& result) const;
 
-    UBool shouldRollBack(double number) const;
+    UBool shouldRollBack(int64_t number) const;
 
     void _appendRuleText(UnicodeString& result) const;
 
index 16bbdc1..f77ebb1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfsubs.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -20,6 +20,7 @@
 
 #include "nfsubs.h"
 #include "digitlst.h"
+#include "fmtableimp.h"
 
 #if U_HAVE_RBNF
 
@@ -68,27 +69,24 @@ public:
 SameValueSubstitution::~SameValueSubstitution() {}
 
 class MultiplierSubstitution : public NFSubstitution {
-    double divisor;
-    int64_t ldivisor;
+    int64_t divisor;
 
 public:
     MultiplierSubstitution(int32_t _pos,
-        double _divisor,
+        const NFRule *rule,
         const NFRuleSet* _ruleSet,
         const UnicodeString& description,
         UErrorCode& status)
-        : NFSubstitution(_pos, _ruleSet, description, status), divisor(_divisor)
+        : NFSubstitution(_pos, _ruleSet, description, status), divisor(rule->getDivisor())
     {
-        ldivisor = util64_fromDouble(divisor);
         if (divisor == 0) {
             status = U_PARSE_ERROR;
         }
     }
     virtual ~MultiplierSubstitution();
 
-    virtual void setDivisor(int32_t radix, int32_t exponent, UErrorCode& status) { 
-        divisor = uprv_pow(radix, exponent);
-        ldivisor = util64_fromDouble(divisor);
+    virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) { 
+        divisor = util64_pow(radix, exponent);
 
         if(divisor == 0) {
             status = U_PARSE_ERROR;
@@ -98,14 +96,14 @@ public:
     virtual UBool operator==(const NFSubstitution& rhs) const;
 
     virtual int64_t transformNumber(int64_t number) const {
-        return number / ldivisor;
+        return number / divisor;
     }
 
     virtual double transformNumber(double number) const {
         if (getRuleSet()) {
             return uprv_floor(number / divisor);
         } else {
-            return number/divisor;
+            return number / divisor;
         }
     }
 
@@ -125,21 +123,19 @@ public:
 MultiplierSubstitution::~MultiplierSubstitution() {}
 
 class ModulusSubstitution : public NFSubstitution {
-    double divisor;
-    int64_t  ldivisor;
+    int64_t  divisor;
     const NFRule* ruleToUse;
 public:
     ModulusSubstitution(int32_t pos,
-        double _divisor,
+        const NFRule* rule,
         const NFRule* rulePredecessor,
         const NFRuleSet* ruleSet,
         const UnicodeString& description,
         UErrorCode& status);
     virtual ~ModulusSubstitution();
 
-    virtual void setDivisor(int32_t radix, int32_t exponent, UErrorCode& status) { 
-        divisor = uprv_pow(radix, exponent);
-        ldivisor = util64_fromDouble(divisor);
+    virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) { 
+        divisor = util64_pow(radix, exponent);
 
         if (divisor == 0) {
             status = U_PARSE_ERROR;
@@ -151,7 +147,7 @@ public:
     virtual void doSubstitution(int64_t number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
     virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
 
-    virtual int64_t transformNumber(int64_t number) const { return number % ldivisor; }
+    virtual int64_t transformNumber(int64_t number) const { return number % divisor; }
     virtual double transformNumber(double number) const { return uprv_fmod(number, divisor); }
 
     virtual UBool doParse(const UnicodeString& text, 
@@ -353,7 +349,7 @@ NFSubstitution::makeSubstitution(int32_t pos,
 
         // otherwise, return a MultiplierSubstitution
         else {
-            return new MultiplierSubstitution(pos, rule->getDivisor(), ruleSet,
+            return new MultiplierSubstitution(pos, rule, ruleSet,
                 description, status);
         }
 
@@ -383,7 +379,7 @@ NFSubstitution::makeSubstitution(int32_t pos,
 
         // otherwise, return a ModulusSubstitution
         else {
-            return new ModulusSubstitution(pos, rule->getDivisor(), predecessor,
+            return new ModulusSubstitution(pos, rule, predecessor,
                 ruleSet, description, status);
         }
 
@@ -491,7 +487,7 @@ NFSubstitution::~NFSubstitution()
  * @param exponent The exponent of the divisor
  */
 void
-NFSubstitution::setDivisor(int32_t /*radix*/, int32_t /*exponent*/, UErrorCode& /*status*/) {
+NFSubstitution::setDivisor(int32_t /*radix*/, int16_t /*exponent*/, UErrorCode& /*status*/) {
   // a no-op for all substitutions except multiplier and modulus substitutions
 }
 
@@ -572,23 +568,38 @@ void
 NFSubstitution::doSubstitution(int64_t number, UnicodeString& toInsertInto, int32_t _pos, int32_t recursionCount, UErrorCode& status) const
 {
     if (ruleSet != NULL) {
-        // perform a transformation on the number that is dependent
+        // Perform a transformation on the number that is dependent
         // on the type of substitution this is, then just call its
         // rule set's format() method to format the result
         ruleSet->format(transformNumber(number), toInsertInto, _pos + this->pos, recursionCount, status);
     } else if (numberFormat != NULL) {
-        // or perform the transformation on the number (preserving
-        // the result's fractional part if the formatter it set
-        // to show it), then use that formatter's format() method
-        // to format the result
-        double numberToFormat = transformNumber((double)number);
-        if (numberFormat->getMaximumFractionDigits() == 0) {
-            numberToFormat = uprv_floor(numberToFormat);
-        }
+        if (number <= MAX_INT64_IN_DOUBLE) {
+            // or perform the transformation on the number (preserving
+            // the result's fractional part if the formatter it set
+            // to show it), then use that formatter's format() method
+            // to format the result
+            double numberToFormat = transformNumber((double)number);
+            if (numberFormat->getMaximumFractionDigits() == 0) {
+                numberToFormat = uprv_floor(numberToFormat);
+            }
 
-        UnicodeString temp;
-        numberFormat->format(numberToFormat, temp, status);
-        toInsertInto.insert(_pos + this->pos, temp);
+            UnicodeString temp;
+            numberFormat->format(numberToFormat, temp, status);
+            toInsertInto.insert(_pos + this->pos, temp);
+        } 
+        else { 
+            // We have gone beyond double precision. Something has to give. 
+            // We're favoring accuracy of the large number over potential rules 
+            // that round like a CompactDecimalFormat, which is not a common use case. 
+            // 
+            // Perform a transformation on the number that is dependent 
+            // on the type of substitution this is, then just call its 
+            // rule set's format() method to format the result 
+            int64_t numberToFormat = transformNumber(number); 
+            UnicodeString temp;
+            numberFormat->format(numberToFormat, temp, status);
+            toInsertInto.insert(_pos + this->pos, temp);
+        } 
     }
 }
 
@@ -809,22 +820,20 @@ UBool MultiplierSubstitution::operator==(const NFSubstitution& rhs) const
  * regular rule.
  */
 ModulusSubstitution::ModulusSubstitution(int32_t _pos,
-                                         double _divisor,
+                                         const NFRule* rule,
                                          const NFRule* predecessor,
                                          const NFRuleSet* _ruleSet,
                                          const UnicodeString& description,
                                          UErrorCode& status)
  : NFSubstitution(_pos, _ruleSet, description, status)
- , divisor(_divisor)
+ , divisor(rule->getDivisor())
  , ruleToUse(NULL)
 {
-  ldivisor = util64_fromDouble(_divisor);
-
   // the owning rule's divisor controls the behavior of this
   // substitution: rather than keeping a backpointer to the rule,
   // we keep a copy of the divisor
 
-  if (ldivisor == 0) {
+  if (divisor == 0) {
       status = U_PARSE_ERROR;
   }
 
index 62d963d..e8b2591 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfsubs.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -91,7 +91,7 @@ public:
      * @param radix The radix of the divisor
      * @param exponent The exponent of the divisor
      */
-    virtual void setDivisor(int32_t radix, int32_t exponent, UErrorCode& status);
+    virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status);
     
     /**
      * Replaces result with the string describing the substitution.
index da02067..589c824 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 79d1be3..d309452 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 600873e..62d1290 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a9856bd..a01b04e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ef08519..ea9aed1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -529,7 +529,7 @@ UnicodeString& NumberFormat::format(const DigitList &number,
                       FieldPositionIterator* posIter,
                       UErrorCode& status) const {
     // DecimalFormat overrides this function, and handles DigitList based big decimals.
-    // Other subclasses (ChoiceFormat, RuleBasedNumberFormat) do not (yet) handle DigitLists,
+    // Other subclasses (ChoiceFormat) do not (yet) handle DigitLists,
     // so this default implementation falls back to formatting decimal numbers as doubles.
     if (U_FAILURE(status)) {
         return appendTo;
@@ -547,7 +547,7 @@ NumberFormat::format(const DigitList &number,
                      FieldPosition& pos,
                      UErrorCode &status) const { 
     // DecimalFormat overrides this function, and handles DigitList based big decimals.
-    // Other subclasses (ChoiceFormat, RuleBasedNumberFormat) do not (yet) handle DigitLists,
+    // Other subclasses (ChoiceFormat) do not (yet) handle DigitLists,
     // so this default implementation falls back to formatting decimal numbers as doubles.
     if (U_FAILURE(status)) {
         return appendTo;
@@ -1188,7 +1188,7 @@ void NumberFormat::setCurrency(const UChar* theCurrency, UErrorCode& ec) {
     }
 }
 
-const UChar* NumberFormat::getCurrency() const {
+const char16_t* NumberFormat::getCurrency() const {
     return fCurrency;
 }
 
index ce7c4d5..a05c7e0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -230,7 +230,7 @@ void NumberingSystem::setAlgorithmic(UBool c) {
     algorithmic = c;
 }
 
-void NumberingSystem::setDesc(UnicodeString d) {
+void NumberingSystem::setDesc(const UnicodeString &d) {
     desc.setTo(d);
 }
 void NumberingSystem::setName(const char *n) {
index c4683b0..3e5cc33 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 65b532a..00a59d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 13b364d..ccc0cf9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 278273f..f66ac67 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index e244fee..bcfd68a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index f6a51a7..ea40020 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 81e9c7a..df86d8d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8a000ce..e14ef6d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index cb5ee08..c4155cb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -17,6 +17,8 @@
 #include "unicode/plurrule.h"
 #include "unicode/upluralrules.h"
 #include "unicode/ures.h"
+#include "unicode/numfmt.h"
+#include "unicode/decimfmt.h"
 #include "charstr.h"
 #include "cmemory.h"
 #include "cstring.h"
@@ -36,7 +38,6 @@
 #include "digitinterval.h" 
 #include "visibledigits.h"
 
-
 #if !UCONFIG_NO_FORMATTING
 
 U_NAMESPACE_BEGIN
@@ -247,6 +248,26 @@ PluralRules::select(double number) const {
 }
 
 UnicodeString
+PluralRules::select(const Formattable& obj, const NumberFormat& fmt, UErrorCode& status) const {
+    if (U_SUCCESS(status)) {
+        const DecimalFormat *decFmt = dynamic_cast<const DecimalFormat *>(&fmt);
+        if (decFmt != NULL) {
+            VisibleDigitsWithExponent digits;
+            decFmt->initVisibleDigitsWithExponent(obj, digits, status);
+            if (U_SUCCESS(status)) {
+                return select(digits);
+            }
+        } else {
+            double number = obj.getDouble(status);
+            if (U_SUCCESS(status)) {
+                return select(number);
+            }
+        }
+    }
+    return UnicodeString();
+}
+
+UnicodeString
 PluralRules::select(const FixedDecimal &number) const {
     if (mRules == NULL) {
         return UnicodeString(TRUE, PLURAL_DEFAULT_RULE, -1);
index c6e4767..9f5f66c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -24,6 +24,7 @@
 #include "unicode/format.h"
 #include "unicode/locid.h"
 #include "unicode/parseerr.h"
+#include "unicode/strenum.h"
 #include "unicode/ures.h"
 #include "uvector.h"
 #include "hash.h"
index 086ce41..d9de8ad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 2131491..99f6d2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 7387ce0..acf579e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 21adf19..1abb0db 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index c44357a..208e064 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index f7bb6b5..ca3fb3d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index fc4fd43..f05c549 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 #include "unicode/udata.h"
 #include "unicode/udisplaycontext.h"
 #include "unicode/brkiter.h"
-#include "nfrs.h"
+#include "unicode/ucasemap.h"
 
 #include "cmemory.h"
 #include "cstring.h"
 #include "patternprops.h"
 #include "uresimp.h"
+#include "nfrs.h"
+#include "digitlst.h"
 
 // debugging
 // #define RBNF_DEBUG
@@ -1079,17 +1081,76 @@ RuleBasedNumberFormat::findRuleSet(const UnicodeString& name, UErrorCode& status
 }
 
 UnicodeString&
+RuleBasedNumberFormat::format(const DigitList &number,
+                      UnicodeString &appendTo,
+                      FieldPositionIterator *posIter,
+                      UErrorCode &status) const {
+    if (U_FAILURE(status)) {
+        return appendTo;
+    }
+    DigitList copy(number);
+    if (copy.fitsIntoInt64(false)) {
+        format(((DigitList &)number).getInt64(), appendTo, posIter, status);
+    }
+    else {
+        copy.roundAtExponent(0);
+        if (copy.fitsIntoInt64(false)) {
+            format(number.getDouble(), appendTo, posIter, status);
+        }
+        else {
+            // We're outside of our normal range that this framework can handle.
+            // The DecimalFormat will provide more accurate results.
+
+            // TODO this section should probably be optimized. The DecimalFormat is shared in ICU4J.
+            NumberFormat *decimalFormat = NumberFormat::createInstance(locale, UNUM_DECIMAL, status);
+            Formattable f;
+            f.adoptDigitList(new DigitList(number));
+            decimalFormat->format(f, appendTo, posIter, status);
+            delete decimalFormat;
+        }
+    }
+    return appendTo;
+}
+
+
+UnicodeString&
+RuleBasedNumberFormat::format(const DigitList &number,
+                     UnicodeString& appendTo,
+                     FieldPosition& pos,
+                     UErrorCode &status) const {
+    if (U_FAILURE(status)) {
+        return appendTo;
+    }
+    DigitList copy(number);
+    if (copy.fitsIntoInt64(false)) {
+        format(((DigitList &)number).getInt64(), appendTo, pos, status);
+    }
+    else {
+        copy.roundAtExponent(0);
+        if (copy.fitsIntoInt64(false)) {
+            format(number.getDouble(), appendTo, pos, status);
+        }
+        else {
+            // We're outside of our normal range that this framework can handle.
+            // The DecimalFormat will provide more accurate results.
+
+            // TODO this section should probably be optimized. The DecimalFormat is shared in ICU4J.
+            NumberFormat *decimalFormat = NumberFormat::createInstance(locale, UNUM_DECIMAL, status);
+            Formattable f;
+            f.adoptDigitList(new DigitList(number));
+            decimalFormat->format(f, appendTo, pos, status);
+            delete decimalFormat;
+        }
+    }
+    return appendTo;
+}
+
+UnicodeString&
 RuleBasedNumberFormat::format(int32_t number,
                               UnicodeString& toAppendTo,
-                              FieldPosition& /* pos */) const
+                              FieldPosition& pos) const
 {
-    if (defaultRuleSet) {
-        UErrorCode status = U_ZERO_ERROR;
-        int32_t startPos = toAppendTo.length();
-        defaultRuleSet->format((int64_t)number, toAppendTo, toAppendTo.length(), 0, status);
-        adjustForCapitalizationContext(startPos, toAppendTo);
-    }
-    return toAppendTo;
+    return format((int64_t)number, toAppendTo, pos);
 }
 
 
@@ -1100,9 +1161,7 @@ RuleBasedNumberFormat::format(int64_t number,
 {
     if (defaultRuleSet) {
         UErrorCode status = U_ZERO_ERROR;
-        int32_t startPos = toAppendTo.length();
-        defaultRuleSet->format(number, toAppendTo, toAppendTo.length(), 0, status);
-        adjustForCapitalizationContext(startPos, toAppendTo);
+        format(number, defaultRuleSet, toAppendTo, status);
     }
     return toAppendTo;
 }
@@ -1114,11 +1173,11 @@ RuleBasedNumberFormat::format(double number,
                               FieldPosition& /* pos */) const
 {
     int32_t startPos = toAppendTo.length();
+    UErrorCode status = U_ZERO_ERROR;
     if (defaultRuleSet) {
-        UErrorCode status = U_ZERO_ERROR;
         defaultRuleSet->format(number, toAppendTo, toAppendTo.length(), 0, status);
     }
-    return adjustForCapitalizationContext(startPos, toAppendTo);
+    return adjustForCapitalizationContext(startPos, toAppendTo, status);
 }
 
 
@@ -1126,24 +1185,10 @@ UnicodeString&
 RuleBasedNumberFormat::format(int32_t number,
                               const UnicodeString& ruleSetName,
                               UnicodeString& toAppendTo,
-                              FieldPosition& /* pos */,
+                              FieldPosition& pos,
                               UErrorCode& status) const
 {
-    // return format((int64_t)number, ruleSetName, toAppendTo, pos, status);
-    if (U_SUCCESS(status)) {
-        if (ruleSetName.indexOf(gPercentPercent, 2, 0) == 0) {
-            // throw new IllegalArgumentException("Can't use internal rule set");
-            status = U_ILLEGAL_ARGUMENT_ERROR;
-        } else {
-            NFRuleSet *rs = findRuleSet(ruleSetName, status);
-            if (rs) {
-                int32_t startPos = toAppendTo.length();
-                rs->format((int64_t)number, toAppendTo, toAppendTo.length(), 0, status);
-                adjustForCapitalizationContext(startPos, toAppendTo);
-            }
-        }
-    }
-    return toAppendTo;
+    return format((int64_t)number, ruleSetName, toAppendTo, pos, status);
 }
 
 
@@ -1161,9 +1206,7 @@ RuleBasedNumberFormat::format(int64_t number,
         } else {
             NFRuleSet *rs = findRuleSet(ruleSetName, status);
             if (rs) {
-                int32_t startPos = toAppendTo.length();
-                rs->format(number, toAppendTo, toAppendTo.length(), 0, status);
-                adjustForCapitalizationContext(startPos, toAppendTo);
+                format(number, rs, toAppendTo, status);
             }
         }
     }
@@ -1187,27 +1230,72 @@ RuleBasedNumberFormat::format(double number,
             if (rs) {
                 int32_t startPos = toAppendTo.length();
                 rs->format(number, toAppendTo, toAppendTo.length(), 0, status);
-                adjustForCapitalizationContext(startPos, toAppendTo);
+                adjustForCapitalizationContext(startPos, toAppendTo, status);
             }
         }
     }
     return toAppendTo;
 }
 
+/**
+ * Bottleneck through which all the public format() methods
+ * that take a long pass. By the time we get here, we know
+ * which rule set we're using to do the formatting.
+ * @param number The number to format
+ * @param ruleSet The rule set to use to format the number
+ * @return The text that resulted from formatting the number
+ */
+UnicodeString&
+RuleBasedNumberFormat::format(int64_t number, NFRuleSet *ruleSet, UnicodeString& toAppendTo, UErrorCode& status) const
+{
+    // all API format() routines that take a double vector through
+    // here.  We have these two identical functions-- one taking a
+    // double and one taking a long-- the couple digits of precision
+    // that long has but double doesn't (both types are 8 bytes long,
+    // but double has to borrow some of the mantissa bits to hold
+    // the exponent).
+    // Create an empty string buffer where the result will
+    // be built, and pass it to the rule set (along with an insertion
+    // position of 0 and the number being formatted) to the rule set
+    // for formatting
+
+    if (U_SUCCESS(status)) {
+        if (number == U_INT64_MIN) {
+            // We can't handle this value right now. Provide an accurate default value.
+
+            // TODO this section should probably be optimized. The DecimalFormat is shared in ICU4J.
+            NumberFormat *decimalFormat = NumberFormat::createInstance(locale, UNUM_DECIMAL, status);
+            Formattable f;
+            FieldPosition pos(FieldPosition::DONT_CARE);
+            DigitList *digitList = new DigitList();
+            digitList->set(number);
+            f.adoptDigitList(digitList);
+            decimalFormat->format(f, toAppendTo, pos, status);
+            delete decimalFormat;
+        }
+        else {
+            int32_t startPos = toAppendTo.length();
+            ruleSet->format(number, toAppendTo, toAppendTo.length(), 0, status);
+            adjustForCapitalizationContext(startPos, toAppendTo, status);
+        }
+    }
+    return toAppendTo;
+}
+
 UnicodeString&
 RuleBasedNumberFormat::adjustForCapitalizationContext(int32_t startPos,
-                                                      UnicodeString& currentResult) const
+                                                      UnicodeString& currentResult,
+                                                      UErrorCode& status) const
 {
 #if !UCONFIG_NO_BREAK_ITERATION
-    if (startPos==0 && currentResult.length() > 0) {
+    UDisplayContext capitalizationContext = getContext(UDISPCTX_TYPE_CAPITALIZATION, status);
+    if (capitalizationContext != UDISPCTX_CAPITALIZATION_NONE && startPos == 0 && currentResult.length() > 0) {
         // capitalize currentResult according to context
         UChar32 ch = currentResult.char32At(0);
-        UErrorCode status = U_ZERO_ERROR;
-        UDisplayContext capitalizationContext = getContext(UDISPCTX_TYPE_CAPITALIZATION, status);
-        if ( u_islower(ch) && U_SUCCESS(status) && capitalizationBrkIter!= NULL &&
-              ( capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
-                (capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU && capitalizationForUIListMenu) ||
-                (capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_STANDALONE && capitalizationForStandAlone)) ) {
+        if (u_islower(ch) && U_SUCCESS(status) && capitalizationBrkIter != NULL &&
+              ( capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
+                (capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU && capitalizationForUIListMenu) ||
+                (capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_STANDALONE && capitalizationForStandAlone)) ) {
             // titlecase first word of currentResult, here use sentence iterator unlike current implementations
             // in LocaleDisplayNamesImpl::adjustForUsageAndContext and RelativeDateFormat::format
             currentResult.toTitle(capitalizationBrkIter, locale, U_TITLECASE_NO_LOWERCASE | U_TITLECASE_NO_BREAK_ADJUSTMENT);
index 1e4b593..9cb1b0e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 32ab156..b998c69 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 4f568de..4b596ac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 29e39a5..52a961d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 17f7526..6ed89b1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 1099dbf..61ce972 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 36a07d9..3569e42 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 85937f3..5501981 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) {1999-2001}, International Business Machines Corporation and others. All Rights Reserved.
index 0385766..d8d0384 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 573c079..b4b4678 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 2b35c95..d98613f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2657cf3..4e9ad6a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  regexcmp.cpp
@@ -2637,6 +2637,16 @@ void  RegexCompile::findCaseInsensitiveStarters(UChar32 c, UnicodeSet *starterCh
 }
 
 
+// Increment with overflow check.
+// val and delta will both be positive.
+
+static int32_t safeIncrement(int32_t val, int32_t delta) {
+    if (INT32_MAX - val > delta) {
+        return val + delta;
+    } else {
+        return INT32_MAX;
+    }
+}
 
 
 //------------------------------------------------------------------------------
@@ -2737,7 +2747,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->add(URX_VAL(op));
                 numInitialStrings += 2;
             }
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             atStart = FALSE;
             break;
 
@@ -2750,7 +2760,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(*s);
                 numInitialStrings += 2;
             }
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             atStart = FALSE;
             break;
 
@@ -2787,7 +2797,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(*s);
                 numInitialStrings += 2;
             }
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             atStart = FALSE;
             break;
 
@@ -2802,7 +2812,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(sc);
                 numInitialStrings += 2;
             }
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             atStart = FALSE;
             break;
 
@@ -2819,7 +2829,7 @@ void   RegexCompile::matchStartType() {
                  fRXPat->fInitialChars->addAll(s);
                  numInitialStrings += 2;
             }
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             atStart = FALSE;
             break;
 
@@ -2836,7 +2846,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(s);
                 numInitialStrings += 2;
             }
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             atStart = FALSE;
             break;
 
@@ -2855,7 +2865,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(s);
                 numInitialStrings += 2;
             }
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             atStart = FALSE;
             break;
 
@@ -2879,7 +2889,7 @@ void   RegexCompile::matchStartType() {
                 }
                 numInitialStrings += 2;
             }
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             atStart = FALSE;
             break;
 
@@ -2895,7 +2905,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->complement();
                 numInitialStrings += 2;
             }
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             atStart = FALSE;
             break;
 
@@ -2975,7 +2985,7 @@ void   RegexCompile::matchStartType() {
                     fRXPat->fInitialStringLen = stringLen;
                 }
 
-                currentLen += stringLen;
+                currentLen = safeIncrement(currentLen, stringLen);
                 atStart = FALSE;
             }
             break;
@@ -3000,7 +3010,7 @@ void   RegexCompile::matchStartType() {
                     fRXPat->fInitialChars->addAll(s);
                     numInitialStrings += 2;  // Matching on an initial string not possible.
                 }
-                currentLen += stringLen;
+                currentLen = safeIncrement(currentLen, stringLen);
                 atStart = FALSE;
             }
             break;
@@ -3258,7 +3268,7 @@ int32_t   RegexCompile::minMatchLength(int32_t start, int32_t end) {
         case URX_DOTANY_ALL:    // . matches one or two.
         case URX_DOTANY:
         case URX_DOTANY_UNIX:
-            currentLen++;
+            currentLen = safeIncrement(currentLen, 1);
             break;
 
 
@@ -3310,7 +3320,7 @@ int32_t   RegexCompile::minMatchLength(int32_t start, int32_t end) {
             {
                 loc++;
                 int32_t stringLenOp = (int32_t)fRXPat->fCompiledPat->elementAti(loc);
-                currentLen += URX_VAL(stringLenOp);
+                currentLen = safeIncrement(currentLen, URX_VAL(stringLenOp));
             }
             break;
 
@@ -3323,7 +3333,7 @@ int32_t   RegexCompile::minMatchLength(int32_t start, int32_t end) {
                 //       Assume a min length of one for now.  A min length of zero causes
                 //        optimization failures for a pattern like "string"+
                 // currentLen += URX_VAL(stringLenOp);
-                currentLen += 1;
+                currentLen = safeIncrement(currentLen, 1);
             }
             break;
 
@@ -3433,18 +3443,6 @@ int32_t   RegexCompile::minMatchLength(int32_t start, int32_t end) {
     return currentLen;
 }
 
-// Increment with overflow check.
-// val and delta will both be positive.
-
-static int32_t safeIncrement(int32_t val, int32_t delta) {
-    if (INT32_MAX - val > delta) {
-        return val + delta;
-    } else {
-        return INT32_MAX;
-    }
-}
-
-
 //------------------------------------------------------------------------------
 //
 //   maxMatchLength    Calculate the length of the longest string that could
index 578fdcf..f2aeea9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  regexcmp.h
index 8a5c829..8b12096 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //---------------------------------------------------------------------------------
 //
index 6c476e7..d555669 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //   Copyright (C) 2012 International Business Machines Corporation
@@ -19,8 +19,7 @@
 U_NAMESPACE_BEGIN
 
 CaseFoldingUTextIterator::CaseFoldingUTextIterator(UText &text) :
-   fUText(text), fcsp(NULL), fFoldChars(NULL), fFoldLength(0) {
-   fcsp = ucase_getSingleton();
+   fUText(text), fFoldChars(NULL), fFoldLength(0) {
 }
 
 CaseFoldingUTextIterator::~CaseFoldingUTextIterator() {}
@@ -35,7 +34,7 @@ UChar32 CaseFoldingUTextIterator::next() {
         if (originalC == U_SENTINEL) {
             return originalC;
         }
-        fFoldLength = ucase_toFullFolding(fcsp, originalC, &fFoldChars, U_FOLD_CASE_DEFAULT);
+        fFoldLength = ucase_toFullFolding(originalC, &fFoldChars, U_FOLD_CASE_DEFAULT);
         if (fFoldLength >= UCASE_MAX_STRING_LENGTH || fFoldLength < 0) {
             // input code point folds to a single code point, possibly itself.
             // See comment in ucase.h for explanation of return values from ucase_toFullFoldings.
@@ -65,8 +64,7 @@ UBool CaseFoldingUTextIterator::inExpansion() {
 
 
 CaseFoldingUCharIterator::CaseFoldingUCharIterator(const UChar *chars, int64_t start, int64_t limit) :
-   fChars(chars), fIndex(start), fLimit(limit), fcsp(NULL), fFoldChars(NULL), fFoldLength(0) {
-   fcsp = ucase_getSingleton();
+   fChars(chars), fIndex(start), fLimit(limit), fFoldChars(NULL), fFoldLength(0) {
 }
 
 
@@ -84,7 +82,7 @@ UChar32 CaseFoldingUCharIterator::next() {
         }
         U16_NEXT(fChars, fIndex, fLimit, originalC);
 
-        fFoldLength = ucase_toFullFolding(fcsp, originalC, &fFoldChars, U_FOLD_CASE_DEFAULT);
+        fFoldLength = ucase_toFullFolding(originalC, &fFoldChars, U_FOLD_CASE_DEFAULT);
         if (fFoldLength >= UCASE_MAX_STRING_LENGTH || fFoldLength < 0) {
             // input code point folds to a single code point, possibly itself.
             // See comment in ucase.h for explanation of return values from ucase_toFullFoldings.
index b2fcc3f..51db882 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //   Copyright (C) 2002-2015 International Business Machines Corporation
@@ -374,7 +374,6 @@ class CaseFoldingUTextIterator: public UMemory {
                                   //  folding of the same code point from the orignal UText.
       private:
         UText             &fUText;
-        const  UCaseProps *fcsp;
         const  UChar      *fFoldChars;
         int32_t            fFoldLength;
         int32_t            fFoldIndex;
@@ -404,7 +403,6 @@ class CaseFoldingUCharIterator: public UMemory {
         const  UChar      *fChars;
         int64_t            fIndex;
         int64_t            fLimit;
-        const  UCaseProps *fcsp;
         const  UChar      *fFoldChars;
         int32_t            fFoldLength;
         int32_t            fFoldIndex;
index d62c529..4f12e87 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  regexst.h
index a8705b0..3f54233 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  regexst.h
index d6157f5..41bb4a9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index c5651ae..9cfabbe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 81ddc23..66de31d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 817dd05..5e5a645 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index dd4894e..38bfe96 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -15,6 +15,7 @@
 #if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION
 
 #include "unicode/dtfmtsym.h"
+#include "unicode/ucasemap.h"
 #include "unicode/ureldatefmt.h"
 #include "unicode/udisplaycontext.h"
 #include "unicode/unum.h"
index 00cafc8..839198b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -20,7 +20,7 @@
 #include "unicode/udisplaycontext.h"
 #include "unicode/uchar.h"
 #include "unicode/brkiter.h"
-
+#include "unicode/ucasemap.h"
 #include "reldtfmt.h"
 #include "cmemory.h"
 #include "uresimp.h"
index 3a11dfb..c3b3044 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0e795f2..53c801e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **************************************************************************
@@ -3566,7 +3566,14 @@ GC_Done:
                         }
                     }
                     fp = StateSave(fp, fp->fPatIdx, status);
+                } else {
+                    // Increment time-out counter. (StateSave() does it if count >= minCount)
+                    fTickCounter--;
+                    if (fTickCounter <= 0) {
+                        IncrementTime(status);    // Re-initializes fTickCounter
+                    }
                 }
+
                 fp->fPatIdx = opValue + 4;    // Loop back.
             }
             break;
@@ -3623,6 +3630,11 @@ GC_Done:
                     // We haven't met the minimum number of matches yet.
                     //   Loop back for another one.
                     fp->fPatIdx = opValue + 4;    // Loop back.
+                    // Increment time-out counter. (StateSave() does it if count >= minCount)
+                    fTickCounter--;
+                    if (fTickCounter <= 0) {
+                        IncrementTime(status);    // Re-initializes fTickCounter
+                    }
                 } else {
                     // We do have the minimum number of matches.
 
@@ -5099,6 +5111,12 @@ GC_Done:
                         }
                     }
                     fp = StateSave(fp, fp->fPatIdx, status);
+                } else {
+                    // Increment time-out counter. (StateSave() does it if count >= minCount)
+                    fTickCounter--;
+                    if (fTickCounter <= 0) {
+                        IncrementTime(status);    // Re-initializes fTickCounter
+                    }
                 }
                 fp->fPatIdx = opValue + 4;    // Loop back.
             }
@@ -5156,6 +5174,10 @@ GC_Done:
                     // We haven't met the minimum number of matches yet.
                     //   Loop back for another one.
                     fp->fPatIdx = opValue + 4;    // Loop back.
+                    fTickCounter--;
+                    if (fTickCounter <= 0) {
+                        IncrementTime(status);    // Re-initializes fTickCounter
+                    }
                 } else {
                     // We do have the minimum number of matches.
 
index 89837f9..70a6ed3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a563578..ed038d5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 817df2e..b8aee1a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  repattrn.cpp
index 4852667..ab65f10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 56a43f9..adf032d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ff853b8..073e839 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index e8de3b9..385c3e3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index f6dbb49..f944b68 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 041fea5..29aee36 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 3a5d55a..a36d1a5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index ca962c6..82f482b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 58be1f6..b6d67bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index f6d97b5..1526f92 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index a11a8a3..ca9a210 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index fcb618a..a7e105b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index faed6de..28d8b25 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 336af78..fc23370 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index a06a80f..e17d14c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -1189,13 +1189,22 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) {
         // Create a TimeZoneRule for initial time
         if (firstStdStart < firstDstStart) {
             initialRule = new InitialTimeZoneRule(tzid+UnicodeString(DST_STR), getRawOffset(), dstRule->getDSTSavings());
+            if (initialRule == NULL) {
+                status = U_MEMORY_ALLOCATION_ERROR;
+                deleteTransitionRules();
+                return;
+            }
             firstTransition = new TimeZoneTransition(firstStdStart, *initialRule, *stdRule);
         } else {
             initialRule = new InitialTimeZoneRule(tzid+UnicodeString(STD_STR), getRawOffset(), 0);
+            if (initialRule == NULL) {
+                status = U_MEMORY_ALLOCATION_ERROR;
+                deleteTransitionRules();
+                return;
+            }
             firstTransition = new TimeZoneTransition(firstDstStart, *initialRule, *dstRule);
         }
-        // Check for null pointers.
-        if (initialRule == NULL || firstTransition == NULL) {
+        if (firstTransition == NULL) {
             status = U_MEMORY_ALLOCATION_ERROR;
             deleteTransitionRules();
             return;
index 297786f..72ffffc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index abf2b4b..b309b55 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 85cc162..3c06704 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -48,6 +48,7 @@
 #include "unicode/simpletz.h"
 #include "unicode/rbtz.h"
 #include "unicode/tzfmt.h"
+#include "unicode/ucasemap.h"
 #include "unicode/utf16.h"
 #include "unicode/vtzone.h"
 #include "unicode/udisplaycontext.h"
@@ -64,6 +65,7 @@
 #include <float.h>
 #include "smpdtfst.h"
 #include "sharednumberformat.h"
+#include "ucasemap_imp.h"
 #include "ustr_imp.h"
 #include "charstr.h"
 #include "uvector.h"
index fbb2ab5..db59a4b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 586b4e6..cc80909 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -16,6 +16,7 @@
 #ifndef SMPDTFST_H
 #define SMPDTFST_H
 
+#include "unicode/uobject.h"
 #include "unicode/utypes.h"
 
 #if !UCONFIG_NO_FORMATTING
index f6f1873..1228948 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c39bae1..0391034 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 56c63c3..33e1d60 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index a04f57f..aa9e7ae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 83112ee..8ebdb30 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2001-2011, International Business Machines Corporation
index d76b652..0eef3d4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a452db9..feec058 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 6daee6e..c556567 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 81c539e..dfd5f3c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 64e4be3..a1c25df 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index a161745..113f61c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b589616..9b37d7f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -97,7 +97,7 @@ void TitlecaseTransliterator::handleTransliterate(
     int32_t start;
     for (start = offsets.start - 1; start >= offsets.contextStart; start -= U16_LENGTH(c)) {
         c = text.char32At(start);
-        type=ucase_getTypeOrIgnorable(fCsp, c);
+        type=ucase_getTypeOrIgnorable(c);
         if(type>0) { // cased
             doTitle=FALSE;
             break;
@@ -118,19 +118,19 @@ void TitlecaseTransliterator::handleTransliterate(
 
     UnicodeString tmp;
     const UChar *s;
-    int32_t textPos, delta, result, locCache=0;
+    int32_t textPos, delta, result;
 
     for(textPos=offsets.start; textPos<offsets.limit;) {
         csc.cpStart=textPos;
         c=text.char32At(textPos);
         csc.cpLimit=textPos+=U16_LENGTH(c);
 
-        type=ucase_getTypeOrIgnorable(fCsp, c);
+        type=ucase_getTypeOrIgnorable(c);
         if(type>=0) { // not case-ignorable
             if(doTitle) {
-                result=ucase_toFullTitle(fCsp, c, utrans_rep_caseContextIterator, &csc, &s, "", &locCache);
+                result=ucase_toFullTitle(c, utrans_rep_caseContextIterator, &csc, &s, UCASE_LOC_ROOT);
             } else {
-                result=ucase_toFullLower(fCsp, c, utrans_rep_caseContextIterator, &csc, &s, "", &locCache);
+                result=ucase_toFullLower(c, utrans_rep_caseContextIterator, &csc, &s, UCASE_LOC_ROOT);
             }
             doTitle = (UBool)(type==0); // doTitle=isUncased
 
index a6380e3..166378f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b6db309..bf078d9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 6386e23..a69fe57 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 1669546..50dac8b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 6d1bc31..6dae6f1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 616e598..e311431 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a34792e..098dba9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index eae44e7..677a04e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8a2f98b..2bc20bd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 7c29f25..3dadf79 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 334963f..6fc35c8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index f5d2799..b276636 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 63cfdff..5e42f06 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************
index 161675a..7f26d19 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 #include "unicode/calendar.h"
 #include "unicode/tzfmt.h"
 #include "unicode/numsys.h"
+#include "unicode/strenum.h"
 #include "unicode/uchar.h"
 #include "unicode/udat.h"
+#include "unicode/ustring.h"
 #include "tzgnames.h"
 #include "cmemory.h"
 #include "cstring.h"
index 4fc726e..b14e983 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -18,6 +18,7 @@
 #include "unicode/rbtz.h"
 #include "unicode/simpleformatter.h"
 #include "unicode/simpletz.h"
+#include "unicode/strenum.h"
 #include "unicode/vtzone.h"
 
 #include "cmemory.h"
index 61a0984..2bd7613 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6aefd13..689fdeb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index f52d5c2..1b26318 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -15,6 +15,7 @@
 
 #if !UCONFIG_NO_FORMATTING
 
+#include "unicode/strenum.h"
 #include "unicode/ustring.h"
 #include "unicode/timezone.h"
 
index 6b913bb..9251f9e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 2cfd7ee..f4ede7c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 76e259c..3199b78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ccca97b..282d84c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8139208..f29cbe4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *                                                                            *
 ******************************************************************************
 *   file name:  ucln_in.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b609fce..35a8a23 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  ucln_in.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4f83794..e53dc92 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucol.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 7c9e8f6..a251fc4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -10,7 +10,7 @@
 *
 * Private implementation header for C collation
 *   file name:  ucol_imp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 314b766..d159702 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucol_res.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -680,6 +680,7 @@ ucol_getKeywordValuesForLocale(const char* /*key*/, const char* locale,
         return NULL;
     }
     memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
+    ulist_resetList(sink.values);  // Initialize the iterator.
     en->context = sink.values;
     sink.values = NULL;  // Avoid deletion in the sink destructor.
     return en;
index 491fc85..ad064f2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucol_sit.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 9c73afd..596ce03 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index dd69d9f..46f69cf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 3b8a36a..5e06dd6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e6eec44..44ba6b9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index d8824af..9ba82b5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  udatpg.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b1c9c64..64de856 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index eb71725..103c91c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index da9f8d3..62b6f83 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
diff --git a/source/i18n/ulocdata.c b/source/i18n/ulocdata.c
deleted file mode 100644 (file)
index 587a743..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*                                                                            *
-* Copyright (C) 2003-2016, International Business Machines                   *
-*                Corporation and others. All Rights Reserved.                *
-*                                                                            *
-******************************************************************************
-*   file name:  ulocdata.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2003Oct21
-*   created by: Ram Viswanadha,John Emmons
-*/
-
-#include "cmemory.h"
-#include "unicode/ustring.h"
-#include "unicode/ures.h"
-#include "unicode/uloc.h"
-#include "unicode/ulocdata.h"
-#include "uresimp.h"
-#include "ureslocs.h"
-#include "ulocimp.h"
-
-#define MEASUREMENT_SYSTEM  "MeasurementSystem"
-#define PAPER_SIZE          "PaperSize"
-
-/** A locale data object.
- *  For usage in C programs.
- *  @draft ICU 3.4
- */
-struct ULocaleData {
-    /**
-     * Controls the "No Substitute" behavior of this locale data object
-     */
-    UBool noSubstitute;
-
-    /**
-     * Pointer to the resource bundle associated with this locale data object
-     */
-    UResourceBundle *bundle;
-
-    /**
-     * Pointer to the lang resource bundle associated with this locale data object
-     */
-    UResourceBundle *langBundle;
-};
-
-U_CAPI ULocaleData* U_EXPORT2
-ulocdata_open(const char *localeID, UErrorCode *status)
-{
-   ULocaleData *uld;
-
-   if (U_FAILURE(*status)) {
-       return NULL;
-   }
-
-   uld = (ULocaleData *)uprv_malloc(sizeof(ULocaleData));
-   if (uld == NULL) {
-      *status = U_MEMORY_ALLOCATION_ERROR;
-      return(NULL);
-   }
-
-   uld->langBundle = NULL;
-
-   uld->noSubstitute = FALSE;
-   uld->bundle = ures_open(NULL, localeID, status);
-   uld->langBundle = ures_open(U_ICUDATA_LANG, localeID, status);
-
-   if (U_FAILURE(*status)) {
-      uprv_free(uld);
-      return NULL;
-   }
-
-   return uld;
-}
-
-U_CAPI void U_EXPORT2
-ulocdata_close(ULocaleData *uld)
-{
-    if ( uld != NULL ) {
-       ures_close(uld->langBundle);
-       ures_close(uld->bundle);
-       uprv_free(uld);
-    }
-}
-
-U_CAPI void U_EXPORT2
-ulocdata_setNoSubstitute(ULocaleData *uld, UBool setting)
-{
-   uld->noSubstitute = setting;
-}
-
-U_CAPI UBool U_EXPORT2
-ulocdata_getNoSubstitute(ULocaleData *uld)
-{
-   return uld->noSubstitute;
-}
-
-U_CAPI USet* U_EXPORT2
-ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn,
-                        uint32_t options, ULocaleDataExemplarSetType extype, UErrorCode *status){
-
-    static const char* const exemplarSetTypes[] = { "ExemplarCharacters", 
-                                                    "AuxExemplarCharacters", 
-                                                    "ExemplarCharactersIndex",
-                                                    "ExemplarCharactersPunctuation"};
-    const UChar *exemplarChars = NULL;
-    int32_t len = 0;
-    UErrorCode localStatus = U_ZERO_ERROR;
-
-    if (U_FAILURE(*status))
-        return NULL;
-
-    exemplarChars = ures_getStringByKey(uld->bundle, exemplarSetTypes[extype], &len, &localStatus);
-    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
-        localStatus = U_MISSING_RESOURCE_ERROR;
-    }
-
-    if (localStatus != U_ZERO_ERROR) {
-        *status = localStatus;
-    }
-
-    if (U_FAILURE(*status))
-        return NULL;
-
-    if(fillIn != NULL)
-        uset_applyPattern(fillIn, exemplarChars, len,
-                          USET_IGNORE_SPACE | options, status);
-    else
-        fillIn = uset_openPatternOptions(exemplarChars, len,
-                                         USET_IGNORE_SPACE | options, status);
-
-    return fillIn;
-
-}
-
-U_CAPI int32_t U_EXPORT2
-ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type,
-                      UChar *result, int32_t resultLength, UErrorCode *status){
-
-    static const char* const delimiterKeys[] =  {
-        "quotationStart",
-        "quotationEnd",
-        "alternateQuotationStart",
-        "alternateQuotationEnd"
-    };
-
-    UResourceBundle *delimiterBundle;
-    int32_t len = 0;
-    const UChar *delimiter = NULL;
-    UErrorCode localStatus = U_ZERO_ERROR;
-
-    if (U_FAILURE(*status))
-        return 0;
-
-    delimiterBundle = ures_getByKey(uld->bundle, "delimiters", NULL, &localStatus);
-
-    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
-        localStatus = U_MISSING_RESOURCE_ERROR;
-    }
-
-    if (localStatus != U_ZERO_ERROR) {
-        *status = localStatus;
-    }
-
-    if (U_FAILURE(*status)){
-        ures_close(delimiterBundle);
-        return 0;
-    }
-
-    delimiter = ures_getStringByKey(delimiterBundle, delimiterKeys[type], &len, &localStatus);
-    ures_close(delimiterBundle);
-
-    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
-        localStatus = U_MISSING_RESOURCE_ERROR;
-    }
-
-    if (localStatus != U_ZERO_ERROR) {
-        *status = localStatus;
-    }
-
-    if (U_FAILURE(*status)){
-        return 0;
-    }
-
-    u_strncpy(result,delimiter, resultLength);
-    return len;
-}
-
-static UResourceBundle * measurementTypeBundleForLocale(const char *localeID, const char *measurementType, UErrorCode *status){
-    char region[ULOC_COUNTRY_CAPACITY];
-    UResourceBundle *rb;
-    UResourceBundle *measTypeBundle = NULL;
-    
-    ulocimp_getRegionForSupplementalData(localeID, TRUE, region, ULOC_COUNTRY_CAPACITY, status);
-    
-    rb = ures_openDirect(NULL, "supplementalData", status);
-    ures_getByKey(rb, "measurementData", rb, status);
-    if (rb != NULL) {
-        UResourceBundle *measDataBundle = ures_getByKey(rb, region, NULL, status);
-        if (U_SUCCESS(*status)) {
-               measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status);
-        }
-        if (*status == U_MISSING_RESOURCE_ERROR) {
-            *status = U_ZERO_ERROR;
-            if (measDataBundle != NULL) {
-                ures_close(measDataBundle);
-            }
-            measDataBundle = ures_getByKey(rb, "001", NULL, status);
-            measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status);
-        }
-        ures_close(measDataBundle);
-    }
-    ures_close(rb);
-    return measTypeBundle;
-}
-
-U_CAPI UMeasurementSystem U_EXPORT2
-ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status){
-
-    UResourceBundle* measurement=NULL;
-    UMeasurementSystem system = UMS_LIMIT;
-
-    if(status == NULL || U_FAILURE(*status)){
-        return system;
-    }
-
-    measurement = measurementTypeBundleForLocale(localeID, MEASUREMENT_SYSTEM, status);
-    system = (UMeasurementSystem) ures_getInt(measurement, status);
-
-    ures_close(measurement);
-
-    return system;
-
-}
-
-U_CAPI void U_EXPORT2
-ulocdata_getPaperSize(const char* localeID, int32_t *height, int32_t *width, UErrorCode *status){
-    UResourceBundle* paperSizeBundle = NULL;
-    const int32_t* paperSize=NULL;
-    int32_t len = 0;
-
-    if(status == NULL || U_FAILURE(*status)){
-        return;
-    }
-
-    paperSizeBundle = measurementTypeBundleForLocale(localeID, PAPER_SIZE, status);
-    paperSize = ures_getIntVector(paperSizeBundle, &len,  status);
-
-    if(U_SUCCESS(*status)){
-        if(len < 2){
-            *status = U_INTERNAL_PROGRAM_ERROR;
-        }else{
-            *height = paperSize[0];
-            *width  = paperSize[1];
-        }
-    }
-
-    ures_close(paperSizeBundle);
-
-}
-
-U_CAPI void U_EXPORT2
-ulocdata_getCLDRVersion(UVersionInfo versionArray, UErrorCode *status) {
-    UResourceBundle *rb = NULL;
-    rb = ures_openDirect(NULL, "supplementalData", status);
-    ures_getVersionByKey(rb, "cldrVersion", versionArray, status);
-    ures_close(rb);
-}
-
-U_CAPI int32_t U_EXPORT2
-ulocdata_getLocaleDisplayPattern(ULocaleData *uld,
-                                 UChar *result,
-                                 int32_t resultCapacity,
-                                 UErrorCode *status) {
-    UResourceBundle *patternBundle;
-    int32_t len = 0;
-    const UChar *pattern = NULL;
-    UErrorCode localStatus = U_ZERO_ERROR;
-
-    if (U_FAILURE(*status))
-        return 0;
-
-    patternBundle = ures_getByKey(uld->langBundle, "localeDisplayPattern", NULL, &localStatus);
-
-    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
-        localStatus = U_MISSING_RESOURCE_ERROR;
-    }
-
-    if (localStatus != U_ZERO_ERROR) {
-        *status = localStatus;
-    }
-
-    if (U_FAILURE(*status)){
-        ures_close(patternBundle);
-        return 0;
-    }
-
-    pattern = ures_getStringByKey(patternBundle, "pattern", &len, &localStatus);
-    ures_close(patternBundle);
-
-    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
-        localStatus = U_MISSING_RESOURCE_ERROR;
-    }
-
-    if (localStatus != U_ZERO_ERROR) {
-        *status = localStatus;
-    }
-
-    if (U_FAILURE(*status)){
-        return 0;
-    }
-
-    u_strncpy(result, pattern, resultCapacity);
-    return len;
-}
-
-
-U_CAPI int32_t U_EXPORT2
-ulocdata_getLocaleSeparator(ULocaleData *uld,
-                            UChar *result,
-                            int32_t resultCapacity,
-                            UErrorCode *status)  {
-    UResourceBundle *separatorBundle;
-    int32_t len = 0;
-    const UChar *separator = NULL;
-    UErrorCode localStatus = U_ZERO_ERROR;
-    UChar *p0, *p1;
-    static const UChar sub0[4] = { 0x007b, 0x0030, 0x007d , 0x0000 }; /* {0} */
-    static const UChar sub1[4] = { 0x007b, 0x0031, 0x007d , 0x0000 }; /* {1} */
-    static const int32_t subLen = 3;
-
-    if (U_FAILURE(*status))
-        return 0;
-
-    separatorBundle = ures_getByKey(uld->langBundle, "localeDisplayPattern", NULL, &localStatus);
-
-    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
-        localStatus = U_MISSING_RESOURCE_ERROR;
-    }
-
-    if (localStatus != U_ZERO_ERROR) {
-        *status = localStatus;
-    }
-
-    if (U_FAILURE(*status)){
-        ures_close(separatorBundle);
-        return 0;
-    }
-
-    separator = ures_getStringByKey(separatorBundle, "separator", &len, &localStatus);
-    ures_close(separatorBundle);
-
-    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
-        localStatus = U_MISSING_RESOURCE_ERROR;
-    }
-
-    if (localStatus != U_ZERO_ERROR) {
-        *status = localStatus;
-    }
-
-    if (U_FAILURE(*status)){
-        return 0;
-    }
-
-    /* For backwards compatibility, if we have a pattern, return the portion between {0} and {1} */
-    p0=u_strstr(separator, sub0);
-    p1=u_strstr(separator, sub1);
-    if (p0!=NULL && p1!=NULL && p0<=p1) {
-        separator = (const UChar *)p0 + subLen;
-        len = p1 - separator;
-        /* Desired separator is no longer zero-terminated; handle that if necessary */
-        if (len < resultCapacity) {
-            u_strncpy(result, separator, len);
-            result[len] = 0;
-            return len;
-        }
-    }
-
-    u_strncpy(result, separator, resultCapacity);
-    return len;
-}
index 179ab84..623e069 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  umsg.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e3538d3..43ef1c7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  umsg_imp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 88a78d6..86c55d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 7ae8302..e8e171f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 44abbea..a56f1a6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 7d85113..4d6eaa0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c7b361f..1442f75 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -15,6 +15,7 @@
 #include "unicode/utypes.h"
 #include "unicode/uobject.h"
 #include "unicode/locid.h"
+#include "unicode/unistr.h"
 
 #if !UCONFIG_NO_COLLATION
 
index 90073b2..3541207 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8776e21..6ebf539 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index ab3c28f..c9f0f11 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 4feaa1b..f2bd2ec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
@@ -47,6 +47,7 @@ U_NAMESPACE_BEGIN
 
 struct CollationData;
 
+class CharacterIterator;
 class CollationIterator;
 class RuleBasedCollator;
 class UCollationPCE;
index e41be2e..7e467df 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -58,7 +58,7 @@
 
 #include "unicode/uobject.h"
 #include "unicode/ucol.h"
-#include "unicode/normlzr.h"
+#include "unicode/unorm.h"
 #include "unicode/locid.h"
 #include "unicode/uniset.h"
 #include "unicode/umisc.h"
@@ -158,7 +158,7 @@ class CollationKey;
 * @see         CollationKey
 * @see         CollationElementIterator
 * @see         Locale
-* @see         Normalizer
+* @see         Normalizer2
 * @version     2.0 11/15/01
 */
 
@@ -393,8 +393,8 @@ public:
      * is less than, greater than or equal to another string array.
      * <p>Example of use:
      * <pre>
-     * .       UChar ABC[] = {0x41, 0x42, 0x43, 0};  // = "ABC"
-     * .       UChar abc[] = {0x61, 0x62, 0x63, 0};  // = "abc"
+     * .       char16_t ABC[] = {0x41, 0x42, 0x43, 0};  // = "ABC"
+     * .       char16_t abc[] = {0x61, 0x62, 0x63, 0};  // = "abc"
      * .       UErrorCode status = U_ZERO_ERROR;
      * .       Collator *myCollation =
      * .                         Collator::createInstance(Locale::getUS(), status);
@@ -420,8 +420,8 @@ public:
      *         target
      * @deprecated ICU 2.6 use the overload with UErrorCode &
      */
-    virtual EComparisonResult compare(const UChar* source, int32_t sourceLength,
-                                      const UChar* target, int32_t targetLength)
+    virtual EComparisonResult compare(const char16_t* source, int32_t sourceLength,
+                                      const char16_t* target, int32_t targetLength)
                                       const;
 
     /**
@@ -440,8 +440,8 @@ public:
      * than target
      * @stable ICU 2.6
      */
-    virtual UCollationResult compare(const UChar* source, int32_t sourceLength,
-                                      const UChar* target, int32_t targetLength,
+    virtual UCollationResult compare(const char16_t* source, int32_t sourceLength,
+                                      const char16_t* target, int32_t targetLength,
                                       UErrorCode &status) const = 0;
 
     /**
@@ -517,7 +517,7 @@ public:
      * @see CollationKey#compare
      * @stable ICU 2.0
      */
-    virtual CollationKey& getCollationKey(const UChar*source,
+    virtual CollationKey& getCollationKey(const char16_t*source,
                                           int32_t sourceLength,
                                           CollationKey& key,
                                           UErrorCode& status) const = 0;
@@ -911,7 +911,7 @@ public:
      * the top of one of the supported reordering groups,
      * and it must not be beyond the last of those groups.
      * See setMaxVariable().
-     * @param varTop one or more (if contraction) UChars to which the variable top should be set
+     * @param varTop one or more (if contraction) char16_ts to which the variable top should be set
      * @param len length of variable top string. If -1 it is considered to be zero terminated.
      * @param status error code. If error code is set, the return value is undefined. Errors set by this function are: <br>
      *    U_CE_NOT_FOUND_ERROR if more than one character was passed and there is no such contraction<br>
@@ -920,7 +920,7 @@ public:
      * @return variable top primary weight
      * @deprecated ICU 53 Call setMaxVariable() instead.
      */
-    virtual uint32_t setVariableTop(const UChar *varTop, int32_t len, UErrorCode &status) = 0;
+    virtual uint32_t setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &status) = 0;
 
     /**
      * Sets the variable top to the primary weight of the specified string.
@@ -929,7 +929,7 @@ public:
      * the top of one of the supported reordering groups,
      * and it must not be beyond the last of those groups.
      * See setMaxVariable().
-     * @param varTop a UnicodeString size 1 or more (if contraction) of UChars to which the variable top should be set
+     * @param varTop a UnicodeString size 1 or more (if contraction) of char16_ts to which the variable top should be set
      * @param status error code. If error code is set, the return value is undefined. Errors set by this function are: <br>
      *    U_CE_NOT_FOUND_ERROR if more than one character was passed and there is no such contraction<br>
      *    U_ILLEGAL_ARGUMENT_ERROR if the variable top is beyond
@@ -1002,7 +1002,7 @@ public:
                               int32_t resultLength) const = 0;
 
     /**
-     * Get the sort key as an array of bytes from a UChar buffer.
+     * Get the sort key as an array of bytes from a char16_t buffer.
      * Sort key byte arrays are zero-terminated and can be compared using
      * strcmp().
      *
@@ -1020,7 +1020,7 @@ public:
      * @return Number of bytes needed for storing the sort key
      * @stable ICU 2.2
      */
-    virtual int32_t getSortKey(const UChar*source, int32_t sourceLength,
+    virtual int32_t getSortKey(const char16_t*source, int32_t sourceLength,
                                uint8_t*result, int32_t resultLength) const = 0;
 
     /**
index 1fcc5c5..3fbe5da 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 65c5b39..e321df8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -46,7 +46,7 @@ class U_I18N_API CurrencyAmount: public Measure {
      * is invalid, then this will be set to a failing value.
      * @stable ICU 3.0
      */
-    CurrencyAmount(const Formattable& amount, const UChar* isoCode,
+    CurrencyAmount(const Formattable& amount, ConstChar16Ptr isoCode,
                    UErrorCode &ec);
 
     /**
@@ -59,7 +59,7 @@ class U_I18N_API CurrencyAmount: public Measure {
      * then this will be set to a failing value.
      * @stable ICU 3.0
      */
-    CurrencyAmount(double amount, const UChar* isoCode,
+    CurrencyAmount(double amount, ConstChar16Ptr isoCode,
                    UErrorCode &ec);
 
     /**
@@ -115,14 +115,14 @@ class U_I18N_API CurrencyAmount: public Measure {
      * Return the ISO currency code of this object.
      * @stable ICU 3.0
      */
-    inline const UChar* getISOCurrency() const;
+    inline const char16_t* getISOCurrency() const;
 };
 
 inline const CurrencyUnit& CurrencyAmount::getCurrency() const {
     return (const CurrencyUnit&) getUnit();
 }
 
-inline const UChar* CurrencyAmount::getISOCurrency() const {
+inline const char16_t* CurrencyAmount::getISOCurrency() const {
     return getCurrency().getISOCurrency();
 }
 
index acf8b53..33c18b0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 9ca4dc5..fd0f9f2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -28,7 +28,7 @@ U_NAMESPACE_BEGIN
 
 /**
  * A unit of currency, such as USD (U.S. dollars) or JPY (Japanese
- * yen).  This class is a thin wrapper over a UChar string that
+ * yen).  This class is a thin wrapper over a char16_t string that
  * subclasses MeasureUnit, for use with Measure and MeasureFormat.
  *
  * @author Alan Liu
@@ -44,7 +44,7 @@ class U_I18N_API CurrencyUnit: public MeasureUnit {
      * then this will be set to a failing value.
      * @stable ICU 3.0
      */
-    CurrencyUnit(const UChar* isoCode, UErrorCode &ec);
+    CurrencyUnit(ConstChar16Ptr isoCode, UErrorCode &ec);
 
     /**
      * Copy constructor
@@ -93,16 +93,16 @@ class U_I18N_API CurrencyUnit: public MeasureUnit {
      * Return the ISO currency code of this object.
      * @stable ICU 3.0
      */
-    inline const UChar* getISOCurrency() const;
+    inline const char16_t* getISOCurrency() const;
 
  private:
     /**
      * The ISO 4217 code of this object.
      */
-    UChar isoCode[4];
+    char16_t isoCode[4];
 };
 
-inline const UChar* CurrencyUnit::getISOCurrency() const {
+inline const char16_t* CurrencyUnit::getISOCurrency() const {
     return isoCode;
 }
 
index 3114126..3da0797 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 946227a..3a502d0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -35,6 +35,7 @@
 #include "unicode/uobject.h"
 #include "unicode/locid.h"
 #include "unicode/unum.h"
+#include "unicode/unistr.h"
 
 /**
  * \file
@@ -392,7 +393,7 @@ public:
      * Returns that pattern stored in currecy info. Internal API for use by NumberFormat API.
      * @internal
      */
-    inline const UChar* getCurrencyPattern(void) const;
+    inline const char16_t* getCurrencyPattern(void) const;
 #endif  /* U_HIDE_INTERNAL_API */
 
 private:
@@ -423,7 +424,7 @@ private:
 
     char actualLocale[ULOC_FULLNAME_CAPACITY];
     char validLocale[ULOC_FULLNAME_CAPACITY];
-    const UChar* currPattern;
+    const char16_t* currPattern;
 
     UnicodeString currencySpcBeforeSym[UNUM_CURRENCY_SPACING_COUNT];
     UnicodeString currencySpcAfterSym[UNUM_CURRENCY_SPACING_COUNT];
@@ -491,7 +492,7 @@ DecimalFormatSymbols::getLocale() const {
 }
 
 #ifndef U_HIDE_INTERNAL_API
-inline const UChar*
+inline const char16_t*
 DecimalFormatSymbols::getCurrencyPattern() const {
     return currPattern;
 }
index 7339399..1deff5b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -604,7 +604,7 @@ template class U_I18N_API    EnumSet<UNumberFormatAttribute,
  * including prefix and suffix, determines the format width.  For example, in
  * the pattern <code>"* #0 o''clock"</code>, the format width is 10.
  *
- * <li>The width is counted in 16-bit code units (UChars).
+ * <li>The width is counted in 16-bit code units (char16_ts).
  *
  * <li>Some parameters which usually do not matter have meaning when padding is
  * used, because the pattern width is significant with padding.  In the pattern
@@ -1961,14 +1961,14 @@ public:
      * @param ec input-output error code
      * @stable ICU 3.0
      */
-    virtual void setCurrency(const UChar* theCurrency, UErrorCode& ec);
+    virtual void setCurrency(const char16_t* theCurrency, UErrorCode& ec);
 
     /**
      * Sets the currency used to display currency amounts.  See
-     * setCurrency(const UChar*, UErrorCode&).
-     * @deprecated ICU 3.0. Use setCurrency(const UChar*, UErrorCode&).
+     * setCurrency(const char16_t*, UErrorCode&).
+     * @deprecated ICU 3.0. Use setCurrency(const char16_t*, UErrorCode&).
      */
-    virtual void setCurrency(const UChar* theCurrency);
+    virtual void setCurrency(const char16_t* theCurrency);
 
     /**
      * Sets the <tt>Currency Context</tt> object used to display currency.
@@ -2108,7 +2108,7 @@ private:
     void parse(const UnicodeString& text,
                Formattable& result,
                ParsePosition& pos,
-               UChar* currency) const;
+               char16_t* currency) const;
 
     enum {
         fgStatusInfinite,
@@ -2124,7 +2124,7 @@ private:
                    int8_t type,
                    ParsePosition& parsePosition,
                    DigitList& digits, UBool* status,
-                   UChar* currency) const;
+                   char16_t* currency) const;
 
     // Mixed style parsing for currency.
     // It parses against the current currency pattern
@@ -2135,7 +2135,7 @@ private:
                            ParsePosition& parsePosition,
                            DigitList& digits,
                            UBool* status,
-                           UChar* currency) const;
+                           char16_t* currency) const;
 
     int32_t skipPadding(const UnicodeString& text, int32_t position) const;
 
@@ -2146,7 +2146,7 @@ private:
                          const UnicodeString* affixPat,
                          UBool complexCurrencyParsing,
                          int8_t type,
-                         UChar* currency) const;
+                         char16_t* currency) const;
 
     static UnicodeString& trimMarksFromAffix(const UnicodeString& affix, UnicodeString& trimmedAffix);
 
@@ -2169,7 +2169,7 @@ private:
                                 const UnicodeString& input,
                                 int32_t pos,
                                 int8_t type,
-                                UChar* currency) const;
+                                char16_t* currency) const;
 
     static int32_t match(const UnicodeString& text, int32_t pos, UChar32 ch);
 
@@ -2195,11 +2195,11 @@ private:
     void setupCurrencyAffixPatterns(UErrorCode& status);
 
     // get the currency rounding with respect to currency usage
-    double getCurrencyRounding(const UChar* currency,
+    double getCurrencyRounding(const char16_t* currency,
                                UErrorCode* ec) const;
 
     // get the currency fraction with respect to currency usage
-    int getCurrencyFractionDigits(const UChar* currency,
+    int getCurrencyFractionDigits(const char16_t* currency,
                                   UErrorCode* ec) const;
 
     // hashtable operations
@@ -2271,7 +2271,7 @@ protected:
      * have a capacity of at least 4
      * @internal
      */
-    virtual void getEffectiveCurrency(UChar* result, UErrorCode& ec) const;
+    virtual void getEffectiveCurrency(char16_t* result, UErrorCode& ec) const;
 
   /** number of integer digits
    * @stable ICU 2.4
index 7573478..fe914b4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -25,6 +25,7 @@
 #if !UCONFIG_NO_FORMATTING
 
 #include "unicode/calendar.h"
+#include "unicode/strenum.h"
 #include "unicode/uobject.h"
 #include "unicode/locid.h"
 #include "unicode/udat.h"
@@ -426,13 +427,13 @@ public:
      * doesn't specify any time separator, and always recognized when parsing.
      * @internal
      */
-    static const UChar DEFAULT_TIME_SEPARATOR = 0x003a;  // ':'
+    static const char16_t DEFAULT_TIME_SEPARATOR = 0x003a;  // ':'
 
     /**
      * This alternate time separator is always recognized when parsing.
      * @internal
      */
-    static const UChar ALTERNATE_TIME_SEPARATOR = 0x002e;  // '.'
+    static const char16_t ALTERNATE_TIME_SEPARATOR = 0x002e;  // '.'
 
     /**
      * Gets the time separator string. For example: ":".
@@ -566,7 +567,7 @@ public:
      * @return    the non-localized date-time pattern characters
      * @stable ICU 2.0
      */
-    static const UChar * U_EXPORT2 getPatternUChars(void);
+    static const char16_t * U_EXPORT2 getPatternUChars(void);
 
     /**
      * Gets localized date-time pattern characters. For example: 'u', 't', etc.
@@ -977,7 +978,7 @@ private:
      * Returns the date format field index of the pattern character c,
      * or UDAT_FIELD_COUNT if c is not a pattern character.
      */
-    static UDateFormatField U_EXPORT2 getPatternCharIndex(UChar c);
+    static UDateFormatField U_EXPORT2 getPatternCharIndex(char16_t c);
 
     /**
      * Returns TRUE if f (with its pattern character repeated count times) is a numeric field.
@@ -987,7 +988,7 @@ private:
     /**
      * Returns TRUE if c (repeated count times) is the pattern character for a numeric field.
      */
-    static UBool U_EXPORT2 isNumericPatternChar(UChar c, int32_t count);
+    static UBool U_EXPORT2 isNumericPatternChar(char16_t c, int32_t count);
 public:
 #ifndef U_HIDE_INTERNAL_API
     /**
index 68360b8..5eaa559 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************************
 * Copyright (C) 2008-2016, International Business Machines Corporation and
@@ -996,7 +996,7 @@ private:
 
 
     // from calendar field to pattern letter
-    static const UChar fgCalendarFieldToPatternLetter[];
+    static const char16_t fgCalendarFieldToPatternLetter[];
 
 
     /**
index 325eca6..9c64769 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index fd617ce..6fd5f5f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -27,6 +27,7 @@ U_NAMESPACE_BEGIN
  */
 
 
+class CharString;
 class Hashtable;
 class FormatParser;
 class DateTimeMatcher;
@@ -517,7 +518,7 @@ private:
     DateTimeMatcher *skipMatcher;
     Hashtable *fAvailableFormatKeyHash;
     UnicodeString emptyString;
-    UChar fDefaultHourFormatChar;
+    char16_t fDefaultHourFormatChar;
 
     int32_t fAllowedHourFormats[7];  // Actually an array of AllowedHourFormat enum type, ending with UNKNOWN.
 
index fa1294e..0767249 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ad75b77..0bcc8da 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index ac5daba..766a719 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index bce5251..b05318d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 59c3638..4ad44f9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 943d445..e3c27d0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 756bba1..2b4fe1d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 1997-2013, International Business Machines Corporation and others.
index 37b3314..dac4255 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index afef83e..af72449 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -345,35 +345,29 @@ class U_I18N_API MeasureUnit: public UObject {
      */
     static MeasureUnit *createKarat(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of concentr: milligram-per-deciliter.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of concentr: millimole-per-liter.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of concentr: part-per-million.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     static MeasureUnit *createPartPerMillion(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns unit of consumption: liter-per-100kilometers.
@@ -399,55 +393,21 @@ class U_I18N_API MeasureUnit: public UObject {
      */
     static MeasureUnit *createMilePerGallon(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of consumption: mile-per-gallon-imperial.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
-
-#ifndef U_HIDE_DRAFT_API
-    /**
-     * Returns unit of coordinate: east.
-     * Caller owns returned value and must free it.
-     * @param status ICU error code.
-     * @draft ICU 58
-     */
-    static MeasureUnit *createEast(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
-    /**
-     * Returns unit of coordinate: north.
-     * Caller owns returned value and must free it.
-     * @param status ICU error code.
-     * @draft ICU 58
+    /*
+     * The following were draft ICU 58, but have been withdrawn:
+     * static MeasureUnit *createEast(UErrorCode &status);
+     * static MeasureUnit *createNorth(UErrorCode &status);
+     * static MeasureUnit *createSouth(UErrorCode &status);
+     * static MeasureUnit *createWest(UErrorCode &status);
      */
-    static MeasureUnit *createNorth(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
-
-#ifndef U_HIDE_DRAFT_API
-    /**
-     * Returns unit of coordinate: south.
-     * Caller owns returned value and must free it.
-     * @param status ICU error code.
-     * @draft ICU 58
-     */
-    static MeasureUnit *createSouth(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
-
-#ifndef U_HIDE_DRAFT_API
-    /**
-     * Returns unit of coordinate: west.
-     * Caller owns returned value and must free it.
-     * @param status ICU error code.
-     * @draft ICU 58
-     */
-    static MeasureUnit *createWest(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns unit of digital: bit.
@@ -873,6 +833,16 @@ class U_I18N_API MeasureUnit: public UObject {
      */
     static MeasureUnit *createPicometer(UErrorCode &status);
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns unit of length: point.
+     * Caller owns returned value and must free it.
+     * @param status ICU error code.
+     * @draft ICU 59
+     */
+    static MeasureUnit *createPoint(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
+
     /**
      * Returns unit of length: yard.
      * Caller owns returned value and must free it.
@@ -1249,15 +1219,13 @@ class U_I18N_API MeasureUnit: public UObject {
      */
     static MeasureUnit *createGallon(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of volume: gallon-imperial.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     static MeasureUnit *createGallonImperial(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns unit of volume: hectoliter.
index 2bd78d2..99b7d7a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 1a99738..fef8010 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 2007-2013, International Business Machines Corporation and
@@ -939,7 +939,7 @@ private:
      * @return the index of the list which matches the keyword s.
      */
     static int32_t findKeyword( const UnicodeString& s,
-                                const UChar * const *list);
+                                const char16_t * const *list);
 
     /**
      * Thin wrapper around the format(... AppendableWrapper ...) variant.
index d46e1fd..b8dec36 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -931,7 +931,7 @@ public:
      * @param ec input-output error code
      * @stable ICU 3.0
      */
-    virtual void setCurrency(const UChar* theCurrency, UErrorCode& ec);
+    virtual void setCurrency(const char16_t* theCurrency, UErrorCode& ec);
 
     /**
      * Gets the currency used to display currency
@@ -940,7 +940,7 @@ public:
      * the currency in use, or a pointer to the empty string.
      * @stable ICU 2.6
      */
-    const UChar* getCurrency() const;
+    const char16_t* getCurrency() const;
        
     /**
      * Set a particular UDisplayContext value in the formatter, such as
@@ -1018,7 +1018,7 @@ protected:
      * have a capacity of at least 4
      * @internal
      */
-    virtual void getEffectiveCurrency(UChar* result, UErrorCode& ec) const;
+    virtual void getEffectiveCurrency(char16_t* result, UErrorCode& ec) const;
 
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -1065,7 +1065,7 @@ private:
     UBool      fLenient; // TRUE => lenient parse is enabled
 
     // ISO currency code
-    UChar      fCurrency[4];
+    char16_t      fCurrency[4];
 
     UDisplayContext fCapitalizationContext;
 
index 4cc083f..9ec3f13 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -193,7 +193,7 @@ private:
 
     void setAlgorithmic(UBool algorithmic);
 
-    void setDesc(UnicodeString desc);
+    void setDesc(const UnicodeString &desc);
 
     void setName(const char* name);
 
index 369a8b7..fd537c2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 146e6be..a14f392 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -29,6 +29,9 @@
 
 #include "unicode/format.h"
 #include "unicode/upluralrules.h"
+#ifndef U_HIDE_INTERNAL_API
+#include "unicode/numfmt.h"
+#endif  /* U_HIDE_INTERNAL_API */
 
 /**
  * Value returned by PluralRules::getUniqueKeywordValue() when there is no
@@ -346,6 +349,22 @@ public:
 
 #ifndef U_HIDE_INTERNAL_API
     /**
+     * Given a number and a format, returns the keyword of the first applicable
+     * rule for this PluralRules object.
+     * Note: This internal preview interface may be removed in the future if
+     * an architecturally cleaner solution reaches stable status.
+     * @param obj The numeric object for which the rule should be determined.
+     * @param fmt The NumberFormat specifying how the number will be formatted
+     *        (this can affect the plural form, e.g. "1 dollar" vs "1.0 dollars").
+     * @param status  Input/output parameter. If at entry this indicates a
+     *                failure status, the method returns immediately; otherwise
+     *                this is set to indicate the outcome of the call.
+     * @return The keyword of the selected rule. Undefined in the case of an error.
+     * @internal ICU 59 technology preview, may be removed in the future
+     */
+    UnicodeString select(const Formattable& obj, const NumberFormat& fmt, UErrorCode& status) const;
+
+    /**
       * @internal
       */
     UnicodeString select(const FixedDecimal &number) const;
index d41ffbe..3d9301b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -866,6 +866,52 @@ public:
                                 FieldPosition& pos,
                                 UErrorCode& status) const;
 
+protected:
+    /**
+     * Format a decimal number.
+     * The number is a DigitList wrapper onto a floating point decimal number.
+     * The default implementation in NumberFormat converts the decimal number
+     * to a double and formats that.  Subclasses of NumberFormat that want
+     * to specifically handle big decimal numbers must override this method.
+     * class DecimalFormat does so.
+     *
+     * @param number    The number, a DigitList format Decimal Floating Point.
+     * @param appendTo  Output parameter to receive result.
+     *                  Result is appended to existing contents.
+     * @param posIter   On return, can be used to iterate over positions
+     *                  of fields generated by this format call.
+     * @param status    Output param filled with success/failure status.
+     * @return          Reference to 'appendTo' parameter.
+     * @internal
+     */
+    virtual UnicodeString& format(const DigitList &number,
+                                  UnicodeString& appendTo,
+                                  FieldPositionIterator* posIter,
+                                  UErrorCode& status) const;
+
+    /**
+     * Format a decimal number.
+     * The number is a DigitList wrapper onto a floating point decimal number.
+     * The default implementation in NumberFormat converts the decimal number
+     * to a double and formats that.  Subclasses of NumberFormat that want
+     * to specifically handle big decimal numbers must override this method.
+     * class DecimalFormat does so.
+     *
+     * @param number    The number, a DigitList format Decimal Floating Point.
+     * @param appendTo  Output parameter to receive result.
+     *                  Result is appended to existing contents.
+     * @param pos       On input: an alignment field, if desired.
+     *                  On output: the offsets of the alignment field.
+     * @param status    Output param filled with success/failure status.
+     * @return          Reference to 'appendTo' parameter.
+     * @internal
+     */
+    virtual UnicodeString& format(const DigitList &number,
+                                  UnicodeString& appendTo,
+                                  FieldPosition& pos,
+                                  UErrorCode& status) const;
+public:
+
   using NumberFormat::parse;
 
   /**
@@ -1031,7 +1077,8 @@ private:
     NFRule * initializeDefaultNaNRule(UErrorCode &status);
     const NFRule * getDefaultNaNRule() const;
     PluralFormat *createPluralFormat(UPluralType pluralType, const UnicodeString &pattern, UErrorCode& status) const;
-    UnicodeString& adjustForCapitalizationContext(int32_t startPos, UnicodeString& currentResult) const;
+    UnicodeString& adjustForCapitalizationContext(int32_t startPos, UnicodeString& currentResult, UErrorCode& status) const;
+    UnicodeString& format(int64_t number, NFRuleSet *ruleSet, UnicodeString& toAppendTo, UErrorCode& status) const;
 
 private:
     NFRuleSet **ruleSets;
index 4df5850..6d652f6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d23a3ab..6829f7b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  regex.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   indentation:4
 *
 *   created on: 2002oct22
@@ -350,17 +350,17 @@ public:
 private:
     /**
      * Cause a compilation error if an application accidentally attempts to
-     *   create a matcher with a (UChar *) string as input rather than
+     *   create a matcher with a (char16_t *) string as input rather than
      *   a UnicodeString.  Avoids a dangling reference to a temporary string.
      * <p>
-     * To efficiently work with UChar *strings, wrap the data in a UnicodeString
+     * To efficiently work with char16_t *strings, wrap the data in a UnicodeString
      * using one of the aliasing constructors, such as
-     * <code>UnicodeString(UBool isTerminated, const UChar *text, int32_t textLength);</code>
+     * <code>UnicodeString(UBool isTerminated, const char16_t *text, int32_t textLength);</code>
      * or in a UText, using
-     * <code>utext_openUChars(UText *ut, const UChar *text, int64_t textLength, UErrorCode *status);</code>
+     * <code>utext_openUChars(UText *ut, const char16_t *text, int64_t textLength, UErrorCode *status);</code>
      *
      */
-    RegexMatcher *matcher(const UChar *input,
+    RegexMatcher *matcher(const char16_t *input,
         UErrorCode          &status) const;
 public:
 
@@ -748,17 +748,17 @@ public:
 private:
     /**
      * Cause a compilation error if an application accidentally attempts to
-     *   create a matcher with a (UChar *) string as input rather than
+     *   create a matcher with a (char16_t *) string as input rather than
      *   a UnicodeString.    Avoids a dangling reference to a temporary string.
      * <p>
-     * To efficiently work with UChar *strings, wrap the data in a UnicodeString
+     * To efficiently work with char16_t *strings, wrap the data in a UnicodeString
      * using one of the aliasing constructors, such as
-     * <code>UnicodeString(UBool isTerminated, const UChar *text, int32_t textLength);</code>
+     * <code>UnicodeString(UBool isTerminated, const char16_t *text, int32_t textLength);</code>
      * or in a UText, using
-     * <code>utext_openUChars(UText *ut, const UChar *text, int64_t textLength, UErrorCode *status);</code>
+     * <code>utext_openUChars(UText *ut, const char16_t *text, int64_t textLength, UErrorCode *status);</code>
      *
      */
-    RegexMatcher(const UnicodeString &regexp, const UChar *input,
+    RegexMatcher(const UnicodeString &regexp, const char16_t *input,
         uint32_t flags, UErrorCode &status);
 public:
 
@@ -1156,17 +1156,17 @@ public:
 private:
     /**
      * Cause a compilation error if an application accidentally attempts to
-     *   reset a matcher with a (UChar *) string as input rather than
+     *   reset a matcher with a (char16_t *) string as input rather than
      *   a UnicodeString.    Avoids a dangling reference to a temporary string.
      * <p>
-     * To efficiently work with UChar *strings, wrap the data in a UnicodeString
+     * To efficiently work with char16_t *strings, wrap the data in a UnicodeString
      * using one of the aliasing constructors, such as
-     * <code>UnicodeString(UBool isTerminated, const UChar *text, int32_t textLength);</code>
+     * <code>UnicodeString(UBool isTerminated, const char16_t *text, int32_t textLength);</code>
      * or in a UText, using
-     * <code>utext_openUChars(UText *ut, const UChar *text, int64_t textLength, UErrorCode *status);</code>
+     * <code>utext_openUChars(UText *ut, const char16_t *text, int64_t textLength, UErrorCode *status);</code>
      *
      */
-    RegexMatcher &reset(const UChar *input);
+    RegexMatcher &reset(const char16_t *input);
 public:
 
    /**
index 6bb6c74..80b2929 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index e91d206..09d9620 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************
@@ -230,6 +230,7 @@ typedef enum UDateDirection {
 
 U_NAMESPACE_BEGIN
 
+class BreakIterator;
 class RelativeDateTimeCacheData;
 class SharedNumberFormat;
 class SharedPluralRules;
@@ -414,7 +415,6 @@ public:
             UnicodeString& appendTo,
             UErrorCode& status) const;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Format a combination of URelativeDateTimeUnit and numeric offset
      * using a numeric style, e.g. "1 week ago", "in 1 week",
@@ -430,7 +430,7 @@ public:
      *                  appended.
      * @param status    ICU error code returned here.
      * @return          appendTo
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UnicodeString& formatNumeric(
             double offset,
@@ -453,14 +453,13 @@ public:
      *                  appended.
      * @param status    ICU error code returned here.
      * @return          appendTo
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UnicodeString& format(
             double offset,
             URelativeDateTimeUnit unit,
             UnicodeString& appendTo,
             UErrorCode& status) const;
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Combines a relative date string and a time string in this object's
index 0035a6e..15023d5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 0acfcce..65f7f10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 37a8f2b..08e9d44 100755 (executable)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d71fe36..5b80263 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index e6cf28d..4733e75 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 1997-2016, International Business Machines Corporation and
@@ -1170,7 +1170,7 @@ public:
      * @param field The UDateFormatField to get
      * @stable ICU 54
      */
-    const NumberFormat * getNumberFormatForField(UChar field) const;
+    const NumberFormat * getNumberFormatForField(char16_t field) const;
 
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -1262,7 +1262,7 @@ private:
      *                  succeeds.
      */
     void subFormat(UnicodeString &appendTo,
-                   UChar ch,
+                   char16_t ch,
                    int32_t count,
                    UDisplayContext capitalizationContext,
                    int32_t fieldNum,
@@ -1294,7 +1294,7 @@ private:
      * Return true if the given format character, occuring count
      * times, represents a numeric field.
      */
-    static UBool isNumeric(UChar formatChar, int32_t count);
+    static UBool isNumeric(char16_t formatChar, int32_t count);
 
     /**
      * Returns TRUE if the patternOffset is at the start of a numeric field.
@@ -1412,7 +1412,7 @@ private:
      * @return the new start position if matching succeeded; a negative number
      * indicating matching failure, otherwise.
      */
-    int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count,
+    int32_t subParse(const UnicodeString& text, int32_t& start, char16_t ch, int32_t count,
                      UBool obeyCount, UBool allowNegative, UBool ambiguousYear[], int32_t& saveHebrewMonth, Calendar& cal,
                      int32_t patLoc, MessageFormat * numericLeapMonthFormatter, UTimeZoneFormatTimeType *tzTimeType, SimpleDateFormatMutableNFs &mutableNFs,
                      int32_t *dayPeriod=NULL) const;
@@ -1523,12 +1523,12 @@ private:
     /**
      * Map calendar field letter into calendar field level.
      */
-    static int32_t getLevelFromChar(UChar ch);
+    static int32_t getLevelFromChar(char16_t ch);
 
     /**
      * Tell if a character can be used to define a field in a format string.
      */
-    static UBool isSyntaxChar(UChar ch);
+    static UBool isSyntaxChar(char16_t ch);
 
     /**
      * The formatting pattern for this formatter.
index 814e29c..1f42460 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
index ec50151..57b5b32 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c48ea38..24ba213 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -308,8 +308,8 @@ public:
     * than target
     * @stable ICU 2.6
     */
-    virtual UCollationResult compare(const UChar* source, int32_t sourceLength,
-                                     const UChar* target, int32_t targetLength,
+    virtual UCollationResult compare(const char16_t* source, int32_t sourceLength,
+                                     const char16_t* target, int32_t targetLength,
                                      UErrorCode &status) const;
 
     /**
@@ -377,7 +377,7 @@ public:
      * @see CollationKey
      * @stable ICU 2.0
      */
-    virtual CollationKey& getCollationKey(const UChar *source,
+    virtual CollationKey& getCollationKey(const char16_t *source,
                                           int32_t sourceLength,
                                           CollationKey& key,
                                           UErrorCode& status) const;
@@ -552,7 +552,7 @@ public:
      * the top of one of the supported reordering groups,
      * and it must not be beyond the last of those groups.
      * See setMaxVariable().
-     * @param varTop one or more (if contraction) UChars to which the variable top should be set
+     * @param varTop one or more (if contraction) char16_ts to which the variable top should be set
      * @param len length of variable top string. If -1 it is considered to be zero terminated.
      * @param status error code. If error code is set, the return value is undefined. Errors set by this function are: <br>
      *    U_CE_NOT_FOUND_ERROR if more than one character was passed and there is no such contraction<br>
@@ -561,7 +561,7 @@ public:
      * @return variable top primary weight
      * @deprecated ICU 53 Call setMaxVariable() instead.
      */
-    virtual uint32_t setVariableTop(const UChar *varTop, int32_t len, UErrorCode &status);
+    virtual uint32_t setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &status);
 
     /**
      * Sets the variable top to the primary weight of the specified string.
@@ -570,7 +570,7 @@ public:
      * the top of one of the supported reordering groups,
      * and it must not be beyond the last of those groups.
      * See setMaxVariable().
-     * @param varTop a UnicodeString size 1 or more (if contraction) of UChars to which the variable top should be set
+     * @param varTop a UnicodeString size 1 or more (if contraction) of char16_ts to which the variable top should be set
      * @param status error code. If error code is set, the return value is undefined. Errors set by this function are: <br>
      *    U_CE_NOT_FOUND_ERROR if more than one character was passed and there is no such contraction<br>
      *    U_ILLEGAL_ARGUMENT_ERROR if the variable top is beyond
@@ -631,7 +631,7 @@ public:
                                int32_t resultLength) const;
 
     /**
-     * Get the sort key as an array of bytes from a UChar buffer.
+     * Get the sort key as an array of bytes from a char16_t buffer.
      *
      * Note that sort keys are often less efficient than simply doing comparison.
      * For more details, see the ICU User Guide.
@@ -646,7 +646,7 @@ public:
      * @return Number of bytes needed for storing the sort key
      * @stable ICU 2.2
      */
-    virtual int32_t getSortKey(const UChar *source, int32_t sourceLength,
+    virtual int32_t getSortKey(const char16_t *source, int32_t sourceLength,
                                uint8_t *result, int32_t resultLength) const;
 
     /**
@@ -821,17 +821,17 @@ private:
     void adoptTailoring(CollationTailoring *t, UErrorCode &errorCode);
 
     // Both lengths must be <0 or else both must be >=0.
-    UCollationResult doCompare(const UChar *left, int32_t leftLength,
-                               const UChar *right, int32_t rightLength,
+    UCollationResult doCompare(const char16_t *left, int32_t leftLength,
+                               const char16_t *right, int32_t rightLength,
                                UErrorCode &errorCode) const;
     UCollationResult doCompare(const uint8_t *left, int32_t leftLength,
                                const uint8_t *right, int32_t rightLength,
                                UErrorCode &errorCode) const;
 
-    void writeSortKey(const UChar *s, int32_t length,
+    void writeSortKey(const char16_t *s, int32_t length,
                       SortKeyByteSink &sink, UErrorCode &errorCode) const;
 
-    void writeIdenticalLevel(const UChar *s, const UChar *limit,
+    void writeIdenticalLevel(const char16_t *s, const char16_t *limit,
                              SortKeyByteSink &sink, UErrorCode &errorCode) const;
 
     const CollationSettings &getDefaultSettings() const;
index 8cfe7e5..83dee31 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*************************************************************************
 * Copyright (c) 1997-2016, International Business Machines Corporation
@@ -863,7 +863,7 @@ private:
      * @param id zone id string
      * @return the pointer of the ID resource, or NULL.
      */
-    static const UChar* findID(const UnicodeString& id);
+    static const char16_t* findID(const UnicodeString& id);
 
     /**
      * Resolve a link in Olson tzdata.  When the given id is known and it's not a link,
@@ -873,7 +873,7 @@ private:
      * @param id zone id string
      * @return the dereferenced zone or NULL
      */
-    static const UChar* dereferOlsonLink(const UnicodeString& id);
+    static const char16_t* dereferOlsonLink(const UnicodeString& id);
 
     /**
      * Returns the region code associated with the given zone,
@@ -881,7 +881,7 @@ private:
      * @param id zone id string
      * @return the region associated with the given zone
      */
-    static const UChar* getRegion(const UnicodeString& id);
+    static const char16_t* getRegion(const UnicodeString& id);
 
   public:
 #ifndef U_HIDE_INTERNAL_API
@@ -893,7 +893,7 @@ private:
      * @return the region associated with the given zone
      * @internal
      */
-    static const UChar* getRegion(const UnicodeString& id, UErrorCode& status);
+    static const char16_t* getRegion(const UnicodeString& id, UErrorCode& status);
 #endif  /* U_HIDE_INTERNAL_API */
 
   private:
index a19a1f3..fa59f10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index ff132f8..274bfa6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index b90d4a0..8f24585 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index b068791..bccba54 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -1319,7 +1319,7 @@ inline int32_t Transliterator::getMaximumContextLength(void) const {
 inline void Transliterator::setID(const UnicodeString& id) {
     ID = id;
     // NUL-terminate the ID string, which is a non-aliased copy.
-    ID.append((UChar)0);
+    ID.append((char16_t)0);
     ID.truncate(ID.length()-1);
 }
 
index faf4b81..724ff4d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -942,7 +942,7 @@ private:
      * @param parsedLen the parsed length, or 0 on failure.
      * @return the parsed offset in milliseconds.
      */
-    int32_t parseDefaultOffsetFields(const UnicodeString& text, int32_t start, UChar separator,
+    int32_t parseDefaultOffsetFields(const UnicodeString& text, int32_t start, char16_t separator,
         int32_t& parsedLen) const;
 
     /**
@@ -982,7 +982,7 @@ private:
      * @param maxFields The maximum fields
      * @return The offset string
      */
-    static UnicodeString& formatOffsetWithAsciiDigits(int32_t offset, UChar sep,
+    static UnicodeString& formatOffsetWithAsciiDigits(int32_t offset, char16_t sep,
         OffsetFields minFields, OffsetFields maxFields, UnicodeString& result);
 
     /**
@@ -1012,7 +1012,7 @@ private:
      * @param maxFields The maximum Fields to be parsed
      * @return Parsed offset, 0 or positive number.
      */
-    static int32_t parseAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, UChar sep,
+    static int32_t parseAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, char16_t sep,
         OffsetFields minFields, OffsetFields maxFields);
 
     /**
index 8861a7d..60f0e5e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 51b3ae1..1647fda 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 53c34fe..a476c68 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 29c0845..c765e78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -425,8 +425,8 @@ enum UCalendarDateFields {
    */
   UCAL_IS_LEAP_MONTH,
 
-    // Do not conditionalize with #ifndef U_HIDE_DEPRECATED_API,
-    // it is needed for layout of Calendar, DateFormat, and other objects
+    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
+     * it is needed for layout of Calendar, DateFormat, and other objects */
     /**
      * One more than the highest normal UCalendarDateFields value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
index eae88f8..ecabd9e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -131,7 +131,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
   UCOL_ATTRIBUTE_VALUE_COUNT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } UColAttributeValue;
 
 /**
@@ -204,7 +204,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UCOL_REORDER_CODE_LIMIT         = 0x1005
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } UColReorderCode;
 
 /**
@@ -342,8 +342,8 @@ typedef enum {
       */
      UCOL_NUMERIC_COLLATION = UCOL_STRENGTH + 2, 
 
-    // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
-    // it is needed for layout of RuleBasedCollator object.
+    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
+     * it is needed for layout of RuleBasedCollator object. */
     /**
      * One more than the highest normal UColAttribute value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
@@ -1067,7 +1067,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UCOL_BOUND_VALUE_COUNT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } UColBoundMode;
 
 /**
index b841049..4e967af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 470cbab..52ed5ad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  **********************************************************************
  *   file name:  ucsdet.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   indentation:4
  *
  *   created on: 2005Aug04
  * in a single language, and a minimum of a few hundred bytes worth of plain text
  * in the language are needed.  The detection process will attempt to
  * ignore html or xml style markup that could otherwise obscure the content.
+ * <p>
+ * An alternative to the ICU Charset Detector is the
+ * Compact Encoding Detector, https://github.com/google/compact_enc_det.
+ * It often gives more accurate results, especially with short input samples.
  */
  
 
@@ -395,7 +399,7 @@ ucsdet_getDetectableCharsets(const UCharsetDetector *ucsd,  UErrorCode *status);
 /**
   * Enable or disable individual charset encoding.
   * A name of charset encoding must be included in the names returned by
-  * {@link #getAllDetectableCharsets()}.
+  * {@link #ucsdet_getAllDetectableCharsets()}.
   *
   * @param ucsd a Charset detector.
   * @param encoding encoding the name of charset encoding.
index cacfbe8..90aff20 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -763,21 +763,19 @@ typedef enum UDateFormatField {
     UDAT_RELATED_YEAR_FIELD = 34,
 #endif  /* U_HIDE_INTERNAL_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * FieldPosition selector for 'b' field alignment.
      * Displays midnight and noon for 12am and 12pm, respectively, if available;
      * otherwise fall back to AM / PM.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_AM_PM_MIDNIGHT_NOON_FIELD = 35,
 
     /* FieldPosition selector for 'B' field alignment.
      * Displays flexible day periods, such as "in the morning", if available.
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_FLEXIBLE_DAY_PERIOD_FIELD = 36,
-#endif /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -797,7 +795,7 @@ typedef enum UDateFormatField {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UDAT_FIELD_COUNT = 38
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } UDateFormatField;
 
 
@@ -819,7 +817,7 @@ typedef enum UDateFormatField {
  * of error (e.g., the input field is UDAT_FIELD_COUNT).
  * @stable ICU 4.4
  */
-U_STABLE UCalendarDateFields U_EXPORT2
+U_CAPI UCalendarDateFields U_EXPORT2
 udat_toCalendarDateField(UDateFormatField field);
 
 
@@ -851,7 +849,7 @@ udat_toCalendarDateField(UDateFormatField field);
  * an error occurred.
  * @stable ICU 2.0
  */
-U_STABLE UDateFormat* U_EXPORT2
+U_CAPI UDateFormat* U_EXPORT2
 udat_open(UDateFormatStyle  timeStyle,
           UDateFormatStyle  dateStyle,
           const char        *locale,
@@ -868,7 +866,7 @@ udat_open(UDateFormatStyle  timeStyle,
 * @param format The formatter to close.
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_close(UDateFormat* format);
 
 
@@ -902,8 +900,8 @@ typedef enum UDateFormatBooleanAttribute {
      */
     UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH = 3,
 
-    // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
-    // it is needed for layout of DateFormat object.
+    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
+     * it is needed for layout of DateFormat object. */
     /**
      * One more than the highest normal UDateFormatBooleanAttribute value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
@@ -921,7 +919,7 @@ typedef enum UDateFormatBooleanAttribute {
  * @return The value of attr.
  * @stable ICU 53
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 udat_getBooleanAttribute(const UDateFormat* fmt, UDateFormatBooleanAttribute attr, UErrorCode* status);
 
 /**
@@ -934,7 +932,7 @@ udat_getBooleanAttribute(const UDateFormat* fmt, UDateFormatBooleanAttribute att
  * @param status A pointer to an UErrorCode to receive any errors
  * @stable ICU 53
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_setBooleanAttribute(UDateFormat *fmt, UDateFormatBooleanAttribute attr, UBool newValue, UErrorCode* status);
 
 
@@ -966,7 +964,7 @@ U_NAMESPACE_END
  * @return A pointer to a UDateFormat identical to fmt.
  * @stable ICU 2.0
  */
-U_STABLE UDateFormat* U_EXPORT2
+U_CAPI UDateFormat* U_EXPORT2
 udat_clone(const UDateFormat *fmt,
        UErrorCode *status);
 
@@ -988,7 +986,7 @@ udat_clone(const UDateFormat *fmt,
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_format(    const    UDateFormat*    format,
                         UDate           dateToFormat,
                         UChar*          result,
@@ -1018,7 +1016,7 @@ udat_format(    const    UDateFormat*    format,
 * @see UFieldPosition
 * @stable ICU 55
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_formatCalendar(    const UDateFormat*  format,
                         UCalendar*      calendar,
                         UChar*          result,
@@ -1053,7 +1051,7 @@ udat_formatCalendar(    const UDateFormat*  format,
 * @see UFieldPositionIterator
 * @stable ICU 55
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_formatForFields(   const UDateFormat* format,
                         UDate           dateToFormat,
                         UChar*          result,
@@ -1091,7 +1089,7 @@ udat_formatForFields(   const UDateFormat* format,
 * @see UFieldPositionIterator
 * @stable ICU 55
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_formatCalendarForFields( const UDateFormat* format,
                         UCalendar*      calendar,
                         UChar*          result,
@@ -1125,7 +1123,7 @@ udat_formatCalendarForFields( const UDateFormat* format,
 * @see udat_format
 * @stable ICU 2.0
 */
-U_STABLE UDate U_EXPORT2
+U_CAPI UDate U_EXPORT2
 udat_parse(const    UDateFormat*    format,
            const    UChar*          text,
                     int32_t         textLength,
@@ -1153,7 +1151,7 @@ udat_parse(const    UDateFormat*    format,
 * @see udat_format
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_parseCalendar(const    UDateFormat*    format,
                             UCalendar*      calendar,
                    const    UChar*          text,
@@ -1170,7 +1168,7 @@ udat_parseCalendar(const    UDateFormat*    format,
 * @see udat_setLenient
 * @stable ICU 2.0
 */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 udat_isLenient(const UDateFormat* fmt);
 
 /**
@@ -1182,7 +1180,7 @@ udat_isLenient(const UDateFormat* fmt);
 * @see dat_isLenient
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_setLenient(    UDateFormat*    fmt,
                     UBool          isLenient);
 
@@ -1195,7 +1193,7 @@ udat_setLenient(    UDateFormat*    fmt,
 * @see udat_setCalendar
 * @stable ICU 2.0
 */
-U_STABLE const UCalendar* U_EXPORT2
+U_CAPI const UCalendar* U_EXPORT2
 udat_getCalendar(const UDateFormat* fmt);
 
 /**
@@ -1207,7 +1205,7 @@ udat_getCalendar(const UDateFormat* fmt);
 * @see udat_setCalendar
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_setCalendar(            UDateFormat*    fmt,
                     const   UCalendar*      calendarToSet);
 
@@ -1220,7 +1218,7 @@ udat_setCalendar(            UDateFormat*    fmt,
 * @see udat_setNumberFormat
 * @stable ICU 2.0
 */
-U_STABLE const UNumberFormat* U_EXPORT2
+U_CAPI const UNumberFormat* U_EXPORT2
 udat_getNumberFormat(const UDateFormat* fmt);
 
 /**
@@ -1232,7 +1230,7 @@ udat_getNumberFormat(const UDateFormat* fmt);
 * @see udat_setNumberFormatForField
 * @stable ICU 54
 */
-U_STABLE const UNumberFormat* U_EXPORT2
+U_CAPI const UNumberFormat* U_EXPORT2
 udat_getNumberFormatForField(const UDateFormat* fmt, UChar field);
 
 /**
@@ -1250,7 +1248,7 @@ udat_getNumberFormatForField(const UDateFormat* fmt, UChar field);
 * @see udat_getNumberFormatForField
 * @stable ICU 54
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_adoptNumberFormatForFields(  UDateFormat* fmt,
                             const UChar* fields,
                                   UNumberFormat*  numberFormatToSet,
@@ -1267,7 +1265,7 @@ udat_adoptNumberFormatForFields(  UDateFormat* fmt,
 * @see udat_setNumberFormatForField
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_setNumberFormat(            UDateFormat*    fmt,
                         const   UNumberFormat*  numberFormatToSet);
 /**
@@ -1279,7 +1277,7 @@ udat_setNumberFormat(            UDateFormat*    fmt,
 * @see udat_getNumberFormat
 * @stable ICU 54
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_adoptNumberFormat(            UDateFormat*    fmt,
                                    UNumberFormat*  numberFormatToAdopt);
 /**
@@ -1291,7 +1289,7 @@ udat_adoptNumberFormat(            UDateFormat*    fmt,
 * @see udat_countAvailable
 * @stable ICU 2.0
 */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 udat_getAvailable(int32_t localeIndex);
 
 /**
@@ -1302,7 +1300,7 @@ udat_getAvailable(int32_t localeIndex);
 * @see udat_getAvailable
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_countAvailable(void);
 
 /**
@@ -1315,7 +1313,7 @@ udat_countAvailable(void);
 * @see udat_Set2DigitYearStart
 * @stable ICU 2.0
 */
-U_STABLE UDate U_EXPORT2
+U_CAPI UDate U_EXPORT2
 udat_get2DigitYearStart(    const   UDateFormat     *fmt,
                                     UErrorCode      *status);
 
@@ -1329,7 +1327,7 @@ udat_get2DigitYearStart(    const   UDateFormat     *fmt,
 * @see udat_Set2DigitYearStart
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_set2DigitYearStart(    UDateFormat     *fmt,
                             UDate           d,
                             UErrorCode      *status);
@@ -1346,7 +1344,7 @@ udat_set2DigitYearStart(    UDateFormat     *fmt,
 * @see udat_applyPattern
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_toPattern(    const   UDateFormat     *fmt,
                         UBool          localized,
                         UChar           *result,
@@ -1363,7 +1361,7 @@ udat_toPattern(    const   UDateFormat     *fmt,
 * @see udat_toPattern
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_applyPattern(            UDateFormat     *format,
                             UBool          localized,
                     const   UChar           *pattern,
@@ -1489,7 +1487,7 @@ typedef struct UDateFormatSymbols UDateFormatSymbols;
 * @see udat_setSymbols
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_getSymbols(const   UDateFormat             *fmt,
                         UDateFormatSymbolType   type,
                         int32_t                 symbolIndex,
@@ -1509,7 +1507,7 @@ udat_getSymbols(const   UDateFormat             *fmt,
 * @see udat_setSymbols
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_countSymbols(    const    UDateFormat                *fmt,
                             UDateFormatSymbolType    type);
 
@@ -1528,7 +1526,7 @@ udat_countSymbols(    const    UDateFormat                *fmt,
 * @see udat_countSymbols
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_setSymbols(    UDateFormat             *format,
                     UDateFormatSymbolType   type,
                     int32_t                 symbolIndex,
@@ -1545,7 +1543,7 @@ udat_setSymbols(    UDateFormat             *format,
  * @return the locale name
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 udat_getLocaleByType(const UDateFormat *fmt,
                      ULocDataLocaleType type,
                      UErrorCode* status);
@@ -1558,7 +1556,7 @@ udat_getLocaleByType(const UDateFormat *fmt,
  * @param status A pointer to an UErrorCode to receive any errors
  * @stable ICU 51
  */
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_setContext(UDateFormat* fmt, UDisplayContext value, UErrorCode* status);
 
 /**
@@ -1570,7 +1568,7 @@ udat_setContext(UDateFormat* fmt, UDisplayContext value, UErrorCode* status);
  * @return The UDisplayContextValue for the specified type.
  * @stable ICU 53
  */
-U_STABLE UDisplayContext U_EXPORT2
+U_CAPI UDisplayContext U_EXPORT2
 udat_getContext(const UDateFormat* fmt, UDisplayContextType type, UErrorCode* status);
 
 #ifndef U_HIDE_INTERNAL_API
index 582c437..9300ddc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 47d3afb..76baa3d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  udatpg.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -86,8 +86,8 @@ typedef enum UDateTimePatternField {
     /** @stable ICU 3.8 */
     UDATPG_ZONE_FIELD,
 
-    // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
-    // it is needed for layout of DateTimePatternGenerator object.
+    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
+     * it is needed for layout of DateTimePatternGenerator object. */
     /**
      * One more than the highest normal UDateTimePatternField value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
index 8dfa3df..3ae73b6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index e4683d5..9ba2a36 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -57,7 +57,7 @@ typedef enum UFormattableType {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UFMT_COUNT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } UFormattableType;
 
 
index c1e591e..d015a23 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index ecf6fdc..de8d853 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *                                                                            *
 ******************************************************************************
 *   file name:  ulocdata.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -55,7 +55,7 @@ typedef enum ULocaleDataExemplarSetType  {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     ULOCDATA_ES_COUNT=4
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } ULocaleDataExemplarSetType;
 
 /** The possible types of delimiters.
@@ -76,7 +76,7 @@ typedef enum ULocaleDataDelimiterType {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     ULOCDATA_DELIMITER_COUNT = 4
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } ULocaleDataDelimiterType;
 
 /**
@@ -207,7 +207,7 @@ typedef enum UMeasurementSystem {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UMS_LIMIT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } UMeasurementSystem;
 
 /**
index b5f2ae9..5d235e4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -8,7 +8,7 @@
  ********************************************************************
  *
  *   file name:  umsg.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 1e98ff6..ddcb0ad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 34d5442..065ce49 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -25,6 +25,7 @@
 #include "unicode/parseerr.h"
 #include "unicode/uformattable.h"
 #include "unicode/udisplaycontext.h"
+#include "unicode/ufieldpositer.h"
 
 /**
  * \file
@@ -249,7 +250,7 @@ typedef enum UNumberFormatStyle {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UNUM_FORMAT_STYLE_COUNT=17,
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 
     /**
      * Default format
@@ -326,8 +327,8 @@ enum UCurrencySpacing {
     /** @stable ICU 4.8 */
     UNUM_CURRENCY_INSERT,
 
-    // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
-    // it is needed for layout of DecimalFormatSymbols object.
+    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
+     * it is needed for layout of DecimalFormatSymbols object. */
     /**
      * One more than the highest normal UCurrencySpacing value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
@@ -371,7 +372,7 @@ typedef enum UNumberFormatFields {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UNUM_FIELD_COUNT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } UNumberFormatFields;
 
 
@@ -553,6 +554,59 @@ unum_formatDouble(    const    UNumberFormat*  fmt,
             UFieldPosition  *pos, /* 0 if ignore */
             UErrorCode*     status);
 
+#ifndef U_HIDE_DRAFT_API
+/**
+* Format a double using a UNumberFormat according to the UNumberFormat's locale,
+* and initialize a UFieldPositionIterator that enumerates the subcomponents of
+* the resulting string.
+*
+* @param format
+*          The formatter to use.
+* @param number
+*          The number to format.
+* @param result
+*          A pointer to a buffer to receive the NULL-terminated formatted
+*          number. If the formatted number fits into dest but cannot be
+*          NULL-terminated (length == resultLength) then the error code is set
+*          to U_STRING_NOT_TERMINATED_WARNING. If the formatted number doesn't
+*          fit into result then the error code is set to
+*          U_BUFFER_OVERFLOW_ERROR.
+* @param resultLength
+*          The maximum size of result.
+* @param fpositer
+*          A pointer to a UFieldPositionIterator created by {@link #ufieldpositer_open}
+*          (may be NULL if field position information is not needed, but in this
+*          case it's preferable to use {@link #unum_formatDouble}). Iteration
+*          information already present in the UFieldPositionIterator is deleted,
+*          and the iterator is reset to apply to the fields in the formatted
+*          string created by this function call. The field values and indexes
+*          returned by {@link #ufieldpositer_next} represent fields denoted by
+*          the UNumberFormatFields enum. Fields are not returned in a guaranteed
+*          order. Fields cannot overlap, but they may nest. For example, 1234
+*          could format as "1,234" which might consist of a grouping separator
+*          field for ',' and an integer field encompassing the entire string.
+* @param status
+*          A pointer to an UErrorCode to receive any errors
+* @return
+*          The total buffer size needed; if greater than resultLength, the
+*          output was truncated.
+* @see unum_formatDouble
+* @see unum_parse
+* @see unum_parseDouble
+* @see UFieldPositionIterator
+* @see UNumberFormatFields
+* @draft ICU 59
+*/
+U_DRAFT int32_t U_EXPORT2
+unum_formatDoubleForFields(const UNumberFormat* format,
+                           double number,
+                           UChar* result,
+                           int32_t resultLength,
+                           UFieldPositionIterator* fpositer,
+                           UErrorCode* status);
+
+#endif  /* U_HIDE_DRAFT_API */
+
 /**
 * Format a decimal number using a UNumberFormat.
 * The number will be formatted according to the UNumberFormat's locale.
@@ -1291,7 +1345,7 @@ typedef enum UNumberFormatSymbol {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
   UNUM_FORMAT_SYMBOL_COUNT = 28
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } UNumberFormatSymbol;
 
 /**
index 46289c0..795ec60 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 52e34d8..99d93a4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
 #if !UCONFIG_NO_FORMATTING
 
 #include "unicode/localpointer.h"
+#include "unicode/uenum.h"
+#ifndef U_HIDE_INTERNAL_API
+#include "unicode/unum.h"
+#endif  /* U_HIDE_INTERNAL_API */
 
 /**
  * \file
@@ -60,7 +64,7 @@ enum UPluralType {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UPLURAL_TYPE_COUNT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 };
 /**
  * @stable ICU 50
@@ -83,7 +87,7 @@ typedef struct UPluralRules UPluralRules;  /**< C typedef for struct UPluralRule
  * @return A UPluralRules for the specified locale, or NULL if an error occurred.
  * @stable ICU 4.8
  */
-U_STABLE UPluralRules* U_EXPORT2
+U_CAPI UPluralRules* U_EXPORT2
 uplrules_open(const char *locale, UErrorCode *status);
 
 /**
@@ -95,7 +99,7 @@ uplrules_open(const char *locale, UErrorCode *status);
  * @return A UPluralRules for the specified locale, or NULL if an error occurred.
  * @stable ICU 50
  */
-U_DRAFT UPluralRules* U_EXPORT2
+U_CAPI UPluralRules* U_EXPORT2
 uplrules_openForType(const char *locale, UPluralType type, UErrorCode *status);
 
 /**
@@ -103,7 +107,7 @@ uplrules_openForType(const char *locale, UPluralType type, UErrorCode *status);
  * @param uplrules The UPluralRules object to close.
  * @stable ICU 4.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplrules_close(UPluralRules *uplrules);
 
 
@@ -138,12 +142,55 @@ U_NAMESPACE_END
  * @return The length of keyword.
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uplrules_select(const UPluralRules *uplrules,
                double number,
                UChar *keyword, int32_t capacity,
                UErrorCode *status);
 
+#ifndef U_HIDE_INTERNAL_API
+/**
+ * Given a number, returns the keyword of the first rule that applies to the
+ * number, according to the UPluralRules object and given the number format
+ * specified by the UNumberFormat object.
+ * Note: This internal preview interface may be removed in the future if
+ * an architecturally cleaner solution reaches stable status.
+ * @param uplrules The UPluralRules object specifying the rules.
+ * @param number The number for which the rule has to be determined.
+ * @param fmt The UNumberFormat specifying how the number will be formatted
+ *        (this can affect the plural form, e.g. "1 dollar" vs "1.0 dollars").
+ *        If this is NULL, the function behaves like uplrules_select.
+ * @param keyword The keyword of the rule that applies to number.
+ * @param capacity The capacity of the keyword buffer.
+ * @param status A pointer to a UErrorCode to receive any errors.
+ * @return The length of keyword.
+ * @internal ICU 59 technology preview, may be removed in the future
+ */
+U_INTERNAL int32_t U_EXPORT2
+uplrules_selectWithFormat(const UPluralRules *uplrules,
+                          double number,
+                          const UNumberFormat *fmt,
+                          UChar *keyword, int32_t capacity,
+                          UErrorCode *status);
+
+#endif  /* U_HIDE_INTERNAL_API */
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Creates a string enumeration of all plural rule keywords used in this
+ * UPluralRules object. The rule "other" is always present by default.
+ * @param uplrules The UPluralRules object specifying the rules for
+ *        a given locale.
+ * @param status A pointer to a UErrorCode to receive any errors.
+ * @return a string enumeration over plural rule keywords, or NULL
+ * upon error. The caller is responsible for closing the result.
+ * @draft ICU 59
+ */
+U_DRAFT UEnumeration* U_EXPORT2
+uplrules_getKeywords(const UPluralRules *uplrules,
+                     UErrorCode *status);
+#endif  /* U_HIDE_DRAFT_API */
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
 #endif
index ab85719..f3e8214 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  uregex.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   indentation:4
 *
 *   created on: 2004mar09
index 1b0f146..a5de496 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
@@ -113,7 +113,7 @@ typedef enum URegionType {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     URGN_LIMIT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } URegionType;
 
 #if !UCONFIG_NO_FORMATTING
index 40b3d59..0fde188 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
@@ -34,7 +34,7 @@
  * for determining which unit to use, such as deciding between "in 7 days"
  * and "in 1 week".
  *
- * @draft ICU 57
+ * @stable ICU 57
  */
 
 /**
@@ -66,104 +66,103 @@ typedef enum UDateRelativeDateTimeFormatterStyle {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UDAT_STYLE_COUNT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } UDateRelativeDateTimeFormatterStyle;
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Represents the unit for formatting a relative date. e.g "in 5 days"
  * or "next year"
- * @draft ICU 57
+ * @stable ICU 57
  */
 typedef enum URelativeDateTimeUnit {
     /**
      * Specifies that relative unit is year, e.g. "last year",
      * "in 5 years". 
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_YEAR,
     /**
      * Specifies that relative unit is quarter, e.g. "last quarter",
      * "in 5 quarters".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_QUARTER,
     /**
      * Specifies that relative unit is month, e.g. "last month",
      * "in 5 months".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_MONTH,
     /**
      * Specifies that relative unit is week, e.g. "last week",
      * "in 5 weeks".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_WEEK,
     /**
      * Specifies that relative unit is day, e.g. "yesterday",
      * "in 5 days".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_DAY,
     /**
      * Specifies that relative unit is hour, e.g. "1 hour ago",
      * "in 5 hours".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_HOUR,
     /**
      * Specifies that relative unit is minute, e.g. "1 minute ago",
      * "in 5 minutes".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_MINUTE,
     /**
      * Specifies that relative unit is second, e.g. "1 second ago",
      * "in 5 seconds".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_SECOND,
     /**
      * Specifies that relative unit is Sunday, e.g. "last Sunday",
      * "this Sunday", "next Sunday", "in 5 Sundays".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_SUNDAY,
     /**
      * Specifies that relative unit is Monday, e.g. "last Monday",
      * "this Monday", "next Monday", "in 5 Mondays".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_MONDAY,
     /**
      * Specifies that relative unit is Tuesday, e.g. "last Tuesday",
      * "this Tuesday", "next Tuesday", "in 5 Tuesdays".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_TUESDAY,
     /**
      * Specifies that relative unit is Wednesday, e.g. "last Wednesday",
      * "this Wednesday", "next Wednesday", "in 5 Wednesdays".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_WEDNESDAY,
     /**
      * Specifies that relative unit is Thursday, e.g. "last Thursday",
      * "this Thursday", "next Thursday", "in 5 Thursdays". 
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_THURSDAY,
     /**
      * Specifies that relative unit is Friday, e.g. "last Friday",
      * "this Friday", "next Friday", "in 5 Fridays".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_FRIDAY,
     /**
      * Specifies that relative unit is Saturday, e.g. "last Saturday",
      * "this Saturday", "next Saturday", "in 5 Saturdays".
-     * @draft ICU 57
+     * @stable ICU 57
      */
     UDAT_REL_UNIT_SATURDAY,
 #ifndef U_HIDE_DEPRECATED_API
@@ -172,18 +171,15 @@ typedef enum URelativeDateTimeUnit {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UDAT_REL_UNIT_COUNT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } URelativeDateTimeUnit;
-#endif  /* U_HIDE_DRAFT_API */
-
-#ifndef U_HIDE_DRAFT_API
 
 /**
  * Opaque URelativeDateTimeFormatter object for use in C programs.
- * @draft ICU 57
+ * @stable ICU 57
  */
 struct URelativeDateTimeFormatter;
-typedef struct URelativeDateTimeFormatter URelativeDateTimeFormatter;  /**< C typedef for struct URelativeDateTimeFormatter. @draft ICU 57 */
+typedef struct URelativeDateTimeFormatter URelativeDateTimeFormatter;  /**< C typedef for struct URelativeDateTimeFormatter. @stable ICU 57 */
 
 
 /**
@@ -216,9 +212,9 @@ typedef struct URelativeDateTimeFormatter URelativeDateTimeFormatter;  /**< C ty
  * @return
  *          A pointer to a URelativeDateTimeFormatter object for the specified locale,
  *          or NULL if an error occurred.
- * @draft ICU 57
+ * @stable ICU 57
  */
-U_DRAFT URelativeDateTimeFormatter* U_EXPORT2
+U_STABLE URelativeDateTimeFormatter* U_EXPORT2
 ureldatefmt_open( const char*          locale,
                   UNumberFormat*       nfToAdopt,
                   UDateRelativeDateTimeFormatterStyle width,
@@ -229,9 +225,9 @@ ureldatefmt_open( const char*          locale,
  * Close a URelativeDateTimeFormatter object. Once closed it may no longer be used.
  * @param reldatefmt
  *            The URelativeDateTimeFormatter object to close.
- * @draft ICU 57
+ * @stable ICU 57
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ureldatefmt_close(URelativeDateTimeFormatter *reldatefmt);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -245,7 +241,7 @@ U_NAMESPACE_BEGIN
  *
  * @see LocalPointerBase
  * @see LocalPointer
- * @draft ICU 57
+ * @stable ICU 57
  */
 U_DEFINE_LOCAL_OPEN_POINTER(LocalURelativeDateTimeFormatterPointer, URelativeDateTimeFormatter, ureldatefmt_close);
 
@@ -279,9 +275,9 @@ U_NAMESPACE_END
  * @return
  *          The length of the formatted result; may be greater
  *          than resultCapacity, in which case an error is returned.
- * @draft ICU 57
+ * @stable ICU 57
  */
-U_DRAFT int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 ureldatefmt_formatNumeric( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -315,9 +311,9 @@ ureldatefmt_formatNumeric( const URelativeDateTimeFormatter* reldatefmt,
  * @return
  *          The length of the formatted result; may be greater
  *          than resultCapacity, in which case an error is returned.
- * @draft ICU 57
+ * @stable ICU 57
  */
-U_DRAFT int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 ureldatefmt_format( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -352,9 +348,9 @@ ureldatefmt_format( const URelativeDateTimeFormatter* reldatefmt,
  * @return
  *          The length of the formatted result; may be greater than resultCapacity,
  *          in which case an error is returned.
- * @draft ICU 57
+ * @stable ICU 57
  */
-U_DRAFT int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
                     const UChar *     relativeDateString,
                     int32_t           relativeDateStringLen,
@@ -364,8 +360,6 @@ ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
                     int32_t           resultCapacity,
                     UErrorCode*       status );
 
-#endif  /* U_HIDE_DRAFT_API */
-
 #endif /* !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION */
 
 #endif
index b1d53f5..ebfcdf7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -196,7 +196,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     USEARCH_ATTRIBUTE_COUNT = 3
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } USearchAttribute;
 
 /**
@@ -272,7 +272,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     USEARCH_ATTRIBUTE_VALUE_COUNT
-#endif  // U_HIDE_DEPRECATED_API
+#endif  /* U_HIDE_DEPRECATED_API */
 } USearchAttributeValue;
 
 /* open and close ------------------------------------------------------ */
index 40b7338..6c2ac5e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
@@ -6,7 +6,7 @@
 * and others. All Rights Reserved.
 ***************************************************************************
 *   file name:  uspoof.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8f3c42a..d8b8a2e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -283,10 +283,14 @@ typedef enum UDateTimeScale {
      */
     UDTS_UNIX_MICROSECONDS_TIME,
 
+#ifndef U_HIDE_DEPRECATED_API
     /**
      * The first unused time scale value. The limit of this enum
+     * @deprecated ICU 59 The numeric value may change over time, see ICU ticket #12420.
      */
     UDTS_MAX_SCALE
+#endif  /* U_HIDE_DEPRECATED_API */
+
 } UDateTimeScale;
 
 /**
@@ -423,12 +427,15 @@ typedef enum UTimeScaleValue {
 
 #endif /* U_HIDE_INTERNAL_API */
 
+#ifndef U_HIDE_DEPRECATED_API
     /**
      * The number of time scale values, in other words limit of this enum.
      * 
      * @see utmscale_getTimeScaleValue
+     * @deprecated ICU 59 The numeric value may change over time, see ICU ticket #12420.
      */
     UTSV_MAX_SCALE_VALUE=11
+#endif  /* U_HIDE_DEPRECATED_API */
 
 } UTimeScaleValue;
 
index 9d70eeb..d0f05cf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 75a5fca..18265d3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 01170b4..b8d2661 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -247,6 +247,33 @@ unum_formatDouble(    const    UNumberFormat*  fmt,
   return res.extract(result, resultLength, *status);
 }
 
+U_CAPI int32_t U_EXPORT2
+unum_formatDoubleForFields(const UNumberFormat* format,
+                           double number,
+                           UChar* result,
+                           int32_t resultLength,
+                           UFieldPositionIterator* fpositer,
+                           UErrorCode* status)
+{
+    if (U_FAILURE(*status))
+        return -1;
+
+    if (result == NULL ? resultLength != 0 : resultLength < 0) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return -1;
+    }
+
+    UnicodeString res;
+    if (result != NULL) {
+        // NULL destination for pure preflighting: empty dummy string
+        // otherwise, alias the destination buffer
+        res.setTo(result, 0, resultLength);
+    }
+
+    ((const NumberFormat*)format)->format(number, res, (FieldPositionIterator*)fpositer, *status);
+
+    return res.extract(result, resultLength, *status);
+}
 
 U_CAPI int32_t U_EXPORT2 
 unum_formatDecimal(const    UNumberFormat*  fmt,
index f643e34..4a0d0fa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 5e1eebf..24e74e3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
@@ -15,6 +15,8 @@
 #include "unicode/plurrule.h"
 #include "unicode/locid.h"
 #include "unicode/unistr.h"
+#include "unicode/unum.h"
+#include "unicode/numfmt.h"
 
 U_NAMESPACE_USE
 
@@ -54,5 +56,48 @@ uplrules_select(const UPluralRules *uplrules,
     return result.extract(keyword, capacity, *status);
 }
 
+U_CAPI int32_t U_EXPORT2
+uplrules_selectWithFormat(const UPluralRules *uplrules,
+                          double number,
+                          const UNumberFormat *fmt,
+                          UChar *keyword, int32_t capacity,
+                          UErrorCode *status)
+{
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+    const PluralRules* plrules = reinterpret_cast<const PluralRules*>(uplrules);
+    const NumberFormat* nf = reinterpret_cast<const NumberFormat*>(fmt);
+    if (plrules == NULL || nf == NULL || ((keyword == NULL)? capacity != 0 : capacity < 0)) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+    Formattable obj(number);
+    UnicodeString result = plrules->select(obj, *nf, *status);
+    return result.extract(keyword, capacity, *status);
+}
+
+U_CAPI UEnumeration* U_EXPORT2
+uplrules_getKeywords(const UPluralRules *uplrules,
+                     UErrorCode *status)
+{
+    if (U_FAILURE(*status)) {
+        return NULL;
+    }
+    const PluralRules* plrules = reinterpret_cast<const PluralRules*>(uplrules);
+    if (plrules == NULL) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+    StringEnumeration *senum = plrules->getKeywords(*status);
+    if (U_FAILURE(*status)) {
+        return NULL;
+    }
+    if (senum == NULL) {
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+    return uenum_openFromStringEnumeration(senum, status);
+}
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
index b3e137a..0c26bdf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5c3f6eb..c7d3bcd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8e079ec..79a6237 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 4bb3fc4..645db01 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index febaddc..92b3b0c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
@@ -6,7 +6,7 @@
 * and others. All Rights Reserved.
 ***************************************************************************
 *   file name:  uspoof.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4892b9d..75c52e0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***************************************************************************
@@ -6,7 +6,7 @@
  * and others. All Rights Reserved.
  ***************************************************************************
  *   file name:  uspoof_build.cpp
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 587dc4e..f478afa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  uspoof_conf.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index bc5e4a9..4a4f659 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  uspoof_conf.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a062d3e..745d5e8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 5307670..a6b1e73 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index d587c9e..88b2e21 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 733729f..7598b0e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 505ab81..fd3a05e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0a0205e..85d4b76 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8deb5ea..9a3ec45 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
diff --git a/source/i18n/utmscale.c b/source/i18n/utmscale.c
deleted file mode 100644 (file)
index 5b515f1..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-* Copyright (C) 2004-2012, International Business Machines Corporation and
-* others. All Rights Reserved.
-*******************************************************************************
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_FORMATTING
-
-#include "unicode/utmscale.h"
-
-#define ticks        INT64_C(1)
-#define microseconds (ticks * 10)
-#define milliseconds (microseconds * 1000)
-#define seconds      (milliseconds * 1000)
-#define minutes      (seconds * 60)
-#define hours        (minutes * 60)
-#define days         (hours * 24)
-
-/* Constants generated by ICU4J com.ibm.icu.dev.tool.timescale.GenerateCTimeScaleData. */
-static const int64_t timeScaleTable[UDTS_MAX_SCALE][UTSV_MAX_SCALE_VALUE] = {
-  /*    units             epochOffset                     fromMin                        fromMax                            toMin                        toMax                    epochOffsetP1                epochOffsetM1              unitsRound                    minRound                     maxRound          */
-    {milliseconds, INT64_C(62135596800000),     INT64_C(-984472800485477),     INT64_C(860201606885477),     INT64_C(-9223372036854774999), INT64_C(9223372036854774999), INT64_C(62135596800001),     INT64_C(62135596799999),     INT64_C(5000),         INT64_C(-9223372036854770808), INT64_C(9223372036854770807)},
-    {seconds,      INT64_C(62135596800),        INT64_C(-984472800485),        INT64_C(860201606885),        U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(62135596801),        INT64_C(62135596799),        INT64_C(5000000),      INT64_C(-9223372036849775808), INT64_C(9223372036849775807)},
-    {milliseconds, INT64_C(62135596800000),     INT64_C(-984472800485477),     INT64_C(860201606885477),     INT64_C(-9223372036854774999), INT64_C(9223372036854774999), INT64_C(62135596800001),     INT64_C(62135596799999),     INT64_C(5000),         INT64_C(-9223372036854770808), INT64_C(9223372036854770807)},
-    {ticks,        INT64_C(504911232000000000), U_INT64_MIN,                   INT64_C(8718460804854775807), INT64_C(-8718460804854775808), U_INT64_MAX,                  INT64_C(504911232000000000), INT64_C(504911232000000000), INT64_C(0),            U_INT64_MIN,                   U_INT64_MAX},
-    {ticks,        INT64_C(0),                  U_INT64_MIN,                   U_INT64_MAX,                  U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(0),                  INT64_C(0),                  INT64_C(0),            U_INT64_MIN,                   U_INT64_MAX},
-    {seconds,      INT64_C(60052752000),        INT64_C(-982389955685),        INT64_C(862284451685),        U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(60052752001),        INT64_C(60052751999),        INT64_C(5000000),      INT64_C(-9223372036849775808), INT64_C(9223372036849775807)},
-    {seconds,      INT64_C(63113904000),        INT64_C(-985451107685),        INT64_C(859223299685),        U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(63113904001),        INT64_C(63113903999),        INT64_C(5000000),      INT64_C(-9223372036849775808), INT64_C(9223372036849775807)},
-    {days,         INT64_C(693594),             INT64_C(-11368793),            INT64_C(9981605),             U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(693595),             INT64_C(693593),             INT64_C(432000000000), INT64_C(-9223371604854775808), INT64_C(9223371604854775807)},
-    {days,         INT64_C(693594),             INT64_C(-11368793),            INT64_C(9981605),             U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(693595),             INT64_C(693593),             INT64_C(432000000000), INT64_C(-9223371604854775808), INT64_C(9223371604854775807)},
-    {microseconds, INT64_C(62135596800000000),  INT64_C(-984472800485477580),  INT64_C(860201606885477580),  INT64_C(-9223372036854775804), INT64_C(9223372036854775804), INT64_C(62135596800000001),  INT64_C(62135596799999999),  INT64_C(5),            INT64_C(-9223372036854775803), INT64_C(9223372036854775802)},
-};
-
-U_CAPI int64_t U_EXPORT2
-utmscale_getTimeScaleValue(UDateTimeScale timeScale, UTimeScaleValue value, UErrorCode *status)
-{
-    if (status == NULL || U_FAILURE(*status)) {
-        return 0;
-    }
-
-    if (timeScale < UDTS_JAVA_TIME || UDTS_MAX_SCALE <= timeScale
-        || value < UTSV_UNITS_VALUE || UTSV_MAX_SCALE_VALUE <= value)
-    {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    return timeScaleTable[timeScale][value];
-}
-
-U_CAPI int64_t U_EXPORT2
-utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *status)
-{
-    const int64_t *data;
-    
-    if (status == NULL || U_FAILURE(*status)) {
-        return 0;
-    }
-
-    if ((int32_t)timeScale < 0 || timeScale >= UDTS_MAX_SCALE) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    data = (const int64_t *)(&timeScaleTable[timeScale]);
-
-    if (otherTime < data[UTSV_FROM_MIN_VALUE] || otherTime > data[UTSV_FROM_MAX_VALUE]) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-    
-    return (otherTime + data[UTSV_EPOCH_OFFSET_VALUE]) * data[UTSV_UNITS_VALUE];
-}
-
-U_CAPI int64_t U_EXPORT2
-utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *status)
-{
-    const int64_t *data;
-    
-    if (status == NULL || U_FAILURE(*status)) {
-        return 0;
-    }
-
-    if ((int32_t)timeScale < 0 || timeScale >= UDTS_MAX_SCALE) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    data = (const int64_t *)(&timeScaleTable[timeScale]);
-
-    if (universalTime < data[UTSV_TO_MIN_VALUE] || universalTime > data[UTSV_TO_MAX_VALUE]) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-    
-    if (universalTime < 0) {
-        if (universalTime < data[UTSV_MIN_ROUND_VALUE]) {
-            return (universalTime + data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_PLUS_1_VALUE];
-        }
-        
-        return (universalTime - data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_VALUE];
-    }
-    
-    if (universalTime > data[UTSV_MAX_ROUND_VALUE]) {
-        return (universalTime - data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_MINUS_1_VALUE];
-    }
-    
-    return (universalTime + data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_VALUE];
-}
-
-#endif /* #if !UCONFIG_NO_FORMATTING */
index 6a4c4a7..5124833 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 45b08f6..e769f36 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 434ee55..2802f18 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 1fea350..03cfc68 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2016, International Business Machines
index eba2a1b..35ac069 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************* * Copyright (C) 2015, International Business Machines
index e0621cc..b82327d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -358,7 +358,7 @@ static void millisToOffset(int32_t millis, UnicodeString& str) {
 /*
  * Create a default TZNAME from TZID
  */
-static void getDefaultTZName(const UnicodeString tzid, UBool isDST, UnicodeString& zonename) {
+static void getDefaultTZName(const UnicodeString &tzid, UBool isDST, UnicodeString& zonename) {
     zonename = tzid;
     if (isDST) {
         zonename += UNICODE_STRING_SIMPLE("(DST)");
index 8d2bef7..7e3a554 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index fc5df4d..17df92e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 10243a7..be5f384 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -13,7 +13,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
 
 #if !UCONFIG_NO_FORMATTING
 
@@ -35,7 +35,9 @@
 #include "windtfmt.h"
 #include "wintzimpl.h"
 
+#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
+#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
@@ -92,12 +94,83 @@ UnicodeString* Win32DateFormat::getTimeDateFormat(const Calendar *cal, const Loc
     return result;
 }
 
+// TODO: This is copied in both winnmfmt.cpp and windtfmt.cpp, but really should
+// be factored out into a common helper for both.
+static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeString** buffer)
+{
+    UErrorCode status = U_ZERO_ERROR;
+    char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+
+    // Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
+    int32_t length = uloc_toLanguageTag(locale.getName(), asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), FALSE, &status);
+
+    if (U_SUCCESS(status))
+    {
+        // Need it to be UTF-16, not 8-bit
+        // TODO: This seems like a good thing for a helper
+        wchar_t bcp47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+        int32_t i;
+        for (i = 0; i < UPRV_LENGTHOF(bcp47Tag); i++)
+        {
+            if (asciiBCP47Tag[i] == '\0')
+            {
+                break;
+            }
+            else
+            {
+                // normally just copy the character
+                bcp47Tag[i] = static_cast<wchar_t>(asciiBCP47Tag[i]);
+            }
+        }
+
+        // Ensure it's null terminated
+        if (i < (UPRV_LENGTHOF(bcp47Tag) - 1))
+        {
+            bcp47Tag[i] = L'\0';
+        }
+        else
+        {
+            // Ran out of room.
+            bcp47Tag[UPRV_LENGTHOF(bcp47Tag) - 1] = L'\0';
+        }
+
+
+        wchar_t windowsLocaleName[LOCALE_NAME_MAX_LENGTH] = {};
+
+        // Note: On Windows versions below 10, there is no support for locale name aliases.
+        // This means that it will fail for locales where ICU has a completely different
+        // name (like ku vs ckb), and it will also not work for alternate sort locale
+        // names like "de-DE-u-co-phonebk".
+        
+        // TODO: We could add some sort of exception table for cases like ku vs ckb.
+
+        int length = ResolveLocaleName(bcp47Tag, windowsLocaleName, UPRV_LENGTHOF(windowsLocaleName));
+
+        if (length > 0)
+        {
+            *buffer = new UnicodeString(windowsLocaleName);
+        }
+        else
+        {
+            status = U_UNSUPPORTED_ERROR;
+        }
+    }
+    return status;
+}
+
 // TODO: Range-check timeStyle, dateStyle
 Win32DateFormat::Win32DateFormat(DateFormat::EStyle timeStyle, DateFormat::EStyle dateStyle, const Locale &locale, UErrorCode &status)
-  : DateFormat(), fDateTimeMsg(NULL), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(locale), fZoneID()
+  : DateFormat(), fDateTimeMsg(NULL), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(locale), fZoneID(), fWindowsLocaleName(nullptr)
 {
     if (U_SUCCESS(status)) {
-        fLCID = locale.getLCID();
+        GetEquivalentWindowsLocaleName(locale, &fWindowsLocaleName);
+        // Note: In the previous code, it would look up the LCID for the locale, and if
+        // the locale was not recognized then it would get an LCID of 0, which is a
+        // synonym for LOCALE_USER_DEFAULT on Windows.
+        // If the above method fails, then fWindowsLocaleName will remain as nullptr, and 
+        // then we will pass nullptr to API GetLocaleInfoEx, which is the same as passing
+        // LOCALE_USER_DEFAULT.
+
         fTZI = NEW_ARRAY(TIME_ZONE_INFORMATION, 1);
         uprv_memset(fTZI, 0, sizeof(TIME_ZONE_INFORMATION));
         adoptCalendar(Calendar::createInstance(locale, status));
@@ -115,6 +188,7 @@ Win32DateFormat::~Win32DateFormat()
 //    delete fCalendar;
     uprv_free(fTZI);
     delete fDateTimeMsg;
+    delete fWindowsLocaleName;
 }
 
 Win32DateFormat &Win32DateFormat::operator=(const Win32DateFormat &other)
@@ -128,13 +202,14 @@ Win32DateFormat &Win32DateFormat::operator=(const Win32DateFormat &other)
     this->fTimeStyle   = other.fTimeStyle;
     this->fDateStyle   = other.fDateStyle;
     this->fLocale      = other.fLocale;
-    this->fLCID        = other.fLCID;
 //    this->fCalendar    = other.fCalendar->clone();
     this->fZoneID      = other.fZoneID;
 
     this->fTZI = NEW_ARRAY(TIME_ZONE_INFORMATION, 1);
     *this->fTZI = *other.fTZI;
 
+    this->fWindowsLocaleName = other.fWindowsLocaleName == NULL ? NULL : new UnicodeString(*other.fWindowsLocaleName);
+
     return *this;
 }
 
@@ -231,18 +306,25 @@ static const DWORD dfFlags[] = {DATE_LONGDATE, DATE_LONGDATE, DATE_SHORTDATE, DA
 
 void Win32DateFormat::formatDate(const SYSTEMTIME *st, UnicodeString &appendTo) const
 {
-    int result;
+    int result=0;
     wchar_t stackBuffer[STACK_BUFFER_SIZE];
     wchar_t *buffer = stackBuffer;
+    const wchar_t *localeName = nullptr;
 
-    result = GetDateFormatW(fLCID, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, STACK_BUFFER_SIZE);
+    if (fWindowsLocaleName != nullptr)
+    {
+        localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+    }
+
+    result = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, STACK_BUFFER_SIZE, NULL);
 
     if (result == 0) {
         if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-            int newLength = GetDateFormatW(fLCID, dfFlags[fDateStyle - kDateOffset], st, NULL, NULL, 0);
+            int newLength = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, NULL, 0, NULL);
 
             buffer = NEW_ARRAY(wchar_t, newLength);
-            GetDateFormatW(fLCID, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, newLength);
+
+            GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, newLength, NULL);
         }
     }
 
@@ -260,15 +342,22 @@ void Win32DateFormat::formatTime(const SYSTEMTIME *st, UnicodeString &appendTo)
     int result;
     wchar_t stackBuffer[STACK_BUFFER_SIZE];
     wchar_t *buffer = stackBuffer;
+    const wchar_t *localeName = nullptr;
 
-    result = GetTimeFormatW(fLCID, tfFlags[fTimeStyle], st, NULL, buffer, STACK_BUFFER_SIZE);
+    if (fWindowsLocaleName != nullptr)
+    {
+        localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+    }
+
+    result = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, buffer, STACK_BUFFER_SIZE);
 
     if (result == 0) {
         if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-            int newLength = GetTimeFormatW(fLCID, tfFlags[fTimeStyle], st, NULL, NULL, 0);
+            int newLength = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, NULL, 0);
 
             buffer = NEW_ARRAY(wchar_t, newLength);
-            GetDateFormatW(fLCID, tfFlags[fTimeStyle], st, NULL, buffer, newLength);
+
+            GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, buffer, newLength);
         }
     }
 
@@ -314,5 +403,5 @@ U_NAMESPACE_END
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
-#endif // U_PLATFORM_HAS_WIN32_API
+#endif // U_PLATFORM_USES_ONLY_WIN32_API
 
index 58ac71b..3306905 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -16,7 +16,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
 
 #if !UCONFIG_NO_FORMATTING
 
@@ -95,7 +95,7 @@ public:
      * <pre>
      * .   Base* polymorphic_pointer = createPolymorphicObject();
      * .   if (polymorphic_pointer->getDynamicClassID() ==
-     * .       erived::getStaticClassID()) ...
+     * .       derived::getStaticClassID()) ...
      * </pre>
      * @return          The class ID for all objects of this class.
      */
@@ -124,15 +124,16 @@ private:
     DateFormat::EStyle fTimeStyle;
     DateFormat::EStyle fDateStyle;
     Locale fLocale;
-    int32_t fLCID;
     UnicodeString fZoneID;
     TIME_ZONE_INFORMATION *fTZI;
+
+    UnicodeString* fWindowsLocaleName; // Stores the equivalent Windows locale name.
 };
 
 U_NAMESPACE_END
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
-#endif // U_PLATFORM_HAS_WIN32_API
+#endif // U_PLATFORM_USES_ONLY_WIN32_API
 
 #endif // __WINDTFMT
index d7e9872..3e03cb1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -28,7 +28,9 @@
 #include "uassert.h"
 #include "locmap.h"
 
+#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
+#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
@@ -58,43 +60,43 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Win32NumberFormat)
  * end in ";0" then the return value should be multiplied by 10.
  * (e.g. "3" => 30, "3;2" => 320)
  */
-static UINT getGrouping(const char *grouping)
+static UINT getGrouping(const wchar_t *grouping)
 {
     UINT g = 0;
-       const char *s;
+    const wchar_t *s;
 
-    for (s = grouping; *s != '\0'; s += 1) {
-        if (*s > '0' && *s < '9') {
-            g = g * 10 + (*s - '0');
-        } else if (*s != ';') {
+    for (s = grouping; *s != L'\0'; s += 1) {
+        if (*s > L'0' && *s < L'9') {
+            g = g * 10 + (*s - L'0');
+        } else if (*s != L';') {
             break;
         }
     }
 
-    if (*s != '0') {
+    if (*s != L'0') {
         g *= 10;
     }
 
     return g;
 }
 
-static void getNumberFormat(NUMBERFMTW *fmt, int32_t lcid)
+static void getNumberFormat(NUMBERFMTW *fmt, const wchar_t *windowsLocaleName)
 {
-    char buf[10];
+    wchar_t buf[10];
 
-    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_IDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
-    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ILZERO,  (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_IDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ILZERO,  (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
 
-    GetLocaleInfoA(lcid, LOCALE_SGROUPING, buf, 10);
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_SGROUPING, (LPWSTR)buf, 10);
     fmt->Grouping = getGrouping(buf);
 
     fmt->lpDecimalSep = NEW_ARRAY(wchar_t, 6);
-    GetLocaleInfoW(lcid, LOCALE_SDECIMAL,  fmt->lpDecimalSep,  6);
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_SDECIMAL,  fmt->lpDecimalSep,  6);
 
     fmt->lpThousandSep = NEW_ARRAY(wchar_t, 6);
-    GetLocaleInfoW(lcid, LOCALE_STHOUSAND, fmt->lpThousandSep, 6);
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_STHOUSAND, fmt->lpThousandSep, 6);
 
-    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_INEGNUMBER, (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_INEGNUMBER, (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
 }
 
 static void freeNumberFormat(NUMBERFMTW *fmt)
@@ -105,27 +107,27 @@ static void freeNumberFormat(NUMBERFMTW *fmt)
     }
 }
 
-static void getCurrencyFormat(CURRENCYFMTW *fmt, int32_t lcid)
+static void getCurrencyFormat(CURRENCYFMTW *fmt, const wchar_t *windowsLocaleName)
 {
-    char buf[10];
+    wchar_t buf[10];
 
-    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ICURRDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
-    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ILZERO, (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ICURRDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ILZERO, (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
 
-    GetLocaleInfoA(lcid, LOCALE_SMONGROUPING, buf, sizeof(buf));
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_SMONGROUPING, (LPWSTR)buf, sizeof(buf));
     fmt->Grouping = getGrouping(buf);
 
     fmt->lpDecimalSep = NEW_ARRAY(wchar_t, 6);
-    GetLocaleInfoW(lcid, LOCALE_SMONDECIMALSEP,  fmt->lpDecimalSep,  6);
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_SMONDECIMALSEP,  fmt->lpDecimalSep,  6);
 
     fmt->lpThousandSep = NEW_ARRAY(wchar_t, 6);
-    GetLocaleInfoW(lcid, LOCALE_SMONTHOUSANDSEP, fmt->lpThousandSep, 6);
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_SMONTHOUSANDSEP, fmt->lpThousandSep, 6);
 
-    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_INEGCURR,  (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
-    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ICURRENCY, (LPWSTR) &fmt->PositiveOrder, sizeof(UINT));
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_INEGCURR,  (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ICURRENCY, (LPWSTR) &fmt->PositiveOrder, sizeof(UINT));
 
     fmt->lpCurrencySymbol = NEW_ARRAY(wchar_t, 8);
-    GetLocaleInfoW(lcid, LOCALE_SCURRENCY, (LPWSTR) fmt->lpCurrencySymbol, 8);
+    GetLocaleInfoEx(windowsLocaleName, LOCALE_SCURRENCY, (LPWSTR) fmt->lpCurrencySymbol, 8);
 }
 
 static void freeCurrencyFormat(CURRENCYFMTW *fmt)
@@ -137,12 +139,84 @@ static void freeCurrencyFormat(CURRENCYFMTW *fmt)
     }
 }
 
+// TODO: This is copied in both winnmfmt.cpp and windtfmt.cpp, but really should
+// be factored out into a common helper for both.
+static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeString** buffer)
+{
+    UErrorCode status = U_ZERO_ERROR;
+    char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+
+    // Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
+    int32_t length = uloc_toLanguageTag(locale.getName(), asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), FALSE, &status);
+
+    if (U_SUCCESS(status))
+    {
+        // Need it to be UTF-16, not 8-bit
+        // TODO: This seems like a good thing for a helper
+        wchar_t bcp47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+        int32_t i;
+        for (i = 0; i < UPRV_LENGTHOF(bcp47Tag); i++)
+        {
+            if (asciiBCP47Tag[i] == '\0')
+            {
+                break;
+            }
+            else
+            {
+                // normally just copy the character
+                bcp47Tag[i] = static_cast<wchar_t>(asciiBCP47Tag[i]);
+            }
+        }
+
+        // Ensure it's null terminated
+        if (i < (UPRV_LENGTHOF(bcp47Tag) - 1))
+        {
+            bcp47Tag[i] = L'\0';
+        }
+        else
+        {
+            // Ran out of room.
+            bcp47Tag[UPRV_LENGTHOF(bcp47Tag) - 1] = L'\0';
+        }
+
+
+        wchar_t windowsLocaleName[LOCALE_NAME_MAX_LENGTH] = {};
+
+        // Note: On Windows versions below 10, there is no support for locale name aliases.
+        // This means that it will fail for locales where ICU has a completely different
+        // name (like ku vs ckb), and it will also not work for alternate sort locale
+        // names like "de-DE-u-co-phonebk".
+
+        // TODO: We could add some sort of exception table for cases like ku vs ckb.
+
+        int length = ResolveLocaleName(bcp47Tag, windowsLocaleName, UPRV_LENGTHOF(windowsLocaleName));
+
+        if (length > 0)
+        {
+            *buffer = new UnicodeString(windowsLocaleName);
+        }
+        else
+        {
+            status = U_UNSUPPORTED_ERROR;
+        }
+    }
+    return status;
+}
+
 Win32NumberFormat::Win32NumberFormat(const Locale &locale, UBool currency, UErrorCode &status)
-  : NumberFormat(), fCurrency(currency), fFormatInfo(NULL), fFractionDigitsSet(FALSE)
+  : NumberFormat(), fCurrency(currency), fFormatInfo(NULL), fFractionDigitsSet(FALSE), fWindowsLocaleName(nullptr)
 {
     if (!U_FAILURE(status)) {
         fLCID = locale.getLCID();
 
+        GetEquivalentWindowsLocaleName(locale, &fWindowsLocaleName);
+        // Note: In the previous code, it would look up the LCID for the locale, and if
+        // the locale was not recognized then it would get an LCID of 0, which is a
+        // synonym for LOCALE_USER_DEFAULT on Windows.
+        // If the above method fails, then fWindowsLocaleName will remain as nullptr, and 
+        // then we will pass nullptr to API GetLocaleInfoEx, which is the same as passing
+        // LOCALE_USER_DEFAULT.
+
         // Resolve actual locale to be used later
         UErrorCode tmpsts = U_ZERO_ERROR;
         char tmpLocID[ULOC_FULLNAME_CAPACITY];
@@ -152,12 +226,19 @@ Win32NumberFormat::Win32NumberFormat(const Locale &locale, UBool currency, UErro
             fLocale = Locale((const char*)tmpLocID);
         }
 
+        const wchar_t *localeName = nullptr;
+
+        if (fWindowsLocaleName != nullptr)
+        {
+            localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+        }
+
         fFormatInfo = (FormatInfo*)uprv_malloc(sizeof(FormatInfo));
 
         if (fCurrency) {
-            getCurrencyFormat(&fFormatInfo->currency, fLCID);
+            getCurrencyFormat(&fFormatInfo->currency, localeName);
         } else {
-            getNumberFormat(&fFormatInfo->number, fLCID);
+            getNumberFormat(&fFormatInfo->number, localeName);
         }
     }
 }
@@ -182,6 +263,7 @@ Win32NumberFormat::~Win32NumberFormat()
 
         uprv_free(fFormatInfo);
     }
+    delete fWindowsLocaleName;
 }
 
 Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other)
@@ -192,13 +274,21 @@ Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other)
     this->fLocale            = other.fLocale;
     this->fLCID              = other.fLCID;
     this->fFractionDigitsSet = other.fFractionDigitsSet;
+    this->fWindowsLocaleName = other.fWindowsLocaleName == NULL ? NULL : new UnicodeString(*other.fWindowsLocaleName);
+    
+    const wchar_t *localeName = nullptr;
+
+    if (fWindowsLocaleName != nullptr)
+    {
+        localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+    }
 
     if (fCurrency) {
         freeCurrencyFormat(&fFormatInfo->currency);
-        getCurrencyFormat(&fFormatInfo->currency, fLCID);
+        getCurrencyFormat(&fFormatInfo->currency, localeName);
     } else {
         freeNumberFormat(&fFormatInfo->number);
-        getNumberFormat(&fFormatInfo->number, fLCID);
+        getNumberFormat(&fFormatInfo->number, localeName);
     }
 
     return *this;
@@ -299,6 +389,13 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
     formatInfo = *fFormatInfo;
     buffer[0] = 0x0000;
 
+    const wchar_t *localeName = nullptr;
+
+    if (fWindowsLocaleName != nullptr)
+    {
+        localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+    }
+
     if (fCurrency) {
         if (fFractionDigitsSet) {
             formatInfo.currency.NumDigits = (UINT) numDigits;
@@ -308,17 +405,17 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
             formatInfo.currency.Grouping = 0;
         }
 
-        result = GetCurrencyFormatW(fLCID, 0, nBuffer, &formatInfo.currency, buffer, STACK_BUFFER_SIZE);
+        result = GetCurrencyFormatEx(localeName, 0, nBuffer, &formatInfo.currency, buffer, STACK_BUFFER_SIZE);
 
         if (result == 0) {
             DWORD lastError = GetLastError();
 
             if (lastError == ERROR_INSUFFICIENT_BUFFER) {
-                int newLength = GetCurrencyFormatW(fLCID, 0, nBuffer, &formatInfo.currency, NULL, 0);
+                int newLength = GetCurrencyFormatEx(localeName, 0, nBuffer, &formatInfo.currency, NULL, 0);
 
                 buffer = NEW_ARRAY(wchar_t, newLength);
                 buffer[0] = 0x0000;
-                GetCurrencyFormatW(fLCID, 0, nBuffer,  &formatInfo.currency, buffer, newLength);
+                GetCurrencyFormatEx(localeName, 0, nBuffer,  &formatInfo.currency, buffer, newLength);
             }
         }
     } else {
@@ -330,15 +427,15 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
             formatInfo.number.Grouping = 0;
         }
 
-        result = GetNumberFormatW(fLCID, 0, nBuffer, &formatInfo.number, buffer, STACK_BUFFER_SIZE);
+        result = GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, buffer, STACK_BUFFER_SIZE);
 
         if (result == 0) {
             if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-                int newLength = GetNumberFormatW(fLCID, 0, nBuffer, &formatInfo.number, NULL, 0);
+                int newLength = GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, NULL, 0);
 
                 buffer = NEW_ARRAY(wchar_t, newLength);
                 buffer[0] = 0x0000;
-                GetNumberFormatW(fLCID, 0, nBuffer, &formatInfo.number, buffer, newLength);
+                GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, buffer, newLength);
             }
         }
     }
index dfc32dd..6139c1f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -128,7 +128,7 @@ public:
      * <pre>
      * .   Base* polymorphic_pointer = createPolymorphicObject();
      * .   if (polymorphic_pointer->getDynamicClassID() ==
-     * .       erived::getStaticClassID()) ...
+     * .       derived::getStaticClassID()) ...
      * </pre>
      * @return          The class ID for all objects of this class.
      */
@@ -155,6 +155,7 @@ private:
     FormatInfo *fFormatInfo;
     UBool fFractionDigitsSet;
 
+    UnicodeString* fWindowsLocaleName; // Stores the equivalent Windows locale name.
 };
 
 U_NAMESPACE_END
index 30b9c49..7a87d1c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -13,7 +13,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_HAS_WIN32_API && !UCONFIG_NO_FORMATTING 
+#if U_PLATFORM_USES_ONLY_WIN32_API && !UCONFIG_NO_FORMATTING 
 
 #include "wintzimpl.h"
 
@@ -24,7 +24,9 @@
 #include "uassert.h"
 #include "cmemory.h"
 
+#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
+#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
index c955b8c..772ea95 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -16,7 +16,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
 /**
  * \file 
  * \brief C API: Utilities for dealing w/ Windows time zones.
@@ -34,6 +34,6 @@ U_CAPI UBool U_EXPORT2
 uprv_getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const UChar *icuid, int32_t length);
 
 
-#endif /* U_PLATFORM_HAS_WIN32_API */
+#endif /* U_PLATFORM_USES_ONLY_WIN32_API */
 
 #endif /* __WINTZIMPL */
index fdf333c..84a9657 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -17,7 +17,7 @@
 #include "unicode/ustring.h"
 #include "unicode/putil.h"
 #include "unicode/simpletz.h"
-
+#include "unicode/strenum.h"
 #include "umutex.h"
 #include "uvector.h"
 #include "cmemory.h"
@@ -28,6 +28,7 @@
 #include "uresimp.h"
 #include "uhash.h"
 #include "olsontz.h"
+#include "uinvchar.h"
 
 static UMutex gZoneMetaLock = U_MUTEX_INITIALIZER;
 
@@ -255,6 +256,12 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) {
     tzid.extract(utzid, ZID_KEY_MAX + 1, tmpStatus);
     U_ASSERT(tmpStatus == U_ZERO_ERROR);    // we checked the length of tzid already
 
+    if (!uprv_isInvariantUString(utzid, -1)) {
+        // All of known tz IDs are only containing ASCII invariant characters.
+        status = U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+
     // Check if it was already cached
     umtx_lock(&gZoneMetaLock);
     {
index 84be555..9dbcc87 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -41,7 +41,11 @@ public:
     /**
      * Return the canonical id for this tzid defined by CLDR, which might be the id itself.
      * This overload method returns a persistent const UChar*, which is guranteed to persist
-     * (a pointer to a resource).
+     * (a pointer to a resource). If the given system tzid is not known, U_ILLEGAL_ARGUMENT_ERROR
+     * is set in the status.
+     * @param tzid Zone ID
+     * @param status Receives the status
+     * @return The canonical ID for the input time zone ID
      */
     static const UChar* U_EXPORT2 getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status);
 
index 2d7b36c..bdf8496 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9b694af..f395ad4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 92fd781..9dbe9bb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2ddf7ba..b23bb4f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 46568f3..9abb872 100644 (file)
@@ -118,6 +118,7 @@ ARFLAGS = @ARFLAGS@ r
 RANLIB = @RANLIB@
 COMPILE_LINK_ENVVAR = @COMPILE_LINK_ENVVAR@
 UCLN_NO_AUTO_CLEANUP = @UCLN_NO_AUTO_CLEANUP@
+SED = @SED@
 
 # Various flags for the tools
 
index 8484325..45dbe87 100644 (file)
@@ -55,7 +55,7 @@ DYNAMICCXXFLAGS = $(SHAREDLIBCXXFLAGS)
 CFLAGS += $(LIBCFLAGS)
 CXXFLAGS += $(LIBCXXFLAGS)
 
-CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n $(LIBCPPFLAGS) $(CPPFLAGSICUIO)
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n $(LIBCPPFLAGS) $(CPPFLAGSICUIO)
 DEFS += -DU_IO_IMPLEMENTATION
 LDFLAGS += $(LDFLAGSICUIO)
 LIBS = $(LIBICUUC) $(LIBICUI18N) $(DEFAULT_LIBS)
index 3173e92..1826fb7 100644 (file)
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuio58.dll</OutputFile>
+      <OutputFile>..\..\bin\icuio59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib\icuio.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuio58d.dll</OutputFile>
+      <OutputFile>..\..\bin\icuio59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib\icuiod.pdb</ProgramDatabaseFile>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuio58.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuio59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib64\icuio.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuio58d.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuio59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib64\icuiod.pdb</ProgramDatabaseFile>
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="locbund.cpp" />
-    <ClCompile Include="sprintf.c" />
-    <ClCompile Include="sscanf.c" />
+    <ClCompile Include="sprintf.cpp" />
+    <ClCompile Include="sscanf.cpp" />
     <ClCompile Include="ucln_io.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="ufile.c" />
-    <ClCompile Include="ufmt_cmn.c" />
+    <ClCompile Include="ufile.cpp" />
+    <ClCompile Include="ufmt_cmn.cpp" />
     <ClCompile Include="uprintf.cpp" />
-    <ClCompile Include="uprntf_p.c" />
-    <ClCompile Include="uscanf.c" />
-    <ClCompile Include="uscanf_p.c" />
-    <ClCompile Include="ustdio.c" />
+    <ClCompile Include="uprntf_p.cpp" />
+    <ClCompile Include="uscanf.cpp" />
+    <ClCompile Include="uscanf_p.cpp" />
+    <ClCompile Include="ustdio.cpp" />
     <ClCompile Include="ustream.cpp">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 61252bf..4a6841b 100644 (file)
     <ClCompile Include="locbund.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="sprintf.c">
+    <ClCompile Include="sprintf.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="sscanf.c">
+    <ClCompile Include="sscanf.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="ucln_io.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="ufile.c">
+    <ClCompile Include="ufile.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="ufmt_cmn.c">
+    <ClCompile Include="ufmt_cmn.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="uprintf.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="uprntf_p.c">
+    <ClCompile Include="uprntf_p.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="uscanf.c">
+    <ClCompile Include="uscanf.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="uscanf_p.c">
+    <ClCompile Include="uscanf_p.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="ustdio.c">
+    <ClCompile Include="ustdio.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="ustream.cpp">
index 2984528..8e880b1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b9e1948..5879e28 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
diff --git a/source/io/sprintf.c b/source/io/sprintf.c
deleted file mode 100644 (file)
index ff143de..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 2001-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-* File sprintf.c
-*
-* Modification History:
-*
-*   Date        Name            Description
-*   02/08/2001  george          Creation. Copied from uprintf.c
-*   03/27/2002  Mark Schneckloth Many fixes regarding alignment, null termination
-*       (mschneckloth@atomz.com) and other various problems.
-*   08/07/2003  george          Reunify printf implementations
-*******************************************************************************
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
-
-#include "unicode/ustdio.h"
-#include "unicode/ustring.h"
-#include "unicode/putil.h"
-
-#include "uprintf.h"
-#include "locbund.h"
-
-#include "cmemory.h"
-#include <ctype.h>
-
-/* u_minstrncpy copies the minimum number of code units of (count or output->available) */
-static int32_t
-u_sprintf_write(void        *context,
-                const UChar *str,
-                int32_t     count)
-{
-    u_localized_print_string *output = (u_localized_print_string *)context;
-    int32_t size = ufmt_min(count, output->available);
-
-    u_strncpy(output->str + (output->len - output->available), str, size);
-    output->available -= size;
-    return size;
-}
-
-static int32_t
-u_sprintf_pad_and_justify(void                        *context,
-                          const u_printf_spec_info    *info,
-                          const UChar                 *result,
-                          int32_t                     resultLen)
-{
-    u_localized_print_string *output = (u_localized_print_string *)context;
-    int32_t written = 0;
-    int32_t lengthOfResult = resultLen;
-
-    resultLen = ufmt_min(resultLen, output->available);
-
-    /* pad and justify, if needed */
-    if(info->fWidth != -1 && resultLen < info->fWidth) {
-        int32_t paddingLeft = info->fWidth - resultLen;
-        int32_t outputPos = output->len - output->available;
-  
-        if (paddingLeft + resultLen > output->available) {
-            paddingLeft = output->available - resultLen;
-            if (paddingLeft < 0) {
-                paddingLeft = 0;
-            }
-            /* paddingLeft = output->available - resultLen;*/
-        }
-        written += paddingLeft;
-
-        /* left justify */
-        if(info->fLeft) {
-            written += u_sprintf_write(output, result, resultLen);
-            u_memset(&output->str[outputPos + resultLen], info->fPadChar, paddingLeft);
-            output->available -= paddingLeft;
-        }
-        /* right justify */
-        else {
-            u_memset(&output->str[outputPos], info->fPadChar, paddingLeft);
-            output->available -= paddingLeft;
-            written += u_sprintf_write(output, result, resultLen);
-        }
-    }
-    /* just write the formatted output */
-    else {
-        written = u_sprintf_write(output, result, resultLen);
-    }
-    
-    if (written >= 0 && lengthOfResult > written) {
-       return lengthOfResult;
-    }
-
-    return written;
-}
-
-U_CAPI int32_t U_EXPORT2
-u_sprintf(UChar       *buffer,
-          const char    *patternSpecification,
-          ... )
-{
-    va_list ap;
-    int32_t written;
-
-    va_start(ap, patternSpecification);
-    written = u_vsnprintf(buffer, INT32_MAX, patternSpecification, ap);
-    va_end(ap);
-
-    return written;
-}
-
-U_CAPI int32_t U_EXPORT2
-u_sprintf_u(UChar     *buffer,
-            const UChar    *patternSpecification,
-            ... )
-{
-    va_list ap;
-    int32_t written;
-
-    va_start(ap, patternSpecification);
-    written = u_vsnprintf_u(buffer, INT32_MAX, patternSpecification, ap);
-    va_end(ap);
-
-    return written;
-}
-
-U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsprintf(UChar       *buffer,
-           const char     *patternSpecification,
-           va_list         ap)
-{
-    return u_vsnprintf(buffer, INT32_MAX, patternSpecification, ap);
-}
-
-U_CAPI int32_t U_EXPORT2
-u_snprintf(UChar       *buffer,
-           int32_t         count,
-           const char    *patternSpecification,
-           ... )
-{
-    va_list ap;
-    int32_t written;
-
-    va_start(ap, patternSpecification);
-    written = u_vsnprintf(buffer, count, patternSpecification, ap);
-    va_end(ap);
-
-    return written;
-}
-
-U_CAPI int32_t U_EXPORT2
-u_snprintf_u(UChar     *buffer,
-             int32_t        count,
-             const UChar    *patternSpecification,
-             ... )
-{
-    va_list ap;
-    int32_t written;
-
-    va_start(ap, patternSpecification);
-    written = u_vsnprintf_u(buffer, count, patternSpecification, ap);
-    va_end(ap);
-
-    return written;
-}
-
-U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsnprintf(UChar       *buffer,
-            int32_t         count,
-            const char     *patternSpecification,
-            va_list         ap)
-{
-    int32_t written;
-    UChar *pattern;
-    UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
-    int32_t size = (int32_t)strlen(patternSpecification) + 1;
-
-    /* convert from the default codepage to Unicode */
-    if (size >= (int32_t)MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
-        pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
-        if(pattern == 0) {
-            return 0;
-        }
-    }
-    else {
-        pattern = patBuffer;
-    }
-    u_charsToUChars(patternSpecification, pattern, size);
-
-    /* do the work */
-    written = u_vsnprintf_u(buffer, count, pattern, ap);
-
-    /* clean up */
-    if (pattern != patBuffer) {
-        uprv_free(pattern);
-    }
-
-    return written;
-}
-
-U_CAPI int32_t U_EXPORT2 
-u_vsprintf_u(UChar       *buffer, 
-             const UChar *patternSpecification, 
-             va_list     ap) 
-{ 
-    return u_vsnprintf_u(buffer, INT32_MAX, patternSpecification, ap); 
-} 
-
-static const u_printf_stream_handler g_sprintf_stream_handler = {
-    u_sprintf_write,
-    u_sprintf_pad_and_justify
-};
-
-U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsnprintf_u(UChar    *buffer,
-              int32_t        count,
-              const UChar    *patternSpecification,
-              va_list        ap)
-{
-    int32_t          written = 0;   /* haven't written anything yet */
-    int32_t                     result = 0; /* test the return value of u_printf_parse */
-
-    u_localized_print_string outStr;
-
-    if (count < 0) {
-        count = INT32_MAX;
-    }
-
-    outStr.str = buffer;
-    outStr.len = count;
-    outStr.available = count;
-
-    if(u_locbund_init(&outStr.fBundle, "en_US_POSIX") == 0) {
-        return 0;
-    }
-
-    /* parse and print the whole format string */
-    result = u_printf_parse(&g_sprintf_stream_handler, patternSpecification, &outStr, &outStr, &outStr.fBundle, &written, ap);
-    
-    /* Terminate the buffer, if there's room. */
-    if (outStr.available > 0) {
-        buffer[outStr.len - outStr.available] = 0x0000;
-    }
-
-    /* Release the cloned bundle, if we cloned it. */
-    u_locbund_close(&outStr.fBundle);
-
-    /* parsing error */ 
-    if (result < 0) {
-       return result;
-    }
-    /* return # of UChars written */
-    return written;
-}
-
-#endif /* #if !UCONFIG_NO_FORMATTING */
-
diff --git a/source/io/sscanf.c b/source/io/sscanf.c
deleted file mode 100644 (file)
index 31ad896..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 2000-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-* File sscanf.c
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   02/08/00    george      Creation. Copied from uscanf.c
-******************************************************************************
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
-
-#include "unicode/putil.h"
-#include "unicode/ustdio.h"
-#include "unicode/ustring.h"
-#include "uscanf.h"
-#include "ufile.h"
-#include "ufmt_cmn.h"
-
-#include "cmemory.h"
-#include "cstring.h"
-
-
-U_CAPI int32_t U_EXPORT2
-u_sscanf(const UChar   *buffer,
-         const char    *patternSpecification,
-         ... )
-{
-    va_list ap;
-    int32_t converted;
-
-    va_start(ap, patternSpecification);
-    converted = u_vsscanf(buffer, patternSpecification, ap);
-    va_end(ap);
-
-    return converted;
-}
-
-U_CAPI int32_t U_EXPORT2
-u_sscanf_u(const UChar    *buffer,
-           const UChar    *patternSpecification,
-           ... )
-{
-    va_list ap;
-    int32_t converted;
-
-    va_start(ap, patternSpecification);
-    converted = u_vsscanf_u(buffer, patternSpecification, ap);
-    va_end(ap);
-
-    return converted;
-}
-
-U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsscanf(const UChar   *buffer,
-          const char    *patternSpecification,
-          va_list        ap)
-{
-    int32_t converted;
-    UChar *pattern;
-    UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
-    int32_t size = (int32_t)uprv_strlen(patternSpecification) + 1;
-
-    /* convert from the default codepage to Unicode */
-    if (size >= (int32_t)MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
-        pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
-        if(pattern == 0) {
-            return 0;
-        }
-    }
-    else {
-        pattern = patBuffer;
-    }
-    u_charsToUChars(patternSpecification, pattern, size);
-
-    /* do the work */
-    converted = u_vsscanf_u(buffer, pattern, ap);
-
-    /* clean up */
-    if (pattern != patBuffer) {
-        uprv_free(pattern);
-    }
-
-    return converted;
-}
-
-U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsscanf_u(const UChar *buffer,
-            const UChar *patternSpecification,
-            va_list     ap)
-{
-    int32_t         converted;
-    UFILE           inStr;
-
-    inStr.fConverter = NULL;
-    inStr.fFile = NULL;
-    inStr.fOwnFile = FALSE;
-#if !UCONFIG_NO_TRANSLITERATION
-    inStr.fTranslit = NULL;
-#endif
-    inStr.fUCBuffer[0] = 0;
-    inStr.str.fBuffer = (UChar *)buffer;
-    inStr.str.fPos = (UChar *)buffer;
-    inStr.str.fLimit = buffer + u_strlen(buffer);
-
-    if(u_locbund_init(&inStr.str.fBundle, "en_US_POSIX") == 0) {
-        return 0;
-    }
-
-    converted = u_scanf_parse(&inStr, patternSpecification, ap);
-
-    u_locbund_close(&inStr.str.fBundle);
-
-    /* return # of items converted */
-    return converted;
-}
-
-#endif /* #if !UCONFIG_NO_FORMATTING */
-
index 21a0baf..7a7216b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *                                                                            *
 ******************************************************************************
 *   file name:  ucln_io.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 97d06a1..20dcb88 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *                                                                            *
 ******************************************************************************
 *   file name:  ucln_io.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/io/ufile.c b/source/io/ufile.c
deleted file mode 100644 (file)
index 87ed3f1..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1998-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-* File ufile.c
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   11/19/98    stephen     Creation.
-*   03/12/99    stephen     Modified for new C API.
-*   06/16/99    stephen     Changed T_LocaleBundle to u_locbund
-*   07/19/99    stephen     Fixed to use ucnv's default codepage.
-******************************************************************************
-*/
-
-/*
- * fileno is not declared when building with GCC in strict mode.
- */
-#if defined(__GNUC__) && defined(__STRICT_ANSI__)
-#undef __STRICT_ANSI__
-#endif
-
-#include "locmap.h"
-#include "unicode/ustdio.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "ufile.h"
-#include "unicode/uloc.h"
-#include "unicode/ures.h"
-#include "unicode/ucnv.h"
-#include "unicode/ustring.h"
-#include "cstring.h"
-#include "cmemory.h"
-
-#if U_PLATFORM_USES_ONLY_WIN32_API && !defined(fileno)
-/* Windows likes to rename Unix-like functions */
-#define fileno _fileno
-#endif
-
-static UFILE*
-finit_owner(FILE         *f,
-              const char *locale,
-              const char *codepage,
-              UBool       takeOwnership
-              )
-{
-    UErrorCode status = U_ZERO_ERROR;
-    UFILE     *result;
-    if(f == NULL) {
-        return 0;
-    }
-    result = (UFILE*) uprv_malloc(sizeof(UFILE));
-    if(result == NULL) {
-        return 0;
-    }
-
-    uprv_memset(result, 0, sizeof(UFILE));
-    result->fFileno = fileno(f);
-
-#if U_PLATFORM_USES_ONLY_WIN32_API && _MSC_VER < 1900
-    /*
-     * Below is a very old workaround (ICU ticket:231).
-     *
-     * Previously, 'FILE*' from inside and outside ICU's DLL
-     * were different, because they pointed into local copies
-     * of the io block. At least by VS 2015 the implementation
-     * is something like:
-     *    stdio = _acrt_iob_func(0)
-     * .. which is a function call, so should return the same pointer
-     * regardless of call site.
-     * As of _MSC_VER 1900 this patch is retired, at 16 years old.
-     */
-    if (0 <= result->fFileno && result->fFileno <= 2) {
-        /* stdin, stdout and stderr need to be special cased for Windows 98 */
-#if _MSC_VER >= 1400
-        result->fFile = &__iob_func()[_fileno(f)];
-#else
-        result->fFile = &_iob[_fileno(f)];
-#endif
-    }
-    else
-#endif
-    {
-        result->fFile = f;
-    }
-
-    result->str.fBuffer = result->fUCBuffer;
-    result->str.fPos    = result->fUCBuffer;
-    result->str.fLimit  = result->fUCBuffer;
-
-#if !UCONFIG_NO_FORMATTING
-        /* if locale is 0, use the default */
-        if(u_locbund_init(&result->str.fBundle, locale) == 0) {
-            /* DO NOT FCLOSE HERE! */
-            uprv_free(result);
-            return 0;
-        }
-#endif
-
-    /* If the codepage is not "" use the ucnv_open default behavior */
-    if(codepage == NULL || *codepage != '\0') {
-        result->fConverter = ucnv_open(codepage, &status);
-    }
-    /* else result->fConverter is already memset'd to NULL. */
-
-    if(U_SUCCESS(status)) {
-        result->fOwnFile = takeOwnership;
-    }
-    else {
-#if !UCONFIG_NO_FORMATTING
-        u_locbund_close(&result->str.fBundle);
-#endif
-        /* DO NOT fclose here!!!!!! */
-        uprv_free(result);
-        result = NULL;
-    }
-
-    return result;
-}
-
-U_CAPI UFILE* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_finit(FILE          *f,
-        const char    *locale,
-        const char    *codepage)
-{
-    return finit_owner(f, locale, codepage, FALSE);
-}
-
-U_CAPI UFILE* U_EXPORT2
-u_fadopt(FILE         *f,
-        const char    *locale,
-        const char    *codepage)
-{
-    return finit_owner(f, locale, codepage, TRUE);
-}
-
-U_CAPI UFILE* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fopen(const char    *filename,
-        const char    *perm,
-        const char    *locale,
-        const char    *codepage)
-{
-    UFILE     *result;
-    FILE     *systemFile = fopen(filename, perm);
-    if(systemFile == 0) {
-        return 0;
-    }
-
-    result = finit_owner(systemFile, locale, codepage, TRUE);
-
-    if (!result) {
-        /* Something bad happened.
-           Maybe the converter couldn't be opened. */
-        fclose(systemFile);
-    }
-
-    return result; /* not a file leak */
-}
-
-U_CAPI UFILE* U_EXPORT2
-u_fopen_u(const UChar   *filename,
-        const char    *perm,
-        const char    *locale,
-        const char    *codepage)
-{
-    UFILE     *result;
-    char buffer[256];
-
-    u_austrcpy(buffer, filename);
-
-    result = u_fopen(buffer, perm, locale, codepage);
-#if U_PLATFORM_USES_ONLY_WIN32_API
-    /* Try Windows API _wfopen if the above fails. */
-    if (!result) {
-        FILE *systemFile = _wfopen(filename, (UChar*)perm);
-        if (systemFile) {
-            result = finit_owner(systemFile, locale, codepage, TRUE);
-        }
-        if (!result) {
-            /* Something bad happened.
-               Maybe the converter couldn't be opened. */
-            fclose(systemFile);
-        }
-    }
-#endif
-    return result; /* not a file leak */
-}
-
-U_CAPI UFILE* U_EXPORT2
-u_fstropen(UChar *stringBuf,
-           int32_t      capacity,
-           const char  *locale)
-{
-    UFILE *result;
-
-    if (capacity < 0) {
-        return NULL;
-    }
-
-    result = (UFILE*) uprv_malloc(sizeof(UFILE));
-    /* Null pointer test */
-    if (result == NULL) {
-       return NULL; /* Just get out. */
-    }
-    uprv_memset(result, 0, sizeof(UFILE));
-    result->str.fBuffer = stringBuf;
-    result->str.fPos    = stringBuf;
-    result->str.fLimit  = stringBuf+capacity;
-
-#if !UCONFIG_NO_FORMATTING
-    /* if locale is 0, use the default */
-    if(u_locbund_init(&result->str.fBundle, locale) == 0) {
-        /* DO NOT FCLOSE HERE! */
-        uprv_free(result);
-        return 0;
-    }
-#endif
-
-    return result;
-}
-
-U_CAPI UBool U_EXPORT2
-u_feof(UFILE  *f)
-{
-    UBool endOfBuffer;
-    if (f == NULL) {
-        return TRUE;
-    }
-    endOfBuffer = (UBool)(f->str.fPos >= f->str.fLimit);
-    if (f->fFile != NULL) {
-        return endOfBuffer && feof(f->fFile);
-    }
-    return endOfBuffer;
-}
-
-U_CAPI void U_EXPORT2
-u_fflush(UFILE *file)
-{
-    ufile_flush_translit(file);
-    ufile_flush_io(file);
-    if (file->fFile) {
-        fflush(file->fFile);
-    }
-    else if (file->str.fPos < file->str.fLimit) {
-        *(file->str.fPos++) = 0;
-    }
-    /* TODO: flush input */
-}
-
-U_CAPI void
-u_frewind(UFILE *file)
-{
-    u_fflush(file);
-    ucnv_reset(file->fConverter);
-    if (file->fFile) {
-        rewind(file->fFile);
-        file->str.fLimit = file->fUCBuffer;
-        file->str.fPos   = file->fUCBuffer;
-    }
-    else {
-        file->str.fPos = file->str.fBuffer;
-    }
-}
-
-U_CAPI void U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fclose(UFILE *file)
-{
-    if (file) {
-        u_fflush(file);
-        ufile_close_translit(file);
-
-        if(file->fOwnFile)
-            fclose(file->fFile);
-
-#if !UCONFIG_NO_FORMATTING
-        u_locbund_close(&file->str.fBundle);
-#endif
-
-        ucnv_close(file->fConverter);
-        uprv_free(file);
-    }
-}
-
-U_CAPI FILE* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fgetfile(    UFILE         *f)
-{
-    return f->fFile;
-}
-
-#if !UCONFIG_NO_FORMATTING
-
-U_CAPI const char*  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fgetlocale(    UFILE        *file)
-{
-    return file->str.fBundle.fLocale;
-}
-
-U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fsetlocale(UFILE      *file,
-             const char *locale)
-{
-    u_locbund_close(&file->str.fBundle);
-
-    return u_locbund_init(&file->str.fBundle, locale) == 0 ? -1 : 0;
-}
-
-#endif
-
-U_CAPI const char* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fgetcodepage(UFILE        *file)
-{
-    UErrorCode     status = U_ZERO_ERROR;
-    const char     *codepage = NULL;
-
-    if (file->fConverter) {
-        codepage = ucnv_getName(file->fConverter, &status);
-        if(U_FAILURE(status))
-            return 0;
-    }
-    return codepage;
-}
-
-U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fsetcodepage(    const char    *codepage,
-               UFILE        *file)
-{
-    UErrorCode status = U_ZERO_ERROR;
-    int32_t retVal = -1;
-
-    /* We use the normal default codepage for this system, and not the one for the locale. */
-    if ((file->str.fPos == file->str.fBuffer) && (file->str.fLimit == file->str.fBuffer)) {
-        ucnv_close(file->fConverter);
-        file->fConverter = ucnv_open(codepage, &status);
-        if(U_SUCCESS(status)) {
-            retVal = 0;
-        }
-    }
-    return retVal;
-}
-
-
-U_CAPI UConverter * U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fgetConverter(UFILE *file)
-{
-    return file->fConverter;
-}
-#if !UCONFIG_NO_FORMATTING
-U_CAPI const UNumberFormat* U_EXPORT2 u_fgetNumberFormat(UFILE *file)
-{
-    return u_locbund_getNumberFormat(&file->str.fBundle, UNUM_DECIMAL);
-}
-#endif
-
-#endif
index 3a1a223..e85208f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -25,6 +25,8 @@
 
 #if !UCONFIG_NO_CONVERSION
 
+#include <stdio.h>
+
 #include "unicode/ucnv.h"
 #include "unicode/utrans.h"
 #include "locbund.h"
diff --git a/source/io/ufmt_cmn.c b/source/io/ufmt_cmn.c
deleted file mode 100644 (file)
index e24d0d7..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1998-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-* File ufmt_cmn.c
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   12/02/98    stephen     Creation.
-*   03/12/99    stephen     Modified for new C API.
-*   03/15/99    stephen     Added defaultCPToUnicode, unicodeToDefaultCP
-*   07/19/99    stephen     Fixed bug in defaultCPToUnicode
-******************************************************************************
-*/
-
-#include "cstring.h"
-#include "cmemory.h"
-#include "ufmt_cmn.h"
-#include "unicode/uchar.h"
-#include "unicode/ucnv.h"
-#include "ustr_cnv.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-
-#define DIGIT_0     0x0030
-#define DIGIT_9     0x0039
-#define LOWERCASE_A 0x0061
-#define UPPERCASE_A 0x0041
-#define LOWERCASE_Z 0x007A
-#define UPPERCASE_Z 0x005A
-
-int
-ufmt_digitvalue(UChar c)
-{
-    if( ((c>=DIGIT_0)&&(c<=DIGIT_9)) ||
-        ((c>=LOWERCASE_A)&&(c<=LOWERCASE_Z)) ||
-        ((c>=UPPERCASE_A)&&(c<=UPPERCASE_Z))  )
-    {
-      return c - DIGIT_0 - (c >= 0x0041 ? (c >= 0x0061 ? 39 : 7) : 0);
-    }
-    else
-    {
-      return -1;
-    }
-}
-
-UBool
-ufmt_isdigit(UChar     c,
-             int32_t     radix)
-{
-    int digitVal = ufmt_digitvalue(c);
-
-    return (UBool)(digitVal < radix && digitVal >= 0);
-}
-
-#define TO_UC_DIGIT(a) a <= 9 ? (DIGIT_0 + a) : (0x0037 + a)
-#define TO_LC_DIGIT(a) a <= 9 ? (DIGIT_0 + a) : (0x0057 + a)
-
-void 
-ufmt_64tou(UChar     *buffer, 
-          int32_t   *len,
-          uint64_t  value, 
-          uint8_t  radix,
-          UBool     uselower,
-          int32_t   minDigits)
-{
-    int32_t  length = 0;
-    uint32_t digit;
-    UChar    *left, *right, temp;
-    
-    do {
-        digit = (uint32_t)(value % radix);
-        value = value / radix;
-        buffer[length++] = (UChar)(uselower ? TO_LC_DIGIT(digit) 
-            : TO_UC_DIGIT(digit));
-    } while(value);
-
-    /* pad with zeroes to make it minDigits long */
-    if(minDigits != -1 && length < minDigits) {
-        while(length < minDigits && length < *len)
-            buffer[length++] = DIGIT_0;  /*zero padding */
-    }
-
-    /* reverse the buffer */
-    left     = buffer;
-    right = buffer + length;
-    while(left < --right) {
-        temp     = *left;
-        *left++     = *right;
-        *right     = temp;
-    }
-    
-    *len = length;
-}
-
-void 
-ufmt_ptou(UChar    *buffer, 
-          int32_t   *len,
-          void      *value, 
-          UBool     uselower)
-{
-    int32_t i;
-    int32_t length = 0;
-    uint8_t *ptrIdx = (uint8_t *)&value;
-
-#if U_IS_BIG_ENDIAN
-    for (i = 0; i < (int32_t)sizeof(void *); i++)
-#else
-    for (i = (int32_t)sizeof(void *)-1; i >= 0 ; i--)
-#endif
-    {
-        uint8_t byteVal = ptrIdx[i];
-        uint16_t firstNibble = (uint16_t)(byteVal>>4);
-        uint16_t secondNibble = (uint16_t)(byteVal&0xF);
-        if (uselower) {
-            buffer[length++]=TO_LC_DIGIT(firstNibble);
-            buffer[length++]=TO_LC_DIGIT(secondNibble);
-        }
-        else {
-            buffer[length++]=TO_UC_DIGIT(firstNibble);
-            buffer[length++]=TO_UC_DIGIT(secondNibble);
-        }
-    }
-
-    *len = length;
-}
-
-int64_t
-ufmt_uto64(const UChar     *buffer, 
-          int32_t     *len,
-          int8_t     radix)
-{
-    const UChar     *limit;
-    int32_t         count;
-    int64_t        result;
-    
-    
-    /* intialize parameters */
-    limit     = buffer + *len;
-    count     = 0;
-    result    = 0;
-    
-    /* iterate through buffer */
-    while(ufmt_isdigit(*buffer, radix) && buffer < limit) {
-        
-        /* read the next digit */
-        result *= radix;
-        result += ufmt_digitvalue(*buffer++);
-        
-        /* increment our count */
-        ++count;
-    }
-    
-    *len = count;
-    return result;
-}
-
-#define NIBBLE_PER_BYTE 2
-void *
-ufmt_utop(const UChar     *buffer,
-          int32_t     *len)
-{
-    int32_t count, resultIdx, incVal, offset;
-    /* This union allows the pointer to be written as an array. */
-    union {
-        void *ptr;
-        uint8_t bytes[sizeof(void*)];
-    } result;
-    
-    /* intialize variables */
-    count      = 0;
-    offset     = 0;
-    result.ptr = NULL;
-
-    /* Skip the leading zeros */
-    while(buffer[count] == DIGIT_0 || u_isspace(buffer[count])) {
-        count++;
-        offset++;
-    }
-
-    /* iterate through buffer, stop when you hit the end */
-    while(ufmt_isdigit(buffer[count], 16) && count < *len) {
-        /* increment the count consumed */
-        ++count;
-    }
-
-    /* detect overflow */
-    if (count - offset > (int32_t)(sizeof(void*)*NIBBLE_PER_BYTE)) {
-        offset = count - (int32_t)(sizeof(void*)*NIBBLE_PER_BYTE);
-    }
-    
-    /* Initialize the direction of the input */
-#if U_IS_BIG_ENDIAN
-    incVal = -1;
-    resultIdx = (int32_t)(sizeof(void*) - 1);
-#else
-    incVal = 1;
-    resultIdx = 0;
-#endif
-    /* Write how much was consumed. */
-    *len = count;
-    while(--count >= offset) {
-        /* Get the first nibble of the byte */
-        uint8_t byte = (uint8_t)ufmt_digitvalue(buffer[count]);
-
-        if (count > offset) {
-            /* Get the second nibble of the byte when available */
-            byte = (uint8_t)(byte + (ufmt_digitvalue(buffer[--count]) << 4));
-        }
-        /* Write the byte into the array */
-        result.bytes[resultIdx] = byte;
-        resultIdx += incVal;
-    }
-
-    return result.ptr;
-}
-
-UChar*
-ufmt_defaultCPToUnicode(const char *s, int32_t sSize,
-                        UChar *target, int32_t tSize)
-{
-    UChar *alias;
-    UErrorCode status = U_ZERO_ERROR;
-    UConverter *defConverter = u_getDefaultConverter(&status);
-    
-    if(U_FAILURE(status) || defConverter == 0)
-        return 0;
-
-    if(sSize <= 0) {
-        sSize = uprv_strlen(s) + 1;
-    }
-    
-    /* perform the conversion in one swoop */
-    if(target != 0) {
-        
-        alias = target;
-        ucnv_toUnicode(defConverter, &alias, alias + tSize, &s, s + sSize - 1, 
-            NULL, TRUE, &status);
-        
-        
-        /* add the null terminator */
-        *alias = 0x0000;
-    }
-    
-    u_releaseDefaultConverter(defConverter);
-    
-    return target;
-}
-
-
-#endif
index 97079ed..33b56a0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -26,7 +26,7 @@
 #include "unicode/utf16.h"
 
 #define UFMT_DEFAULT_BUFFER_SIZE 128
-#define MAX_UCHAR_BUFFER_SIZE(buffer) (sizeof(buffer)/(U16_MAX_LENGTH*sizeof(UChar)))
+#define MAX_UCHAR_BUFFER_SIZE(buffer) ((int32_t)(sizeof(buffer)/(U16_MAX_LENGTH*sizeof(UChar))))
 #define MAX_UCHAR_BUFFER_NEEDED(strLen) ((strLen+1)*U16_MAX_LENGTH*sizeof(UChar))
 
 /** 
index 8f38398..342c2b4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index ab52f6a..df1506e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -30,7 +30,7 @@
  * C++ I/O stream API.
  */
 
-#if !defined(_MSC_VER)
+#if defined(__GLIBCXX__)
 namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
 #endif
 
index b12ef0e..d433707 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 0a07e6b..0fd6066 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/io/uprntf_p.c b/source/io/uprntf_p.c
deleted file mode 100644 (file)
index 9890b29..0000000
+++ /dev/null
@@ -1,1593 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1998-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-* File uprntf_p.c
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   11/23/98    stephen     Creation.
-*   03/12/99    stephen     Modified for new C API.
-*   08/07/2003  george      Reunify printf implementations
-******************************************************************************
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
-
-#include "unicode/ustring.h"
-#include "unicode/utf16.h"
-#include "uprintf.h"
-#include "ufmt_cmn.h"
-#include "cmemory.h"
-#include "putilimp.h"
-
-/* ANSI style formatting */
-/* Use US-ASCII characters only for formatting */
-
-/* % */
-#define UFMT_SIMPLE_PERCENT {ufmt_simple_percent, u_printf_simple_percent_handler}
-/* s */
-#define UFMT_STRING         {ufmt_string, u_printf_string_handler}
-/* c */
-#define UFMT_CHAR           {ufmt_char, u_printf_char_handler}
-/* d, i */
-#define UFMT_INT            {ufmt_int, u_printf_integer_handler}
-/* u */
-#define UFMT_UINT           {ufmt_int, u_printf_uinteger_handler}
-/* o */
-#define UFMT_OCTAL          {ufmt_int, u_printf_octal_handler}
-/* x, X */
-#define UFMT_HEX            {ufmt_int, u_printf_hex_handler}
-/* f */
-#define UFMT_DOUBLE         {ufmt_double, u_printf_double_handler}
-/* e, E */
-#define UFMT_SCIENTIFIC     {ufmt_double, u_printf_scientific_handler}
-/* g, G */
-#define UFMT_SCIDBL         {ufmt_double, u_printf_scidbl_handler}
-/* n */
-#define UFMT_COUNT          {ufmt_count, u_printf_count_handler}
-
-/* non-ANSI extensions */
-/* Use US-ASCII characters only for formatting */
-
-/* p */
-#define UFMT_POINTER        {ufmt_pointer, u_printf_pointer_handler}
-/* V */
-#define UFMT_SPELLOUT       {ufmt_double, u_printf_spellout_handler}
-/* P */
-#define UFMT_PERCENT        {ufmt_double, u_printf_percent_handler}
-/* C  K is old format */
-#define UFMT_UCHAR          {ufmt_uchar, u_printf_uchar_handler}
-/* S  U is old format */
-#define UFMT_USTRING        {ufmt_ustring, u_printf_ustring_handler}
-
-
-#define UFMT_EMPTY {ufmt_empty, NULL}
-
-/**
- * A u_printf handler function.  
- * A u_printf handler is responsible for handling a single u_printf 
- * format specification, for example 'd' or 's'.
- * @param stream The UFILE to which to write output.
- * @param info A pointer to a <TT>u_printf_spec_info</TT> struct containing
- * information on the format specification.
- * @param args A pointer to the argument data
- * @return The number of Unicode characters written to <TT>stream</TT>.
- */
-typedef int32_t U_EXPORT2
-u_printf_handler(const u_printf_stream_handler  *handler,
-
-                 void                           *context,
-                 ULocaleBundle                  *formatBundle,
-                 const u_printf_spec_info       *info,
-                 const ufmt_args                *args);
-
-typedef struct u_printf_info {
-    ufmt_type_info info;
-    u_printf_handler *handler;
-} u_printf_info;
-
-/**
- * Struct encapsulating a single uprintf format specification.
- */
-typedef struct u_printf_spec {
-  u_printf_spec_info    fInfo;        /* Information on this spec */
-  int32_t        fWidthPos;     /* Position of width in arg list */
-  int32_t        fPrecisionPos;    /* Position of precision in arg list */
-  int32_t        fArgPos;    /* Position of data in arg list */
-} u_printf_spec;
-
-#define UPRINTF_NUM_FMT_HANDLERS 108
-
-/* We do not use handlers for 0-0x1f */
-#define UPRINTF_BASE_FMT_HANDLERS 0x20
-
-/* buffer size for formatting */
-#define UPRINTF_BUFFER_SIZE 1024
-#define UPRINTF_SYMBOL_BUFFER_SIZE 8
-
-static const UChar gNullStr[] = {0x28, 0x6E, 0x75, 0x6C, 0x6C, 0x29, 0}; /* "(null)" */
-static const UChar gSpaceStr[] = {0x20, 0}; /* " " */
-
-/* Sets the sign of a format based on u_printf_spec_info */
-/* TODO: Is setting the prefix symbol to a positive sign a good idea in all locales? */
-static void
-u_printf_set_sign(UNumberFormat        *format,
-                   const u_printf_spec_info     *info,
-                   UChar *prefixBuffer,
-                   int32_t *prefixBufLen,
-                   UErrorCode *status)
-{
-    if(info->fShowSign) {
-        *prefixBufLen = unum_getTextAttribute(format,
-                                              UNUM_POSITIVE_PREFIX,
-                                              prefixBuffer,
-                                              *prefixBufLen,
-                                              status);
-        if (info->fSpace) {
-            /* Setting UNUM_PLUS_SIGN_SYMBOL affects the exponent too. */
-            /* unum_setSymbol(format, UNUM_PLUS_SIGN_SYMBOL, gSpaceStr, 1, &status); */
-            unum_setTextAttribute(format, UNUM_POSITIVE_PREFIX, gSpaceStr, 1, status);
-        }
-        else {
-            UChar plusSymbol[UPRINTF_SYMBOL_BUFFER_SIZE];
-            int32_t symbolLen;
-
-            symbolLen = unum_getSymbol(format,
-                UNUM_PLUS_SIGN_SYMBOL,
-                plusSymbol,
-                UPRV_LENGTHOF(plusSymbol),
-                status);
-            unum_setTextAttribute(format,
-                UNUM_POSITIVE_PREFIX,
-                plusSymbol,
-                symbolLen,
-                status);
-        }
-    }
-    else {
-        *prefixBufLen = 0;
-    }
-}
-
-static void
-u_printf_reset_sign(UNumberFormat        *format,
-                   const u_printf_spec_info     *info,
-                   UChar *prefixBuffer,
-                   int32_t *prefixBufLen,
-                   UErrorCode *status)
-{
-    if(info->fShowSign) {
-        unum_setTextAttribute(format,
-                              UNUM_POSITIVE_PREFIX,
-                              prefixBuffer,
-                              *prefixBufLen,
-                              status);
-    }
-}
-
-
-/* handle a '%' */
-static int32_t
-u_printf_simple_percent_handler(const u_printf_stream_handler  *handler,
-                                void                           *context,
-                                ULocaleBundle                  *formatBundle,
-                                const u_printf_spec_info       *info,
-                                const ufmt_args                *args)
-{
-    static const UChar PERCENT[] = { UP_PERCENT };
-
-    /* put a single '%' onto the output */
-    return handler->write(context, PERCENT, 1);
-}
-
-/* handle 's' */
-static int32_t
-u_printf_string_handler(const u_printf_stream_handler  *handler,
-                        void                           *context,
-                        ULocaleBundle                  *formatBundle,
-                        const u_printf_spec_info       *info,
-                        const ufmt_args                *args)
-{
-    UChar *s;
-    UChar buffer[UFMT_DEFAULT_BUFFER_SIZE];
-    int32_t len, written;
-    int32_t argSize;
-    const char *arg = (const char*)(args[0].ptrValue);
-
-    /* convert from the default codepage to Unicode */
-    if (arg) {
-        argSize = (int32_t)strlen(arg) + 1;
-        if (argSize >= MAX_UCHAR_BUFFER_SIZE(buffer)) {
-            s = ufmt_defaultCPToUnicode(arg, argSize,
-                    (UChar *)uprv_malloc(MAX_UCHAR_BUFFER_NEEDED(argSize)),
-                    MAX_UCHAR_BUFFER_NEEDED(argSize));
-            if(s == NULL) {
-                return 0;
-            }
-        }
-        else {
-            s = ufmt_defaultCPToUnicode(arg, argSize, buffer,
-                    UPRV_LENGTHOF(buffer));
-        }
-    }
-    else {
-        s = (UChar *)gNullStr;
-    }
-    len = u_strlen(s);
-
-    /* width = minimum # of characters to write */
-    /* precision = maximum # of characters to write */
-    if (info->fPrecision != -1 && info->fPrecision < len) {
-        len = info->fPrecision;
-    }
-
-    written = handler->pad_and_justify(context, info, s, len);
-
-    /* clean up */
-    if (gNullStr != s && buffer != s) {
-        uprv_free(s);
-    }
-
-    return written;
-}
-
-static int32_t
-u_printf_char_handler(const u_printf_stream_handler  *handler,
-                      void                           *context,
-                      ULocaleBundle                  *formatBundle,
-                      const u_printf_spec_info       *info,
-                      const ufmt_args                *args)
-{
-    UChar s[U16_MAX_LENGTH+1];
-    int32_t len = 1, written;
-    unsigned char arg = (unsigned char)(args[0].int64Value);
-
-    /* convert from default codepage to Unicode */
-    ufmt_defaultCPToUnicode((const char *)&arg, 2, s, UPRV_LENGTHOF(s));
-
-    /* Remember that this may be an MBCS character */
-    if (arg != 0) {
-        len = u_strlen(s);
-    }
-
-    /* width = minimum # of characters to write */
-    /* precision = maximum # of characters to write */
-    /* precision is ignored when handling a char */
-
-    written = handler->pad_and_justify(context, info, s, len);
-
-    return written;
-}
-
-static int32_t
-u_printf_double_handler(const u_printf_stream_handler  *handler,
-                        void                           *context,
-                        ULocaleBundle                  *formatBundle,
-                        const u_printf_spec_info       *info,
-                        const ufmt_args                *args)
-{
-    double        num         = (double) (args[0].doubleValue);
-    UNumberFormat  *format;
-    UChar          result[UPRINTF_BUFFER_SIZE];
-    UChar          prefixBuffer[UPRINTF_BUFFER_SIZE];
-    int32_t        prefixBufferLen = sizeof(prefixBuffer);
-    int32_t        minDecimalDigits;
-    int32_t        maxDecimalDigits;
-    int32_t        resultLen;
-    UErrorCode     status        = U_ZERO_ERROR;
-
-    prefixBuffer[0] = 0;
-
-    /* mask off any necessary bits */
-    /*  if(! info->fIsLongDouble)
-    num &= DBL_MAX;*/
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* save the formatter's state */
-    minDecimalDigits = unum_getAttribute(format, UNUM_MIN_FRACTION_DIGITS);
-    maxDecimalDigits = unum_getAttribute(format, UNUM_MAX_FRACTION_DIGITS);
-
-    /* set the appropriate flags and number of decimal digits on the formatter */
-    if(info->fPrecision != -1) {
-        /* set the # of decimal digits */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, info->fPrecision);
-    }
-    else if(info->fAlt) {
-        /* '#' means always show decimal point */
-        /* copy of printf behavior on Solaris - '#' shows 6 digits */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
-    }
-    else {
-        /* # of decimal digits is 6 if precision not specified regardless of locale */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
-    }
-
-    /* set whether to show the sign */
-    if (info->fShowSign) {
-        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
-    }
-
-    /* format the number */
-    resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
-
-    if (U_FAILURE(status)) {
-        resultLen = 0;
-    }
-
-    /* restore the number format */
-    /* TODO: Is this needed? */
-    unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, minDecimalDigits);
-    unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, maxDecimalDigits);
-
-    if (info->fShowSign) {
-        /* Reset back to original value regardless of what the error was */
-        UErrorCode localStatus = U_ZERO_ERROR;
-        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
-    }
-
-    return handler->pad_and_justify(context, info, result, resultLen);
-}
-
-/* HSYS */
-static int32_t
-u_printf_integer_handler(const u_printf_stream_handler  *handler,
-                         void                           *context,
-                         ULocaleBundle                  *formatBundle,
-                         const u_printf_spec_info       *info,
-                         const ufmt_args                *args)
-{
-    int64_t         num        = args[0].int64Value;
-    UNumberFormat   *format;
-    UChar           result[UPRINTF_BUFFER_SIZE];
-    UChar           prefixBuffer[UPRINTF_BUFFER_SIZE];
-    int32_t         prefixBufferLen = sizeof(prefixBuffer);
-    int32_t         minDigits     = -1;
-    int32_t         resultLen;
-    UErrorCode      status        = U_ZERO_ERROR;
-
-    prefixBuffer[0] = 0;
-
-    /* mask off any necessary bits */
-    if (info->fIsShort)
-        num = (int16_t)num;
-    else if (!info->fIsLongLong)
-        num = (int32_t)num;
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* set the appropriate flags on the formatter */
-
-    /* set the minimum integer digits */
-    if(info->fPrecision != -1) {
-        /* set the minimum # of digits */
-        minDigits = unum_getAttribute(format, UNUM_MIN_INTEGER_DIGITS);
-        unum_setAttribute(format, UNUM_MIN_INTEGER_DIGITS, info->fPrecision);
-    }
-
-    /* set whether to show the sign */
-    if(info->fShowSign) {
-        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
-    }
-
-    /* format the number */
-    resultLen = unum_formatInt64(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
-
-    if (U_FAILURE(status)) {
-        resultLen = 0;
-    }
-
-    /* restore the number format */
-    if (minDigits != -1) {
-        unum_setAttribute(format, UNUM_MIN_INTEGER_DIGITS, minDigits);
-    }
-
-    if (info->fShowSign) {
-        /* Reset back to original value regardless of what the error was */
-        UErrorCode localStatus = U_ZERO_ERROR;
-        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
-    }
-
-    return handler->pad_and_justify(context, info, result, resultLen);
-}
-
-static int32_t
-u_printf_hex_handler(const u_printf_stream_handler  *handler,
-                     void                           *context,
-                     ULocaleBundle                  *formatBundle,
-                     const u_printf_spec_info       *info,
-                     const ufmt_args                *args)
-{
-    int64_t         num        = args[0].int64Value;
-    UChar           result[UPRINTF_BUFFER_SIZE];
-    int32_t         len        = UPRINTF_BUFFER_SIZE;
-
-
-    /* mask off any necessary bits */
-    if (info->fIsShort)
-        num &= UINT16_MAX;
-    else if (!info->fIsLongLong)
-        num &= UINT32_MAX;
-
-    /* format the number, preserving the minimum # of digits */
-    ufmt_64tou(result, &len, num, 16,
-        (UBool)(info->fSpec == 0x0078),
-        (info->fPrecision == -1 && info->fZero) ? info->fWidth : info->fPrecision);
-
-    /* convert to alt form, if desired */
-    if(num != 0 && info->fAlt && len < UPRINTF_BUFFER_SIZE - 2) {
-        /* shift the formatted string right by 2 chars */
-        memmove(result + 2, result, len * sizeof(UChar));
-        result[0] = 0x0030;
-        result[1] = info->fSpec;
-        len += 2;
-    }
-
-    return handler->pad_and_justify(context, info, result, len);
-}
-
-static int32_t
-u_printf_octal_handler(const u_printf_stream_handler  *handler,
-                       void                           *context,
-                       ULocaleBundle                  *formatBundle,
-                       const u_printf_spec_info       *info,
-                       const ufmt_args                *args)
-{
-    int64_t         num        = args[0].int64Value;
-    UChar           result[UPRINTF_BUFFER_SIZE];
-    int32_t         len        = UPRINTF_BUFFER_SIZE;
-
-
-    /* mask off any necessary bits */
-    if (info->fIsShort)
-        num &= UINT16_MAX;
-    else if (!info->fIsLongLong)
-        num &= UINT32_MAX;
-
-    /* format the number, preserving the minimum # of digits */
-    ufmt_64tou(result, &len, num, 8,
-        FALSE, /* doesn't matter for octal */
-        info->fPrecision == -1 && info->fZero ? info->fWidth : info->fPrecision);
-
-    /* convert to alt form, if desired */
-    if(info->fAlt && result[0] != 0x0030 && len < UPRINTF_BUFFER_SIZE - 1) {
-        /* shift the formatted string right by 1 char */
-        memmove(result + 1, result, len * sizeof(UChar));
-        result[0] = 0x0030;
-        len += 1;
-    }
-
-    return handler->pad_and_justify(context, info, result, len);
-}
-
-static int32_t
-u_printf_uinteger_handler(const u_printf_stream_handler *handler,
-                          void                          *context,
-                          ULocaleBundle                 *formatBundle,
-                          const u_printf_spec_info      *info,
-                          const ufmt_args               *args)
-{
-    int64_t         num        = args[0].int64Value;
-    UNumberFormat   *format;
-    UChar           result[UPRINTF_BUFFER_SIZE];
-    int32_t         minDigits     = -1;
-    int32_t         resultLen;
-    UErrorCode      status        = U_ZERO_ERROR;
-
-    /* TODO: Fix this once uint64_t can be formatted. */
-    if (info->fIsShort)
-        num &= UINT16_MAX;
-    else if (!info->fIsLongLong)
-        num &= UINT32_MAX;
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* set the appropriate flags on the formatter */
-
-    /* set the minimum integer digits */
-    if(info->fPrecision != -1) {
-        /* set the minimum # of digits */
-        minDigits = unum_getAttribute(format, UNUM_MIN_INTEGER_DIGITS);
-        unum_setAttribute(format, UNUM_MIN_INTEGER_DIGITS, info->fPrecision);
-    }
-
-    /* To mirror other stdio implementations, we ignore the sign argument */
-
-    /* format the number */
-    resultLen = unum_formatInt64(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
-
-    if (U_FAILURE(status)) {
-        resultLen = 0;
-    }
-
-    /* restore the number format */
-    if (minDigits != -1) {
-        unum_setAttribute(format, UNUM_MIN_INTEGER_DIGITS, minDigits);
-    }
-
-    return handler->pad_and_justify(context, info, result, resultLen);
-}
-
-static int32_t
-u_printf_pointer_handler(const u_printf_stream_handler  *handler,
-                         void                           *context,
-                         ULocaleBundle                  *formatBundle,
-                         const u_printf_spec_info       *info,
-                         const ufmt_args                *args)
-{
-    UChar           result[UPRINTF_BUFFER_SIZE];
-    int32_t         len  = UPRINTF_BUFFER_SIZE;
-
-    /* format the pointer in hex */
-    ufmt_ptou(result, &len, args[0].ptrValue, TRUE/*, info->fPrecision*/);
-
-    return handler->pad_and_justify(context, info, result, len);
-}
-
-static int32_t
-u_printf_scientific_handler(const u_printf_stream_handler  *handler,
-                            void                           *context,
-                            ULocaleBundle                  *formatBundle,
-                            const u_printf_spec_info       *info,
-                            const ufmt_args                *args)
-{
-    double          num         = (double) (args[0].doubleValue);
-    UNumberFormat   *format;
-    UChar           result[UPRINTF_BUFFER_SIZE];
-    UChar           prefixBuffer[UPRINTF_BUFFER_SIZE];
-    int32_t         prefixBufferLen = sizeof(prefixBuffer);
-    int32_t         minDecimalDigits;
-    int32_t         maxDecimalDigits;
-    UErrorCode      status        = U_ZERO_ERROR;
-    UChar srcExpBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
-    int32_t srcLen, expLen;
-    int32_t resultLen;
-    UChar expBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
-
-    prefixBuffer[0] = 0;
-
-    /* mask off any necessary bits */
-    /*  if(! info->fIsLongDouble)
-    num &= DBL_MAX;*/
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(formatBundle, UNUM_SCIENTIFIC);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* set the appropriate flags on the formatter */
-
-    srcLen = unum_getSymbol(format,
-        UNUM_EXPONENTIAL_SYMBOL,
-        srcExpBuf,
-        sizeof(srcExpBuf),
-        &status);
-
-    /* Upper/lower case the e */
-    if (info->fSpec == (UChar)0x65 /* e */) {
-        expLen = u_strToLower(expBuf, (int32_t)sizeof(expBuf),
-            srcExpBuf, srcLen,
-            formatBundle->fLocale,
-            &status);
-    }
-    else {
-        expLen = u_strToUpper(expBuf, (int32_t)sizeof(expBuf),
-            srcExpBuf, srcLen,
-            formatBundle->fLocale,
-            &status);
-    }
-
-    unum_setSymbol(format,
-        UNUM_EXPONENTIAL_SYMBOL,
-        expBuf,
-        expLen,
-        &status);
-
-    /* save the formatter's state */
-    minDecimalDigits = unum_getAttribute(format, UNUM_MIN_FRACTION_DIGITS);
-    maxDecimalDigits = unum_getAttribute(format, UNUM_MAX_FRACTION_DIGITS);
-
-    /* set the appropriate flags and number of decimal digits on the formatter */
-    if(info->fPrecision != -1) {
-        /* set the # of decimal digits */
-        if (info->fOrigSpec == (UChar)0x65 /* e */ || info->fOrigSpec == (UChar)0x45 /* E */) {
-            unum_setAttribute(format, UNUM_FRACTION_DIGITS, info->fPrecision);
-        }
-        else {
-            unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, 1);
-            unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, info->fPrecision);
-        }
-    }
-    else if(info->fAlt) {
-        /* '#' means always show decimal point */
-        /* copy of printf behavior on Solaris - '#' shows 6 digits */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
-    }
-    else {
-        /* # of decimal digits is 6 if precision not specified */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
-    }
-
-    /* set whether to show the sign */
-    if (info->fShowSign) {
-        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
-    }
-
-    /* format the number */
-    resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
-
-    if (U_FAILURE(status)) {
-        resultLen = 0;
-    }
-
-    /* restore the number format */
-    /* TODO: Is this needed? */
-    unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, minDecimalDigits);
-    unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, maxDecimalDigits);
-
-    /* Since we're the only one using the scientific
-       format, we don't need to save the old exponent value. */
-    /*unum_setSymbol(format,
-        UNUM_EXPONENTIAL_SYMBOL,
-        srcExpBuf,
-        srcLen,
-        &status);*/
-
-    if (info->fShowSign) {
-        /* Reset back to original value regardless of what the error was */
-        UErrorCode localStatus = U_ZERO_ERROR;
-        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
-    }
-
-    return handler->pad_and_justify(context, info, result, resultLen);
-}
-
-static int32_t
-u_printf_percent_handler(const u_printf_stream_handler  *handler,
-                         void                           *context,
-                         ULocaleBundle                  *formatBundle,
-                         const u_printf_spec_info       *info,
-                         const ufmt_args                *args)
-{
-    double          num         = (double) (args[0].doubleValue);
-    UNumberFormat   *format;
-    UChar           result[UPRINTF_BUFFER_SIZE];
-    UChar           prefixBuffer[UPRINTF_BUFFER_SIZE];
-    int32_t         prefixBufferLen = sizeof(prefixBuffer);
-    int32_t         minDecimalDigits;
-    int32_t         maxDecimalDigits;
-    int32_t         resultLen;
-    UErrorCode      status        = U_ZERO_ERROR;
-
-    prefixBuffer[0] = 0;
-
-    /* mask off any necessary bits */
-    /*  if(! info->fIsLongDouble)
-    num &= DBL_MAX;*/
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(formatBundle, UNUM_PERCENT);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* save the formatter's state */
-    minDecimalDigits = unum_getAttribute(format, UNUM_MIN_FRACTION_DIGITS);
-    maxDecimalDigits = unum_getAttribute(format, UNUM_MAX_FRACTION_DIGITS);
-
-    /* set the appropriate flags and number of decimal digits on the formatter */
-    if(info->fPrecision != -1) {
-        /* set the # of decimal digits */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, info->fPrecision);
-    }
-    else if(info->fAlt) {
-        /* '#' means always show decimal point */
-        /* copy of printf behavior on Solaris - '#' shows 6 digits */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
-    }
-    else {
-        /* # of decimal digits is 6 if precision not specified */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
-    }
-
-    /* set whether to show the sign */
-    if (info->fShowSign) {
-        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
-    }
-
-    /* format the number */
-    resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
-
-    if (U_FAILURE(status)) {
-        resultLen = 0;
-    }
-
-    /* restore the number format */
-    /* TODO: Is this needed? */
-    unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, minDecimalDigits);
-    unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, maxDecimalDigits);
-
-    if (info->fShowSign) {
-        /* Reset back to original value regardless of what the error was */
-        UErrorCode localStatus = U_ZERO_ERROR;
-        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
-    }
-
-    return handler->pad_and_justify(context, info, result, resultLen);
-}
-
-static int32_t
-u_printf_ustring_handler(const u_printf_stream_handler  *handler,
-                         void                           *context,
-                         ULocaleBundle                  *formatBundle,
-                         const u_printf_spec_info       *info,
-                         const ufmt_args                *args)
-{
-    int32_t len, written;
-    const UChar *arg = (const UChar*)(args[0].ptrValue);
-
-    /* allocate enough space for the buffer */
-    if (arg == NULL) {
-        arg = gNullStr;
-    }
-    len = u_strlen(arg);
-
-    /* width = minimum # of characters to write */
-    /* precision = maximum # of characters to write */
-    if (info->fPrecision != -1 && info->fPrecision < len) {
-        len = info->fPrecision;
-    }
-
-    /* determine if the string should be padded */
-    written = handler->pad_and_justify(context, info, arg, len);
-
-    return written;
-}
-
-static int32_t
-u_printf_uchar_handler(const u_printf_stream_handler  *handler,
-                       void                           *context,
-                       ULocaleBundle                  *formatBundle,
-                       const u_printf_spec_info       *info,
-                       const ufmt_args                *args)
-{
-    int32_t written = 0;
-    UChar arg = (UChar)(args[0].int64Value);
-
-    /* width = minimum # of characters to write */
-    /* precision = maximum # of characters to write */
-    /* precision is ignored when handling a uchar */
-
-    /* determine if the string should be padded */
-    written = handler->pad_and_justify(context, info, &arg, 1);
-
-    return written;
-}
-
-static int32_t
-u_printf_scidbl_handler(const u_printf_stream_handler  *handler,
-                        void                           *context,
-                        ULocaleBundle                  *formatBundle,
-                        const u_printf_spec_info       *info,
-                        const ufmt_args                *args)
-{
-    u_printf_spec_info scidbl_info;
-    double      num = args[0].doubleValue;
-    int32_t     retVal;
-    UNumberFormat *format;
-    int32_t maxSigDecimalDigits, significantDigits;
-
-    memcpy(&scidbl_info, info, sizeof(u_printf_spec_info));
-
-    /* determine whether to use 'd', 'e' or 'f' notation */
-    if (scidbl_info.fPrecision == -1 && num == uprv_trunc(num))
-    {
-        /* use 'f' notation */
-        scidbl_info.fSpec = 0x0066;
-        scidbl_info.fPrecision = 0;
-        /* call the double handler */
-        retVal = u_printf_double_handler(handler, context, formatBundle, &scidbl_info, args);
-    }
-    else if(num < 0.0001 || (scidbl_info.fPrecision < 1 && 1000000.0 <= num)
-        || (scidbl_info.fPrecision != -1 && num > uprv_pow10(scidbl_info.fPrecision)))
-    {
-        /* use 'e' or 'E' notation */
-        scidbl_info.fSpec = scidbl_info.fSpec - 2;
-        if (scidbl_info.fPrecision == -1) {
-            scidbl_info.fPrecision = 5;
-        }
-        /* call the scientific handler */
-        retVal = u_printf_scientific_handler(handler, context, formatBundle, &scidbl_info, args);
-    }
-    else {
-        format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
-        /* Check for null pointer */
-        if (format == NULL) {
-            return 0;
-        }
-        maxSigDecimalDigits = unum_getAttribute(format, UNUM_MAX_SIGNIFICANT_DIGITS);
-        significantDigits = scidbl_info.fPrecision;
-
-        /* use 'f' notation */
-        scidbl_info.fSpec = 0x0066;
-        if (significantDigits == -1) {
-            significantDigits = 6;
-        }
-        unum_setAttribute(format, UNUM_SIGNIFICANT_DIGITS_USED, TRUE);
-        unum_setAttribute(format, UNUM_MAX_SIGNIFICANT_DIGITS, significantDigits);
-        /* call the double handler */
-        retVal = u_printf_double_handler(handler, context, formatBundle, &scidbl_info, args);
-        unum_setAttribute(format, UNUM_MAX_SIGNIFICANT_DIGITS, maxSigDecimalDigits);
-        unum_setAttribute(format, UNUM_SIGNIFICANT_DIGITS_USED, FALSE);
-    }
-    return retVal;
-}
-
-static int32_t
-u_printf_count_handler(const u_printf_stream_handler  *handler,
-                       void                           *context,
-                       ULocaleBundle                  *formatBundle,
-                       const u_printf_spec_info       *info,
-                       const ufmt_args                *args)
-{
-    int32_t *count = (int32_t*)(args[0].ptrValue);
-
-    /* in the special case of count, the u_printf_spec_info's width */
-    /* will contain the # of chars written thus far */
-    *count = info->fWidth;
-
-    return 0;
-}
-
-static int32_t
-u_printf_spellout_handler(const u_printf_stream_handler *handler,
-                          void                          *context,
-                          ULocaleBundle                 *formatBundle,
-                          const u_printf_spec_info      *info,
-                          const ufmt_args               *args)
-{
-    double          num         = (double) (args[0].doubleValue);
-    UNumberFormat   *format;
-    UChar           result[UPRINTF_BUFFER_SIZE];
-    UChar           prefixBuffer[UPRINTF_BUFFER_SIZE];
-    int32_t         prefixBufferLen = sizeof(prefixBuffer);
-    int32_t         minDecimalDigits;
-    int32_t         maxDecimalDigits;
-    int32_t         resultLen;
-    UErrorCode      status        = U_ZERO_ERROR;
-
-    prefixBuffer[0] = 0;
-
-    /* mask off any necessary bits */
-    /*  if(! info->fIsLongDouble)
-    num &= DBL_MAX;*/
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(formatBundle, UNUM_SPELLOUT);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* save the formatter's state */
-    minDecimalDigits = unum_getAttribute(format, UNUM_MIN_FRACTION_DIGITS);
-    maxDecimalDigits = unum_getAttribute(format, UNUM_MAX_FRACTION_DIGITS);
-
-    /* set the appropriate flags and number of decimal digits on the formatter */
-    if(info->fPrecision != -1) {
-        /* set the # of decimal digits */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, info->fPrecision);
-    }
-    else if(info->fAlt) {
-        /* '#' means always show decimal point */
-        /* copy of printf behavior on Solaris - '#' shows 6 digits */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
-    }
-    else {
-        /* # of decimal digits is 6 if precision not specified */
-        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
-    }
-
-    /* set whether to show the sign */
-    if (info->fShowSign) {
-        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
-    }
-
-    /* format the number */
-    resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
-
-    if (U_FAILURE(status)) {
-        resultLen = 0;
-    }
-
-    /* restore the number format */
-    /* TODO: Is this needed? */
-    unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, minDecimalDigits);
-    unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, maxDecimalDigits);
-
-    if (info->fShowSign) {
-        /* Reset back to original value regardless of what the error was */
-        UErrorCode localStatus = U_ZERO_ERROR;
-        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
-    }
-
-    return handler->pad_and_justify(context, info, result, resultLen);
-}
-
-/* Use US-ASCII characters only for formatting. Most codepages have
- characters 20-7F from Unicode. Using any other codepage specific
- characters will make it very difficult to format the string on
- non-Unicode machines */
-static const u_printf_info g_u_printf_infos[UPRINTF_NUM_FMT_HANDLERS] = {
-/* 0x20 */
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_SIMPLE_PERCENT,UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-
-/* 0x30 */
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-
-/* 0x40 */
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_UCHAR,
-    UFMT_EMPTY,         UFMT_SCIENTIFIC,    UFMT_EMPTY,         UFMT_SCIDBL,
-#ifdef U_USE_OBSOLETE_IO_FORMATTING
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_UCHAR/*deprecated*/,
-#else
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-#endif
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-
-/* 0x50 */
-    UFMT_PERCENT,       UFMT_EMPTY,         UFMT_EMPTY,         UFMT_USTRING,
-#ifdef U_USE_OBSOLETE_IO_FORMATTING
-    UFMT_EMPTY,         UFMT_USTRING/*deprecated*/,UFMT_SPELLOUT,      UFMT_EMPTY,
-#else
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_SPELLOUT,      UFMT_EMPTY,
-#endif
-    UFMT_HEX,           UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-
-/* 0x60 */
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_CHAR,
-    UFMT_INT,           UFMT_SCIENTIFIC,    UFMT_DOUBLE,        UFMT_SCIDBL,
-    UFMT_EMPTY,         UFMT_INT,           UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_COUNT,         UFMT_OCTAL,
-
-/* 0x70 */
-    UFMT_POINTER,       UFMT_EMPTY,         UFMT_EMPTY,         UFMT_STRING,
-    UFMT_EMPTY,         UFMT_UINT,          UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_HEX,           UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-};
-
-/* flag characters for uprintf */
-#define FLAG_MINUS 0x002D
-#define FLAG_PLUS 0x002B
-#define FLAG_SPACE 0x0020
-#define FLAG_POUND 0x0023
-#define FLAG_ZERO  0x0030
-#define FLAG_PAREN 0x0028
-
-#define ISFLAG(s)    (s) == FLAG_MINUS || \
-            (s) == FLAG_PLUS || \
-            (s) == FLAG_SPACE || \
-            (s) == FLAG_POUND || \
-            (s) == FLAG_ZERO || \
-            (s) == FLAG_PAREN
-
-/* special characters for uprintf */
-#define SPEC_ASTERISK 0x002A
-#define SPEC_DOLLARSIGN 0x0024
-#define SPEC_PERIOD 0x002E
-#define SPEC_PERCENT 0x0025
-
-/* unicode digits */
-#define DIGIT_ZERO 0x0030
-#define DIGIT_ONE 0x0031
-#define DIGIT_TWO 0x0032
-#define DIGIT_THREE 0x0033
-#define DIGIT_FOUR 0x0034
-#define DIGIT_FIVE 0x0035
-#define DIGIT_SIX 0x0036
-#define DIGIT_SEVEN 0x0037
-#define DIGIT_EIGHT 0x0038
-#define DIGIT_NINE 0x0039
-
-#define ISDIGIT(s)    (s) == DIGIT_ZERO || \
-            (s) == DIGIT_ONE || \
-            (s) == DIGIT_TWO || \
-            (s) == DIGIT_THREE || \
-            (s) == DIGIT_FOUR || \
-            (s) == DIGIT_FIVE || \
-            (s) == DIGIT_SIX || \
-            (s) == DIGIT_SEVEN || \
-            (s) == DIGIT_EIGHT || \
-            (s) == DIGIT_NINE
-
-/* u_printf modifiers */
-#define MOD_H 0x0068
-#define MOD_LOWERL 0x006C
-#define MOD_L 0x004C
-
-#define ISMOD(s)    (s) == MOD_H || \
-            (s) == MOD_LOWERL || \
-            (s) == MOD_L
-/* Returns an array of the parsed argument type given in the format string. */
-static ufmt_args* parseArguments(const UChar *alias, va_list ap, UErrorCode *status) {
-    ufmt_args *arglist = NULL;
-    ufmt_type_info *typelist = NULL;
-    UBool *islonglong = NULL;
-    int32_t size = 0;
-    int32_t pos = 0;
-    UChar type;
-    uint16_t handlerNum;
-    const UChar *aliasStart = alias;
-
-    /* get maximum number of arguments */
-    for(;;) {
-        /* find % */
-        while(*alias != UP_PERCENT && *alias != 0x0000) {
-            alias++;
-        }
-
-        if(*alias == 0x0000) {
-            break;
-        }
-
-        alias++;
-
-        /* handle the pos number */
-        if(ISDIGIT(*alias)) {
-
-            /* handle positional parameters */
-            if(ISDIGIT(*alias)) {
-                pos = (int) (*alias++ - DIGIT_ZERO);
-
-                while(ISDIGIT(*alias)) {
-                    pos *= 10;
-                    pos += (int) (*alias++ - DIGIT_ZERO);
-                }
-            }
-
-            /* if there is no '$', don't read anything */
-            if(*alias != SPEC_DOLLARSIGN) {
-                return NULL;
-            }
-        } else {
-            return NULL;
-        }
-
-        if (pos > size) {
-            size = pos;
-        }
-    }
-
-    /* create the parsed argument list */
-    typelist = (ufmt_type_info*)uprv_malloc(sizeof(ufmt_type_info) * size);
-    islonglong = (UBool*)uprv_malloc(sizeof(UBool) * size);
-    arglist = (ufmt_args*)uprv_malloc(sizeof(ufmt_args) * size);
-
-    /* If malloc failed, return NULL */
-    if (!typelist || !islonglong || !arglist) {
-        if (typelist) {
-            uprv_free(typelist);
-        }
-
-        if (islonglong) {
-            uprv_free(islonglong);
-        }
-
-        if (arglist) {
-            uprv_free(arglist);
-        }
-
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-
-    /* reset alias back to the beginning */
-    alias = aliasStart;
-
-    for(;;) {
-        /* find % */
-        while(*alias != UP_PERCENT && *alias != 0x0000) {
-            alias++;
-        }
-
-        if(*alias == 0x0000) {
-            break;
-        }
-
-        alias++;
-
-        /* handle positional parameters */
-        if(ISDIGIT(*alias)) {
-            pos = (int) (*alias++ - DIGIT_ZERO);
-
-            while(ISDIGIT(*alias)) {
-                pos *= 10;
-                pos += (int) (*alias++ - DIGIT_ZERO);
-            }
-        }
-        /* offset position by 1 */
-        pos--;
-
-        /* skip over everything except for the type */
-        while (ISMOD(*alias) || ISFLAG(*alias) || ISDIGIT(*alias) || 
-            *alias == SPEC_ASTERISK || *alias == SPEC_PERIOD || *alias == SPEC_DOLLARSIGN) {
-                islonglong[pos] = FALSE;
-                if (ISMOD(*alias)) {
-                    alias++;
-                    if (*alias == MOD_LOWERL) {
-                        islonglong[pos] = TRUE;
-                    } 
-                } 
-                alias++;
-        }
-        type = *alias;
-
-        /* store the argument type in the correct position of the parsed argument list */
-        handlerNum = (uint16_t)(type - UPRINTF_BASE_FMT_HANDLERS);
-        if (handlerNum < UPRINTF_NUM_FMT_HANDLERS) {
-            typelist[pos] = g_u_printf_infos[ handlerNum ].info;
-        } else {
-            typelist[pos] = ufmt_empty;
-        }
-    }
-
-    /* store argument in arglist */
-    for (pos = 0; pos < size; pos++) {
-        switch (typelist[pos]) {
-        case ufmt_string:
-        case ufmt_ustring:
-        case ufmt_pointer:
-            arglist[pos].ptrValue = va_arg(ap, void*);
-            break;
-        case ufmt_char:
-        case ufmt_uchar:
-        case ufmt_int:
-            if (islonglong[pos]) {
-                arglist[pos].int64Value = va_arg(ap, int64_t);
-            }
-            else {
-                arglist[pos].int64Value = va_arg(ap, int32_t);
-            }
-            break;
-        case ufmt_float:
-            arglist[pos].floatValue = (float) va_arg(ap, double);
-            break;
-        case ufmt_double:
-            arglist[pos].doubleValue = va_arg(ap, double);
-            break;
-        default:
-            /* else args is ignored */
-            arglist[pos].ptrValue = NULL;
-            break;
-        }
-    }
-
-    uprv_free(typelist);
-    uprv_free(islonglong);
-
-    return arglist;
-}
-
-/* We parse the argument list in Unicode */
-U_CFUNC int32_t
-u_printf_parse(const u_printf_stream_handler *streamHandler,
-               const UChar     *fmt,
-               void            *context,
-               u_localized_print_string *locStringContext,
-               ULocaleBundle   *formatBundle,
-               int32_t         *written,
-               va_list         ap)
-{
-    uint16_t         handlerNum;
-    ufmt_args        args;
-    ufmt_type_info   argType;
-    u_printf_handler *handler;
-    u_printf_spec    spec;
-    u_printf_spec_info *info = &(spec.fInfo);
-
-    const UChar *alias = fmt;
-    const UChar *backup;
-    const UChar *lastAlias;
-    const UChar *orgAlias = fmt;
-    /* parsed argument list */
-    ufmt_args *arglist = NULL; /* initialized it to avoid compiler warnings */
-    UErrorCode status = U_ZERO_ERROR;
-    if (!locStringContext || locStringContext->available >= 0) {
-        /* get the parsed list of argument types */
-        arglist = parseArguments(orgAlias, ap, &status);
-
-        /* Return error if parsing failed. */
-        if (U_FAILURE(status)) {
-            return -1;
-        }
-    }
-    
-    /* iterate through the pattern */
-    while(!locStringContext || locStringContext->available >= 0) {
-
-        /* find the next '%' */
-        lastAlias = alias;
-        while(*alias != UP_PERCENT && *alias != 0x0000) {
-            alias++;
-        }
-
-        /* write any characters before the '%' */
-        if(alias > lastAlias) {
-            *written += (streamHandler->write)(context, lastAlias, (int32_t)(alias - lastAlias));
-        }
-
-        /* break if at end of string */
-        if(*alias == 0x0000) {
-            break;
-        }
-
-        /* initialize spec to default values */
-        spec.fWidthPos     = -1;
-        spec.fPrecisionPos = -1;
-        spec.fArgPos       = -1;
-
-        uprv_memset(info, 0, sizeof(*info));
-        info->fPrecision    = -1;
-        info->fWidth        = -1;
-        info->fPadChar      = 0x0020;
-
-        /* skip over the initial '%' */
-        alias++;
-
-        /* Check for positional argument */
-        if(ISDIGIT(*alias)) {
-
-            /* Save the current position */
-            backup = alias;
-
-            /* handle positional parameters */
-            if(ISDIGIT(*alias)) {
-                spec.fArgPos = (int) (*alias++ - DIGIT_ZERO);
-
-                while(ISDIGIT(*alias)) {
-                    spec.fArgPos *= 10;
-                    spec.fArgPos += (int) (*alias++ - DIGIT_ZERO);
-                }
-            }
-
-            /* if there is no '$', don't read anything */
-            if(*alias != SPEC_DOLLARSIGN) {
-                spec.fArgPos = -1;
-                alias = backup;
-            }
-            /* munge the '$' */
-            else
-                alias++;
-        }
-
-        /* Get any format flags */
-        while(ISFLAG(*alias)) {
-            switch(*alias++) {
-
-                /* left justify */
-            case FLAG_MINUS:
-                info->fLeft = TRUE;
-                break;
-
-                /* always show sign */
-            case FLAG_PLUS:
-                info->fShowSign = TRUE;
-                break;
-
-                /* use space if no sign present */
-            case FLAG_SPACE:
-                info->fShowSign = TRUE;
-                info->fSpace = TRUE;
-                break;
-
-                /* use alternate form */
-            case FLAG_POUND:
-                info->fAlt = TRUE;
-                break;
-
-                /* pad with leading zeroes */
-            case FLAG_ZERO:
-                info->fZero = TRUE;
-                info->fPadChar = 0x0030;
-                break;
-
-                /* pad character specified */
-            case FLAG_PAREN:
-
-                /* TODO test that all four are numbers */
-                /* first four characters are hex values for pad char */
-                info->fPadChar = (UChar)ufmt_digitvalue(*alias++);
-                info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
-                info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
-                info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
-
-                /* final character is ignored */
-                alias++;
-
-                break;
-            }
-        }
-
-        /* Get the width */
-
-        /* width is specified out of line */
-        if(*alias == SPEC_ASTERISK) {
-
-            info->fWidth = -2;
-
-            /* Skip the '*' */
-            alias++;
-
-            /* Save the current position */
-            backup = alias;
-
-            /* handle positional parameters */
-            if(ISDIGIT(*alias)) {
-                spec.fWidthPos = (int) (*alias++ - DIGIT_ZERO);
-
-                while(ISDIGIT(*alias)) {
-                    spec.fWidthPos *= 10;
-                    spec.fWidthPos += (int) (*alias++ - DIGIT_ZERO);
-                }
-            }
-
-            /* if there is no '$', don't read anything */
-            if(*alias != SPEC_DOLLARSIGN) {
-                spec.fWidthPos = -1;
-                alias = backup;
-            }
-            /* munge the '$' */
-            else
-                alias++;
-        }
-        /* read the width, if present */
-        else if(ISDIGIT(*alias)){
-            info->fWidth = (int) (*alias++ - DIGIT_ZERO);
-
-            while(ISDIGIT(*alias)) {
-                info->fWidth *= 10;
-                info->fWidth += (int) (*alias++ - DIGIT_ZERO);
-            }
-        }
-
-        /* Get the precision */
-
-        if(*alias == SPEC_PERIOD) {
-
-            /* eat up the '.' */
-            alias++;
-
-            /* precision is specified out of line */
-            if(*alias == SPEC_ASTERISK) {
-
-                info->fPrecision = -2;
-
-                /* Skip the '*' */
-                alias++;
-
-                /* save the current position */
-                backup = alias;
-
-                /* handle positional parameters */
-                if(ISDIGIT(*alias)) {
-                    spec.fPrecisionPos = (int) (*alias++ - DIGIT_ZERO);
-
-                    while(ISDIGIT(*alias)) {
-                        spec.fPrecisionPos *= 10;
-                        spec.fPrecisionPos += (int) (*alias++ - DIGIT_ZERO);
-                    }
-
-                    /* if there is no '$', don't read anything */
-                    if(*alias != SPEC_DOLLARSIGN) {
-                        spec.fPrecisionPos = -1;
-                        alias = backup;
-                    }
-                    else {
-                        /* munge the '$' */
-                        alias++;
-                    }
-                }
-            }
-            /* read the precision */
-            else if(ISDIGIT(*alias)){
-                info->fPrecision = (int) (*alias++ - DIGIT_ZERO);
-
-                while(ISDIGIT(*alias)) {
-                    info->fPrecision *= 10;
-                    info->fPrecision += (int) (*alias++ - DIGIT_ZERO);
-                }
-            }
-        }
-
-        /* Get any modifiers */
-        if(ISMOD(*alias)) {
-            switch(*alias++) {
-
-                /* short */
-            case MOD_H:
-                info->fIsShort = TRUE;
-                break;
-
-                /* long or long long */
-            case MOD_LOWERL:
-                if(*alias == MOD_LOWERL) {
-                    info->fIsLongLong = TRUE;
-                    /* skip over the next 'l' */
-                    alias++;
-                }
-                else
-                    info->fIsLong = TRUE;
-                break;
-
-                /* long double */
-            case MOD_L:
-                info->fIsLongDouble = TRUE;
-                break;
-            }
-        }
-
-        /* finally, get the specifier letter */
-        info->fSpec = *alias++;
-        info->fOrigSpec = info->fSpec;
-
-        /* fill in the precision and width, if specified out of line */
-
-        /* width specified out of line */
-        if(spec.fInfo.fWidth == -2) {
-            if(spec.fWidthPos == -1) {
-                /* read the width from the argument list */
-                info->fWidth = va_arg(ap, int32_t);
-            }
-            /* else handle positional parameter */
-
-            /* if it's negative, take the absolute value and set left alignment */
-            if(info->fWidth < 0) {
-                info->fWidth *= -1; /* Make positive */
-                info->fLeft = TRUE;
-            }
-        }
-
-        /* precision specified out of line */
-        if(info->fPrecision == -2) {
-            if(spec.fPrecisionPos == -1) {
-                /* read the precision from the argument list */
-                info->fPrecision = va_arg(ap, int32_t);
-            }
-            /* else handle positional parameter */
-
-            /* if it's negative, set it to zero */
-            if(info->fPrecision < 0)
-                info->fPrecision = 0;
-        }
-
-        handlerNum = (uint16_t)(info->fSpec - UPRINTF_BASE_FMT_HANDLERS);
-        if (handlerNum < UPRINTF_NUM_FMT_HANDLERS) {
-            /* query the info function for argument information */
-            argType = g_u_printf_infos[ handlerNum ].info;
-
-            /* goto the correct argument on arg_list if position is specified */
-            if (spec.fArgPos > 0) {
-                /* offset position by 1 */
-                spec.fArgPos--;
-                switch(argType) {
-                case ufmt_count:
-                    /* set the spec's width to the # of chars written */
-                    info->fWidth = *written;
-                    /* fall through to set the pointer */
-                    U_FALLTHROUGH;
-                case ufmt_string:
-                case ufmt_ustring:
-                case ufmt_pointer:
-                    args.ptrValue = arglist[spec.fArgPos].ptrValue;
-                    break;
-                case ufmt_char:
-                case ufmt_uchar:
-                case ufmt_int:
-                    args.int64Value = arglist[spec.fArgPos].int64Value;
-                    break;
-                case ufmt_float:
-                    args.floatValue = arglist[spec.fArgPos].floatValue;
-                    break;
-                case ufmt_double:
-                    args.doubleValue = arglist[spec.fArgPos].doubleValue;
-                    break;
-                default:
-                    /* else args is ignored */
-                    args.ptrValue = NULL;
-                    break;
-                }
-            } else { /* no positional argument specified */
-                switch(argType) {
-                case ufmt_count:
-                    /* set the spec's width to the # of chars written */
-                    info->fWidth = *written;
-                    /* fall through to set the pointer */
-                    U_FALLTHROUGH;
-                case ufmt_string:
-                case ufmt_ustring:
-                case ufmt_pointer:
-                    args.ptrValue = va_arg(ap, void*);
-                    break;
-                case ufmt_char:
-                case ufmt_uchar:
-                case ufmt_int:
-                    if (info->fIsLongLong) {
-                        args.int64Value = va_arg(ap, int64_t);
-                    }
-                    else {
-                        args.int64Value = va_arg(ap, int32_t);
-                    }
-                    break;
-                case ufmt_float:
-                    args.floatValue = (float) va_arg(ap, double);
-                    break;
-                case ufmt_double:
-                    args.doubleValue = va_arg(ap, double);
-                    break;
-                default:
-                    /* else args is ignored */
-                    args.ptrValue = NULL;
-                    break;
-                }
-            }
-
-            /* call the handler function */
-            handler = g_u_printf_infos[ handlerNum ].handler;
-            if(handler != 0) {
-                *written += (*handler)(streamHandler, context, formatBundle, info, &args);
-            }
-            else {
-                /* just echo unknown tags */
-                *written += (streamHandler->write)(context, fmt, (int32_t)(alias - lastAlias));
-            }
-        }
-        else {
-            /* just echo unknown tags */
-            *written += (streamHandler->write)(context, fmt, (int32_t)(alias - lastAlias));
-        }
-    }
-    /* delete parsed argument list */
-    if (arglist != NULL) {
-        uprv_free(arglist);
-    }
-    /* return # of characters in this format that have been parsed. */
-    return (int32_t)(alias - fmt);
-}
-
-#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/source/io/uscanf.c b/source/io/uscanf.c
deleted file mode 100644 (file)
index 34368da..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1998-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-* File uscanf.c
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   12/02/98    stephen        Creation.
-*   03/13/99    stephen     Modified for new C API.
-******************************************************************************
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
-
-#include "unicode/putil.h"
-#include "unicode/ustdio.h"
-#include "unicode/ustring.h"
-#include "uscanf.h"
-#include "ufile.h"
-#include "ufmt_cmn.h"
-
-#include "cmemory.h"
-#include "cstring.h"
-
-
-U_CAPI int32_t U_EXPORT2
-u_fscanf(UFILE        *f,
-         const char    *patternSpecification,
-         ... )
-{
-    va_list ap;
-    int32_t converted;
-
-    va_start(ap, patternSpecification);
-    converted = u_vfscanf(f, patternSpecification, ap);
-    va_end(ap);
-
-    return converted;
-}
-
-U_CAPI int32_t U_EXPORT2
-u_fscanf_u(UFILE        *f,
-           const UChar    *patternSpecification,
-           ... )
-{
-    va_list ap;
-    int32_t converted;
-
-    va_start(ap, patternSpecification);
-    converted = u_vfscanf_u(f, patternSpecification, ap);
-    va_end(ap);
-
-    return converted;
-}
-
-U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vfscanf(UFILE        *f,
-          const char    *patternSpecification,
-          va_list        ap)
-{
-    int32_t converted;
-    UChar *pattern;
-    UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
-    int32_t size = (int32_t)uprv_strlen(patternSpecification) + 1;
-
-    /* convert from the default codepage to Unicode */
-    if (size >= MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
-        pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
-        if(pattern == 0) {
-            return 0;
-        }
-    }
-    else {
-        pattern = patBuffer;
-    }
-    u_charsToUChars(patternSpecification, pattern, size);
-
-    /* do the work */
-    converted = u_vfscanf_u(f, pattern, ap);
-
-    /* clean up */
-    if (pattern != patBuffer) {
-        uprv_free(pattern);
-    }
-
-    return converted;
-}
-
-U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vfscanf_u(UFILE       *f,
-            const UChar *patternSpecification,
-            va_list     ap)
-{
-    return u_scanf_parse(f, patternSpecification, ap);
-}
-
-#endif /* #if !UCONFIG_NO_FORMATTING */
-
index 1140eee..ebb8e79 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/io/uscanf_p.c b/source/io/uscanf_p.c
deleted file mode 100644 (file)
index ded984c..0000000
+++ /dev/null
@@ -1,1408 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 1998-2016, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*
-* File uscnnf_p.c
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   12/02/98    stephen        Creation.
-*   03/13/99    stephen     Modified for new C API.
-*******************************************************************************
-*/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
-
-#include "unicode/uchar.h"
-#include "unicode/ustring.h"
-#include "unicode/unum.h"
-#include "unicode/udat.h"
-#include "unicode/uset.h"
-#include "uscanf.h"
-#include "ufmt_cmn.h"
-#include "ufile.h"
-#include "locbund.h"
-
-#include "cmemory.h"
-#include "ustr_cnv.h"
-
-/* flag characters for u_scanf */
-#define FLAG_ASTERISK 0x002A
-#define FLAG_PAREN 0x0028
-
-#define ISFLAG(s)    (s) == FLAG_ASTERISK || \
-            (s) == FLAG_PAREN
-
-/* special characters for u_scanf */
-#define SPEC_DOLLARSIGN 0x0024
-
-/* unicode digits */
-#define DIGIT_ZERO 0x0030
-#define DIGIT_ONE 0x0031
-#define DIGIT_TWO 0x0032
-#define DIGIT_THREE 0x0033
-#define DIGIT_FOUR 0x0034
-#define DIGIT_FIVE 0x0035
-#define DIGIT_SIX 0x0036
-#define DIGIT_SEVEN 0x0037
-#define DIGIT_EIGHT 0x0038
-#define DIGIT_NINE 0x0039
-
-#define ISDIGIT(s)    (s) == DIGIT_ZERO || \
-            (s) == DIGIT_ONE || \
-            (s) == DIGIT_TWO || \
-            (s) == DIGIT_THREE || \
-            (s) == DIGIT_FOUR || \
-            (s) == DIGIT_FIVE || \
-            (s) == DIGIT_SIX || \
-            (s) == DIGIT_SEVEN || \
-            (s) == DIGIT_EIGHT || \
-            (s) == DIGIT_NINE
-
-/* u_scanf modifiers */
-#define MOD_H 0x0068
-#define MOD_LOWERL 0x006C
-#define MOD_L 0x004C
-
-#define ISMOD(s)    (s) == MOD_H || \
-            (s) == MOD_LOWERL || \
-            (s) == MOD_L
-
-/**
- * Struct encapsulating a single uscanf format specification.
- */
-typedef struct u_scanf_spec_info {
-    int32_t fWidth;         /* Width  */
-
-    UChar   fSpec;          /* Format specification  */
-
-    UChar   fPadChar;       /* Padding character  */
-
-    UBool   fSkipArg;       /* TRUE if arg should be skipped */
-    UBool   fIsLongDouble;  /* L flag  */
-    UBool   fIsShort;       /* h flag  */
-    UBool   fIsLong;        /* l flag  */
-    UBool   fIsLongLong;    /* ll flag  */
-    UBool   fIsString;      /* TRUE if this is a NULL-terminated string. */
-} u_scanf_spec_info;
-
-
-/**
- * Struct encapsulating a single u_scanf format specification.
- */
-typedef struct u_scanf_spec {
-    u_scanf_spec_info    fInfo;        /* Information on this spec */
-    int32_t        fArgPos;    /* Position of data in arg list */
-} u_scanf_spec;
-
-/**
- * Parse a single u_scanf format specifier in Unicode.
- * @param fmt A pointer to a '%' character in a u_scanf format specification.
- * @param spec A pointer to a <TT>u_scanf_spec</TT> to receive the parsed
- * format specifier.
- * @return The number of characters contained in this specifier.
- */
-static int32_t
-u_scanf_parse_spec (const UChar     *fmt,
-            u_scanf_spec    *spec)
-{
-    const UChar *s = fmt;
-    const UChar *backup;
-    u_scanf_spec_info *info = &(spec->fInfo);
-
-    /* initialize spec to default values */
-    spec->fArgPos             = -1;
-
-    info->fWidth        = -1;
-    info->fSpec         = 0x0000;
-    info->fPadChar      = 0x0020;
-    info->fSkipArg      = FALSE;
-    info->fIsLongDouble = FALSE;
-    info->fIsShort      = FALSE;
-    info->fIsLong       = FALSE;
-    info->fIsLongLong   = FALSE;
-    info->fIsString     = TRUE;
-
-
-    /* skip over the initial '%' */
-    s++;
-
-    /* Check for positional argument */
-    if(ISDIGIT(*s)) {
-
-        /* Save the current position */
-        backup = s;
-
-        /* handle positional parameters */
-        if(ISDIGIT(*s)) {
-            spec->fArgPos = (int) (*s++ - DIGIT_ZERO);
-
-            while(ISDIGIT(*s)) {
-                spec->fArgPos *= 10;
-                spec->fArgPos += (int) (*s++ - DIGIT_ZERO);
-            }
-        }
-
-        /* if there is no '$', don't read anything */
-        if(*s != SPEC_DOLLARSIGN) {
-            spec->fArgPos = -1;
-            s = backup;
-        }
-        /* munge the '$' */
-        else
-            s++;
-    }
-
-    /* Get any format flags */
-    while(ISFLAG(*s)) {
-        switch(*s++) {
-
-            /* skip argument */
-        case FLAG_ASTERISK:
-            info->fSkipArg = TRUE;
-            break;
-
-            /* pad character specified */
-        case FLAG_PAREN:
-
-            /* first four characters are hex values for pad char */
-            info->fPadChar = (UChar)ufmt_digitvalue(*s++);
-            info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
-            info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
-            info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
-
-            /* final character is ignored */
-            s++;
-
-            break;
-        }
-    }
-
-    /* Get the width */
-    if(ISDIGIT(*s)){
-        info->fWidth = (int) (*s++ - DIGIT_ZERO);
-
-        while(ISDIGIT(*s)) {
-            info->fWidth *= 10;
-            info->fWidth += (int) (*s++ - DIGIT_ZERO);
-        }
-    }
-
-    /* Get any modifiers */
-    if(ISMOD(*s)) {
-        switch(*s++) {
-
-            /* short */
-        case MOD_H:
-            info->fIsShort = TRUE;
-            break;
-
-            /* long or long long */
-        case MOD_LOWERL:
-            if(*s == MOD_LOWERL) {
-                info->fIsLongLong = TRUE;
-                /* skip over the next 'l' */
-                s++;
-            }
-            else
-                info->fIsLong = TRUE;
-            break;
-
-            /* long double */
-        case MOD_L:
-            info->fIsLongDouble = TRUE;
-            break;
-        }
-    }
-
-    /* finally, get the specifier letter */
-    info->fSpec = *s++;
-
-    /* return # of characters in this specifier */
-    return (int32_t)(s - fmt);
-}
-
-#define UP_PERCENT 0x0025
-
-
-/* ANSI style formatting */
-/* Use US-ASCII characters only for formatting */
-
-/* % */
-#define UFMT_SIMPLE_PERCENT {ufmt_simple_percent, u_scanf_simple_percent_handler}
-/* s */
-#define UFMT_STRING         {ufmt_string, u_scanf_string_handler}
-/* c */
-#define UFMT_CHAR           {ufmt_string, u_scanf_char_handler}
-/* d, i */
-#define UFMT_INT            {ufmt_int, u_scanf_integer_handler}
-/* u */
-#define UFMT_UINT           {ufmt_int, u_scanf_uinteger_handler}
-/* o */
-#define UFMT_OCTAL          {ufmt_int, u_scanf_octal_handler}
-/* x, X */
-#define UFMT_HEX            {ufmt_int, u_scanf_hex_handler}
-/* f */
-#define UFMT_DOUBLE         {ufmt_double, u_scanf_double_handler}
-/* e, E */
-#define UFMT_SCIENTIFIC     {ufmt_double, u_scanf_scientific_handler}
-/* g, G */
-#define UFMT_SCIDBL         {ufmt_double, u_scanf_scidbl_handler}
-/* n */
-#define UFMT_COUNT          {ufmt_count, u_scanf_count_handler}
-/* [ */
-#define UFMT_SCANSET        {ufmt_string, u_scanf_scanset_handler}
-
-/* non-ANSI extensions */
-/* Use US-ASCII characters only for formatting */
-
-/* p */
-#define UFMT_POINTER        {ufmt_pointer, u_scanf_pointer_handler}
-/* V */
-#define UFMT_SPELLOUT       {ufmt_double, u_scanf_spellout_handler}
-/* P */
-#define UFMT_PERCENT        {ufmt_double, u_scanf_percent_handler}
-/* C  K is old format */
-#define UFMT_UCHAR          {ufmt_uchar, u_scanf_uchar_handler}
-/* S  U is old format */
-#define UFMT_USTRING        {ufmt_ustring, u_scanf_ustring_handler}
-
-
-#define UFMT_EMPTY {ufmt_empty, NULL}
-
-/**
- * A u_scanf handler function.  
- * A u_scanf handler is responsible for handling a single u_scanf 
- * format specification, for example 'd' or 's'.
- * @param stream The UFILE to which to write output.
- * @param info A pointer to a <TT>u_scanf_spec_info</TT> struct containing
- * information on the format specification.
- * @param args A pointer to the argument data
- * @param fmt A pointer to the first character in the format string
- * following the spec.
- * @param fmtConsumed On output, set to the number of characters consumed
- * in <TT>fmt</TT>. Do nothing, if the argument isn't variable width.
- * @param argConverted The number of arguments converted and assigned, or -1 if an
- * error occurred.
- * @return The number of code points consumed during reading.
- */
-typedef int32_t (*u_scanf_handler) (UFILE   *stream,
-                   u_scanf_spec_info  *info,
-                   ufmt_args                *args,
-                   const UChar              *fmt,
-                   int32_t                  *fmtConsumed,
-                   int32_t                  *argConverted);
-
-typedef struct u_scanf_info {
-    ufmt_type_info info;
-    u_scanf_handler handler;
-} u_scanf_info;
-
-#define USCANF_NUM_FMT_HANDLERS 108
-#define USCANF_SYMBOL_BUFFER_SIZE 8
-
-/* We do not use handlers for 0-0x1f */
-#define USCANF_BASE_FMT_HANDLERS 0x20
-
-
-static int32_t
-u_scanf_skip_leading_ws(UFILE   *input,
-                        UChar   pad)
-{
-    UChar   c;
-    int32_t count = 0;
-    UBool isNotEOF;
-
-    /* skip all leading ws in the input */
-    while( (isNotEOF = ufile_getch(input, &c)) && (c == pad || u_isWhitespace(c)) )
-    {
-        count++;
-    }
-
-    /* put the final character back on the input */
-    if(isNotEOF)
-        u_fungetc(c, input);
-
-    return count;
-}
-
-/* TODO: Is always skipping the prefix symbol as a positive sign a good idea in all locales? */
-static int32_t
-u_scanf_skip_leading_positive_sign(UFILE   *input,
-                                   UNumberFormat *format,
-                                   UErrorCode *status)
-{
-    UChar   c;
-    int32_t count = 0;
-    UBool isNotEOF;
-    UChar plusSymbol[USCANF_SYMBOL_BUFFER_SIZE];
-    int32_t symbolLen;
-    UErrorCode localStatus = U_ZERO_ERROR;
-
-    if (U_SUCCESS(*status)) {
-        symbolLen = unum_getSymbol(format,
-            UNUM_PLUS_SIGN_SYMBOL,
-            plusSymbol,
-            UPRV_LENGTHOF(plusSymbol),
-            &localStatus);
-
-        if (U_SUCCESS(localStatus)) {
-            /* skip all leading ws in the input */
-            while( (isNotEOF = ufile_getch(input, &c)) && (count < symbolLen && c == plusSymbol[count]) )
-            {
-                count++;
-            }
-
-            /* put the final character back on the input */
-            if(isNotEOF) {
-                u_fungetc(c, input);
-            }
-        }
-    }
-
-    return count;
-}
-
-static int32_t 
-u_scanf_simple_percent_handler(UFILE        *input,
-                               u_scanf_spec_info *info,
-                               ufmt_args    *args,
-                               const UChar  *fmt,
-                               int32_t      *fmtConsumed,
-                               int32_t      *argConverted)
-{
-    /* make sure the next character in the input is a percent */
-    *argConverted = 0;
-    if(u_fgetc(input) != 0x0025) {
-        *argConverted = -1;
-    }
-    return 1;
-}
-
-static int32_t
-u_scanf_count_handler(UFILE         *input,
-                      u_scanf_spec_info *info,
-                      ufmt_args     *args,
-                      const UChar   *fmt,
-                      int32_t       *fmtConsumed,
-                      int32_t       *argConverted)
-{
-    /* in the special case of count, the u_scanf_spec_info's width */
-    /* will contain the # of items converted thus far */
-    if (!info->fSkipArg) {
-        if (info->fIsShort)
-            *(int16_t*)(args[0].ptrValue) = (int16_t)(UINT16_MAX & info->fWidth);
-        else if (info->fIsLongLong)
-            *(int64_t*)(args[0].ptrValue) = info->fWidth;
-        else
-            *(int32_t*)(args[0].ptrValue) = (int32_t)(UINT32_MAX & info->fWidth);
-    }
-    *argConverted = 0;
-
-    /* we converted 0 args */
-    return 0;
-}
-
-static int32_t
-u_scanf_double_handler(UFILE        *input,
-                       u_scanf_spec_info *info,
-                       ufmt_args    *args,
-                       const UChar  *fmt,
-                       int32_t      *fmtConsumed,
-                       int32_t      *argConverted)
-{
-    int32_t         len;
-    double          num;
-    UNumberFormat   *format;
-    int32_t         parsePos    = 0;
-    int32_t         skipped;
-    UErrorCode      status      = U_ZERO_ERROR;
-
-
-    /* skip all ws in the input */
-    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-
-    /* fill the input's internal buffer */
-    ufile_fill_uchar_buffer(input);
-
-    /* determine the size of the input's buffer */
-    len = (int32_t)(input->str.fLimit - input->str.fPos);
-
-    /* truncate to the width, if specified */
-    if(info->fWidth != -1)
-        len = ufmt_min(len, info->fWidth);
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_DECIMAL);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
-    skipped += u_scanf_skip_leading_positive_sign(input, format, &status);
-
-    /* parse the number */
-    num = unum_parseDouble(format, input->str.fPos, len, &parsePos, &status);
-
-    if (!info->fSkipArg) {
-        if (info->fIsLong)
-            *(double*)(args[0].ptrValue) = num;
-        else if (info->fIsLongDouble)
-            *(long double*)(args[0].ptrValue) = num;
-        else
-            *(float*)(args[0].ptrValue) = (float)num;
-    }
-
-    /* mask off any necessary bits */
-    /*  if(! info->fIsLong_double)
-    num &= DBL_MAX;*/
-
-    /* update the input's position to reflect consumed data */
-    input->str.fPos += parsePos;
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return parsePos + skipped;
-}
-
-#define UPRINTF_SYMBOL_BUFFER_SIZE 8
-
-static int32_t
-u_scanf_scientific_handler(UFILE        *input,
-                           u_scanf_spec_info *info,
-                           ufmt_args    *args,
-                           const UChar  *fmt,
-                           int32_t      *fmtConsumed,
-                           int32_t      *argConverted)
-{
-    int32_t         len;
-    double          num;
-    UNumberFormat   *format;
-    int32_t         parsePos    = 0;
-    int32_t         skipped;
-    UErrorCode      status      = U_ZERO_ERROR;
-    UChar srcExpBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
-    int32_t srcLen, expLen;
-    UChar expBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
-
-
-    /* skip all ws in the input */
-    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-
-    /* fill the input's internal buffer */
-    ufile_fill_uchar_buffer(input);
-
-    /* determine the size of the input's buffer */
-    len = (int32_t)(input->str.fLimit - input->str.fPos);
-
-    /* truncate to the width, if specified */
-    if(info->fWidth != -1)
-        len = ufmt_min(len, info->fWidth);
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_SCIENTIFIC);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* set the appropriate flags on the formatter */
-
-    srcLen = unum_getSymbol(format,
-        UNUM_EXPONENTIAL_SYMBOL,
-        srcExpBuf,
-        sizeof(srcExpBuf),
-        &status);
-
-    /* Upper/lower case the e */
-    if (info->fSpec == (UChar)0x65 /* e */) {
-        expLen = u_strToLower(expBuf, (int32_t)sizeof(expBuf),
-            srcExpBuf, srcLen,
-            input->str.fBundle.fLocale,
-            &status);
-    }
-    else {
-        expLen = u_strToUpper(expBuf, (int32_t)sizeof(expBuf),
-            srcExpBuf, srcLen,
-            input->str.fBundle.fLocale,
-            &status);
-    }
-
-    unum_setSymbol(format,
-        UNUM_EXPONENTIAL_SYMBOL,
-        expBuf,
-        expLen,
-        &status);
-
-
-
-
-    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
-    skipped += u_scanf_skip_leading_positive_sign(input, format, &status);
-
-    /* parse the number */
-    num = unum_parseDouble(format, input->str.fPos, len, &parsePos, &status);
-
-    if (!info->fSkipArg) {
-        if (info->fIsLong)
-            *(double*)(args[0].ptrValue) = num;
-        else if (info->fIsLongDouble)
-            *(long double*)(args[0].ptrValue) = num;
-        else
-            *(float*)(args[0].ptrValue) = (float)num;
-    }
-
-    /* mask off any necessary bits */
-    /*  if(! info->fIsLong_double)
-    num &= DBL_MAX;*/
-
-    /* update the input's position to reflect consumed data */
-    input->str.fPos += parsePos;
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return parsePos + skipped;
-}
-
-static int32_t
-u_scanf_scidbl_handler(UFILE        *input,
-                       u_scanf_spec_info *info,
-                       ufmt_args    *args,
-                       const UChar  *fmt,
-                       int32_t      *fmtConsumed,
-                       int32_t      *argConverted)
-{
-    int32_t       len;
-    double        num;
-    UNumberFormat *scientificFormat, *genericFormat;
-    /*int32_t       scientificResult, genericResult;*/
-    double        scientificResult, genericResult;
-    int32_t       scientificParsePos = 0, genericParsePos = 0, parsePos = 0;
-    int32_t       skipped;
-    UErrorCode    scientificStatus = U_ZERO_ERROR;
-    UErrorCode    genericStatus = U_ZERO_ERROR;
-
-
-    /* since we can't determine by scanning the characters whether */
-    /* a number was formatted in the 'f' or 'g' styles, parse the */
-    /* string with both formatters, and assume whichever one */
-    /* parsed the most is the correct formatter to use */
-
-
-    /* skip all ws in the input */
-    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-
-    /* fill the input's internal buffer */
-    ufile_fill_uchar_buffer(input);
-
-    /* determine the size of the input's buffer */
-    len = (int32_t)(input->str.fLimit - input->str.fPos);
-
-    /* truncate to the width, if specified */
-    if(info->fWidth != -1)
-        len = ufmt_min(len, info->fWidth);
-
-    /* get the formatters */
-    scientificFormat = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_SCIENTIFIC);
-    genericFormat = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_DECIMAL);
-
-    /* handle error */
-    if(scientificFormat == 0 || genericFormat == 0)
-        return 0;
-
-    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
-    skipped += u_scanf_skip_leading_positive_sign(input, genericFormat, &genericStatus);
-
-    /* parse the number using each format*/
-
-    scientificResult = unum_parseDouble(scientificFormat, input->str.fPos, len,
-        &scientificParsePos, &scientificStatus);
-
-    genericResult = unum_parseDouble(genericFormat, input->str.fPos, len,
-        &genericParsePos, &genericStatus);
-
-    /* determine which parse made it farther */
-    if(scientificParsePos > genericParsePos) {
-        /* stash the result in num */
-        num = scientificResult;
-        /* update the input's position to reflect consumed data */
-        parsePos += scientificParsePos;
-    }
-    else {
-        /* stash the result in num */
-        num = genericResult;
-        /* update the input's position to reflect consumed data */
-        parsePos += genericParsePos;
-    }
-    input->str.fPos += parsePos;
-
-    if (!info->fSkipArg) {
-        if (info->fIsLong)
-            *(double*)(args[0].ptrValue) = num;
-        else if (info->fIsLongDouble)
-            *(long double*)(args[0].ptrValue) = num;
-        else
-            *(float*)(args[0].ptrValue) = (float)num;
-    }
-
-    /* mask off any necessary bits */
-    /*  if(! info->fIsLong_double)
-    num &= DBL_MAX;*/
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return parsePos + skipped;
-}
-
-static int32_t
-u_scanf_integer_handler(UFILE       *input,
-                        u_scanf_spec_info *info,
-                        ufmt_args   *args,
-                        const UChar *fmt,
-                        int32_t     *fmtConsumed,
-                        int32_t     *argConverted)
-{
-    int32_t         len;
-    void            *num        = (void*) (args[0].ptrValue);
-    UNumberFormat   *format;
-    int32_t         parsePos    = 0;
-    int32_t         skipped;
-    UErrorCode      status      = U_ZERO_ERROR;
-    int64_t         result;
-
-
-    /* skip all ws in the input */
-    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-
-    /* fill the input's internal buffer */
-    ufile_fill_uchar_buffer(input);
-
-    /* determine the size of the input's buffer */
-    len = (int32_t)(input->str.fLimit - input->str.fPos);
-
-    /* truncate to the width, if specified */
-    if(info->fWidth != -1)
-        len = ufmt_min(len, info->fWidth);
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_DECIMAL);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
-    skipped += u_scanf_skip_leading_positive_sign(input, format, &status);
-
-    /* parse the number */
-    result = unum_parseInt64(format, input->str.fPos, len, &parsePos, &status);
-
-    /* mask off any necessary bits */
-    if (!info->fSkipArg) {
-        if (info->fIsShort)
-            *(int16_t*)num = (int16_t)(UINT16_MAX & result);
-        else if (info->fIsLongLong)
-            *(int64_t*)num = result;
-        else
-            *(int32_t*)num = (int32_t)(UINT32_MAX & result);
-    }
-
-    /* update the input's position to reflect consumed data */
-    input->str.fPos += parsePos;
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return parsePos + skipped;
-}
-
-static int32_t
-u_scanf_uinteger_handler(UFILE          *input,
-                         u_scanf_spec_info *info,
-                         ufmt_args      *args,
-                         const UChar    *fmt,
-                         int32_t        *fmtConsumed,
-                         int32_t        *argConverted)
-{
-    /* TODO Fix this when Numberformat handles uint64_t */
-    return u_scanf_integer_handler(input, info, args, fmt, fmtConsumed, argConverted);
-}
-
-static int32_t
-u_scanf_percent_handler(UFILE       *input,
-                        u_scanf_spec_info *info,
-                        ufmt_args   *args,
-                        const UChar *fmt,
-                        int32_t     *fmtConsumed,
-                        int32_t     *argConverted)
-{
-    int32_t         len;
-    double          num;
-    UNumberFormat   *format;
-    int32_t         parsePos    = 0;
-    UErrorCode      status      = U_ZERO_ERROR;
-
-
-    /* skip all ws in the input */
-    u_scanf_skip_leading_ws(input, info->fPadChar);
-
-    /* fill the input's internal buffer */
-    ufile_fill_uchar_buffer(input);
-
-    /* determine the size of the input's buffer */
-    len = (int32_t)(input->str.fLimit - input->str.fPos);
-
-    /* truncate to the width, if specified */
-    if(info->fWidth != -1)
-        len = ufmt_min(len, info->fWidth);
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_PERCENT);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
-    u_scanf_skip_leading_positive_sign(input, format, &status);
-
-    /* parse the number */
-    num = unum_parseDouble(format, input->str.fPos, len, &parsePos, &status);
-
-    if (!info->fSkipArg) {
-        *(double*)(args[0].ptrValue) = num;
-    }
-
-    /* mask off any necessary bits */
-    /*  if(! info->fIsLong_double)
-    num &= DBL_MAX;*/
-
-    /* update the input's position to reflect consumed data */
-    input->str.fPos += parsePos;
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return parsePos;
-}
-
-static int32_t
-u_scanf_string_handler(UFILE        *input,
-                       u_scanf_spec_info *info,
-                       ufmt_args    *args,
-                       const UChar  *fmt,
-                       int32_t      *fmtConsumed,
-                       int32_t      *argConverted)
-{
-    const UChar *source;
-    UConverter  *conv;
-    char        *arg    = (char*)(args[0].ptrValue);
-    char        *alias  = arg;
-    char        *limit;
-    UErrorCode  status  = U_ZERO_ERROR;
-    int32_t     count;
-    int32_t     skipped = 0;
-    UChar       c;
-    UBool       isNotEOF = FALSE;
-
-    /* skip all ws in the input */
-    if (info->fIsString) {
-        skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-    }
-
-    /* get the string one character at a time, truncating to the width */
-    count = 0;
-
-    /* open the default converter */
-    conv = u_getDefaultConverter(&status);
-
-    if(U_FAILURE(status))
-        return -1;
-
-    while( (info->fWidth == -1 || count < info->fWidth) 
-        && (isNotEOF = ufile_getch(input, &c))
-        && (!info->fIsString || (c != info->fPadChar && !u_isWhitespace(c))))
-    {
-
-        if (!info->fSkipArg) {
-            /* put the character from the input onto the target */
-            source = &c;
-            /* Since we do this one character at a time, do it this way. */
-            if (info->fWidth > 0) {
-                limit = alias + info->fWidth - count;
-            }
-            else {
-                limit = alias + ucnv_getMaxCharSize(conv);
-            }
-
-            /* convert the character to the default codepage */
-            ucnv_fromUnicode(conv, &alias, limit, &source, source + 1,
-                NULL, TRUE, &status);
-
-            if(U_FAILURE(status)) {
-                /* clean up */
-                u_releaseDefaultConverter(conv);
-                return -1;
-            }
-        }
-
-        /* increment the count */
-        ++count;
-    }
-
-    /* put the final character we read back on the input */
-    if (!info->fSkipArg) {
-        if ((info->fWidth == -1 || count < info->fWidth) && isNotEOF)
-            u_fungetc(c, input);
-
-        /* add the terminator */
-        if (info->fIsString) {
-            *alias = 0x00;
-        }
-    }
-
-    /* clean up */
-    u_releaseDefaultConverter(conv);
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return count + skipped;
-}
-
-static int32_t
-u_scanf_char_handler(UFILE          *input,
-                     u_scanf_spec_info *info,
-                     ufmt_args      *args,
-                     const UChar    *fmt,
-                     int32_t        *fmtConsumed,
-                     int32_t        *argConverted)
-{
-    if (info->fWidth < 0) {
-        info->fWidth = 1;
-    }
-    info->fIsString = FALSE;
-    return u_scanf_string_handler(input, info, args, fmt, fmtConsumed, argConverted);
-}
-
-static int32_t
-u_scanf_ustring_handler(UFILE       *input,
-                        u_scanf_spec_info *info,
-                        ufmt_args   *args,
-                        const UChar *fmt,
-                        int32_t     *fmtConsumed,
-                        int32_t     *argConverted)
-{
-    UChar   *arg     = (UChar*)(args[0].ptrValue);
-    UChar   *alias     = arg;
-    int32_t count;
-    int32_t skipped = 0;
-    UChar   c;
-    UBool   isNotEOF = FALSE;
-
-    /* skip all ws in the input */
-    if (info->fIsString) {
-        skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-    }
-
-    /* get the string one character at a time, truncating to the width */
-    count = 0;
-
-    while( (info->fWidth == -1 || count < info->fWidth)
-        && (isNotEOF = ufile_getch(input, &c))
-        && (!info->fIsString || (c != info->fPadChar && !u_isWhitespace(c))))
-    {
-
-        /* put the character from the input onto the target */
-        if (!info->fSkipArg) {
-            *alias++ = c;
-        }
-
-        /* increment the count */
-        ++count;
-    }
-
-    /* put the final character we read back on the input */
-    if (!info->fSkipArg) {
-        if((info->fWidth == -1 || count < info->fWidth) && isNotEOF) {
-            u_fungetc(c, input);
-        }
-
-        /* add the terminator */
-        if (info->fIsString) {
-            *alias = 0x0000;
-        }
-    }
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return count + skipped;
-}
-
-static int32_t
-u_scanf_uchar_handler(UFILE         *input,
-                      u_scanf_spec_info *info,
-                      ufmt_args     *args,
-                      const UChar   *fmt,
-                      int32_t       *fmtConsumed,
-                      int32_t       *argConverted)
-{
-    if (info->fWidth < 0) {
-        info->fWidth = 1;
-    }
-    info->fIsString = FALSE;
-    return u_scanf_ustring_handler(input, info, args, fmt, fmtConsumed, argConverted);
-}
-
-static int32_t
-u_scanf_spellout_handler(UFILE          *input,
-                         u_scanf_spec_info *info,
-                         ufmt_args      *args,
-                         const UChar    *fmt,
-                         int32_t        *fmtConsumed,
-                         int32_t        *argConverted)
-{
-    int32_t         len;
-    double          num;
-    UNumberFormat   *format;
-    int32_t         parsePos    = 0;
-    int32_t         skipped;
-    UErrorCode      status      = U_ZERO_ERROR;
-
-
-    /* skip all ws in the input */
-    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-
-    /* fill the input's internal buffer */
-    ufile_fill_uchar_buffer(input);
-
-    /* determine the size of the input's buffer */
-    len = (int32_t)(input->str.fLimit - input->str.fPos);
-
-    /* truncate to the width, if specified */
-    if(info->fWidth != -1)
-        len = ufmt_min(len, info->fWidth);
-
-    /* get the formatter */
-    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_SPELLOUT);
-
-    /* handle error */
-    if(format == 0)
-        return 0;
-
-    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
-    /* This is not applicable to RBNF. */
-    /*skipped += u_scanf_skip_leading_positive_sign(input, format, &status);*/
-
-    /* parse the number */
-    num = unum_parseDouble(format, input->str.fPos, len, &parsePos, &status);
-
-    if (!info->fSkipArg) {
-        *(double*)(args[0].ptrValue) = num;
-    }
-
-    /* mask off any necessary bits */
-    /*  if(! info->fIsLong_double)
-    num &= DBL_MAX;*/
-
-    /* update the input's position to reflect consumed data */
-    input->str.fPos += parsePos;
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return parsePos + skipped;
-}
-
-static int32_t
-u_scanf_hex_handler(UFILE       *input,
-                    u_scanf_spec_info *info,
-                    ufmt_args   *args,
-                    const UChar *fmt,
-                    int32_t     *fmtConsumed,
-                    int32_t     *argConverted)
-{
-    int32_t     len;
-    int32_t     skipped;
-    void        *num    = (void*) (args[0].ptrValue);
-    int64_t     result;
-
-    /* skip all ws in the input */
-    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-
-    /* fill the input's internal buffer */
-    ufile_fill_uchar_buffer(input);
-
-    /* determine the size of the input's buffer */
-    len = (int32_t)(input->str.fLimit - input->str.fPos);
-
-    /* truncate to the width, if specified */
-    if(info->fWidth != -1)
-        len = ufmt_min(len, info->fWidth);
-
-    /* check for alternate form */
-    if( *(input->str.fPos) == 0x0030 &&
-        (*(input->str.fPos + 1) == 0x0078 || *(input->str.fPos + 1) == 0x0058) ) {
-
-        /* skip the '0' and 'x' or 'X' if present */
-        input->str.fPos += 2;
-        len -= 2;
-    }
-
-    /* parse the number */
-    result = ufmt_uto64(input->str.fPos, &len, 16);
-
-    /* update the input's position to reflect consumed data */
-    input->str.fPos += len;
-
-    /* mask off any necessary bits */
-    if (!info->fSkipArg) {
-        if (info->fIsShort)
-            *(int16_t*)num = (int16_t)(UINT16_MAX & result);
-        else if (info->fIsLongLong)
-            *(int64_t*)num = result;
-        else
-            *(int32_t*)num = (int32_t)(UINT32_MAX & result);
-    }
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return len + skipped;
-}
-
-static int32_t
-u_scanf_octal_handler(UFILE         *input,
-                      u_scanf_spec_info *info,
-                      ufmt_args     *args,
-                      const UChar   *fmt,
-                      int32_t       *fmtConsumed,
-                      int32_t       *argConverted)
-{
-    int32_t     len;
-    int32_t     skipped;
-    void        *num         = (void*) (args[0].ptrValue);
-    int64_t     result;
-
-    /* skip all ws in the input */
-    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-
-    /* fill the input's internal buffer */
-    ufile_fill_uchar_buffer(input);
-
-    /* determine the size of the input's buffer */
-    len = (int32_t)(input->str.fLimit - input->str.fPos);
-
-    /* truncate to the width, if specified */
-    if(info->fWidth != -1)
-        len = ufmt_min(len, info->fWidth);
-
-    /* parse the number */
-    result = ufmt_uto64(input->str.fPos, &len, 8);
-
-    /* update the input's position to reflect consumed data */
-    input->str.fPos += len;
-
-    /* mask off any necessary bits */
-    if (!info->fSkipArg) {
-        if (info->fIsShort)
-            *(int16_t*)num = (int16_t)(UINT16_MAX & result);
-        else if (info->fIsLongLong)
-            *(int64_t*)num = result;
-        else
-            *(int32_t*)num = (int32_t)(UINT32_MAX & result);
-    }
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return len + skipped;
-}
-
-static int32_t
-u_scanf_pointer_handler(UFILE       *input,
-                        u_scanf_spec_info *info,
-                        ufmt_args   *args,
-                        const UChar *fmt,
-                        int32_t     *fmtConsumed,
-                        int32_t     *argConverted)
-{
-    int32_t len;
-    int32_t skipped;
-    void    *result;
-    void    **p     = (void**)(args[0].ptrValue);
-
-
-    /* skip all ws in the input */
-    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
-
-    /* fill the input's internal buffer */
-    ufile_fill_uchar_buffer(input);
-
-    /* determine the size of the input's buffer */
-    len = (int32_t)(input->str.fLimit - input->str.fPos);
-
-    /* truncate to the width, if specified */
-    if(info->fWidth != -1) {
-        len = ufmt_min(len, info->fWidth);
-    }
-
-    /* Make sure that we don't consume too much */
-    if (len > (int32_t)(sizeof(void*)*2)) {
-        len = (int32_t)(sizeof(void*)*2);
-    }
-
-    /* parse the pointer - assign to temporary value */
-    result = ufmt_utop(input->str.fPos, &len);
-
-    if (!info->fSkipArg) {
-        *p = result;
-    }
-
-    /* update the input's position to reflect consumed data */
-    input->str.fPos += len;
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return len + skipped;
-}
-
-static int32_t
-u_scanf_scanset_handler(UFILE       *input,
-                        u_scanf_spec_info *info,
-                        ufmt_args   *args,
-                        const UChar *fmt,
-                        int32_t     *fmtConsumed,
-                        int32_t     *argConverted)
-{
-    USet        *scanset;
-    UErrorCode  status = U_ZERO_ERROR;
-    int32_t     chLeft = INT32_MAX;
-    UChar32     c;
-    UChar       *alias = (UChar*) (args[0].ptrValue);
-    UBool       isNotEOF = FALSE;
-    UBool       readCharacter = FALSE;
-
-    /* Create an empty set */
-    scanset = uset_open(0, -1);
-
-    /* Back up one to get the [ */
-    fmt--;
-
-    /* truncate to the width, if specified and alias the target */
-    if(info->fWidth >= 0) {
-        chLeft = info->fWidth;
-    }
-
-    /* parse the scanset from the fmt string */
-    *fmtConsumed = uset_applyPattern(scanset, fmt, -1, 0, &status);
-
-    /* verify that the parse was successful */
-    if (U_SUCCESS(status)) {
-        c=0;
-
-        /* grab characters one at a time and make sure they are in the scanset */
-        while(chLeft > 0) {
-            if ((isNotEOF = ufile_getch32(input, &c)) && uset_contains(scanset, c)) {
-                readCharacter = TRUE;
-                if (!info->fSkipArg) {
-                    int32_t idx = 0;
-                    UBool isError = FALSE;
-
-                    U16_APPEND(alias, idx, chLeft, c, isError);
-                    if (isError) {
-                        break;
-                    }
-                    alias += idx;
-                }
-                chLeft -= (1 + U_IS_SUPPLEMENTARY(c));
-            }
-            else {
-                /* if the character's not in the scanset, break out */
-                break;
-            }
-        }
-
-        /* put the final character we read back on the input */
-        if(isNotEOF && chLeft > 0) {
-            u_fungetc(c, input);
-        }
-    }
-
-    uset_close(scanset);
-
-    /* if we didn't match at least 1 character, fail */
-    if(!readCharacter)
-        return -1;
-    /* otherwise, add the terminator */
-    else if (!info->fSkipArg) {
-        *alias = 0x00;
-    }
-
-    /* we converted 1 arg */
-    *argConverted = !info->fSkipArg;
-    return (info->fWidth >= 0 ? info->fWidth : INT32_MAX) - chLeft;
-}
-
-/* Use US-ASCII characters only for formatting. Most codepages have
- characters 20-7F from Unicode. Using any other codepage specific
- characters will make it very difficult to format the string on
- non-Unicode machines */
-static const u_scanf_info g_u_scanf_infos[USCANF_NUM_FMT_HANDLERS] = {
-/* 0x20 */
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_SIMPLE_PERCENT,UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-
-/* 0x30 */
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-
-/* 0x40 */
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_UCHAR,
-    UFMT_EMPTY,         UFMT_SCIENTIFIC,    UFMT_EMPTY,         UFMT_SCIDBL,
-#ifdef U_USE_OBSOLETE_IO_FORMATTING
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_UCHAR/*deprecated*/,
-#else
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-#endif
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-
-/* 0x50 */
-    UFMT_PERCENT,       UFMT_EMPTY,         UFMT_EMPTY,         UFMT_USTRING,
-#ifdef U_USE_OBSOLETE_IO_FORMATTING
-    UFMT_EMPTY,         UFMT_USTRING/*deprecated*/,UFMT_SPELLOUT,      UFMT_EMPTY,
-#else
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_SPELLOUT,      UFMT_EMPTY,
-#endif
-    UFMT_HEX,           UFMT_EMPTY,         UFMT_EMPTY,         UFMT_SCANSET,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-
-/* 0x60 */
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_CHAR,
-    UFMT_INT,           UFMT_SCIENTIFIC,    UFMT_DOUBLE,        UFMT_SCIDBL,
-    UFMT_EMPTY,         UFMT_INT,           UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_COUNT,         UFMT_OCTAL,
-
-/* 0x70 */
-    UFMT_POINTER,       UFMT_EMPTY,         UFMT_EMPTY,         UFMT_STRING,
-    UFMT_EMPTY,         UFMT_UINT,          UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_HEX,           UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
-};
-
-U_CFUNC int32_t
-u_scanf_parse(UFILE     *f,
-            const UChar *patternSpecification,
-            va_list     ap)
-{
-    const UChar     *alias;
-    int32_t         count, converted, argConsumed, cpConsumed;
-    uint16_t        handlerNum;
-
-    ufmt_args       args;
-    u_scanf_spec    spec;
-    ufmt_type_info  info;
-    u_scanf_handler handler;
-
-    /* alias the pattern */
-    alias = patternSpecification;
-
-    /* haven't converted anything yet */
-    argConsumed = 0;
-    converted = 0;
-    cpConsumed = 0;
-
-    /* iterate through the pattern */
-    for(;;) {
-
-        /* match any characters up to the next '%' */
-        while(*alias != UP_PERCENT && *alias != 0x0000 && u_fgetc(f) == *alias) {
-            alias++;
-        }
-
-        /* if we aren't at a '%', or if we're at end of string, break*/
-        if(*alias != UP_PERCENT || *alias == 0x0000)
-            break;
-
-        /* parse the specifier */
-        count = u_scanf_parse_spec(alias, &spec);
-
-        /* update the pointer in pattern */
-        alias += count;
-
-        handlerNum = (uint16_t)(spec.fInfo.fSpec - USCANF_BASE_FMT_HANDLERS);
-        if (handlerNum < USCANF_NUM_FMT_HANDLERS) {
-            /* skip the argument, if necessary */
-            /* query the info function for argument information */
-            info = g_u_scanf_infos[ handlerNum ].info;
-            if (info != ufmt_count && u_feof(f)) {
-                break;
-            }
-            else if(spec.fInfo.fSkipArg) {
-                args.ptrValue = NULL;
-            }
-            else {
-                switch(info) {
-                case ufmt_count:
-                    /* set the spec's width to the # of items converted */
-                    spec.fInfo.fWidth = cpConsumed;
-                    U_FALLTHROUGH;
-                case ufmt_char:
-                case ufmt_uchar:
-                case ufmt_int:
-                case ufmt_string:
-                case ufmt_ustring:
-                case ufmt_pointer:
-                case ufmt_float:
-                case ufmt_double:
-                    args.ptrValue = va_arg(ap, void*);
-                    break;
-
-                default:
-                    /* else args is ignored */
-                    args.ptrValue = NULL;
-                    break;
-                }
-            }
-
-            /* call the handler function */
-            handler = g_u_scanf_infos[ handlerNum ].handler;
-            if(handler != 0) {
-
-                /* reset count to 1 so that += for alias works. */
-                count = 1;
-
-                cpConsumed += (*handler)(f, &spec.fInfo, &args, alias, &count, &argConsumed);
-
-                /* if the handler encountered an error condition, break */
-                if(argConsumed < 0) {
-                    converted = -1;
-                    break;
-                }
-
-                /* add to the # of items converted */
-                converted += argConsumed;
-
-                /* update the pointer in pattern */
-                alias += count-1;
-            }
-            /* else do nothing */
-        }
-        /* else do nothing */
-
-        /* just ignore unknown tags */
-    }
-
-    /* return # of items converted */
-    return converted;
-}
-
-#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/source/io/ustdio.c b/source/io/ustdio.c
deleted file mode 100644 (file)
index 1c2225a..0000000
+++ /dev/null
@@ -1,732 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
- ******************************************************************************
- *
- *   Copyright (C) 1998-2016, International Business Machines
- *   Corporation and others.  All Rights Reserved.
- *
- ******************************************************************************
- *
- * File ustdio.c
- *
- * Modification History:
- *
- *   Date        Name        Description
- *   11/18/98    stephen     Creation.
- *   03/12/99    stephen     Modified for new C API.
- *   07/19/99    stephen     Fixed read() and gets()
- ******************************************************************************
- */
-
-#include "unicode/ustdio.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-#include "unicode/putil.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "ufile.h"
-#include "ufmt_cmn.h"
-#include "unicode/ucnv.h"
-#include "unicode/ustring.h"
-
-#include <string.h>
-
-#define DELIM_LF 0x000A
-#define DELIM_VT 0x000B
-#define DELIM_FF 0x000C
-#define DELIM_CR 0x000D
-#define DELIM_NEL 0x0085
-#define DELIM_LS 0x2028
-#define DELIM_PS 0x2029
-
-/* TODO: is this correct for all codepages? Should we just use \n and let the converter handle it? */
-#if U_PLATFORM_USES_ONLY_WIN32_API
-static const UChar DELIMITERS [] = { DELIM_CR, DELIM_LF, 0x0000 };
-static const uint32_t DELIMITERS_LEN = 2;
-/* TODO: Default newline writing should be detected based upon the converter being used. */
-#else
-static const UChar DELIMITERS [] = { DELIM_LF, 0x0000 };
-static const uint32_t DELIMITERS_LEN = 1;
-#endif
-
-#define IS_FIRST_STRING_DELIMITER(c1) \
- (UBool)((DELIM_LF <= (c1) && (c1) <= DELIM_CR) \
-        || (c1) == DELIM_NEL \
-        || (c1) == DELIM_LS \
-        || (c1) == DELIM_PS)
-#define CAN_HAVE_COMBINED_STRING_DELIMITER(c1) (UBool)((c1) == DELIM_CR)
-#define IS_COMBINED_STRING_DELIMITER(c1, c2) \
- (UBool)((c1) == DELIM_CR && (c2) == DELIM_LF)
-
-
-#if !UCONFIG_NO_TRANSLITERATION
-
-U_CAPI UTransliterator* U_EXPORT2
-u_fsettransliterator(UFILE *file, UFileDirection direction,
-                     UTransliterator *adopt, UErrorCode *status)
-{
-    UTransliterator *old = NULL;
-
-    if(U_FAILURE(*status))
-    {
-        return adopt;
-    }
-
-    if(!file)
-    {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return adopt;
-    }
-
-    if(direction & U_READ)
-    {
-        /** TODO: implement */
-        *status = U_UNSUPPORTED_ERROR;
-        return adopt;
-    }
-
-    if(adopt == NULL) /* they are clearing it */
-    {
-        if(file->fTranslit != NULL)
-        {
-            /* TODO: Check side */
-            old = file->fTranslit->translit;
-            uprv_free(file->fTranslit->buffer);
-            file->fTranslit->buffer=NULL;
-            uprv_free(file->fTranslit);
-            file->fTranslit=NULL;
-        }
-    }
-    else
-    {
-        if(file->fTranslit == NULL)
-        {
-            file->fTranslit = (UFILETranslitBuffer*) uprv_malloc(sizeof(UFILETranslitBuffer));
-            if(!file->fTranslit)
-            {
-                *status = U_MEMORY_ALLOCATION_ERROR;
-                return adopt;
-            }
-            file->fTranslit->capacity = 0;
-            file->fTranslit->length = 0;
-            file->fTranslit->pos = 0;
-            file->fTranslit->buffer = NULL;
-        }
-        else
-        {
-            old = file->fTranslit->translit;
-            ufile_flush_translit(file);
-        }
-
-        file->fTranslit->translit = adopt;
-    }
-
-    return old;
-}
-
-static const UChar * u_file_translit(UFILE *f, const UChar *src, int32_t *count, UBool flush)
-{
-    int32_t newlen;
-    int32_t junkCount = 0;
-    int32_t textLength;
-    int32_t textLimit;
-    UTransPosition pos;
-    UErrorCode status = U_ZERO_ERROR;
-
-    if(count == NULL)
-    {
-        count = &junkCount;
-    }
-
-    if ((!f)||(!f->fTranslit)||(!f->fTranslit->translit))
-    {
-        /* fast path */
-        return src;
-    }
-
-    /* First: slide over everything */
-    if(f->fTranslit->length > f->fTranslit->pos)
-    {
-        memmove(f->fTranslit->buffer, f->fTranslit->buffer + f->fTranslit->pos,
-            (f->fTranslit->length - f->fTranslit->pos)*sizeof(UChar));
-    }
-    f->fTranslit->length -= f->fTranslit->pos; /* always */
-    f->fTranslit->pos = 0;
-
-    /* Calculate new buffer size needed */
-    newlen = (*count + f->fTranslit->length) * 4;
-
-    if(newlen > f->fTranslit->capacity)
-    {
-        if(f->fTranslit->buffer == NULL)
-        {
-            f->fTranslit->buffer = (UChar*)uprv_malloc(newlen * sizeof(UChar));
-        }
-        else
-        {
-            f->fTranslit->buffer = (UChar*)uprv_realloc(f->fTranslit->buffer, newlen * sizeof(UChar));
-        }
-        /* Check for malloc/realloc failure. */
-        if (f->fTranslit->buffer == NULL) {
-               return NULL;
-        }
-        f->fTranslit->capacity = newlen;
-    }
-
-    /* Now, copy any data over */
-    u_strncpy(f->fTranslit->buffer + f->fTranslit->length,
-        src,
-        *count);
-    f->fTranslit->length += *count;
-
-    /* Now, translit in place as much as we can  */
-    if(flush == FALSE)
-    {
-        textLength = f->fTranslit->length;
-        pos.contextStart = 0;
-        pos.contextLimit = textLength;
-        pos.start        = 0;
-        pos.limit        = textLength;
-
-        utrans_transIncrementalUChars(f->fTranslit->translit,
-            f->fTranslit->buffer, /* because we shifted */
-            &textLength,
-            f->fTranslit->capacity,
-            &pos,
-            &status);
-
-        /* now: start/limit point to the transliterated text */
-        /* Transliterated is [buffer..pos.start) */
-        *count            = pos.start;
-        f->fTranslit->pos = pos.start;
-        f->fTranslit->length = pos.limit;
-
-        return f->fTranslit->buffer;
-    }
-    else
-    {
-        textLength = f->fTranslit->length;
-        textLimit = f->fTranslit->length;
-
-        utrans_transUChars(f->fTranslit->translit,
-            f->fTranslit->buffer,
-            &textLength,
-            f->fTranslit->capacity,
-            0,
-            &textLimit,
-            &status);
-
-        /* out: converted len */
-        *count = textLimit;
-
-        /* Set pointers to 0 */
-        f->fTranslit->pos = 0;
-        f->fTranslit->length = 0;
-
-        return f->fTranslit->buffer;
-    }
-}
-
-#endif
-
-void
-ufile_flush_translit(UFILE *f)
-{
-#if !UCONFIG_NO_TRANSLITERATION
-    if((!f)||(!f->fTranslit))
-        return;
-#endif
-
-    u_file_write_flush(NULL, 0, f, FALSE, TRUE);
-}
-
-
-void
-ufile_flush_io(UFILE *f)
-{
-  if((!f) || (!f->fFile)) {
-    return; /* skip if no file */
-  }
-
-  u_file_write_flush(NULL, 0, f, TRUE, FALSE);
-}
-
-
-void
-ufile_close_translit(UFILE *f)
-{
-#if !UCONFIG_NO_TRANSLITERATION
-    if((!f)||(!f->fTranslit))
-        return;
-#endif
-
-    ufile_flush_translit(f);
-
-#if !UCONFIG_NO_TRANSLITERATION
-    if(f->fTranslit->translit)
-        utrans_close(f->fTranslit->translit);
-
-    if(f->fTranslit->buffer)
-    {
-        uprv_free(f->fTranslit->buffer);
-    }
-
-    uprv_free(f->fTranslit);
-    f->fTranslit = NULL;
-#endif
-}
-
-
-/* Input/output */
-
-U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fputs(const UChar    *s,
-        UFILE        *f)
-{
-    int32_t count = u_file_write(s, u_strlen(s), f);
-    count += u_file_write(DELIMITERS, DELIMITERS_LEN, f);
-    return count;
-}
-
-U_CAPI UChar32 U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fputc(UChar32      uc,
-        UFILE        *f)
-{
-    UChar buf[2];
-    int32_t idx = 0;
-    UBool isError = FALSE;
-
-    U16_APPEND(buf, idx, UPRV_LENGTHOF(buf), uc, isError);
-    if (isError) {
-        return U_EOF;
-    }
-    return u_file_write(buf, idx, f) == idx ? uc : U_EOF;
-}
-
-
-U_CFUNC int32_t U_EXPORT2
-u_file_write_flush(const UChar *chars,
-                   int32_t     count,
-                   UFILE       *f,
-                   UBool       flushIO,
-                   UBool       flushTranslit)
-{
-    /* Set up conversion parameters */
-    UErrorCode  status       = U_ZERO_ERROR;
-    const UChar *mySource    = chars;
-    const UChar *mySourceBegin; 
-    const UChar *mySourceEnd;
-    char        charBuffer[UFILE_CHARBUFFER_SIZE];
-    char        *myTarget   = charBuffer;
-    int32_t     written      = 0;
-    int32_t     numConverted = 0;
-
-    if (count < 0) {
-        count = u_strlen(chars);
-    }
-
-#if !UCONFIG_NO_TRANSLITERATION
-    if((f->fTranslit) && (f->fTranslit->translit))
-    {
-        /* Do the transliteration */
-        mySource = u_file_translit(f, chars, &count, flushTranslit);
-    }
-#endif
-
-    /* Write to a string. */
-    if (!f->fFile) {
-        int32_t charsLeft = (int32_t)(f->str.fLimit - f->str.fPos);
-        if (flushIO && charsLeft > count) {
-            count++;
-        }
-        written = ufmt_min(count, charsLeft);
-        u_strncpy(f->str.fPos, mySource, written);
-        f->str.fPos += written;
-        return written;
-    }
-
-    mySourceEnd = mySource + count;
-
-    /* Perform the conversion in a loop */
-    do {
-        mySourceBegin = mySource; /* beginning location for this loop */
-        status     = U_ZERO_ERROR;
-        if(f->fConverter != NULL) { /* We have a valid converter */
-            ucnv_fromUnicode(f->fConverter,
-                &myTarget,
-                charBuffer + UFILE_CHARBUFFER_SIZE,
-                &mySource,
-                mySourceEnd,
-                NULL,
-                flushIO,
-                &status);
-        } else { /*weiv: do the invariant conversion */
-            int32_t convertChars = (int32_t) (mySourceEnd - mySource); 
-            if (convertChars > UFILE_CHARBUFFER_SIZE) { 
-                convertChars = UFILE_CHARBUFFER_SIZE; 
-                status = U_BUFFER_OVERFLOW_ERROR; 
-            } 
-            u_UCharsToChars(mySource, myTarget, convertChars); 
-            mySource += convertChars; 
-            myTarget += convertChars; 
-        }
-        numConverted = (int32_t)(myTarget - charBuffer);
-
-        if (numConverted > 0) {
-            /* write the converted bytes */
-            fwrite(charBuffer,
-                sizeof(char),
-                numConverted,
-                f->fFile);
-
-            written     += (int32_t) (mySource - mySourceBegin);
-        }
-        myTarget     = charBuffer;
-    }
-    while(status == U_BUFFER_OVERFLOW_ERROR);
-
-    /* return # of chars written */
-    return written;
-}
-
-U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_file_write(    const UChar     *chars,
-             int32_t        count,
-             UFILE         *f)
-{
-    return u_file_write_flush(chars,count,f,FALSE,FALSE);
-}
-
-
-/* private function used for buffering input */
-void
-ufile_fill_uchar_buffer(UFILE *f)
-{
-    UErrorCode  status;
-    const char  *mySource;
-    const char  *mySourceEnd;
-    UChar       *myTarget;
-    int32_t     bufferSize;
-    int32_t     maxCPBytes;
-    int32_t     bytesRead;
-    int32_t     availLength;
-    int32_t     dataSize;
-    char        charBuffer[UFILE_CHARBUFFER_SIZE];
-    u_localized_string *str;
-
-    if (f->fFile == NULL) {
-        /* There is nothing to do. It's a string. */
-        return;
-    }
-
-    str = &f->str;
-    dataSize = (int32_t)(str->fLimit - str->fPos);
-    if (f->fFileno == 0 && dataSize > 0) {
-        /* Don't read from stdin too many times. There is still some data. */
-        return;
-    }
-
-    /* shift the buffer if it isn't empty */
-    if(dataSize != 0) {
-        u_memmove(f->fUCBuffer, str->fPos, dataSize); /* not accessing beyond memory */
-    }
-
-
-    /* record how much buffer space is available */
-    availLength = UFILE_UCHARBUFFER_SIZE - dataSize;
-
-    /* Determine the # of codepage bytes needed to fill our UChar buffer */
-    /* weiv: if converter is NULL, we use invariant converter with charwidth = 1)*/
-    maxCPBytes = availLength / (f->fConverter!=NULL?(2*ucnv_getMinCharSize(f->fConverter)):1);
-
-    /* Read in the data to convert */
-    if (f->fFileno == 0) {
-        /* Special case. Read from stdin one line at a time. */
-        char *retStr = fgets(charBuffer, ufmt_min(maxCPBytes, UFILE_CHARBUFFER_SIZE), f->fFile);
-        bytesRead = (int32_t)(retStr ? uprv_strlen(charBuffer) : 0);
-    }
-    else {
-        /* A normal file */
-        bytesRead = (int32_t)fread(charBuffer,
-            sizeof(char),
-            ufmt_min(maxCPBytes, UFILE_CHARBUFFER_SIZE),
-            f->fFile);
-    }
-
-    /* Set up conversion parameters */
-    status      = U_ZERO_ERROR;
-    mySource    = charBuffer;
-    mySourceEnd = charBuffer + bytesRead;
-    myTarget    = f->fUCBuffer + dataSize;
-    bufferSize  = UFILE_UCHARBUFFER_SIZE;
-
-    if(f->fConverter != NULL) { /* We have a valid converter */
-        /* Perform the conversion */
-        ucnv_toUnicode(f->fConverter,
-            &myTarget,
-            f->fUCBuffer + bufferSize,
-            &mySource,
-            mySourceEnd,
-            NULL,
-            (UBool)(feof(f->fFile) != 0),
-            &status);
-
-    } else { /*weiv: do the invariant conversion */
-        u_charsToUChars(mySource, myTarget, bytesRead);
-        myTarget += bytesRead;
-    }
-
-    /* update the pointers into our array */
-    str->fPos    = str->fBuffer;
-    str->fLimit  = myTarget;
-}
-
-U_CAPI UChar* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fgets(UChar        *s,
-        int32_t       n,
-        UFILE        *f)
-{
-    int32_t dataSize;
-    int32_t count;
-    UChar *alias;
-    const UChar *limit;
-    UChar *sItr;
-    UChar currDelim = 0;
-    u_localized_string *str;
-
-    if (n <= 0) {
-        /* Caller screwed up. We need to write the null terminatior. */
-        return NULL;
-    }
-
-    /* fill the buffer if needed */
-    str = &f->str;
-    if (str->fPos >= str->fLimit) {
-        ufile_fill_uchar_buffer(f);
-    }
-
-    /* subtract 1 from n to compensate for the terminator */
-    --n;
-
-    /* determine the amount of data in the buffer */
-    dataSize = (int32_t)(str->fLimit - str->fPos);
-
-    /* if 0 characters were left, return 0 */
-    if (dataSize == 0)
-        return NULL;
-
-    /* otherwise, iteratively fill the buffer and copy */
-    count = 0;
-    sItr = s;
-    currDelim = 0;
-    while (dataSize > 0 && count < n) {
-        alias = str->fPos;
-
-        /* Find how much to copy */
-        if (dataSize < (n - count)) {
-            limit = str->fLimit;
-        }
-        else {
-            limit = alias + (n - count);
-        }
-
-        if (!currDelim) {
-            /* Copy UChars until we find the first occurrence of a delimiter character */
-            while (alias < limit && !IS_FIRST_STRING_DELIMITER(*alias)) {
-                count++;
-                *(sItr++) = *(alias++);
-            }
-            /* Preserve the newline */
-            if (alias < limit && IS_FIRST_STRING_DELIMITER(*alias)) {
-                if (CAN_HAVE_COMBINED_STRING_DELIMITER(*alias)) {
-                    currDelim = *alias;
-                }
-                else {
-                    currDelim = 1;  /* This isn't a newline, but it's used to say
-                                    that we should break later. We've checked all
-                                    possible newline combinations even across buffer
-                                    boundaries. */
-                }
-                count++;
-                *(sItr++) = *(alias++);
-            }
-        }
-        /* If we have a CRLF combination, preserve that too. */
-        if (alias < limit) {
-            if (currDelim && IS_COMBINED_STRING_DELIMITER(currDelim, *alias)) {
-                count++;
-                *(sItr++) = *(alias++);
-            }
-            currDelim = 1;  /* This isn't a newline, but it's used to say
-                            that we should break later. We've checked all
-                            possible newline combinations even across buffer
-                            boundaries. */
-        }
-
-        /* update the current buffer position */
-        str->fPos = alias;
-
-        /* if we found a delimiter */
-        if (currDelim == 1) {
-            /* break out */
-            break;
-        }
-
-        /* refill the buffer */
-        ufile_fill_uchar_buffer(f);
-
-        /* determine the amount of data in the buffer */
-        dataSize = (int32_t)(str->fLimit - str->fPos);
-    }
-
-    /* add the terminator and return s */
-    *sItr = 0x0000;
-    return s;
-}
-
-U_CFUNC UBool U_EXPORT2
-ufile_getch(UFILE *f, UChar *ch)
-{
-    UBool isValidChar = FALSE;
-
-    *ch = U_EOF;
-    /* if we have an available character in the buffer, return it */
-    if(f->str.fPos < f->str.fLimit){
-        *ch = *(f->str.fPos)++;
-        isValidChar = TRUE;
-    }
-    else {
-        /* otherwise, fill the buffer and return the next character */
-        if(f->str.fPos >= f->str.fLimit) {
-            ufile_fill_uchar_buffer(f);
-        }
-        if(f->str.fPos < f->str.fLimit) {
-            *ch = *(f->str.fPos)++;
-            isValidChar = TRUE;
-        }
-    }
-    return isValidChar;
-}
-
-U_CAPI UChar U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fgetc(UFILE        *f)
-{
-    UChar ch;
-    ufile_getch(f, &ch);
-    return ch;
-}
-
-U_CFUNC UBool U_EXPORT2
-ufile_getch32(UFILE *f, UChar32 *c32)
-{
-    UBool isValidChar = FALSE;
-    u_localized_string *str;
-
-    *c32 = U_EOF;
-
-    /* Fill the buffer if it is empty */
-    str = &f->str;
-    if (f && str->fPos + 1 >= str->fLimit) {
-        ufile_fill_uchar_buffer(f);
-    }
-
-    /* Get the next character in the buffer */
-    if (str->fPos < str->fLimit) {
-        *c32 = *(str->fPos)++;
-        if (U_IS_LEAD(*c32)) {
-            if (str->fPos < str->fLimit) {
-                UChar c16 = *(str->fPos)++;
-                *c32 = U16_GET_SUPPLEMENTARY(*c32, c16);
-                isValidChar = TRUE;
-            }
-            else {
-                *c32 = U_EOF;
-            }
-        }
-        else {
-            isValidChar = TRUE;
-        }
-    }
-
-    return isValidChar;
-}
-
-U_CAPI UChar32 U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fgetcx(UFILE        *f)
-{
-    UChar32 ch;
-    ufile_getch32(f, &ch);
-    return ch;
-}
-
-U_CAPI UChar32 U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fungetc(UChar32        ch,
-    UFILE        *f)
-{
-    u_localized_string *str;
-
-    str = &f->str;
-
-    /* if we're at the beginning of the buffer, sorry! */
-    if (str->fPos == str->fBuffer
-        || (U_IS_LEAD(ch) && (str->fPos - 1) == str->fBuffer))
-    {
-        ch = U_EOF;
-    }
-    else {
-        /* otherwise, put the character back */
-        /* Remember, read them back on in the reverse order. */
-        if (U_IS_LEAD(ch)) {
-            if (*--(str->fPos) != U16_TRAIL(ch)
-                || *--(str->fPos) != U16_LEAD(ch))
-            {
-                ch = U_EOF;
-            }
-        }
-        else if (*--(str->fPos) != ch) {
-            ch = U_EOF;
-        }
-    }
-    return ch;
-}
-
-U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_file_read(    UChar        *chars,
-    int32_t        count,
-    UFILE         *f)
-{
-    int32_t dataSize;
-    int32_t read = 0;
-    u_localized_string *str = &f->str;
-
-    do {
-
-        /* determine the amount of data in the buffer */
-        dataSize = (int32_t)(str->fLimit - str->fPos);
-        if (dataSize <= 0) {
-            /* fill the buffer */
-            ufile_fill_uchar_buffer(f);
-            dataSize = (int32_t)(str->fLimit - str->fPos);
-        }
-
-        /* Make sure that we don't read too much */
-        if (dataSize > (count - read)) {
-            dataSize = count - read;
-        }
-
-        /* copy the current data in the buffer */
-        memcpy(chars + read, str->fPos, dataSize * sizeof(UChar));
-
-        /* update number of items read */
-        read += dataSize;
-
-        /* update the current buffer position */
-        str->fPos += dataSize;
-    }
-    while (dataSize != 0 && read < count);
-
-    return read;
-}
-#endif
index 8e0087e..a537d14 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 0f25fd0..b8561cb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 154b9fd..7bd7176 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 91d89b8..9e525cf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 1eb8f6b..f6e51af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index eb92ad0..0d9f08f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 654c96f..5cf6c60 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 8d7adc8..317b438 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index ccfdc2f..2a7a397 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index c3c8266..f7f8f10 100644 (file)
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\iculx58.dll</OutputFile>
+      <OutputFile>..\..\bin\iculx59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib\iculx.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\iculx58d.dll</OutputFile>
+      <OutputFile>..\..\bin\iculx59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib\iculxd.pdb</ProgramDatabaseFile>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\iculx58.dll</OutputFile>
+      <OutputFile>..\..\bin64\iculx59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib64\iculx.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\iculx58d.dll</OutputFile>
+      <OutputFile>..\..\bin64\iculx59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib64\iculxd.pdb</ProgramDatabaseFile>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 3f6f1b4..cebd4bb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index eff65df..95766d6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index 73f2c9a..abe8832 100755 (executable)
@@ -315,7 +315,6 @@ case $platform in
         THE_COMP="the GNU C++"
         RELEASE_CFLAGS='-O3'
         RELEASE_CXXFLAGS='-O3'
-        CXXFLAGS="--std=c++03"
         export CXXFLAGS
         ;;
     MSYS/MSVC)
index 35a7e5d..4965aac 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 21e0d33..0ac3e59 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{DEEADF02-9C14-4854-A395-E505D2904D65}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>.\x86\Release/break.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/break.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/break.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/break.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/break.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/break.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/break.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/break.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>.\x86\Debug/break.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/break.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/break.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/break.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/break.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/break.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/break.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/break.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="break.cpp" />\r
-    <ClCompile Include="ubreak.c" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{DEEADF02-9C14-4854-A395-E505D2904D65}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\x86\Release/break.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/break.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/break.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/break.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/break.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/break.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/break.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/break.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\x86\Debug/break.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/break.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/break.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/break.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/break.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/break.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/break.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/break.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="break.cpp" />
+    <ClCompile Include="ubreak.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 2dcda2d..593ea82 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 7b1950f..eb606a9 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index 26f2c74..95a0a53 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index bcfa1ee..8fce883 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index f6639ee..cbbcefb 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index fc0042d..f111818 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index c340df8..3596766 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{2316BE8C-189D-4C8B-B506-9D9EE25AC46D}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/case.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/case.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/case.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/case.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/case.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/case.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/case.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/case.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/case.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/case.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/case.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/case.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/case.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/case.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/case.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/case.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="case.cpp" />\r
-    <ClCompile Include="ucase.c" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{2316BE8C-189D-4C8B-B506-9D9EE25AC46D}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/case.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/case.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/case.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/case.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/case.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/case.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/case.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/case.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/case.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/case.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/case.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/case.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/case.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/case.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/case.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/case.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="case.cpp" />
+    <ClCompile Include="ucase.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 60d4084..eafa934 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 03f1a25..3a16dc1 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*     Copyright (C) 2016 and later: Unicode, Inc. and others.
+*     © 2016 and later: Unicode, Inc. and others.
 *     License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 9f8a5d1..bf6355e 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{247E2681-6C84-408B-B40C-5DB50BC5E18F}</ProjectGuid>\r
-    <Keyword>Win32Proj</Keyword>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>./Debug/citer.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>./Debug/citer.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>./Release/citer.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>./Release/citer.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="citer.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{247E2681-6C84-408B-B40C-5DB50BC5E18F}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>./Debug/citer.exe</OutputFile>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>./Debug/citer.exe</OutputFile>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>./Release/citer.exe</OutputFile>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>./Release/citer.exe</OutputFile>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="citer.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index f079370..e29755d 100644 (file)
@@ -1,6 +1,6 @@
 /*************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *************************************************************************
index 66451bc..85d0341 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{7664D0D2-0263-4BFB-AE19-9A1CAD231440}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/coll.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/coll.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/coll.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/coll.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/coll.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/coll.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/coll.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/coll.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/coll.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/coll.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/coll.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/coll.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/coll.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/coll.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/coll.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/coll.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="coll.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{7664D0D2-0263-4BFB-AE19-9A1CAD231440}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/coll.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/coll.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/coll.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/coll.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/coll.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/coll.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/coll.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/coll.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/coll.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/coll.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/coll.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/coll.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/coll.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/coll.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/coll.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/coll.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="coll.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index e4e13da..c8df791 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ********************************************************************************
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 ********************************************************************************
 ********************************************************************************
index 3e44574..6d2a0ad 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{683745AD-3BC2-4B89-898B-93490D7F2757}</ProjectGuid>\r
-    <Keyword>Win32Proj</Keyword>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)csdet.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)csdet.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)csdet.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)csdet.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="csdet.c" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{683745AD-3BC2-4B89-898B-93490D7F2757}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)csdet.exe</OutputFile>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)csdet.exe</OutputFile>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)csdet.exe</OutputFile>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)csdet.exe</OutputFile>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="csdet.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index f7a3a81..156a341 100644 (file)
@@ -1,6 +1,6 @@
 /*
 *************************************************************************
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *************************************************************************
 ***********************************************************************
index 20f0937..f8241c1 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{38B5751A-C6F9-4409-950C-F4F9DA17275F}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/date.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/date.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/date.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/date.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/date.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/date.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/date.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/date.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/date.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/date.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/date.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/date.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/date.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/date.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/date.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/date.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="date.c" />\r
-    <ClCompile Include="uprint.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="uprint.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{38B5751A-C6F9-4409-950C-F4F9DA17275F}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/date.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/date.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/date.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/date.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/date.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/date.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/date.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/date.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/date.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/date.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/date.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/date.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/date.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/date.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/date.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/date.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="date.c" />
+    <ClCompile Include="uprint.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="uprint.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 0206fcc..b0ef938 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index 5caa697..5f2fba6 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ********************************************************************************
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 ********************************************************************************
 **********************************************************************
index 502c04b..1af3a69 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index a9559a2..4a80beb 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 7a122fc..0c58786 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 3fbd4be..1afcfd6 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index af49c07..ccce516 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 66f9e7c..39c095a 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index af9b838..078ca49 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/datefmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/datefmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/datefmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/datefmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/datefmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/datefmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/datefmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/datefmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/datefmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/datefmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/datefmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/datefmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/datefmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/datefmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/datefmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/datefmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="main.cpp" />\r
-    <ClCompile Include="util.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/datefmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/datefmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/datefmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/datefmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/datefmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/datefmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/datefmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/datefmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/datefmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/datefmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/datefmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/datefmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/datefmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/datefmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/datefmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/datefmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="main.cpp" />
+    <ClCompile Include="util.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 44cec7b..a655328 100644 (file)
@@ -1,5 +1,5 @@
 /*************************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index bb33723..6068d0e 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 716f71e..3a15a9e 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 86a0bf2..da6f746 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
 * Copyright (C) 2008-2014, International Business Machines Corporation and
index 6e56709..701d806 100644 (file)
@@ -1,97 +1,97 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{8945255B-473B-4C47-9425-E92384338CAA}</ProjectGuid>\r
-    <RootNamespace>dtitvfmtsample</RootNamespace>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseDebugLibraries>true</UseDebugLibraries>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseDebugLibraries>false</UseDebugLibraries>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <OutDir>.\x86\debug\</OutDir>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <IntDir>.\x86\debug\</IntDir>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <OutDir>.\x86\release</OutDir>\r
-    <IntDir>.\x86\release</IntDir>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <OutputFile>.\x86\Debug/dtitvfmtsample.exe</OutputFile>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="dtitvfmtsample.cpp">\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\io\io.vcxproj">\r
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8945255B-473B-4C47-9425-E92384338CAA}</ProjectGuid>
+    <RootNamespace>dtitvfmtsample</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>.\x86\debug\</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <IntDir>.\x86\debug\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>.\x86\release</OutDir>
+    <IntDir>.\x86\release</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OutputFile>.\x86\Debug/dtitvfmtsample.exe</OutputFile>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="dtitvfmtsample.cpp">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\io\io.vcxproj">
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 3f966a2..b119f4b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 77a7668..c49ee6a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{115886F0-7DFB-4B8B-BE79-83162EE8713B}</ProjectGuid>\r
-    <RootNamespace>samples</RootNamespace>\r
-    <ProjectName>dtptngsample</ProjectName>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseDebugLibraries>true</UseDebugLibraries>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseDebugLibraries>false</UseDebugLibraries>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <OutDir>.\x86\debug\</OutDir>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <IntDir>.\x86\debug\</IntDir>\r
-    <TargetName>$(ProjectName)</TargetName>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <OutDir>.\x86\release</OutDir>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <IntDir>.\x86\release</IntDir>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <TargetName>$(ProjectName)</TargetName>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <OutputFile>.\x86\debug/dtptngsample.exe</OutputFile>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <OutputFile>\x86\debug\samples.exe</OutputFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="dtptngsample.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\io\io.vcxproj">\r
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{115886F0-7DFB-4B8B-BE79-83162EE8713B}</ProjectGuid>
+    <RootNamespace>samples</RootNamespace>
+    <ProjectName>dtptngsample</ProjectName>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>.\x86\debug\</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <IntDir>.\x86\debug\</IntDir>
+    <TargetName>$(ProjectName)</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>.\x86\release</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <IntDir>.\x86\release</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <TargetName>$(ProjectName)</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OutputFile>.\x86\debug/dtptngsample.exe</OutputFile>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>\x86\debug\samples.exe</OutputFile>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="dtptngsample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\io\io.vcxproj">
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 3586c0c..1ca98df 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
+ * © 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index c14c082..c3f518b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
+ * © 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index bdd4f8f..7ca68b7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 75560b3..f949c5a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  **********************************************************************
index 9854dcd..59448f0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 779e4c2..36211d4 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index ce0f7ce..bdbfe30 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
+ * © 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 5798df3..0a66334 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
+ * © 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 745df62..a3289e4 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index d3a73dc..e3ae957 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index bff11fd..1b092a3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 6b22cc1..c330b61 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index f088b64..7cabcb5 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index c94daa3..7895dd8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
+ * © 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 1773950..2a38a64 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *******************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *******************************************************************************
  ******************************************************************************
index 05c6b1a..35a4166 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 07d765a..2f56e2a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index f4a1528..0399e71 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index bec43c7..a87c650 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index ed7bb2f..151d682 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * %W% %E%
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2011 - All Rights Reserved
index 5a73ae1..268145a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *   Copyright (C) 2003, International Business Machines
index aa5e32d..9e25516 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *   Copyright (C) 2003, International Business Machines
index e9df02c..47a4386 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
+ * © 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 2ffa22f..4429f1c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
+ * © 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 8efc000..2580410 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 6a2c16f..ff3d563 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index fcce80d..e129966 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 72a28d7..36d6335 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 59b8084..0abda50 100644 (file)
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ******************************************************************************
index 6fa176b..b79f6ee 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 3fef1a3..8018d08 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index f88162e..906b143 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 254f37a..3413bae 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 7787fcd..8f7c37d 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 72d3b27..582bcc1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index ab088cd..009a055 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 4b37d23..c27af9d 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{497500ED-DE1D-4B20-B529-F41B5A0FBEEB}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/layout.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/layout.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib\iculx.lib;..\..\..\lib\icule.lib;..\..\..\lib\icuuc.lib;..\..\..\lib\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/layout.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/layout.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Windows</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/layout.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN64;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/layout.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib64\iculx.lib;..\..\..\lib64\icule.lib;..\..\..\lib64\icuuc.lib;..\..\..\lib64\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/layout.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/layout.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Windows</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/layout.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/layout.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib\iculxd.lib;..\..\..\lib\iculed.lib;..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/layout.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/layout.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Windows</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/layout.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;WIN64;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/layout.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib64\iculxd.lib;..\..\..\lib64\iculed.lib;..\..\..\lib64\icuucd.lib;..\..\..\lib64\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/layout.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/layout.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Windows</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="cmaps.cpp" />\r
-    <ClCompile Include="FontMap.cpp" />\r
-    <ClCompile Include="FontTableCache.cpp" />\r
-    <ClCompile Include="GDIFontInstance.cpp" />\r
-    <ClCompile Include="GDIFontMap.cpp" />\r
-    <ClCompile Include="GDIGUISupport.cpp" />\r
-    <ClCompile Include="layout.cpp" />\r
-    <ClCompile Include="paragraph.cpp" />\r
-    <ClCompile Include="ScriptCompositeFontInstance.cpp" />\r
-    <ClCompile Include="UnicodeReader.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ResourceCompile Include="LayoutSample.rc" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="cmaps.h" />\r
-    <ClInclude Include="FontMap.h" />\r
-    <ClInclude Include="FontTableCache.h" />\r
-    <ClInclude Include="GDIFontInstance.h" />\r
-    <ClInclude Include="GDIFontMap.h" />\r
-    <ClInclude Include="GDIGUISupport.h" />\r
-    <ClInclude Include="GUISupport.h" />\r
-    <ClInclude Include="paragraph.h" />\r
-    <ClInclude Include="RenderingSurface.h" />\r
-    <ClInclude Include="resource.h" />\r
-    <ClInclude Include="ScriptCompositeFontInstance.h" />\r
-    <ClInclude Include="sfnt.h" />\r
-    <ClInclude Include="UnicodeReader.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{497500ED-DE1D-4B20-B529-F41B5A0FBEEB}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/layout.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/layout.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib\iculx.lib;..\..\..\lib\icule.lib;..\..\..\lib\icuuc.lib;..\..\..\lib\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/layout.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/layout.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/layout.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN64;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/layout.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib64\iculx.lib;..\..\..\lib64\icule.lib;..\..\..\lib64\icuuc.lib;..\..\..\lib64\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/layout.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/layout.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/layout.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/layout.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib\iculxd.lib;..\..\..\lib\iculed.lib;..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/layout.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/layout.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/layout.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;WIN64;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/layout.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib64\iculxd.lib;..\..\..\lib64\iculed.lib;..\..\..\lib64\icuucd.lib;..\..\..\lib64\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/layout.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/layout.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="cmaps.cpp" />
+    <ClCompile Include="FontMap.cpp" />
+    <ClCompile Include="FontTableCache.cpp" />
+    <ClCompile Include="GDIFontInstance.cpp" />
+    <ClCompile Include="GDIFontMap.cpp" />
+    <ClCompile Include="GDIGUISupport.cpp" />
+    <ClCompile Include="layout.cpp" />
+    <ClCompile Include="paragraph.cpp" />
+    <ClCompile Include="ScriptCompositeFontInstance.cpp" />
+    <ClCompile Include="UnicodeReader.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="LayoutSample.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="cmaps.h" />
+    <ClInclude Include="FontMap.h" />
+    <ClInclude Include="FontTableCache.h" />
+    <ClInclude Include="GDIFontInstance.h" />
+    <ClInclude Include="GDIFontMap.h" />
+    <ClInclude Include="GDIGUISupport.h" />
+    <ClInclude Include="GUISupport.h" />
+    <ClInclude Include="paragraph.h" />
+    <ClInclude Include="RenderingSurface.h" />
+    <ClInclude Include="resource.h" />
+    <ClInclude Include="ScriptCompositeFontInstance.h" />
+    <ClInclude Include="sfnt.h" />
+    <ClInclude Include="UnicodeReader.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index ac69cf2..190106f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 8fcb93e..0f307fd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index fe3ab4c..92d521c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index f8971e0..ec87131 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 82285ff..77374ba 100644 (file)
@@ -1,6 +1,6 @@
 //{{NO_DEPENDENCIES}}
 // Microsoft Developer Studio generated include file.
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html#License
 // Corporation and others. All Rights Reserved.
 // Copyright (c) 2001-2003 International Business Machines
index 1e6dd36..a64ba9a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index effc951..ae2098b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index c653c31..32173ba 100644 (file)
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ******************************************************************************
index 4f608ba..232ee86 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index b33eff9..bf2dd70 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 717af3a..559fbcb 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  main.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 51311b6..56b7fde 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{57F56795-1802-4605-88A0-013AAE9998F6}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/legacy.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/legacy.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/legacy.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/legacy.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/legacy.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/legacy.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/legacy.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/legacy.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/legacy.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/legacy.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/legacy.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/legacy.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/legacy.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/legacy.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/legacy.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/legacy.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="legacy.cpp" />\r
-    <ClCompile Include="newcol.cpp" />\r
-    <ClCompile Include="oldcol.cpp">\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{57F56795-1802-4605-88A0-013AAE9998F6}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/legacy.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/legacy.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/legacy.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/legacy.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/legacy.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/legacy.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/legacy.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/legacy.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/legacy.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/legacy.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/legacy.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/legacy.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/legacy.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/legacy.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/legacy.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/legacy.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="legacy.cpp" />
+    <ClCompile Include="newcol.cpp" />
+    <ClCompile Include="oldcol.cpp">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
+    </ClCompile>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index e63fe70..b5430d7 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  newcol.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6caa88f..8c9c696 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
@@ -12,7 +12,7 @@
  *
  *******************************************************************************
  *   file name:  oldcol.cpp
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 865d793..5dafe09 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 1e888f0..66add56 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 380234b..d252ac7 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index f93ff7a..aa42dee 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 66d4712..0a7de73 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 68d4108..eebe956 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/msgfmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/msgfmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/msgfmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/msgfmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/msgfmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/msgfmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/msgfmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/msgfmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/msgfmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/msgfmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/msgfmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/msgfmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/msgfmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/msgfmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="main.cpp" />\r
-    <ClCompile Include="util.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/msgfmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/msgfmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/msgfmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/msgfmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/msgfmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/msgfmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/msgfmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/msgfmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/msgfmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/msgfmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/msgfmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/msgfmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/msgfmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/msgfmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="main.cpp" />
+    <ClCompile Include="util.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 25f6be7..fb353a0 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 2095e1a..b66e019 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 91b6b80..bf96f01 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index c53b55c..172202e 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index d986f9f..2e29537 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{721FBD47-E458-4C35-90DA-FF192907D5E2}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/numfmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/numfmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/numfmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/numfmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/numfmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/numfmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/numfmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/numfmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/numfmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/numfmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/numfmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/numfmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/numfmt.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/numfmt.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/numfmt.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/numfmt.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="capi.c" />\r
-    <ClCompile Include="main.cpp" />\r
-    <ClCompile Include="util.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="util.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{721FBD47-E458-4C35-90DA-FF192907D5E2}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/numfmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/numfmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/numfmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/numfmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/numfmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/numfmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/numfmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/numfmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/numfmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/numfmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/numfmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/numfmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/numfmt.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/numfmt.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/numfmt.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/numfmt.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="capi.c" />
+    <ClCompile Include="main.cpp" />
+    <ClCompile Include="util.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="util.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 15dc825..f5db0e1 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index e946129..b1c2679 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
 #include "unicode/unistr.h"
 #include "unicode/fmtable.h"
 
+#ifndef UPRV_LENGTHOF 
+#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) 
+#endif 
+
 // Verify that a UErrorCode is successful; exit(1) if not
 void check(UErrorCode& status, const char* msg);
 
index f3a9ce6..87d77e3 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ********************************************************************************
 ********************************************************************************
index a349c14..1276c9a 100644 (file)
@@ -1,98 +1,98 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{B500B731-ED1A-4761-94ED-B22DFE25FF2B}</ProjectGuid>\r
-    <RootNamespace>plurfmtsample</RootNamespace>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseDebugLibraries>true</UseDebugLibraries>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseDebugLibraries>false</UseDebugLibraries>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <OutDir>.\x86\debug</OutDir>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <IntDir>.\x86\debug</IntDir>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <OutDir>.\x86\release</OutDir>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <IntDir>.\x86\release</IntDir>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="plurfmtsample.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\io\io.vcxproj">\r
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B500B731-ED1A-4761-94ED-B22DFE25FF2B}</ProjectGuid>
+    <RootNamespace>plurfmtsample</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>.\x86\debug</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <IntDir>.\x86\debug</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>.\x86\release</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <IntDir>.\x86\release</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="plurfmtsample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\io\io.vcxproj">
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 65e298e..da9408d 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  props.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5fa811e..488fe6e 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/props.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/props.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/props.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/props.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/props.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/props.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/props.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/props.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/props.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/props.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/props.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/props.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/props.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/props.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/props.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/props.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="props.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/props.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/props.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/props.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/props.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/props.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/props.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/props.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/props.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/props.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/props.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/props.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/props.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/props.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/props.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/props.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/props.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="props.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index d2e6481..2478712 100644 (file)
@@ -1,5 +1,5 @@
 /*************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *************************************************************************
index 171596e..67efde7 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/strsrch.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/strsrch.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/strsrch.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/strsrch.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/strsrch.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/strsrch.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/strsrch.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/strsrch.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/strsrch.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/strsrch.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuin.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/strsrch.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/strsrch.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/strsrch.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/strsrch.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuin.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/strsrch.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/strsrch.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="strsrch.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/strsrch.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/strsrch.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/strsrch.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/strsrch.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/strsrch.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/strsrch.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/strsrch.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/strsrch.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/strsrch.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/strsrch.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuin.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/strsrch.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/strsrch.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/strsrch.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/strsrch.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuin.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/strsrch.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/strsrch.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="strsrch.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 23a64b3..04c4886 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 51468e0..2110990 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 0c1735b..d18b1ce 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 2837127..ec2306d 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 12f9793..c726071 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  * COPYRIGHT:
index 3a35978..5399312 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 98e35cf..ca7f090 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 399d883..2e63d9b 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{D1BEC124-303A-4F44-BA70-55769B8FE96A}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/translit.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/translit.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/translit.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/translit.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/translit.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/translit.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/translit.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/translit.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/translit.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/translit.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/translit.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/translit.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/translit.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/translit.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/translit.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/translit.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="main.cpp" />\r
-    <ClCompile Include="unaccent.cpp" />\r
-    <ClCompile Include="util.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="unaccent.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D1BEC124-303A-4F44-BA70-55769B8FE96A}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/translit.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/translit.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/translit.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/translit.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/translit.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/translit.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/translit.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/translit.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/translit.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/translit.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/translit.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/translit.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/translit.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/translit.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/translit.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/translit.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="main.cpp" />
+    <ClCompile Include="unaccent.cpp" />
+    <ClCompile Include="util.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="unaccent.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index ccdc33c..b16a5a4 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  **********************************************************************
  **********************************************************************
index 35f39c0..71521b5 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 898e101..fc00c4f 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 15b41a2..dcd6384 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index d9e84fe..dcd9aa0 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  uciter8.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #include "unicode/uiter.h"
 #include "uit_len8.h"
 
+#ifndef UPRV_LENGTHOF
+#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
+#endif
+
 #define log_err printf
 
 /* UCharIterator test ------------------------------------------------------- */
index 0a4fec2..194a1d3 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/uciter8.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/uciter8.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/uciter8.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/uciter8.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/uciter8.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/uciter8.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/uciter8.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/uciter8.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/uciter8.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/uciter8.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/uciter8.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/uciter8.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/uciter8.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/uciter8.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/uciter8.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/uciter8.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="uciter8.c" />\r
-    <ClCompile Include="uit_len8.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="uit_len8.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/uciter8.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/uciter8.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/uciter8.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/uciter8.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/uciter8.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/uciter8.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/uciter8.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/uciter8.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/uciter8.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/uciter8.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/uciter8.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/uciter8.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/uciter8.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/uciter8.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/uciter8.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/uciter8.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="uciter8.c" />
+    <ClCompile Include="uit_len8.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="uit_len8.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index f6f4140..e7f8303 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  uit_len8.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5b4c323..2aef2ad 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  uit_len8.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 139e948..7194e6d 100644 (file)
@@ -1,6 +1,6 @@
 /*************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 **************************************************************************
@@ -39,7 +39,6 @@
 #include <string.h>
 #include <stdlib.h>  /* malloc */
 
-#include "cmemory.h"
 #include "unicode/utypes.h"   /* Basic ICU data types */
 #include "unicode/ucnv.h"     /* C   Converter API    */
 #include "unicode/ustring.h"  /* some more string fcns*/
@@ -50,6 +49,9 @@
 #include "flagcb.h"
 
 /* Some utility functions */
+#ifndef UPRV_LENGTHOF
+#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
+#endif
 
 static const UChar kNone[] = { 0x0000 };
 
index 45a0faa..7830109 100644 (file)
@@ -1,5 +1,5 @@
 /**************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  **************************************************************************
  **************************************************************************
index 3fa544f..f6af5bd 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2016 and later: Unicode, Inc. and others.
+/* © 2016 and later: Unicode, Inc. and others.
    License & terms of use: http://www.unicode.org/copyright.html#License
 
    Copyright (c) 2000 IBM, Inc. and Others. 
index d27f84a..796c700 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{8C95060E-61F5-464E-BB42-95B788C0D7E4}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/ucnv.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ucnv.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/ucnv.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/ucnv.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/ucnv.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ucnv.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/ucnv.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/ucnv.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/ucnv.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/ucnv.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/ucnv.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/ucnv.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/ucnv.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/ucnv.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/ucnv.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/ucnv.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="convsamp.cpp" />\r
-    <ClCompile Include="flagcb.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="flagcb.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8C95060E-61F5-464E-BB42-95B788C0D7E4}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/ucnv.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ucnv.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/ucnv.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/ucnv.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/ucnv.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ucnv.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/ucnv.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/ucnv.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/ucnv.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/ucnv.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/ucnv.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/ucnv.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/ucnv.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/ucnv.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/ucnv.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/ucnv.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="convsamp.cpp" />
+    <ClCompile Include="flagcb.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="flagcb.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 8059798..00817b8 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
@@ -12,7 +12,7 @@
  *
  *******************************************************************************
  *   file name:  reader.c
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index e84994a..0faeeb6 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\reader_Win32_Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\reader_Win32_Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\reader_Win32_Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\reader_Win32_Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\reader_Win32_Debug/reader.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\reader_Win32_Debug/reader.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\reader_Win32_Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\reader_Win32_Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\reader_Win32_Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\reader_Win32_Debug/reader.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\reader_Win32_Debug/reader.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\reader_Win32_Debug/reader.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\reader_Win32_Debug/reader.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\reader_Win32_Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\reader_Win32_Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\reader_Win32_Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\reader_x64_Debug/reader.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\reader_Win32_Debug/reader.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\reader_Win32_Release/reader.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\reader_Win32_Release/reader.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\reader_Win32_Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\reader_Win32_Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\reader_Win32_Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\reader_Win32_Release/reader.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\reader_Win32_Release/reader.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\reader_Win32_Release/reader.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\reader_Win32_Release/reader.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\reader_Win32_Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\reader_Win32_Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\reader_Win32_Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\reader_x64_Release/reader.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\reader_Win32_Release/reader.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="reader.c">\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\reader_Win32_Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\reader_Win32_Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\reader_Win32_Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\reader_Win32_Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\reader_Win32_Debug/reader.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\reader_Win32_Debug/reader.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\reader_Win32_Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\reader_Win32_Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\reader_Win32_Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\reader_Win32_Debug/reader.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\reader_Win32_Debug/reader.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\reader_Win32_Debug/reader.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\reader_Win32_Debug/reader.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\reader_Win32_Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\reader_Win32_Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\reader_Win32_Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\reader_x64_Debug/reader.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\reader_Win32_Debug/reader.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\reader_Win32_Release/reader.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\reader_Win32_Release/reader.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\reader_Win32_Release/</AssemblerListingLocation>
+      <ObjectFileName>.\reader_Win32_Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\reader_Win32_Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\reader_Win32_Release/reader.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\reader_Win32_Release/reader.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\reader_Win32_Release/reader.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\reader_Win32_Release/reader.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\reader_Win32_Release/</AssemblerListingLocation>
+      <ObjectFileName>.\reader_Win32_Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\reader_Win32_Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\reader_x64_Release/reader.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\reader_Win32_Release/reader.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="reader.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>
+    </ClCompile>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index f07f8df..4734822 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  writer.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index abdcab5..80e74ab 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{40A90302-F173-4629-A003-F571D2D93D16}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/writer.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/writer.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/writer.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/writer.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/writer.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/writer.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/writer.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/writer.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/writer.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/writer.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/writer.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/writer.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/writer.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/writer.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/writer.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/writer.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="writer.c" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{40A90302-F173-4629-A003-F571D2D93D16}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/writer.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/writer.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/writer.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/writer.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/writer.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/writer.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/writer.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/writer.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/writer.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/writer.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/writer.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/writer.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/writer.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/writer.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/writer.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/writer.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="writer.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 5649be1..c1c203a 100644 (file)
@@ -1,6 +1,6 @@
 /*************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 **************************************************************************
index f0ab72a..ff1760a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{25F534DF-93C9-4853-A88E-DB7D8CF74042}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/ufortune.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ufortune.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/ufortune.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/ufortune.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/ufortune.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ufortune.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/ufortune.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/ufortune.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/ufortune.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/ufortune.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/ufortune.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/ufortune.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/ufortune.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/ufortune.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/ufortune.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/ufortune.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="ufortune.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="resources\es.txt" />\r
-    <None Include="resources\res-file-list.txt" />\r
-    <None Include="resources\root.txt" />\r
-    <CustomBuild Include="resources\fortune_resources.mak">\r
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cd resources\r
-nmake -f fortune_resources.mak CFG=x86\Debug\r
-copy Fortune_Resources.DLL "$(TargetDir)"\r
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>\r
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cd resources\r
-nmake -f fortune_resources.mak CFG=x64\Debug\r
-copy Fortune_Resources.DLL "$(TargetDir)"\r
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">resources\fortune_resources.DLL;%(Outputs)</Outputs>\r
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cd resources\r
-nmake -f fortune_resources.mak CFG=x86\Release\r
-copy Fortune_Resources.DLL "$(TargetDir)"\r
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>\r
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cd resources\r
-nmake -f fortune_resources.mak CFG=x64\Release\r
-copy Fortune_Resources.DLL "$(TargetDir)"\r
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">resources\fortune_resources.DLL;%(Outputs)</Outputs>\r
-    </CustomBuild>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{25F534DF-93C9-4853-A88E-DB7D8CF74042}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/ufortune.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ufortune.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/ufortune.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/ufortune.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/ufortune.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ufortune.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/ufortune.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/ufortune.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/ufortune.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/ufortune.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/ufortune.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/ufortune.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/ufortune.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/ufortune.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/ufortune.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/ufortune.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="ufortune.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="resources\es.txt" />
+    <None Include="resources\res-file-list.txt" />
+    <None Include="resources\root.txt" />
+    <CustomBuild Include="resources\fortune_resources.mak">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cd resources
+nmake -f fortune_resources.mak CFG=x86\Debug
+copy Fortune_Resources.DLL "$(TargetDir)"
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cd resources
+nmake -f fortune_resources.mak CFG=x64\Debug
+copy Fortune_Resources.DLL "$(TargetDir)"
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cd resources
+nmake -f fortune_resources.mak CFG=x86\Release
+copy Fortune_Resources.DLL "$(TargetDir)"
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cd resources
+nmake -f fortune_resources.mak CFG=x64\Release
+copy Fortune_Resources.DLL "$(TargetDir)"
+</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
+    </CustomBuild>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index df748bb..b704059 100644 (file)
@@ -1,6 +1,6 @@
 /*************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 **************************************************************************
index c19713a..1d42f57 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{63166CEB-02CC-472C-B3B7-E6C559939BDA}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/ugrep.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/ugrep.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalOptions>/FIXED:NO %(AdditionalOptions)</AdditionalOptions>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/ugrep.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/ugrep.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/ugrep.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/ugrep.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalOptions>/FIXED:NO %(AdditionalOptions)</AdditionalOptions>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/ugrep.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/ugrep.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/ugrep.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ugrep.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/ugrep.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/ugrep.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/ugrep.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ugrep.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/ugrep.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/ugrep.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="ugrep.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{63166CEB-02CC-472C-B3B7-E6C559939BDA}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/ugrep.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/ugrep.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalOptions>/FIXED:NO %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/ugrep.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/ugrep.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/ugrep.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/ugrep.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalOptions>/FIXED:NO %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/ugrep.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/ugrep.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/ugrep.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ugrep.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/ugrep.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/ugrep.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/ugrep.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ugrep.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/ugrep.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/ugrep.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="ugrep.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index e9ad299..c05110b 100644 (file)
@@ -64,7 +64,7 @@ sr.res : sr.txt
 # Can change this to LINK.c if it is a C only program
 # Can add more libraries here. 
 $(TARGET): $(OBJECTS)
-       $(CC) -o $@ $^ $(LDFLAGS)
+       $(CC) -o $(TARGET) $(LDFLAGS)
 
 # Make check: simply runs the sample, logged to a file
 check: $(TARGET) $(RESOURCES)
index 27ea3aa..f8d7cd6 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  uresb.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index cf1dc4f..f5a2f22 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{92580BF4-F4DA-4024-B3F8-444F982BC72F}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/uresb.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/uresb.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0c1a</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/uresb.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/uresb.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/uresb.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/uresb.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0c1a</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/uresb.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/uresb.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/uresb.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/uresb.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0c1a</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/uresb.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/uresb.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/uresb.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/uresb.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0c1a</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/uresb.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/uresb.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="uresb.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="resources.vcxproj">\r
-      <Project>{69437707-2fef-4e2c-8c3f-6e6b3d241366}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{92580BF4-F4DA-4024-B3F8-444F982BC72F}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/uresb.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/uresb.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0c1a</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/uresb.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/uresb.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/uresb.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/uresb.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0c1a</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/uresb.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/uresb.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/uresb.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/uresb.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0c1a</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/uresb.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/uresb.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/uresb.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/uresb.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0c1a</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/uresb.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/uresb.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="uresb.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="resources.vcxproj">
+      <Project>{69437707-2fef-4e2c-8c3f-6e6b3d241366}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 2eea148..af25e20 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  ustring.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #include "unicode/ucnv.h"
 #include "unicode/unistr.h"
 
+#ifndef UPRV_LENGTHOF
+#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
+#endif
+
 // helper functions -------------------------------------------------------- ***
 
 // default converter for the platform encoding
index 0d469bb..9196a82 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}</ProjectGuid>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/ustring.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/ustring.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/ustring.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/ustring.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/ustring.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/ustring.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/ustring.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/ustring.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/ustring.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ustring.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/ustring.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/ustring.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/ustring.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ustring.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/ustring.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/ustring.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="ustring.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}</ProjectGuid>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/ustring.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/ustring.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/ustring.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/ustring.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/ustring.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/ustring.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/ustring.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/ustring.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/ustring.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ustring.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/ustring.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/ustring.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/ustring.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ustring.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/ustring.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/ustring.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="ustring.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/source/stubdata/stubdata.c b/source/stubdata/stubdata.c
deleted file mode 100644 (file)
index 6493ac4..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/******************************************************************************
-*
-*   Copyright (C) 2001, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  stubdata.c
-*
-*   Define initialized data that will build into a valid, but empty
-*   ICU data library.  Used to bootstrap the ICU build, which has these
-*   dependencies:
-*       ICU Common library depends on ICU data
-*       ICU data requires data building tools.
-*       ICU data building tools require the ICU common library.
-*
-*   The stub data library (for which this file is the source) is sufficient
-*   for running the data building tools.
-*
-*/
-#include "unicode/utypes.h"
-#include "unicode/udata.h"
-#include "unicode/uversion.h"
-
-
-typedef struct {
-    uint16_t headerSize;
-    uint8_t magic1, magic2;
-    UDataInfo info;
-    char padding[8];
-    uint32_t count, reserved;
-    /*
-    const struct {
-    const char *const name; 
-    const void *const data;
-    } toc[1];
-    */
-   int   fakeNameAndData[4];       /* TODO:  Change this header type from */
-                                   /*        pointerTOC to OffsetTOC.     */
-} ICU_Data_Header;
-
-U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
-    32,          /* headerSize */
-    0xda,        /* magic1,  (see struct MappedData in udata.c)  */
-    0x27,        /* magic2     */
-    {            /*UDataInfo   */
-        sizeof(UDataInfo),      /* size        */
-        0,                      /* reserved    */
-
-#if U_IS_BIG_ENDIAN
-        1,
-#else
-        0,
-#endif
-
-        U_CHARSET_FAMILY,
-        sizeof(UChar),   
-        0,               /* reserved      */
-        {                /* data format identifier */
-           0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
-           {1, 0, 0, 0},   /* format version major, minor, milli, micro */
-           {0, 0, 0, 0}    /* dataVersion   */
-    },
-    {0,0,0,0,0,0,0,0},  /* Padding[8]   */ 
-    0,                  /* count        */
-    0,                  /* Reserved     */
-    {                   /*  TOC structure */
-/*        {    */
-          0 , 0 , 0, 0  /* name and data entries.  Count says there are none,  */
-                        /*  but put one in just in case.                       */
-/*        }  */
-    }
-};
-
-
index 36291a3..147f2f7 100644 (file)
       <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
     </PreLinkEvent>
     <Link>
-      <OutputFile>..\..\bin\icudt58.dll</OutputFile>
+      <OutputFile>..\..\bin\icudt59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
       <ProgramDatabaseFile>.\x86\Release\icudt.pdb</ProgramDatabaseFile>
       <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
     </PreLinkEvent>
     <Link>
-      <OutputFile>..\..\bin\icudt58.dll</OutputFile>
+      <OutputFile>..\..\bin\icudt59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\x86\Debug/icudt.pdb</ProgramDatabaseFile>
       <NoEntryPoint>true</NoEntryPoint>
       <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
     </PreLinkEvent>
     <Link>
-      <OutputFile>..\..\bin64\icudt58.dll</OutputFile>
+      <OutputFile>..\..\bin64\icudt59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
       <ProgramDatabaseFile>.\x64\Release\icudt.pdb</ProgramDatabaseFile>
       <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
     </PreLinkEvent>
     <Link>
-      <OutputFile>..\..\bin64\icudt58.dll</OutputFile>
+      <OutputFile>..\..\bin64\icudt59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\x64\Debug/icudt.pdb</ProgramDatabaseFile>
       <NoEntryPoint>true</NoEntryPoint>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClCompile Include="stubdata.c" />
+    <ClCompile Include="stubdata.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="..\data\misc\icudata.rc">
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index f274259..da86a1b 100644 (file)
@@ -15,7 +15,7 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="stubdata.c">
+    <ClCompile Include="stubdata.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>
@@ -24,4 +24,4 @@
       <Filter>Resource Files</Filter>
     </ResourceCompile>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index 5cf33bf..a8edc18 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  bocu1tst.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ee2a17c..191f065 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3b824ef..d10f61d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index af64956..d10b345 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e759be8..6c5af06 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8be989c..d976eeb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index f9c2691..0dd20dc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2013 International Business Machines 
index 398db3c..9f68f0b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -10,7 +10,7 @@
 * File CBIAPTS.C
 *
 * Modification History:
-*        Name                     Description            
+*        Name                     Description
 *     Madhu Katragadda              Creation
 *********************************************************************************/
 /*C API TEST FOR BREAKITERATOR */
@@ -68,7 +68,9 @@ void addBrkIterAPITest(TestNode** root)
     addTest(root, &TestBreakIteratorTailoring, "tstxtbd/cbiapts/TestBreakIteratorTailoring");
     addTest(root, &TestBreakIteratorRefresh, "tstxtbd/cbiapts/TestBreakIteratorRefresh");
     addTest(root, &TestBug11665, "tstxtbd/cbiapts/TestBug11665");
+#if !UCONFIG_NO_FILTERED_BREAK_ITERATION
     addTest(root, &TestBreakIteratorSuppressions, "tstxtbd/cbiapts/TestBreakIteratorSuppressions");
+#endif
 }
 
 #define CLONETEST_ITERATOR_COUNT 2
@@ -128,7 +130,7 @@ static UChar* toUChar(const char *src, void **freeHook) {
     if (dest == NULL) {
         return NULL;
     }
-    
+
     dest->link = (StringStruct*)(*freeHook);
     *freeHook = dest;
     return dest->str;
@@ -164,7 +166,7 @@ static void TestBreakIteratorCAPI()
 
 /*test ubrk_open()*/
     log_verbose("\nTesting BreakIterator open functions\n");
-                                            
+
     /* Use french for fun */
     word         = ubrk_open(UBRK_WORD, "en_US", text, u_strlen(text), &status);
     if(status == U_FILE_ACCESS_ERROR) {
@@ -176,7 +178,7 @@ static void TestBreakIteratorCAPI()
     else{
         log_verbose("PASS: Successfully opened  word breakiterator\n");
     }
-    
+
     sentence     = ubrk_open(UBRK_SENTENCE, "en_US", text, u_strlen(text), &status);
     if(U_FAILURE(status)){
         log_err_status(status, "FAIL: Error in ubrk_open() for sentence breakiterator: %s\n", myErrorName(status));
@@ -185,7 +187,7 @@ static void TestBreakIteratorCAPI()
     else{
         log_verbose("PASS: Successfully opened  sentence breakiterator\n");
     }
-    
+
     line         = ubrk_open(UBRK_LINE, "en_US", text, u_strlen(text), &status);
     if(U_FAILURE(status)){
         log_err("FAIL: Error in ubrk_open() for line breakiterator: %s\n", myErrorName(status));
@@ -194,7 +196,7 @@ static void TestBreakIteratorCAPI()
     else{
         log_verbose("PASS: Successfully opened  line breakiterator\n");
     }
-    
+
     character     = ubrk_open(UBRK_CHARACTER, "en_US", text, u_strlen(text), &status);
     if(U_FAILURE(status)){
         log_err("FAIL: Error in ubrk_open() for character breakiterator: %s\n", myErrorName(status));
@@ -232,10 +234,10 @@ static void TestBreakIteratorCAPI()
     }
     for(i=0;i<count;i++)
     {
-        log_verbose("%s\n", ubrk_getAvailable(i)); 
+        log_verbose("%s\n", ubrk_getAvailable(i));
         if (ubrk_getAvailable(i) == 0)
             log_err("No locale for which breakiterator is applicable\n");
-        else 
+        else
             log_verbose("A locale %s for which breakiterator is applicable\n",ubrk_getAvailable(i));
     }
 
@@ -258,10 +260,10 @@ static void TestBreakIteratorCAPI()
     if(end!=49)
         log_err("error ubrk_last(word) did not return 49\n");
     log_verbose("last (word = %d\n", (int32_t)end);
-    
+
     pos=ubrk_previous(word);
     log_verbose("%d   %d\n", end, pos);
-     
+
     pos=ubrk_previous(word);
     log_verbose("%d \n", pos);
 
@@ -277,7 +279,7 @@ static void TestBreakIteratorCAPI()
     }
 
 
-    
+
     log_verbose("\nTesting the functions for character\n");
     ubrk_first(character);
     pos = ubrk_following(character, 5);
@@ -292,7 +294,7 @@ static void TestBreakIteratorCAPI()
     if(pos!=21)
        log_err("error ubrk_preceding(character,22) did not return 21\n");
     log_verbose("preceding(character,22) = %d\n", (int32_t)pos);
-    
+
 
     log_verbose("\nTesting the functions for line\n");
     pos=ubrk_first(line);
@@ -304,7 +306,7 @@ static void TestBreakIteratorCAPI()
         log_err("error ubrk_following(line) did not return 22\n");
     log_verbose("following (line) = %d\n", (int32_t)pos);
 
-    
+
     log_verbose("\nTesting the functions for sentence\n");
     ubrk_first(sentence);
     pos = ubrk_current(sentence);
@@ -321,8 +323,8 @@ static void TestBreakIteratorCAPI()
     if (ubrk_first(sentence)!=ubrk_current(sentence)) {
         log_err("error in ubrk_first() or ubrk_current()\n");
     }
-    
+
+
     /*---- */
     /*Testing ubrk_open and ubrk_close()*/
    log_verbose("\nTesting open and close for us locale\n");
@@ -368,7 +370,7 @@ static void TestBreakIteratorCAPI()
 static void TestBreakIteratorSafeClone(void)
 {
     UChar text[51];     /* Keep this odd to test for 64-bit memory alignment */
-                        /*  NOTE:  This doesn't reliably force mis-alignment of following items. */ 
+                        /*  NOTE:  This doesn't reliably force mis-alignment of following items. */
     uint8_t buffer [CLONETEST_ITERATOR_COUNT] [U_BRK_SAFECLONE_BUFFERSIZE];
     int32_t bufferSize = U_BRK_SAFECLONE_BUFFERSIZE;
 
@@ -526,7 +528,7 @@ static UBreakIterator * testOpenRules(char *rules) {
     bi = ubrk_openRules(ruleSourceU,  -1,     /*  The rules  */
                         NULL,  -1,            /*  The text to be iterated over. */
                         &parseErr, &status);
-    
+
     if (U_FAILURE(status)) {
         log_data_err("FAIL: ubrk_openRules: ICU Error \"%s\" (Are you missing data?)\n", u_errorName(status));
         bi = 0;
@@ -586,6 +588,43 @@ static void TestBreakIteratorRules() {
         }
     }
 
+    /* #12914 add basic sanity test for ubrk_getBinaryRules, ubrk_openBinaryRules */
+    /* Underlying functionality checked in C++ rbbiapts.cpp TestRoundtripRules */
+    status = U_ZERO_ERROR;
+    int32_t rulesLength = ubrk_getBinaryRules(bi, NULL, 0, &status); /* preflight */
+    if (U_FAILURE(status)) {
+        log_err("FAIL: ubrk_getBinaryRules preflight err: %s", u_errorName(status));
+    } else {
+        uint8_t* binaryRules = (uint8_t*)uprv_malloc(rulesLength);
+        if (binaryRules == NULL) {
+            log_err("FAIL: unable to malloc rules buffer, size %u", rulesLength);
+        } else {
+            rulesLength = ubrk_getBinaryRules(bi, binaryRules, rulesLength, &status);
+            if (U_FAILURE(status)) {
+                log_err("FAIL: ubrk_getBinaryRules err: %s", u_errorName(status));
+            } else {
+                UBreakIterator* bi2 = ubrk_openBinaryRules(binaryRules, rulesLength, uData, -1, &status);
+                if (U_FAILURE(status)) {
+                    log_err("FAIL: ubrk_openBinaryRules err: %s", u_errorName(status));
+                } else {
+                    int32_t maxCount = sizeof(breaks); /* fail-safe test limit */
+                    int32_t pos2 = ubrk_first(bi2);
+                    pos = ubrk_first(bi);
+                    do {
+                        if (pos2 != pos) {
+                            log_err("FAIL: interator from ubrk_openBinaryRules does not match original, get pos = %d instead of %d", pos2, pos);
+                        }
+                        pos2 = ubrk_next(bi2);
+                        pos = ubrk_next(bi);
+                    } while ((pos != UBRK_DONE || pos2 != UBRK_DONE) && maxCount-- > 0);
+                    
+                    ubrk_close(bi2);
+                }
+            }
+            uprv_free(binaryRules);
+        }
+    }
+
     freeToUCharStrings(&freeHook);
     ubrk_close(bi);
 }
@@ -809,7 +848,7 @@ static void TestBreakIteratorTailoring(void) {
             }
             if (!foundError && offsindx < testPtr->numOffsets) {
                 log_err("FAIL: locale %s, break type %d, ubrk_next expected %d, got UBRK_DONE\n",
-                       testPtr->locale, testPtr->type, testPtr->offsFwd[offsindx]);
+                        testPtr->locale, testPtr->type, testPtr->offsFwd[offsindx]);
             }
 
             foundError = FALSE;
@@ -826,7 +865,7 @@ static void TestBreakIteratorTailoring(void) {
             }
             if (!foundError && offsindx < testPtr->numOffsets) {
                 log_err("FAIL: locale %s, break type %d, ubrk_previous expected %d, got UBRK_DONE\n",
-                       testPtr->locale, testPtr->type, testPtr->offsRev[offsindx]);
+                        testPtr->locale, testPtr->type, testPtr->offsRev[offsindx]);
             }
 
             ubrk_close(ubrkiter);
@@ -851,7 +890,7 @@ static void TestBreakIteratorRefresh(void) {
     UBreakIterator *bi;
     UText ut1 = UTEXT_INITIALIZER;
     UText ut2 = UTEXT_INITIALIZER;
-    
+
     bi = ubrk_open(UBRK_LINE, "en_US", NULL, 0, &status);
     TEST_ASSERT_SUCCESS(status);
     if (U_FAILURE(status)) {
@@ -875,7 +914,7 @@ static void TestBreakIteratorRefresh(void) {
         TEST_ASSERT_SUCCESS(status);
         ubrk_refreshUText(bi, &ut2, &status);
         TEST_ASSERT_SUCCESS(status);
-    
+
         /* Find the following matches, now working in the moved string. */
         TEST_ASSERT(5 == ubrk_next(bi));
         TEST_ASSERT(7 == ubrk_next(bi));
@@ -994,7 +1033,7 @@ static const TestBISuppressionsItem testBISuppressionsItems[] = {
 
 static void TestBreakIteratorSuppressions(void) {
     const TestBISuppressionsItem * itemPtr;
-    
+
     for (itemPtr = testBISuppressionsItems; itemPtr->locale != NULL; itemPtr++) {
         UChar textU[kTextULenMax];
         int32_t textULen = u_unescape(itemPtr->text, textU, kTextULenMax);
index 6f28e8b..838c7e6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6dc91f2..0db1b4d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  cbididat.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 9fd78b1..0d2fe4f 100644 (file)
@@ -1,9 +1,9 @@
 /********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html
  ********************************************************************/
 /*   file name:  cbiditransformtst.c
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index beba262..a902da7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  cbiditst.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -90,6 +90,7 @@ static void testContext(void);
 static void doTailTest(void);
 
 static void testBracketOverflow(void);
+static void TestExplicitLevel0();
 
 /* new BIDI API */
 static void testReorderingMode(void);
@@ -138,6 +139,7 @@ addComplexTest(TestNode** root) {
     addTest(root, testGetBaseDirection, "complex/bidi/testGetBaseDirection");
     addTest(root, testContext, "complex/bidi/testContext");
     addTest(root, testBracketOverflow, "complex/bidi/TestBracketOverflow");
+    addTest(root, &TestExplicitLevel0, "complex/bidi/TestExplicitLevel0");
 
     addTest(root, doArabicShapingTest, "complex/arabic-shaping/ArabicShapingTest");
     addTest(root, doLamAlefSpecialVLTRArabicShapingTest, "complex/arabic-shaping/lamalef");
@@ -4922,3 +4924,24 @@ testBracketOverflow(void) {
     ubidi_close(bidi);
 }
 
+static void TestExplicitLevel0() {
+    // The following used to fail with an error, see ICU ticket #12922.
+    static const UChar text[2] = { 0x202d, 0x05d0 };
+    static UBiDiLevel embeddings[2] = { 0, 0 };
+    UErrorCode errorCode = U_ZERO_ERROR;
+    UBiDi *bidi = ubidi_open();
+    ubidi_setPara(bidi, text, 2, UBIDI_DEFAULT_LTR , embeddings, &errorCode);
+    if (U_FAILURE(errorCode)) {
+        log_err("ubidi_setPara() - %s", u_errorName(errorCode));
+    } else {
+        UBiDiLevel level0 = ubidi_getLevelAt(bidi, 0);
+        UBiDiLevel level1 = ubidi_getLevelAt(bidi, 1);
+        if (level0 != 1 || level1 != 1) {
+            log_err("resolved levels != 1: { %d, %d }\n", level0, level1);
+        }
+        if (embeddings[0] != 1 || embeddings[1] != 1) {
+            log_err("modified embeddings[] levels != 1: { %d, %d }\n", embeddings[0], embeddings[1]);
+        }
+    }
+    ubidi_close(bidi);
+}
index 5c3d697..2044458 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  cbiditst.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 0e53d66..0406a15 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5338ac6..7f03cb1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index 12b3410..7f36b05 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2f6dc7a..4ae23ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -24,6 +24,7 @@
 #include "unicode/putil.h"
 #include "unicode/uset.h"
 #include "unicode/ustring.h"
+#include "unicode/utf8.h"
 #include "ucnv_bld.h" /* for sizeof(UConverter) */
 #include "cmemory.h"  /* for UAlignedMemory */
 #include "cintltst.h"
index 937ebf9..6b1a0f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d82a944..b42dfd7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3998049..5367155 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0a1f7ab..de3c908 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 59016ea..a2245a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 87e88e3..aa6f644 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 806ef39..5c52ce8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 72110fa..3c3326c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2011-2016, International Business Machines Corporation
index c1137aa..acdfa6c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 7b4e245..ef8b33c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 420f9e6..697633c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8e4b030..baeb6a9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8f223bd..447bd89 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index caabd3a..3966e11 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2a4ed39..66ca85b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5cfe70f..156ac07 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4f86668..228fe81 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0bf76cb..14e35fa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0234c9a..d81d90c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2009,2014, International Business Machines
index eff4123..ec03e18 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9f0cbf3..6ed740c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b87a5fe..a5b6bbe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 430dde7..de35646 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 23c101b..c2c6102 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 193d75c..e857afb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 68b5cc7..9b4957e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index fdfd9c5..0e5340b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d2ab2f6..5d1a4a8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0b4feca..40a0b94 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 9eea57a..ef6a42f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 81403f6..c7e409a 100644 (file)
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index c846c52..895b29b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 7e53971..5673e8f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d7ce9ef..c16ae8f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 79b1847..9494c44 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b2024a8..79b9120 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 2bbab85..2e7de58 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -50,6 +50,7 @@ static void TestDisplayNameBrackets(void);
 static void TestUnicodeDefines(void);
 
 static void TestIsRightToLeft(void);
+static void TestBadLocaleIDs(void);
 
 void PrintDataTable();
 
@@ -259,6 +260,7 @@ void addLocaleTest(TestNode** root)
     TESTCASE(TestToLegacyKey);
     TESTCASE(TestToUnicodeLocaleType);
     TESTCASE(TestToLegacyType);
+    TESTCASE(TestBadLocaleIDs);
 }
 
 
@@ -1826,27 +1828,38 @@ static void TestKeywordVariantParsing(void)
     static const struct {
         const char *localeID;
         const char *keyword;
-        const char *expectedValue;
+        const char *expectedValue; /* NULL if failure is expected */
     } testCases[] = {
-        { "de_DE@  C o ll A t i o n   = Phonebook   ", "c o ll a t i o n", "Phonebook" },
+        { "de_DE@  C o ll A t i o n   = Phonebook   ", "c o ll a t i o n", NULL }, /* malformed key name */
         { "de_DE", "collation", ""},
         { "de_DE@collation=PHONEBOOK", "collation", "PHONEBOOK" },
         { "de_DE@currency = euro; CoLLaTion   = PHONEBOOk", "collatiON", "PHONEBOOk" },
     };
     
-    UErrorCode status = U_ZERO_ERROR;
-    
+    UErrorCode status;
     int32_t i = 0;
     int32_t resultLen = 0;
     char buffer[256];
     
     for(i = 0; i < UPRV_LENGTHOF(testCases); i++) {
         *buffer = 0;
+        status = U_ZERO_ERROR;
         resultLen = uloc_getKeywordValue(testCases[i].localeID, testCases[i].keyword, buffer, 256, &status);
         (void)resultLen;    /* Suppress set but not used warning. */
-        if(uprv_strcmp(testCases[i].expectedValue, buffer) != 0) {
-            log_err("Expected to extract \"%s\" from \"%s\" for keyword \"%s\". Got \"%s\" instead\n",
-                testCases[i].expectedValue, testCases[i].localeID, testCases[i].keyword, buffer);
+        if (testCases[i].expectedValue) {
+            /* expect success */
+            if (U_FAILURE(status)) {
+                log_err("Expected to extract \"%s\" from \"%s\" for keyword \"%s\". Instead got status %s\n",
+                    testCases[i].expectedValue, testCases[i].localeID, testCases[i].keyword, u_errorName(status));
+            } else if (uprv_strcmp(testCases[i].expectedValue, buffer) != 0) {
+                log_err("Expected to extract \"%s\" from \"%s\" for keyword \"%s\". Instead got \"%s\"\n",
+                    testCases[i].expectedValue, testCases[i].localeID, testCases[i].keyword, buffer);
+            }
+        } else if (U_SUCCESS(status)) {
+            /* expect failure */
+            log_err("Expected failure but got success from \"%s\" for keyword \"%s\". Got \"%s\"\n",
+                testCases[i].localeID, testCases[i].keyword, buffer);
+            
         }
     }
 }
@@ -1899,7 +1912,40 @@ static const struct {
   /* 4. removal of only item */
   { "de@collation=phonebook", "collation", NULL, "de" },
 #endif
-  { "de@collation=phonebook", "Currency", "CHF", "de@collation=phonebook;currency=CHF" }
+  { "de@collation=phonebook", "Currency", "CHF", "de@collation=phonebook;currency=CHF" },
+  /* cases with legal extra spacing */
+  /*31*/{ "en_US@ calendar = islamic", "calendar", "japanese", "en_US@calendar=japanese" },
+  /*32*/{ "en_US@ calendar = gregorian ; collation = phonebook", "calendar", "japanese", "en_US@calendar=japanese;collation=phonebook" },
+  /*33*/{ "en_US@ calendar = islamic", "currency", "CHF", "en_US@calendar=islamic;currency=CHF" },
+  /*34*/{ "en_US@ currency = CHF", "calendar", "japanese", "en_US@calendar=japanese;currency=CHF" },
+  /* cases in which setKeywordValue expected to fail (implied by NULL for expected); locale need not be canonical */
+  /*35*/{ "en_US@calendar=gregorian;", "calendar", "japanese", NULL },
+  /*36*/{ "en_US@calendar=gregorian;=", "calendar", "japanese", NULL },
+  /*37*/{ "en_US@calendar=gregorian;currency=", "calendar", "japanese", NULL },
+  /*38*/{ "en_US@=", "calendar", "japanese", NULL },
+  /*39*/{ "en_US@=;", "calendar", "japanese", NULL },
+  /*40*/{ "en_US@= ", "calendar", "japanese", NULL },
+  /*41*/{ "en_US@ =", "calendar", "japanese", NULL },
+  /*42*/{ "en_US@ = ", "calendar", "japanese", NULL },
+  /*43*/{ "en_US@=;calendar=gregorian", "calendar", "japanese", NULL },
+  /*44*/{ "en_US@= calen dar = gregorian", "calendar", "japanese", NULL },
+  /*45*/{ "en_US@= calendar = greg orian", "calendar", "japanese", NULL },
+  /*46*/{ "en_US@=;cal...endar=gregorian", "calendar", "japanese", NULL },
+  /*47*/{ "en_US@=;calendar=greg...orian", "calendar", "japanese", NULL },
+  /*48*/{ "en_US@calendar=gregorian", "cale ndar", "japanese", NULL },
+  /*49*/{ "en_US@calendar=gregorian", "calendar", "japa..nese", NULL },
+  /* cases in which getKeywordValue and setKeyword expected to fail (implied by NULL for value and expected) */
+  /*50*/{ "en_US@=", "calendar", NULL, NULL },
+  /*51*/{ "en_US@=;", "calendar", NULL, NULL },
+  /*52*/{ "en_US@= ", "calendar", NULL, NULL },
+  /*53*/{ "en_US@ =", "calendar", NULL, NULL },
+  /*54*/{ "en_US@ = ", "calendar", NULL, NULL },
+  /*55*/{ "en_US@=;calendar=gregorian", "calendar", NULL, NULL },
+  /*56*/{ "en_US@= calen dar = gregorian", "calendar", NULL, NULL },
+  /*57*/{ "en_US@= calendar = greg orian", "calendar", NULL, NULL },
+  /*58*/{ "en_US@=;cal...endar=gregorian", "calendar", NULL, NULL },
+  /*59*/{ "en_US@=;calendar=greg...orian", "calendar", NULL, NULL },
+  /*60*/{ "en_US@calendar=gregorian", "cale ndar", NULL, NULL },
 };
 
 
@@ -1912,31 +1958,59 @@ static void TestKeywordSet(void)
     char cbuffer[1024];
 
     for(i = 0; i < UPRV_LENGTHOF(kwSetTestCases); i++) {
-        UErrorCode status = U_ZERO_ERROR;
-        memset(buffer,'%',1023);
-        strcpy(buffer, kwSetTestCases[i].l);
+      UErrorCode status = U_ZERO_ERROR;
+      memset(buffer,'%',1023);
+      strcpy(buffer, kwSetTestCases[i].l);
 
+      if (kwSetTestCases[i].x != NULL) {
         uloc_canonicalize(kwSetTestCases[i].l, cbuffer, 1023, &status);
         if(strcmp(buffer,cbuffer)) {
           log_verbose("note: [%d] wasn't canonical, should be: '%s' not '%s'. Won't check for canonicity in output.\n", i, cbuffer, buffer);
         }
-          /* sanity check test case results for canonicity */
+        /* sanity check test case results for canonicity */
         uloc_canonicalize(kwSetTestCases[i].x, cbuffer, 1023, &status);
         if(strcmp(kwSetTestCases[i].x,cbuffer)) {
           log_err("%s:%d: ERROR: kwSetTestCases[%d].x = '%s', should be %s (must be canonical)\n", __FILE__, __LINE__, i, kwSetTestCases[i].x, cbuffer);
         }
 
+        status = U_ZERO_ERROR;
         resultLen = uloc_setKeywordValue(kwSetTestCases[i].k, kwSetTestCases[i].v, buffer, 1023, &status);
         if(U_FAILURE(status)) {
-          log_err("Err on test case %d: got error %s\n", i, u_errorName(status));
-          continue;
-        }
-        if(strcmp(buffer,kwSetTestCases[i].x) || ((int32_t)strlen(buffer)!=resultLen)) {
-          log_err("FAIL: #%d: %s + [%s=%s] -> %s (%d) expected %s (%d)\n", i, kwSetTestCases[i].l, kwSetTestCases[i].k,
+          log_err("Err on test case %d for setKeywordValue: got error %s\n", i, u_errorName(status));
+        } else if(strcmp(buffer,kwSetTestCases[i].x) || ((int32_t)strlen(buffer)!=resultLen)) {
+          log_err("FAIL: #%d setKeywordValue: %s + [%s=%s] -> %s (%d) expected %s (%d)\n", i, kwSetTestCases[i].l, kwSetTestCases[i].k,
                   kwSetTestCases[i].v, buffer, resultLen, kwSetTestCases[i].x, strlen(buffer));
         } else {
           log_verbose("pass: #%d: %s + [%s=%s] -> %s\n", i, kwSetTestCases[i].l, kwSetTestCases[i].k, kwSetTestCases[i].v,buffer);
         }
+
+        if (kwSetTestCases[i].v != NULL && kwSetTestCases[i].v[0] != 0) {
+          status = U_ZERO_ERROR;
+          resultLen = uloc_getKeywordValue(kwSetTestCases[i].x, kwSetTestCases[i].k, buffer, 1023, &status);
+          if(U_FAILURE(status)) {
+            log_err("Err on test case %d for getKeywordValue: got error %s\n", i, u_errorName(status));
+          } else if (resultLen != uprv_strlen(kwSetTestCases[i].v) || uprv_strcmp(buffer, kwSetTestCases[i].v) != 0) {
+            log_err("FAIL: #%d getKeywordValue: got %s (%d) expected %s (%d)\n", i, buffer, resultLen,
+                    kwSetTestCases[i].v, uprv_strlen(kwSetTestCases[i].v));
+          }
+        }
+      } else {
+        /* test cases expected to result in error */
+        status = U_ZERO_ERROR;
+        resultLen = uloc_setKeywordValue(kwSetTestCases[i].k, kwSetTestCases[i].v, buffer, 1023, &status);
+        if(U_SUCCESS(status)) {
+          log_err("Err on test case %d for setKeywordValue: expected to fail but succeeded, got %s (%d)\n", i, buffer, resultLen);
+        }
+
+        if (kwSetTestCases[i].v == NULL) {
+          status = U_ZERO_ERROR;
+          strcpy(cbuffer, kwSetTestCases[i].l);
+          resultLen = uloc_getKeywordValue(cbuffer, kwSetTestCases[i].k, buffer, 1023, &status);
+          if(U_SUCCESS(status)) {
+            log_err("Err on test case %d for getKeywordValue: expected to fail but succeeded\n", i);
+          }
+        }
+      }
     }
 }
 
@@ -6194,3 +6268,40 @@ static void TestIsRightToLeft() {
         log_err("uloc_isRightToLeft() failed");
     }
 }
+
+typedef struct {
+    const char * badLocaleID;
+    const char * displayLocale;
+    const char * expectedName;
+    UErrorCode   expectedStatus;
+} BadLocaleItem;
+
+static const BadLocaleItem badLocaleItems[] = {
+    { "-9223372036854775808", "en", "9223372036854775808", U_USING_DEFAULT_WARNING },
+    /* add more in the future */
+    { NULL, NULL, NULL, U_ZERO_ERROR } /* terminator */
+};
+
+enum { kUBufDispNameMax = 128, kBBufDispNameMax = 256 };
+
+static void TestBadLocaleIDs() {
+    const BadLocaleItem* itemPtr;
+    for (itemPtr = badLocaleItems; itemPtr->badLocaleID != NULL; itemPtr++) {
+        UChar ubufExpect[kUBufDispNameMax], ubufGet[kUBufDispNameMax];
+        UErrorCode status = U_ZERO_ERROR;
+        int32_t ulenExpect = u_unescape(itemPtr->expectedName, ubufExpect, kUBufDispNameMax);
+        int32_t ulenGet = uloc_getDisplayName(itemPtr->badLocaleID, itemPtr->displayLocale, ubufGet, kUBufDispNameMax, &status);
+        if (status != itemPtr->expectedStatus ||
+                (U_SUCCESS(status) && (ulenGet != ulenExpect || u_strncmp(ubufGet, ubufExpect, ulenExpect) != 0))) {
+            char bbufExpect[kBBufDispNameMax], bbufGet[kBBufDispNameMax];
+            u_austrncpy(bbufExpect, ubufExpect, ulenExpect);
+            u_austrncpy(bbufGet, ubufGet, ulenGet);
+            log_err("FAIL: For localeID %s, displayLocale %s, calling uloc_getDisplayName:\n"
+                    "    expected status %-26s, name (len %2d): %s\n"
+                    "    got      status %-26s, name (len %2d): %s\n",
+                    itemPtr->badLocaleID, itemPtr->displayLocale,
+                    u_errorName(itemPtr->expectedStatus), ulenExpect, bbufExpect,
+                    u_errorName(status), ulenGet, bbufGet );
+        }
+    }
+}
index c9f2532..b757328 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 840a44a..d061aa1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 70983c7..21b6e5a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 94cf754..5a1a3ed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4eaf578..e00da2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 1b680a6..57484ea 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 49713d1..2ee0cc9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 53fda46..1fcd2a8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 15fec24..e419fc2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -63,6 +63,7 @@ static void TestCurrencyUsage(void);
 static void TestCurrFmtNegSameAsPositive(void);
 static void TestVariousStylesAndAttributes(void);
 static void TestParseCurrPatternWithDecStyle(void);
+static void TestFormatForFields(void);
 
 #define TESTCASE(x) addTest(root, &x, "tsformat/cnumtst/" #x)
 
@@ -93,6 +94,7 @@ void addNumForTest(TestNode** root)
     TESTCASE(TestCurrFmtNegSameAsPositive);
     TESTCASE(TestVariousStylesAndAttributes);
     TESTCASE(TestParseCurrPatternWithDecStyle);
+    TESTCASE(TestFormatForFields);
 }
 
 /* test Parse int 64 */
@@ -2887,4 +2889,111 @@ static void TestParseCurrPatternWithDecStyle() {
     }
 }
 
+/*
+ * Ticket #12684
+ * Test unum_formatDoubleForFields (and UFieldPositionIterator)
+ */
+
+typedef struct {
+    int32_t field;
+    int32_t beginPos;
+    int32_t endPos;
+} FieldsData;
+
+typedef struct {
+    const char *       locale;
+    UNumberFormatStyle style;
+    double             value;
+    const FieldsData * expectedFields;
+} FormatForFieldsItem;
+
+static const UChar patNoFields[] = { 0x0027, 0x0078, 0x0027, 0 }; /* "'x'", for UNUM_PATTERN_DECIMAL */
+
+
+/* "en_US", UNUM_CURRENCY, 123456.0 : "¤#,##0.00" => "$123,456.00" */
+static const FieldsData fields_en_CURR[] = {
+    { UNUM_CURRENCY_FIELD /*7*/,            0, 1 },
+    { UNUM_GROUPING_SEPARATOR_FIELD /*6*/,  4, 5 },
+    { UNUM_INTEGER_FIELD /*0*/,             1, 8 },
+    { UNUM_DECIMAL_SEPARATOR_FIELD /*2*/,   8, 9 },
+    { UNUM_FRACTION_FIELD /*1*/,            9, 11 },
+    { -1, -1, -1 },
+};
+/* "en_US", UNUM_PERCENT, -34 : "#,##0%" => "-34%" */
+static const FieldsData fields_en_PRCT[] = {
+    { UNUM_SIGN_FIELD /*10*/,               0, 1 },
+    { UNUM_INTEGER_FIELD /*0*/,             1, 3 },
+    { UNUM_PERCENT_FIELD /*8*/,             3, 4 },
+    { -1, -1, -1 },
+};
+/* "fr_FR", UNUM_CURRENCY, 123456.0 : "#,##0.00 ¤" => "123,456.00 €" */
+static const FieldsData fields_fr_CURR[] = {
+    { UNUM_GROUPING_SEPARATOR_FIELD /*6*/,  3, 4 },
+    { UNUM_INTEGER_FIELD /*0*/,             0, 7 },
+    { UNUM_DECIMAL_SEPARATOR_FIELD /*2*/,   7, 8 },
+    { UNUM_FRACTION_FIELD /*1*/,            8, 10 },
+    { UNUM_CURRENCY_FIELD /*7*/,           11, 12 },
+    { -1, -1, -1 },
+};
+/* "en_US", UNUM_PATTERN_DECIMAL, 12.0 : "'x'" => "x12" */
+static const FieldsData fields_en_PATN[] = {
+    { UNUM_INTEGER_FIELD /*0*/,             1, 3 },
+    { -1, -1, -1 },
+};
+
+static const FormatForFieldsItem fffItems[] = {
+    { "en_US", UNUM_CURRENCY_STANDARD, 123456.0, fields_en_CURR },
+    { "en_US", UNUM_PERCENT,              -0.34, fields_en_PRCT },
+    { "fr_FR", UNUM_CURRENCY_STANDARD, 123456.0, fields_fr_CURR },
+    { "en_US", UNUM_PATTERN_DECIMAL,       12.0, fields_en_PATN },
+    { NULL, (UNumberFormatStyle)0, 0, NULL },
+};
+
+static void TestFormatForFields(void) {
+    UErrorCode status = U_ZERO_ERROR;
+    UFieldPositionIterator* fpositer = ufieldpositer_open(&status);
+    if ( U_FAILURE(status) ) {
+        log_err("ufieldpositer_open fails, status %s\n", u_errorName(status));
+    } else {
+        const FormatForFieldsItem * itemPtr;
+        for (itemPtr = fffItems; itemPtr->locale != NULL; itemPtr++) {
+            UNumberFormat* unum;
+            status = U_ZERO_ERROR;
+            unum = (itemPtr->style == UNUM_PATTERN_DECIMAL)?
+                unum_open(itemPtr->style, patNoFields, -1, itemPtr->locale, NULL, &status):
+                unum_open(itemPtr->style, NULL, 0, itemPtr->locale, NULL, &status);
+            if ( U_FAILURE(status) ) {
+                log_data_err("unum_open fails for locale %s, style %d: status %s (Are you missing data?)\n", itemPtr->locale, itemPtr->style, u_errorName(status));
+            } else {
+                UChar ubuf[kUBufSize];
+                int32_t ulen = unum_formatDoubleForFields(unum, itemPtr->value, ubuf, kUBufSize, fpositer, &status);
+                if ( U_FAILURE(status) ) {
+                    log_err("unum_formatDoubleForFields fails for locale %s, style %d: status %s\n", itemPtr->locale, itemPtr->style, u_errorName(status));
+                } else {
+                    const FieldsData * fptr;
+                    int32_t field, beginPos, endPos;
+                    for (fptr = itemPtr->expectedFields; TRUE; fptr++) {
+                        field = ufieldpositer_next(fpositer, &beginPos, &endPos);
+                        if (field != fptr->field || (field >= 0 && (beginPos != fptr->beginPos || endPos != fptr->endPos))) {
+                            if (fptr->field >= 0) {
+                                log_err("unum_formatDoubleForFields for locale %s as \"%s\"; expect field %d range %d-%d, get field %d range %d-%d\n",
+                                    itemPtr->locale, aescstrdup(ubuf, ulen), fptr->field, fptr->beginPos, fptr->endPos, field, beginPos, endPos);
+                            } else {
+                                log_err("unum_formatDoubleForFields for locale %s as \"%s\"; expect field < 0, get field %d range %d-%d\n",
+                                    itemPtr->locale, aescstrdup(ubuf, ulen), field, beginPos, endPos);
+                            }
+                            break;
+                        }
+                        if (field < 0) {
+                            break;
+                        }
+                    }
+                }
+                unum_close(unum);
+            }
+        }
+        ufieldpositer_close(fpositer);
+    }
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
index fbecc11..c874388 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8be0e59..24b6543 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2011-2014, International Business Machines Corporation
 
 #include "unicode/upluralrules.h"
 #include "unicode/ustring.h"
+#include "unicode/uenum.h"
 #include "cintltst.h"
 #include "cmemory.h"
+#include "cstring.h"
 
 static void TestPluralRules(void);
 static void TestOrdinalRules(void);
+static void TestGetKeywords(void);
 
 void addPluralRulesTest(TestNode** root);
 
@@ -26,37 +29,41 @@ void addPluralRulesTest(TestNode** root)
 {
     TESTCASE(TestPluralRules);
     TESTCASE(TestOrdinalRules);
+    TESTCASE(TestGetKeywords);
 }
 
 typedef struct {
     const char * locale;
     double       number;
     const char * keywordExpected;
+    const char * keywordExpectedForDecimals;
 } PluralRulesTestItem;
 
 /* Just a small set of tests for now, other functionality is tested in the C++ tests */
 static const PluralRulesTestItem testItems[] = {
-    { "en",   0, "other" },
-    { "en", 0.5, "other" },
-    { "en",   1, "one" },
-    { "en", 1.5, "other" },
-    { "en",   2, "other" },
-    { "fr",   0, "one" },
-    { "fr", 0.5, "one" },
-    { "fr",   1, "one" },
-    { "fr", 1.5, "one" },
-    { "fr",   2, "other" },
-    { "ru",   0, "many" },
-    { "ru", 0.5, "other" },
-    { "ru",   1, "one" },
-    { "ru", 1.5, "other" },
-    { "ru",   2, "few" },
-    { "ru",   5, "many" },
-    { "ru",  10, "many" },
-    { "ru",  11, "many" },
-    { NULL,   0, NULL }
+    { "en",   0, "other", "other" },
+    { "en", 0.5, "other", "other" },
+    { "en",   1, "one",   "other" },
+    { "en", 1.5, "other", "other" },
+    { "en",   2, "other", "other" },
+    { "fr",   0, "one",   "one" },
+    { "fr", 0.5, "one",   "one" },
+    { "fr",   1, "one",   "one" },
+    { "fr", 1.5, "one",   "one" },
+    { "fr",   2, "other", "other" },
+    { "ru",   0, "many",  "other" },
+    { "ru", 0.5, "other", "other" },
+    { "ru",   1, "one",   "other" },
+    { "ru", 1.5, "other", "other" },
+    { "ru",   2, "few",   "other" },
+    { "ru",   5, "many",  "other" },
+    { "ru",  10, "many",  "other" },
+    { "ru",  11, "many",  "other" },
+    { NULL,   0, NULL,    NULL }
 };
 
+static const UChar twoDecimalPat[] = { 0x23,0x30,0x2E,0x30,0x30,0 }; /* "#0.00" */
+
 enum {
     kKeywordBufLen = 32
 };
@@ -69,6 +76,7 @@ static void TestPluralRules()
         UErrorCode status = U_ZERO_ERROR;
         UPluralRules* uplrules = uplrules_open(testItemPtr->locale, &status);
         if ( U_SUCCESS(status) ) {
+            UNumberFormat* unumfmt;
             UChar keyword[kKeywordBufLen];
             UChar keywordExpected[kKeywordBufLen];
             int32_t keywdLen = uplrules_select(uplrules, testItemPtr->number, keyword, kKeywordBufLen, &status);
@@ -86,6 +94,30 @@ static void TestPluralRules()
                 log_err("FAIL: uplrules_select for locale %s, number %.1f: %s\n",
                         testItemPtr->locale, testItemPtr->number, myErrorName(status) );
             }
+
+            status = U_ZERO_ERROR;
+            unumfmt = unum_open(UNUM_PATTERN_DECIMAL, twoDecimalPat, -1, testItemPtr->locale, NULL, &status);
+            if ( U_SUCCESS(status) ) {
+                keywdLen = uplrules_selectWithFormat(uplrules, testItemPtr->number, unumfmt, keyword, kKeywordBufLen, &status);
+                if (keywdLen >= kKeywordBufLen) {
+                    keyword[kKeywordBufLen-1] = 0;
+                }
+                if ( U_SUCCESS(status) ) {
+                    u_unescape(testItemPtr->keywordExpectedForDecimals, keywordExpected, kKeywordBufLen);
+                    if ( u_strcmp(keyword, keywordExpected) != 0 ) {
+                        char bcharBuf[kKeywordBufLen];
+                        log_data_err("ERROR: uplrules_selectWithFormat for locale %s, number %.1f: expect %s, get %s\n",
+                                 testItemPtr->locale, testItemPtr->number, testItemPtr->keywordExpectedForDecimals, u_austrcpy(bcharBuf,keyword) );
+                    }
+                } else {
+                    log_err("FAIL: uplrules_selectWithFormat for locale %s, number %.1f: %s\n",
+                            testItemPtr->locale, testItemPtr->number, myErrorName(status) );
+                }
+                unum_close(unumfmt);
+            } else {
+                log_err("FAIL: unum_open for locale %s: %s\n", testItemPtr->locale, myErrorName(status) );
+            }
+
             uplrules_close(uplrules);
         } else {
             log_err("FAIL: uplrules_open for locale %s: %s\n", testItemPtr->locale, myErrorName(status) );
@@ -111,4 +143,113 @@ static void TestOrdinalRules() {
     uplrules_close(upr);
 }
 
+/* items for TestGetKeywords */
+
+/* all possible plural keywords, in alphabetical order */
+static const char* knownKeywords[] = {
+    "few",
+    "many",
+    "one",
+    "other",
+    "two",
+    "zero"
+};
+enum {
+    kNumKeywords = UPRV_LENGTHOF(knownKeywords)
+};
+
+/* Return the index of keyword in knownKeywords[], or -1 if not found */
+static int32_t getKeywordIndex(const char* keyword) {
+    int32_t i, compare;
+    for (i = 0; i < kNumKeywords && (compare = uprv_strcmp(keyword,knownKeywords[i])) >= 0; i++) {
+        if (compare == 0) {
+               return i;
+        }
+    }
+    return -1;
+}
+
+typedef struct {
+    const char* locale;
+    const char* keywords[kNumKeywords + 1];
+} KeywordsForLang;
+
+static const KeywordsForLang getKeywordsItems[] = {
+    { "zh", { "other" } },
+    { "en", { "one", "other" } },
+    { "fr", { "one", "other" } },
+    { "lv", { "zero", "one", "other" } },
+    { "hr", { "one", "few", "other" } },
+    { "sl", { "one", "two", "few", "other" } },
+    { "he", { "one", "two", "many", "other" } },
+    { "cs", { "one", "few", "many", "other" } },
+    { "ar", { "zero", "one", "two", "few", "many" , "other" } },
+    { NULL, { NULL } }
+};
+
+static void TestGetKeywords() {
+    /*
+     * We don't know the order in which the enumeration will return keywords,
+     * so we have an array with known keywords in a fixed order and then
+     * parallel arrays of flags for expected and actual results that indicate
+     * which keywords are expected to be or actually are found.
+     */
+    const KeywordsForLang* itemPtr = getKeywordsItems;
+    for (; itemPtr->locale != NULL; itemPtr++) {
+        UPluralRules* uplrules;
+        UEnumeration* uenum;
+        UBool expectKeywords[kNumKeywords];
+        UBool getKeywords[kNumKeywords];
+        int32_t i, iKnown;
+        UErrorCode status = U_ZERO_ERROR;
+        
+        /* initialize arrays for expected and get results */
+        for (i = 0; i < kNumKeywords; i++) {
+            expectKeywords[i] = FALSE;
+            getKeywords[i] = FALSE;
+        }
+        for (i = 0; i < kNumKeywords && itemPtr->keywords[i] != NULL; i++) {
+            iKnown = getKeywordIndex(itemPtr->keywords[i]);
+            if (iKnown >= 0) {
+                expectKeywords[iKnown] = TRUE;
+            }
+        }
+        
+        uplrules = uplrules_openForType(itemPtr->locale, UPLURAL_TYPE_CARDINAL, &status);
+        if (U_FAILURE(status)) {
+            log_err("FAIL: uplrules_openForType for locale %s, UPLURAL_TYPE_CARDINAL: %s\n", itemPtr->locale, myErrorName(status) );
+            continue;
+        }
+        uenum = uplrules_getKeywords(uplrules, &status);
+        if (U_FAILURE(status)) {
+            log_err("FAIL: uplrules_getKeywords for locale %s: %s\n", itemPtr->locale, myErrorName(status) );
+        } else {
+            const char* keyword;
+            int32_t keywordLen, keywordCount = 0;
+            while ((keyword = uenum_next(uenum, &keywordLen, &status)) != NULL && U_SUCCESS(status)) {
+                iKnown = getKeywordIndex(keyword);
+                if (iKnown < 0) {
+                    log_err("FAIL: uplrules_getKeywords for locale %s, unknown keyword %s\n", itemPtr->locale, keyword );
+                } else {
+                    getKeywords[iKnown] = TRUE;
+                }
+                keywordCount++;
+            }
+            if (keywordCount > kNumKeywords) {
+                log_err("FAIL: uplrules_getKeywords for locale %s, got too many keywords %d\n", itemPtr->locale, keywordCount );
+            }
+            if (uprv_memcmp(expectKeywords, getKeywords, kNumKeywords) != 0) {
+                log_err("FAIL: uplrules_getKeywords for locale %s, got wrong keyword set; with reference to knownKeywords:\n"
+                        "        expected { %d %d %d %d %d %d },\n"
+                        "        got      { %d %d %d %d %d %d }\n", itemPtr->locale, 
+                        expectKeywords[0], expectKeywords[1], expectKeywords[2], expectKeywords[3], expectKeywords[4], expectKeywords[5],
+                        getKeywords[0], getKeywords[1], getKeywords[2], getKeywords[3], getKeywords[4], getKeywords[5] );
+            }
+            uenum_close(uenum);
+        }
+        
+        uplrules_close(uplrules);
+    }
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
index bf3c319..3701cc2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8cf5b39..b88d3d8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2016, International Business Machines Corporation
index 0263413..03cf52c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index bda1403..16f1687 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a5f92e9..da64f20 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -2127,7 +2127,7 @@ static void TestFallback()
         UResourceBundle* tResB;
         UResourceBundle* zoneResource;
         const UChar* version = NULL;
-        static const UChar versionStr[] = { 0x0032, 0x002E, 0x0031, 0x002E, 0x0032, 0x0037, 0x002E, 0x0034, 0x0030, 0x0000}; // 2.1.27.40 in nn_NO
+        static const UChar versionStr[] = { 0x0032, 0x002E, 0x0031, 0x002E, 0x0033, 0x0031, 0x002E, 0x0033, 0x0033, 0x0000}; // 2.1.31.33 in nn_NO
 
         if(err != U_ZERO_ERROR){
             log_data_err("Expected U_ZERO_ERROR when trying to test no_NO_NY aliased to nn_NO for Version err=%s\n",u_errorName(err));
index 48add5d..4760d3a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6c5e5b7..6fb2cfc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  cstrcase.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -27,6 +27,7 @@
 #include "unicode/ucasemap.h"
 #include "cmemory.h"
 #include "cintltst.h"
+#include "ucasemap_imp.h"
 #include "ustr_imp.h"
 
 /* test string case mapping functions --------------------------------------- */
@@ -744,11 +745,12 @@ TestUCaseMap(void) {
     if(0!=strcmp(locale, "tr")) {
         log_err("ucasemap_getLocale(ucasemap_open(\"tur\"))==%s!=\"tr\"\n", locale);
     }
-    /* overly long locale IDs get truncated to their language code to avoid unnecessary allocation */
+    /* overly long locale IDs may get truncated to their language code to avoid unnecessary allocation */
     ucasemap_setLocale(csm, "I-kLInGOn-the-quick-brown-fox-jumps-over-the-lazy-dog", &errorCode);
     locale=ucasemap_getLocale(csm);
-    if(0!=strcmp(locale, "i-klingon")) {
-        log_err("ucasemap_getLocale(ucasemap_setLocale(\"I-kLInGOn-the-quick-br...\"))==%s!=\"i-klingon\"\n", locale);
+    if(0!=strncmp(locale, "i-klingon", 9)) {
+        log_err("ucasemap_getLocale(ucasemap_setLocale(\"I-kLInGOn-the-quick-br...\"))==%s\n"
+                "    does not start with \"i-klingon\"\n", locale);
     }
 
     errorCode=U_ZERO_ERROR;
index 4443d4f..0cf3c6f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a61e007..2a3cb19 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a61a805..1cdd1e7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c25e11d..2073a0e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index 6f71f0d..499f2c0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d6c2170..15edead 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -34,7 +34,7 @@
 #include "uprops.h"
 #include "uset_imp.h"
 #include "usc_impl.h"
-#include "udatamem.h" /* for testing ucase_openBinary() */
+#include "udatamem.h"
 #include "cucdapi.h"
 #include "cmemory.h"
 
@@ -59,7 +59,6 @@ static void TestNumericProperties(void);
 static void TestPropertyNames(void);
 static void TestPropertyValues(void);
 static void TestConsistency(void);
-static void TestUCase(void);
 static void TestUBiDiProps(void);
 static void TestCaseFolding(void);
 
@@ -196,7 +195,6 @@ void addUnicodeTest(TestNode** root)
     addTest(root, &TestPropertyNames, "tsutil/cucdtst/TestPropertyNames");
     addTest(root, &TestPropertyValues, "tsutil/cucdtst/TestPropertyValues");
     addTest(root, &TestConsistency, "tsutil/cucdtst/TestConsistency");
-    addTest(root, &TestUCase, "tsutil/cucdtst/TestUCase");
     addTest(root, &TestUBiDiProps, "tsutil/cucdtst/TestUBiDiProps");
     addTest(root, &TestCaseFolding, "tsutil/cucdtst/TestCaseFolding");
 }
@@ -1019,9 +1017,12 @@ unicodeDataLineFn(void *context,
     /* get BiDi category, field 4 */
     *fields[4][1]=0;
     i=MakeDir(fields[4][0]);
+#if U_ICU_VERSION_MAJOR_NUM!=59
+    // TODO: Remove this version check, see ticket #13061.
     if(i!=u_charDirection(c) || i!=u_getIntPropertyValue(c, UCHAR_BIDI_CLASS)) {
         log_err("error: u_charDirection(U+%04lx)==%u instead of %u (%s)\n", c, u_charDirection(c), MakeDir(fields[4][0]), fields[4][0]);
     }
+#endif
 
     /* get Decomposition_Type & Decomposition_Mapping, field 5 */
     d=NULL;
@@ -1262,20 +1263,7 @@ enumDefaultsRange(const void *context, UChar32 start, UChar32 limit, UCharCatego
 
     /*
      * Verify default Bidi classes.
-     * For recent Unicode versions, see UCD.html.
-     *
-     * For older Unicode versions:
-     * See table 3-7 "Bidirectional Character Types" in UAX #9.
-     * http://www.unicode.org/reports/tr9/
-     *
-     * See also DerivedBidiClass.txt for Cn code points!
-     *
-     * Unicode 4.0.1/Public Review Issue #28 (http://www.unicode.org/review/resolved-pri.html)
-     * changed some default values.
-     * In particular, non-characters and unassigned Default Ignorable Code Points
-     * change from L to BN.
-     *
-     * UCD.html version 4.0.1 does not yet reflect these changes.
+     * See DerivedBidiClass.txt, especially for unassigned code points.
      */
     if(type==U_UNASSIGNED || type==U_PRIVATE_USE_CHAR) {
         /* enumerate the intersections of defaultBidi ranges with [start..limit[ */
@@ -1289,12 +1277,15 @@ enumDefaultsRange(const void *context, UChar32 start, UChar32 limit, UCharCatego
                         shouldBeDir=(UCharDirection)defaultBidi[i][1];
                     }
 
+#if U_ICU_VERSION_MAJOR_NUM!=59
+// TODO: Remove this version check, see ticket #13061.
                     if( u_charDirection(c)!=shouldBeDir ||
                         u_getIntPropertyValue(c, UCHAR_BIDI_CLASS)!=shouldBeDir
                     ) {
                         log_err("error: u_charDirection(unassigned/PUA U+%04lx)=%s should be %s\n",
                             c, dirStrings[u_charDirection(c)], dirStrings[shouldBeDir]);
                     }
+#endif
                     ++c;
                 }
             }
@@ -3256,47 +3247,6 @@ TestConsistency() {
  */
 #define HARDCODED_DATA_4497 1
 
-/* API coverage for ucase.c */
-static void TestUCase() {
-#if !HARDCODED_DATA_4497
-    UDataMemory *pData;
-    UCaseProps *csp;
-    const UCaseProps *ccsp;
-    UErrorCode errorCode;
-
-    /* coverage for ucase_openBinary() */
-    errorCode=U_ZERO_ERROR;
-    pData=udata_open(NULL, UCASE_DATA_TYPE, UCASE_DATA_NAME, &errorCode);
-    if(U_FAILURE(errorCode)) {
-        log_data_err("unable to open " UCASE_DATA_NAME "." UCASE_DATA_TYPE ": %s\n",
-                    u_errorName(errorCode));
-        return;
-    }
-
-    csp=ucase_openBinary((const uint8_t *)pData->pHeader, -1, &errorCode);
-    if(U_FAILURE(errorCode)) {
-        log_err("ucase_openBinary() fails for the contents of " UCASE_DATA_NAME "." UCASE_DATA_TYPE ": %s\n",
-                u_errorName(errorCode));
-        udata_close(pData);
-        return;
-    }
-
-    if(UCASE_LOWER!=ucase_getType(csp, 0xdf)) { /* verify islower(sharp s) */
-        log_err("ucase_openBinary() does not seem to return working UCaseProps\n");
-    }
-
-    ucase_close(csp);
-    udata_close(pData);
-
-    /* coverage for ucase_getDummy() */
-    errorCode=U_ZERO_ERROR;
-    ccsp=ucase_getDummy(&errorCode);
-    if(ucase_tolower(ccsp, 0x41)!=0x41) {
-        log_err("ucase_tolower(dummy, A)!=A\n");
-    }
-#endif
-}
-
 /* API coverage for ubidi_props.c */
 static void TestUBiDiProps() {
 #if !HARDCODED_DATA_4497
index 5d70521..dca9635 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index af0fe96..bf1068e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d809dd4..6d9b067 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  custrtst.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e489886..aa52970 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 73bbfcc..e54f898 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 61abda6..fd2b046 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index cc7e6a6..05f2470 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0e8dd7f..4cdf377 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9fa4e37..b164c9c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  idnatest.c
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 5fc0cb0..e485630 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6562d2a..d1e8453 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index fa0afa4..407e4fc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8373429..73a581b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3aafc93..cdeb4d6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 25d71a0..43da0ed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  nfsprep.c
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index ab4ec25..8e055eb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  nfsprep.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 6feb485..3366b66 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 974ee95..d0a240f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d3574c4..b99d9fc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 1ae5bc5..2ea322c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4a4d0e1..3822ba1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  sorttest.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f012db0..6921356 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 18784c8..2d8e34c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  spreptst.c
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 6edc947..b3ac72d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  spreptst.c
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index abb6680..929bf48 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0de558c..96e5031 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d457238..95b9a65 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  trietest.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6bc456f..bf770a1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  trietest.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 016965f..6d4dc2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2014, International Business Machines
index 75c608a..e4c8ba9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2c7453c..e39c46a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
index 3fbd322..d8d6ebd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6d6db03..8895c50 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  udatpg_test.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index acf1085..6148470 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uenumtst.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:2
 *
index 8183359..165bff4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2015, International Business Machines Corporation
index a2a66b9..cefbfde 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2014-2016, International Business Machines Corporation
index 1d59a8a..d656964 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8cc3746..301f188 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2001-2011,2015 International Business Machines 
index 0ce2194..d9c3066 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2001-2016 International Business Machines
index aa934b2..5707cc1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 39f9786..8ce403a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2d2bc01..75547cf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 75170d8..122ba30 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
index 7e7506f..40bd2d6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index e6e94ba..9482883 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 3d23512..76287cf 100644 (file)
@@ -144,7 +144,7 @@ library: common
     unistr_props unistr_case unistr_case_locale unistr_titlecase_brkiter unistr_cnv
     cstr
     uniset_core uniset_props uniset_closure usetiter uset uset_props
-    uiter
+    uiter edits
     ucasemap ucasemap_titlecase_brkiter script_runs
     uprops ubidi_props ucase uscript uscript_props
     ubidi ushape ubiditransform
@@ -461,6 +461,11 @@ group: ustr_titlecase_brkiter
     breakiterator
     ustring_case_locale ucase
 
+group: edits
+    edits.o
+  deps
+    platform
+
 group: ucasemap_titlecase_brkiter
     ucasemap_titlecase_brkiter.o
   deps
@@ -469,7 +474,7 @@ group: ucasemap_titlecase_brkiter
 group: ucasemap
     ucasemap.o
   deps
-    ustring_case
+    ustring_case ustring_case_locale
     resourcebundle  # uloc_getName() etc.
 
 group: ustring_case_locale
@@ -481,7 +486,7 @@ group: ustring_case_locale
 group: ustring_case
     ustrcase.o
   deps
-    ucase
+    ucase edits
 
 group: ucase
     ucase.o
@@ -863,6 +868,8 @@ group: formatting
     decfmtst.o decimfmt.o decimalformatpattern.o compactdecimalformat.o
     numfmt.o unum.o
     winnmfmt.o
+    # pluralrules
+    standardplural.o plurrule.o upluralrules.o
     # scientificnumberformatter - would depend on dcfmtsym, so would be circular.
     scientificnumberformatter.o
     # rbnf
@@ -884,7 +891,7 @@ group: formatting
     choicfmt.o msgfmt.o plurfmt.o selfmt.o umsg.o
   deps
     digitlist formattable format
-    dayperiodrules pluralrules
+    dayperiodrules
     collation collation_builder  # for rbnf
     common
     floating_point  # sqrt() for astro.o
@@ -918,14 +925,6 @@ group: format
   deps
     resourcebundle parsepos uvector32
 
-group: pluralrules
-    standardplural.o plurrule.o upluralrules.o
-  deps
-    digitlist  # plurals depend on decimals
-    patternprops resourcebundle uvector uvector32 unifiedcache
-    unistr_case_locale
-    uclean_i18n
-
 group: regex_cnv
     uregexc.o
   deps
index 81aa619..55e8339 100644 (file)
@@ -114,11 +114,11 @@ drafttest:
        @FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
          incfile=`basename $$file .h` ; \
          echo "$@ unicode/$$incfile.h" ; \
-         echo '#define U_HIDE_DRAFT_API' > hd_$$incfile.c; \
-         echo '#include "'unicode/$$incfile'.h"' >> hd_$$incfile.c ; \
-         echo 'void junk(void);' >> hd_$$incfile.c ; \
-         echo 'void junk(){}' >> hd_$$incfile.c ; \
-          $(COMPILE.cc) -c $(cppflags) hd_$$incfile.c ||FAIL=1 ; \
+         echo '#define U_HIDE_DRAFT_API' > hd_$$incfile.cpp ; \
+         echo '#include "'unicode/$$incfile'.h"' >> hd_$$incfile.cpp ; \
+         echo 'void junk(void);' >> hd_$$incfile.cpp ; \
+         echo 'void junk(){}' >> hd_$$incfile.cpp ; \
+          $(COMPILE.cc) -c $(cppflags) hd_$$incfile.cpp ||FAIL=1 ; \
        done ;\
        exit $$FAIL
 
@@ -126,11 +126,11 @@ deprtest:
        @FAIL=0; for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
          incfile=`basename $$file .h` ; \
          echo "$@ unicode/$$incfile.h" ; \
-         echo '#define U_HIDE_DEPRECATED_API' > hdp_$$incfile.c; \
-         echo '#include "'unicode/$$incfile'.h"' >> hdp_$$incfile.c ; \
-         echo 'void junk(void);' >> hdp_$$incfile.c ; \
-         echo 'void junk(){}' >> hdp_$$incfile.c ; \
-          $(COMPILE.cc) -c $(cppflags) hdp_$$incfile.c || FAIL=1; \
+         echo '#define U_HIDE_DEPRECATED_API' > hdp_$$incfile.cpp ; \
+         echo '#include "'unicode/$$incfile'.h"' >> hdp_$$incfile.cpp ; \
+         echo 'void junk(void);' >> hdp_$$incfile.cpp ; \
+         echo 'void junk(){}' >> hdp_$$incfile.cpp ; \
+          $(COMPILE.cc) -c $(cppflags) hdp_$$incfile.cpp || FAIL=1; \
        done ; \
        exit $$FAIL
 
@@ -139,11 +139,11 @@ internaltest:
         for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
          incfile=`basename $$file .h` ; \
          echo "$@ unicode/$$incfile.h" ; \
-         echo '#define U_HIDE_INTERNAL_API' > hin_$$incfile.c; \
-         echo '#include "'unicode/$$incfile'.h"' >> hin_$$incfile.c ; \
-         echo 'void junk(void);' >> hin_$$incfile.c ; \
-         echo 'void junk(){}' >> hin_$$incfile.c ; \
-          $(COMPILE.cc) -c $(cppflags) hin_$$incfile.c || FAIL=1 ; \
+         echo '#define U_HIDE_INTERNAL_API' > hin_$$incfile.cpp ; \
+         echo '#include "'unicode/$$incfile'.h"' >> hin_$$incfile.cpp ; \
+         echo 'void junk(void);' >> hin_$$incfile.cpp ; \
+         echo 'void junk(){}' >> hin_$$incfile.cpp ; \
+          $(COMPILE.cc) -c $(cppflags) hin_$$incfile.cpp || FAIL=1 ; \
        done ; \
        exit $$FAIL
 
@@ -151,11 +151,11 @@ obsoletetest:
        @FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
          incfile=`basename $$file .h` ; \
          echo "$@ unicode/$$incfile.h" ; \
-         echo '#define U_HIDE_OBSOLETE_API' > hob_$$incfile.c; \
-         echo '#include "'unicode/$$incfile'.h"' >> hob_$$incfile.c ; \
-         echo 'void junk(void);' >> hob_$$incfile.c ; \
-         echo 'void junk(){}' >> hob_$$incfile.c ; \
-          $(COMPILE.cc) -c $(cppflags) hob_$$incfile.c || FAIL=1 ; \
+         echo '#define U_HIDE_OBSOLETE_API' > hob_$$incfile.cpp ; \
+         echo '#include "'unicode/$$incfile'.h"' >> hob_$$incfile.cpp ; \
+         echo 'void junk(void);' >> hob_$$incfile.cpp ; \
+         echo 'void junk(){}' >> hob_$$incfile.cpp ; \
+          $(COMPILE.cc) -c $(cppflags) hob_$$incfile.cpp || FAIL=1 ; \
        done ; \
        exit $$FAIL
 
index 2147ef6..ea6984e 100644 (file)
@@ -23,6 +23,8 @@ bytestrie.h
 bytestriebuilder.h
 calendar.h
 caniter.h
+casemap.h
+char16ptr.h
 chariter.h
 choicfmt.h
 coleitr.h
@@ -43,6 +45,7 @@ dtitvfmt.h
 dtfmtsym.h
 dtptngen.h
 dtrule.h
+edits.h
 enumset.h
 errorcode.h
 fieldpos.h
index 1410692..afff9a2 100755 (executable)
@@ -15,21 +15,21 @@ for file in `ls common/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -I common -O0 ht_temp.cpp ;
+    $CXX -c -std=c++11 -I common -O0 ht_temp.cpp ;
 done ;
 
 for file in `ls i18n/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -I common -I i18n -O0 ht_temp.cpp ;
+    $CXX -c -std=c++11 -I common -I i18n -O0 ht_temp.cpp ;
 done ;
 
 for file in `ls io/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -I common -I i18n -I io -O0 ht_temp.cpp ;
+    $CXX -c -std=c++11 -I common -I i18n -I io -O0 ht_temp.cpp ;
 done ;
 
 # layout is removed.
@@ -50,7 +50,7 @@ for file in `ls tools/toolutil/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -I common -I i18n -I io -I tools/toolutil -O0 ht_temp.cpp ;
+    $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -O0 ht_temp.cpp ;
 done ;
 
 # Exclude tzcode: tools/tzcode/private.h uses an argument "new" in a function declaration.
@@ -64,7 +64,7 @@ for tool in genccode gencmn gencolusb gennorm2 genren gentest icupkg icuswap pkg
         echo $file
         echo '#include "'$file'"' > ht_temp.cpp ;
         echo 'void noop() {}' >> ht_temp.cpp ;
-        $CXX -c -I common -I i18n -I io -I tools/toolutil -I tools/$tool -O0 ht_temp.cpp ;
+        $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/$tool -O0 ht_temp.cpp ;
     done ;
 done ;
 
@@ -74,15 +74,15 @@ for file in `ls tools/ctestfw/unicode/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -O0 ht_temp.cpp ;
+    $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -O0 ht_temp.cpp ;
 done ;
 
 # C not C++ for cintltst
 for file in `ls test/cintltst/*.h`; do
     echo $file
-    echo '#include "'$file'"' > ht_temp.cpp ;
-    echo 'void noop() {}' >> ht_temp.cpp ;
-    $CC -c -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/cintltst -O0 ht_temp.cpp ;
+    echo '#include "'$file'"' > ht_temp.c ;
+    echo 'void noop() {}' >> ht_temp.c ;
+    $CC -c -std=c11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/cintltst -O0 ht_temp.c ;
 done ;
 
 for test in intltest iotest testmap thaitest; do
@@ -90,7 +90,7 @@ for test in intltest iotest testmap thaitest; do
         echo $file
         echo '#include "'$file'"' > ht_temp.cpp ;
         echo 'void noop() {}' >> ht_temp.cpp ;
-        $CXX -c -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/$test -O0 ht_temp.cpp ;
+        $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/$test -O0 ht_temp.cpp ;
     done ;
 done ;
 
index 073935f..c4ba088 100644 (file)
@@ -34,8 +34,8 @@ BUILDDIR := $(BUILDDIR:test\\intltest/../../=)
 # Simplify the path for Windows 98
 BUILDDIR := $(BUILDDIR:TEST\\INTLTEST/../../=)
 
-CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
-CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT=
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT= -DUCHAR_TYPE=char16_t
 DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
 LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M) $(LIB_THREAD)
 
index cb23c2a..0652169 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9c54252..c747efe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e9676e6..4720d63 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b420e01..3383d36 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 763889c..a3ebd11 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d288276..6bbe153 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d64d349..f18496c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -41,6 +41,7 @@
 #include "apicoll.h"
 #include "unicode/chariter.h"
 #include "unicode/schriter.h"
+#include "unicode/strenum.h"
 #include "unicode/ustring.h"
 #include "unicode/ucol.h"
 
@@ -81,17 +82,10 @@ CollationAPITest::TestProperty(/* char* par */)
     logln("Test ctors : ");
     col = Collator::createInstance(Locale::getEnglish(), success);
     if (U_FAILURE(success)){
-        errcheckln(success, "Default Collator creation failed. - %s", u_errorName(success));
+        errcheckln(success, "English Collator creation failed. - %s", u_errorName(success));
         return;
     }
 
-    StringEnumeration* kwEnum = col->getKeywordValuesForLocale("", Locale::getEnglish(),true,success);
-    if (U_FAILURE(success)){
-        errcheckln(success, "Get Keyword Values for Locale failed. - %s", u_errorName(success));
-        return;
-    }
-    delete kwEnum;
-
     col->getVersion(versionArray);
     // Check for a version greater than some value rather than equality
     // so that we need not update the expected version each time.
@@ -231,6 +225,29 @@ CollationAPITest::TestProperty(/* char* par */)
     delete junk;
 }
 
+void CollationAPITest::TestKeywordValues() {
+    IcuTestErrorCode errorCode(*this, "TestKeywordValues");
+    LocalPointer<Collator> col(Collator::createInstance(Locale::getEnglish(), errorCode));
+    if (errorCode.logIfFailureAndReset("English Collator creation failed")) {
+        return;
+    }
+
+    LocalPointer<StringEnumeration> kwEnum(
+        col->getKeywordValuesForLocale("collation", Locale::getEnglish(), TRUE, errorCode));
+    if (errorCode.logIfFailureAndReset("Get Keyword Values for English Collator failed")) {
+        return;
+    }
+    assertTrue("expect at least one collation tailoring for English", kwEnum->count(errorCode) > 0);
+    const char *kw;
+    UBool hasStandard = FALSE;
+    while ((kw = kwEnum->next(NULL, errorCode)) != NULL) {
+        if (strcmp(kw, "standard") == 0) {
+            hasStandard = TRUE;
+        }
+    }
+    assertTrue("expect at least the 'standard' collation tailoring for English", hasStandard);
+}
+
 void 
 CollationAPITest::TestRuleBasedColl()
 {
@@ -2466,6 +2483,7 @@ void CollationAPITest::runIndexedTest( int32_t index, UBool exec, const char* &n
     if (exec) logln("TestSuite CollationAPITest: ");
     TESTCASE_AUTO_BEGIN;
     TESTCASE_AUTO(TestProperty);
+    TESTCASE_AUTO(TestKeywordValues);
     TESTCASE_AUTO(TestOperators);
     TESTCASE_AUTO(TestDuplicate);
     TESTCASE_AUTO(TestCompare);
index b31f967..4196b2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
@@ -35,6 +35,7 @@ public:
      * - displayable name in the desired locale
      */
     void TestProperty(/* char* par */);
+    void TestKeywordValues();
 
     /**
     * This tests the RuleBasedCollator
index 67c43c7..87ae7d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 4efb04c..b956363 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 783a92f..529d7bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  bidiconf.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 735f330..375acdc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytetrietest.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 53d3d52..bd46157 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4e58c53..5b1cbc2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b64f13e..12a481a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 9eb5a31..0aedfad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4e7cd7d..a3c4afa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 16dcac2..e4c89dc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e4ef1db..e1c9fda 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT:
index c47d67c..f85abf9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 1997-2016, International Business Machines Corporation
index 2569923..d6e5705 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 2016, International Business Machines Corporation
index 4887a45..2c952bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index edc995a..da7cb41 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 26b2b04..0a6baeb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 81339e6..dae3389 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4b9589d..233f82b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /****************************************************************************************
  * COPYRIGHT: 
index 191534b..b4d8458 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e628c82..94d5055 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -481,7 +481,6 @@ void CollationTest::TestFCD() {
     CodePointIterator cpi(cp, UPRV_LENGTHOF(cp));
     checkFCD("FCDUTF16CollationIterator", u16ci, cpi);
 
-#if U_HAVE_STD_STRING
     cpi.resetToStart();
     std::string utf8;
     UnicodeString(s).toUTF8String(utf8);
@@ -491,7 +490,6 @@ void CollationTest::TestFCD() {
         return;
     }
     checkFCD("FCDUTF8CollationIterator", u8ci, cpi);
-#endif
 
     cpi.resetToStart();
     UCharIterator iter;
@@ -1607,7 +1605,6 @@ UBool CollationTest::checkCompareTwo(const char *norm, const UnicodeString &prev
         }
     }
 
-#if U_HAVE_STD_STRING
     // compare(UTF-16) treats unpaired surrogates like unassigned code points.
     // Unpaired surrogates cannot be converted to UTF-8.
     // Create valid UTF-16 strings if necessary, and use those for
@@ -1672,7 +1669,6 @@ UBool CollationTest::checkCompareTwo(const char *norm, const UnicodeString &prev
             return FALSE;
         }
     }
-#endif
 
     UCharIterator leftIter;
     UCharIterator rightIter;
index 89e7a65..1e37c47 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index b77dfbf..7400d2b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index c7a475d..5ced151 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index dadbef3..203a438 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  convtest.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -1023,6 +1023,7 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
     // open the converter
     IcuTestErrorCode errorCode(*this, "ToUnicodeCase");
     LocalUConverterPointer cnv(cnv_open(cc.charset, errorCode));
+    // with no data, the above crashes with "pointer being freed was not allocated" for charset "x11-compound-text", see #13078
     if(errorCode.isFailure()) {
         errcheckln(errorCode, "toUnicode[%d](%s cb=\"%s\" fb=%d flush=%d) ucnv_open() failed - %s",
                 cc.caseNr, cc.charset, cc.cbopt, cc.fallbacks, cc.finalFlush, errorCode.errorName());
index bfb771c..c2d37e4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  convtest.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index d3cbd58..b569194 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index 0d3b6c8..e723619 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index f3424af..4edacad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -818,7 +818,7 @@ void CharsetDetectionTest::Ticket6394Test() {
 //               similar Windows and non-Windows SBCS encodings. State was kept in the shared
 //               Charset Recognizer objects, and could be overwritten.
 void CharsetDetectionTest::Ticket6954Test() {
-#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_FORMATTING
+#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_NO_FORMATTING
     UErrorCode status = U_ZERO_ERROR;
     UnicodeString sISO = "This is a small sample of some English text. Just enough to be sure that it detects correctly.";
     UnicodeString ssWindows("This is another small sample of some English text. Just enough to be sure that it detects correctly."
index 374bd9d..2e0fb3a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 181a0f1..d82ec91 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index f7bf406..9ee3763 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 1805e89..658d652 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 98811cb..fee2d8a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4ff6917..a382bd5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a85509f..ab94793 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 254404e..0b986ea 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d11ad19..1f70284 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT:
index 7101c66..03c1ca8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 555c2f4..1af3814 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 6e2279b..63fff81 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -31,7 +31,7 @@
 #include <string.h>
 #include <stdio.h>
 
-#if !defined(_MSC_VER)
+#if defined(__GLIBCXX__)
 namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
 #endif
 
index 91512df..e7c43c1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index b43824d..b76eb77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 7012962..10d1eda 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 896d5dd..928a722 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 31052d4..390b4e2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3014597..2d5b465 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index af04854..3879459 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c2119b9..5bac60e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index c5928c7..5780666 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index bf060d0..ba0929f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -25,7 +25,7 @@
 #include "caltest.h"  // for fieldName
 #include <stdio.h> // for sprintf
 
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
 #include "windttst.h"
 #endif
 
@@ -2374,7 +2374,7 @@ void DateFormatTest::TestZTimeZoneParsing(void) {
 
 void DateFormatTest::TestHost(void)
 {
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
     Win32DateTimeTest::testLocales(this);
 #endif
 }
@@ -2604,6 +2604,10 @@ void DateFormatTest::TestDateFormatSymbolsClone(void)
     Locale loc("de_CH_LUCERNE");
     LocalPointer<DateFormat> fmt(
             DateFormat::createDateInstance(DateFormat::kDefault, loc));
+    if (fmt.isNull()) {
+        dataerrln("FAIL: DateFormat::createDateInstance failed for %s", loc.getName());
+        return;
+    }
     Locale valid1;
     Locale actual1;
     if (!getActualAndValidLocales(*fmt, valid1, actual1)) {
index 63cd1f9..711c6ac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 095eb3f..f840b7d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -1597,6 +1597,10 @@ void DateIntervalFormatTest::testTicket11669() {
 void DateIntervalFormatTest::testTicket12065() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<DateIntervalFormat> formatter(DateIntervalFormat::createInstance(UDAT_YEAR_MONTH_DAY, Locale::getEnglish(), status), status);
+    if (formatter.isNull()) {
+        dataerrln("FAIL: DateIntervalFormat::createInstance failed for Locale::getEnglish()");
+        return;
+    }
     LocalPointer<DateIntervalFormat> clone(dynamic_cast<DateIntervalFormat *>(formatter->clone()));
     if (*formatter != *clone) {
         errln("%s:%d DateIntervalFormat and clone are not equal.", __FILE__, __LINE__);
index 8eea56b..b6cc097 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 29fe564..e9cc4de 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -1098,6 +1098,10 @@ void IntlTestDateTimePatternGeneratorAPI::testC() {
 
     for (int32_t i = 0; i < numLocales; ++i) {
         DateTimePatternGenerator *gen = DateTimePatternGenerator::createInstance(Locale(tests[i][0]), status);
+        if (gen == NULL) {
+            dataerrln("FAIL: DateTimePatternGenerator::createInstance failed for %s", tests[i][0]);
+            return;
+        }
         UnicodeString pattern = gen->getBestPattern(tests[i][1], status);
         UnicodeString expectedPattern = tests[i][2];
 
index ec1b7ce..701eddf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 35f2cc2..fd913bf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 449e591..cc794fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a627229..cea658a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index a212a9d..88a8307 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 38fdcde..bdea267 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2009,2014, International Business Machines
index 7248caf..1034413 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c53c533..b288b4f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
index d976276..e6e6ee0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
index cb644a4..d427d19 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0668c90..4cf19f1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b37ae10..93af4af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6bf5ca3..9337aeb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 287a9d1..a4b9b7b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index e363504..fb6fef1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 7010c5d..67d6dd0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 02422cc..3b423b4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index cf56411..956cea6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 454102c..66608c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  idnaref.cpp
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 60fde9f..5b74ff2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  idnaref.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 8a41848..665460c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 0292366..628b6e4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 7096700..ab5ce8c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index ff36c55..1a477b9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 9571c13..315adfd 100644 (file)
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="windttst.cpp">
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="winnmtst.cpp">
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="idnaconf.cpp" />
     <ClCompile Include="idnaref.cpp" />
     <ClCompile Include="nptrans.cpp" />
-    <ClCompile Include="punyref.c" />
+    <ClCompile Include="punyref.cpp" />
     <ClCompile Include="testidn.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="sfwdchit.cpp" />
     <ClCompile Include="strcase.cpp" />
     <ClCompile Include="ustrtest.cpp">
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="utxttest.cpp" />
     <ClCompile Include="cpdtrtst.cpp" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 65ef6b9..39a3e4e 100644 (file)
     <ClCompile Include="simplethread.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="strtest.cpp">
-      <Filter>configuration</Filter>
-    </ClCompile>
     <ClCompile Include="tsmthred.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
     <ClCompile Include="nptrans.cpp">
       <Filter>idna</Filter>
     </ClCompile>
-    <ClCompile Include="punyref.c">
+    <ClCompile Include="punyref.cpp">
       <Filter>idna</Filter>
     </ClCompile>
     <ClCompile Include="testidn.cpp">
     <ClCompile Include="strcase.cpp">
       <Filter>strings</Filter>
     </ClCompile>
+    <ClCompile Include="strtest.cpp">
+      <Filter>strings</Filter>
+    </ClCompile>
     <ClCompile Include="ustrtest.cpp">
       <Filter>strings</Filter>
     </ClCompile>
     <ClInclude Include="simplethread.h">
       <Filter>configuration</Filter>
     </ClInclude>
-    <ClInclude Include="strtest.h">
-      <Filter>configuration</Filter>
-    </ClInclude>
     <ClInclude Include="tsmthred.h">
       <Filter>configuration</Filter>
     </ClInclude>
     <ClInclude Include="sfwdchit.h">
       <Filter>strings</Filter>
     </ClInclude>
+    <ClInclude Include="strtest.h">
+      <Filter>strings</Filter>
+    </ClInclude>
     <ClInclude Include="ustrtest.h">
       <Filter>strings</Filter>
     </ClInclude>
index c589541..e78a6c5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 6a0c52c..2aaaa1d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index ac9eb4a..ae5ae0c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 14910ab..5af7601 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 22412b6..84bee28 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 99994f5..263e555 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a6eb102..819f413 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a2102fe..67648f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d9d7489..9770025 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -73,6 +73,8 @@ void IntlTestRBNF::runIndexedTest(int32_t index, UBool exec, const char* &name,
         TESTCASE(21, TestMultiplePluralRules);
         TESTCASE(22, TestInfinityNaN);
         TESTCASE(23, TestVariableDecimalPoint);
+        TESTCASE(24, TestLargeNumbers);
+        TESTCASE(25, TestCompactDecimalFormatStyle);
 #else
         TESTCASE(0, TestRBNFDisabled);
 #endif
@@ -2218,6 +2220,69 @@ void IntlTestRBNF::TestVariableDecimalPoint() {
     doTest(&enFormatter, enTestCommaData, true);
 }
 
+void IntlTestRBNF::TestLargeNumbers() {
+    UErrorCode status = U_ZERO_ERROR;
+    RuleBasedNumberFormat rbnf(URBNF_SPELLOUT, Locale::getEnglish(), status);
+
+    const char * const enTestFullData[][2] = {
+            {"-9007199254740991", "minus nine quadrillion seven trillion one hundred ninety-nine billion two hundred fifty-four million seven hundred forty thousand nine hundred ninety-one"}, // Maximum precision in both a double and a long
+            {"9007199254740991", "nine quadrillion seven trillion one hundred ninety-nine billion two hundred fifty-four million seven hundred forty thousand nine hundred ninety-one"}, // Maximum precision in both a double and a long
+            {"-9007199254740992", "minus nine quadrillion seven trillion one hundred ninety-nine billion two hundred fifty-four million seven hundred forty thousand nine hundred ninety-two"}, // Only precisely contained in a long
+            {"9007199254740992", "nine quadrillion seven trillion one hundred ninety-nine billion two hundred fifty-four million seven hundred forty thousand nine hundred ninety-two"}, // Only precisely contained in a long
+            {"9999999999999998", "nine quadrillion nine hundred ninety-nine trillion nine hundred ninety-nine billion nine hundred ninety-nine million nine hundred ninety-nine thousand nine hundred ninety-eight"},
+            {"9999999999999999", "nine quadrillion nine hundred ninety-nine trillion nine hundred ninety-nine billion nine hundred ninety-nine million nine hundred ninety-nine thousand nine hundred ninety-nine"},
+            {"999999999999999999", "nine hundred ninety-nine quadrillion nine hundred ninety-nine trillion nine hundred ninety-nine billion nine hundred ninety-nine million nine hundred ninety-nine thousand nine hundred ninety-nine"},
+            {"1000000000000000000", "1,000,000,000,000,000,000"}, // The rules don't go to 1 quintillion yet
+            {"-9223372036854775809", "-9,223,372,036,854,775,809"}, // We've gone beyond 64-bit precision
+            {"-9223372036854775808", "-9,223,372,036,854,775,808"}, // We've gone beyond +64-bit precision
+            {"-9223372036854775807", "minus 9,223,372,036,854,775,807"}, // Minimum 64-bit precision
+            {"-9223372036854775806", "minus 9,223,372,036,854,775,806"}, // Minimum 64-bit precision + 1
+            {"9223372036854774111", "9,223,372,036,854,774,111"}, // Below 64-bit precision
+            {"9223372036854774999", "9,223,372,036,854,774,999"}, // Below 64-bit precision
+            {"9223372036854775000", "9,223,372,036,854,775,000"}, // Below 64-bit precision
+            {"9223372036854775806", "9,223,372,036,854,775,806"}, // Maximum 64-bit precision - 1
+            {"9223372036854775807", "9,223,372,036,854,775,807"}, // Maximum 64-bit precision
+            {"9223372036854775808", "9,223,372,036,854,775,808"}, // We've gone beyond 64-bit precision. This can only be represented with BigDecimal.
+            { NULL, NULL }
+    };
+    doTest(&rbnf, enTestFullData, false);
+}
+
+void IntlTestRBNF::TestCompactDecimalFormatStyle() {
+    UErrorCode status = U_ZERO_ERROR;
+    UParseError parseError;
+    // This is not a common use case, but we're testing it anyway.
+    UnicodeString numberPattern("=###0.#####=;"
+            "1000: <###0.00< K;"
+            "1000000: <###0.00< M;"
+            "1000000000: <###0.00< B;"
+            "1000000000000: <###0.00< T;"
+            "1000000000000000: <###0.00< Q;");
+    RuleBasedNumberFormat rbnf(numberPattern, UnicodeString(), Locale::getEnglish(), parseError, status);
+
+    const char * const enTestFullData[][2] = {
+            {"1000", "1.00 K"},
+            {"1234", "1.23 K"},
+            {"999994", "999.99 K"},
+            {"999995", "1000.00 K"},
+            {"1000000", "1.00 M"},
+            {"1200000", "1.20 M"},
+            {"1200000000", "1.20 B"},
+            {"1200000000000", "1.20 T"},
+            {"1200000000000000", "1.20 Q"},
+            {"4503599627370495", "4.50 Q"},
+            {"4503599627370496", "4.50 Q"},
+            {"8990000000000000", "8.99 Q"},
+            {"9008000000000000", "9.00 Q"}, // Number doesn't precisely fit into a double
+            {"9456000000000000", "9.00 Q"},  // Number doesn't precisely fit into a double
+            {"10000000000000000", "10.00 Q"},  // Number doesn't precisely fit into a double
+            {"9223372036854775807", "9223.00 Q"}, // Maximum 64-bit precision
+            {"9223372036854775808", "9,223,372,036,854,775,808"}, // We've gone beyond 64-bit precision. This can only be represented with BigDecimal.
+            { NULL, NULL }
+    };
+    doTest(&rbnf, enTestFullData, false);
+}
+
 void 
 IntlTestRBNF::doTest(RuleBasedNumberFormat* formatter, const char* const testData[][2], UBool testParsing) 
 {
index 8c23a7d..540b803 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -145,6 +145,8 @@ class IntlTestRBNF : public IntlTest {
     void TestInfinityNaN();
     void TestVariableDecimalPoint();
     void TestRounding();
+    void TestLargeNumbers();
+    void TestCompactDecimalFormatStyle();
 
 protected:
   virtual void doTest(RuleBasedNumberFormat* formatter, const char* const testData[][2], UBool testParsing);
index 80f71f3..ba1fba7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 5c2f96a..3b49aa6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index afb03f8..d038f4f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index f8efab7..e06d593 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 06b68db..ac7a14c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 354003f..614e473 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 53f4220..239bce7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index 4e93dd8..4418941 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 7ae6edb..d8e7b06 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2c7a9e4..bbda10d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 78d3422..a701aed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c4c1587..3e274ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 93bca12..63925ab 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index bd2a77c..a518b88 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 82773f9..8cbf299 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8d9f973..6219e46 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b7aaea2..af49baa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  listformattertest.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -147,6 +147,50 @@ void ListFormatterTest::TestEnglishUS() {
     CheckFourCases("en_US", one, two, three, four, results);
 }
 
+// Tests resource loading and inheritance when region sublocale
+// has only partial data for the listPattern element (overriding
+// some of the parent data). #12994
+void ListFormatterTest::TestEnglishGB() {
+    UnicodeString results[4] = {
+        one,
+        one + " and " + two,
+        one + ", " + two + " and " + three,
+        one + ", " + two + ", " + three + " and " + four
+    };
+
+    CheckFourCases("en_GB", one, two, three, four, results);
+}
+
+// Tests resource loading and inheritance when region sublocale
+// has only partial data for the listPattern element (overriding
+// some of the parent data). #12994
+void ListFormatterTest::TestNynorsk() {
+    UnicodeString results[4] = {
+        one,
+        one + " og " + two,
+        one + ", " + two + " og " + three,
+        one + ", " + two + ", " + three + " og " + four
+    };
+
+    CheckFourCases("nn", one, two, three, four, results);
+}
+
+// Tests resource loading and inheritance when region sublocale
+// has only partial data for the listPattern element (overriding
+// some of the parent data). #12994
+void ListFormatterTest::TestChineseTradHK() {
+    UnicodeString and_string = UnicodeString("\\u53CA", -1, US_INV).unescape();
+    UnicodeString comma_string = UnicodeString("\\u3001", -1, US_INV).unescape();
+    UnicodeString results[4] = {
+        one,
+        one + and_string + two,
+        one + comma_string + two + and_string + three,
+        one + comma_string + two + comma_string + three + and_string + four
+    };
+
+    CheckFourCases("zh_Hant_HK", one, two, three, four, results);
+}
+
 // Formatting in Russian.
 // "\\u0438" is used before the last element, and all elements up to (but not including) the penultimate are followed by a comma.
 void ListFormatterTest::TestRussian() {
@@ -229,6 +273,9 @@ void ListFormatterTest::runIndexedTest(int32_t index, UBool exec,
         case 6: name = "TestZulu"; if (exec) TestZulu(); break;
         case 7: name = "TestOutOfOrderPatterns"; if (exec) TestOutOfOrderPatterns(); break;
         case 8: name = "Test9946"; if (exec) Test9946(); break;
+        case 9: name = "TestEnglishGB"; if (exec) TestEnglishGB(); break;
+        case 10: name = "TestNynorsk"; if (exec) TestNynorsk(); break;
+        case 11: name = "TestChineseTradHK"; if (exec) TestChineseTradHK(); break;
 
         default: name = ""; break;
     }
index 1281306..a59a7e0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  listformattertest.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -33,6 +33,9 @@ class ListFormatterTest : public IntlTest {
     void TestBogus();
     void TestEnglish();
     void TestEnglishUS();
+    void TestEnglishGB();
+    void TestNynorsk();
+    void TestChineseTradHK();
     void TestRussian();
     void TestMalayalam();
     void TestZulu();
index ab62c1f..a9ed5e6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*********************************************************************
  * COPYRIGHT:
@@ -7,6 +7,7 @@
  *********************************************************************/
 
 #include "locnmtst.h"
+#include "unicode/ustring.h"
 #include "cstring.h"
 
 /*
index ea2f3b9..0f84f98 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 5cff15d..e849b26 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -864,8 +864,8 @@ LocaleTest::TestGetLangsAndCountries()
       ;
 
     /* TODO: Change this test to be more like the cloctst version? */
-    if (testCount != 593)
-        errln("Expected getISOLanguages() to return 593 languages; it returned %d", testCount);
+    if (testCount != 594)
+        errln("Expected getISOLanguages() to return 594 languages; it returned %d", testCount);
     else {
         for (i = 0; i < 15; i++) {
             int32_t j;
index a5a8d28..ad48217 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 510146b..0bd9fee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 #include "unicode/measfmt.h"
 #include "unicode/measure.h"
 #include "unicode/measunit.h"
+#include "unicode/strenum.h"
 #include "unicode/tmunit.h"
 #include "unicode/plurrule.h"
+#include "unicode/ustring.h"
 #include "charstr.h"
 #include "cstr.h"
 #include "unicode/reldatefmt.h"
@@ -41,12 +43,13 @@ public:
     void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
 private:
     void TestBasic();
-    void TestCompatible53_1();
-    void TestCompatible54_1();
-    void TestCompatible55_1();
-    void TestCompatible56_1();
-    void TestCompatible57_1();
-    void TestCompatible58_1();
+    void TestCompatible53();
+    void TestCompatible54();
+    void TestCompatible55();
+    void TestCompatible56();
+    void TestCompatible57();
+    void TestCompatible58();
+    void TestCompatible59();
     void TestGetAvailable();
     void TestExamplesInDocs();
     void TestFormatPeriodEn();
@@ -137,12 +140,13 @@ void MeasureFormatTest::runIndexedTest(
     }
     TESTCASE_AUTO_BEGIN;
     TESTCASE_AUTO(TestBasic);
-    TESTCASE_AUTO(TestCompatible53_1);
-    TESTCASE_AUTO(TestCompatible54_1);
-    TESTCASE_AUTO(TestCompatible55_1);
-    TESTCASE_AUTO(TestCompatible56_1);
-    TESTCASE_AUTO(TestCompatible57_1);
-    TESTCASE_AUTO(TestCompatible58_1);
+    TESTCASE_AUTO(TestCompatible53);
+    TESTCASE_AUTO(TestCompatible54);
+    TESTCASE_AUTO(TestCompatible55);
+    TESTCASE_AUTO(TestCompatible56);
+    TESTCASE_AUTO(TestCompatible57);
+    TESTCASE_AUTO(TestCompatible58);
+    TESTCASE_AUTO(TestCompatible59);
     TESTCASE_AUTO(TestGetAvailable);
     TESTCASE_AUTO(TestExamplesInDocs);
     TESTCASE_AUTO(TestFormatPeriodEn);
@@ -168,7 +172,7 @@ void MeasureFormatTest::runIndexedTest(
     TESTCASE_AUTO_END;
 }
 
-void MeasureFormatTest::TestCompatible53_1() {
+void MeasureFormatTest::TestCompatible53() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -220,7 +224,7 @@ void MeasureFormatTest::TestCompatible53_1() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible54_1() {
+void MeasureFormatTest::TestCompatible54() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -347,7 +351,7 @@ void MeasureFormatTest::TestCompatible54_1() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible55_1() {
+void MeasureFormatTest::TestCompatible55() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -475,7 +479,7 @@ void MeasureFormatTest::TestCompatible55_1() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible56_1() {
+void MeasureFormatTest::TestCompatible56() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -610,7 +614,7 @@ void MeasureFormatTest::TestCompatible56_1() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible57_1() {
+void MeasureFormatTest::TestCompatible57() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -750,7 +754,7 @@ void MeasureFormatTest::TestCompatible57_1() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible58_1() {
+void MeasureFormatTest::TestCompatible58() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -777,10 +781,10 @@ void MeasureFormatTest::TestCompatible58_1() {
     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
-    measureUnit.adoptInstead(MeasureUnit::createEast(status));
-    measureUnit.adoptInstead(MeasureUnit::createNorth(status));
-    measureUnit.adoptInstead(MeasureUnit::createSouth(status));
-    measureUnit.adoptInstead(MeasureUnit::createWest(status));
+    // measureUnit.adoptInstead(MeasureUnit::createEast(status));
+    // measureUnit.adoptInstead(MeasureUnit::createNorth(status));
+    // measureUnit.adoptInstead(MeasureUnit::createSouth(status));
+    // measureUnit.adoptInstead(MeasureUnit::createWest(status));
     measureUnit.adoptInstead(MeasureUnit::createBit(status));
     measureUnit.adoptInstead(MeasureUnit::createByte(status));
     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
@@ -894,6 +898,147 @@ void MeasureFormatTest::TestCompatible58_1() {
     assertSuccess("", status);
 }
 
+void MeasureFormatTest::TestCompatible59() {
+    UErrorCode status = U_ZERO_ERROR;
+    LocalPointer<MeasureUnit> measureUnit;
+    measureUnit.adoptInstead(MeasureUnit::createGForce(status));
+    measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
+    measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
+    measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
+    measureUnit.adoptInstead(MeasureUnit::createDegree(status));
+    measureUnit.adoptInstead(MeasureUnit::createRadian(status));
+    measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
+    measureUnit.adoptInstead(MeasureUnit::createAcre(status));
+    measureUnit.adoptInstead(MeasureUnit::createHectare(status));
+    measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
+    measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
+    measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
+    measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
+    measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
+    measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
+    measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
+    measureUnit.adoptInstead(MeasureUnit::createKarat(status));
+    measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
+    measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
+    measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
+    measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
+    measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
+    measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
+    measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
+    measureUnit.adoptInstead(MeasureUnit::createBit(status));
+    measureUnit.adoptInstead(MeasureUnit::createByte(status));
+    measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
+    measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
+    measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
+    measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
+    measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
+    measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
+    measureUnit.adoptInstead(MeasureUnit::createCentury(status));
+    measureUnit.adoptInstead(MeasureUnit::createDay(status));
+    measureUnit.adoptInstead(MeasureUnit::createHour(status));
+    measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
+    measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
+    measureUnit.adoptInstead(MeasureUnit::createMinute(status));
+    measureUnit.adoptInstead(MeasureUnit::createMonth(status));
+    measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
+    measureUnit.adoptInstead(MeasureUnit::createSecond(status));
+    measureUnit.adoptInstead(MeasureUnit::createWeek(status));
+    measureUnit.adoptInstead(MeasureUnit::createYear(status));
+    measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
+    measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
+    measureUnit.adoptInstead(MeasureUnit::createOhm(status));
+    measureUnit.adoptInstead(MeasureUnit::createVolt(status));
+    measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
+    measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
+    measureUnit.adoptInstead(MeasureUnit::createJoule(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
+    measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
+    measureUnit.adoptInstead(MeasureUnit::createHertz(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
+    measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
+    measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
+    measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
+    measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
+    measureUnit.adoptInstead(MeasureUnit::createFathom(status));
+    measureUnit.adoptInstead(MeasureUnit::createFoot(status));
+    measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
+    measureUnit.adoptInstead(MeasureUnit::createInch(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
+    measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
+    measureUnit.adoptInstead(MeasureUnit::createMeter(status));
+    measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
+    measureUnit.adoptInstead(MeasureUnit::createMile(status));
+    measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
+    measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
+    measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
+    measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
+    measureUnit.adoptInstead(MeasureUnit::createParsec(status));
+    measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
+    measureUnit.adoptInstead(MeasureUnit::createPoint(status));
+    measureUnit.adoptInstead(MeasureUnit::createYard(status));
+    measureUnit.adoptInstead(MeasureUnit::createLux(status));
+    measureUnit.adoptInstead(MeasureUnit::createCarat(status));
+    measureUnit.adoptInstead(MeasureUnit::createGram(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
+    measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
+    measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
+    measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
+    measureUnit.adoptInstead(MeasureUnit::createOunce(status));
+    measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
+    measureUnit.adoptInstead(MeasureUnit::createPound(status));
+    measureUnit.adoptInstead(MeasureUnit::createStone(status));
+    measureUnit.adoptInstead(MeasureUnit::createTon(status));
+    measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
+    measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
+    measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
+    measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
+    measureUnit.adoptInstead(MeasureUnit::createWatt(status));
+    measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
+    measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
+    measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
+    measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
+    measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
+    measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
+    measureUnit.adoptInstead(MeasureUnit::createKnot(status));
+    measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
+    measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
+    measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
+    measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
+    measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
+    measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
+    measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
+    measureUnit.adoptInstead(MeasureUnit::createBushel(status));
+    measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
+    measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
+    measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
+    measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
+    measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
+    measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
+    measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
+    measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
+    measureUnit.adoptInstead(MeasureUnit::createCup(status));
+    measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
+    measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
+    measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
+    measureUnit.adoptInstead(MeasureUnit::createGallon(status));
+    measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
+    measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
+    measureUnit.adoptInstead(MeasureUnit::createLiter(status));
+    measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
+    measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
+    measureUnit.adoptInstead(MeasureUnit::createPint(status));
+    measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
+    measureUnit.adoptInstead(MeasureUnit::createQuart(status));
+    measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
+    measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
+    assertSuccess("", status);
+}
+
 void MeasureFormatTest::TestBasic() {
     UErrorCode status = U_ZERO_ERROR;
     MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status);
@@ -1645,6 +1790,8 @@ void MeasureFormatTest::TestManyLocaleDurations() {
     helperTestManyLocaleDurations("de", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37m");
     helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
+    helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37m");
+    helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37min");
     helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5t 37min");
index 9df4817..a623326 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 1997-2011, International Business Machines Corporation
index e44e6da..dbe7e0f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 90c4def..9c47aa3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9e8fd8e..4f02e0c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 57979e6..78ec942 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 48aa29e..b346c87 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 07cc142..07b2044 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index a000e08..7974545 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 042f2e6..33b4c09 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index e912ed2..ecb228c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index bfa3f39..e8b4ea2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
index 926a90d..aa37711 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
index db530f2..6c1c7be 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  nptrans.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 385faa6..8cbc806 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  nptrans.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 2037cf9..ce28c3f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -1681,8 +1681,8 @@ void NumberFormat2Test::TestLargeIntValue() {
         // Last 18 digits for int values.
         verifyIntValue(
                 223372036854775807LL, 
-                precision.initVisibleDigits(INT64_MAX, digits, status));
-        assertSuccess("INT64_MAX", status);
+                precision.initVisibleDigits(U_INT64_MAX, digits, status));
+        assertSuccess("U_INT64_MAX", status);
     }
     {
         UErrorCode status = U_ZERO_ERROR;
@@ -1692,7 +1692,7 @@ void NumberFormat2Test::TestLargeIntValue() {
         // Last 18 digits for int values.
         verifyIntValue(
                 75807LL, 
-                precision.initVisibleDigits(INT64_MAX, digits, status));
+                precision.initVisibleDigits(U_INT64_MAX, digits, status));
         verifySource(75807.0, digits);
         assertSuccess("75807", status);
     }
@@ -1703,8 +1703,8 @@ void NumberFormat2Test::TestLargeIntValue() {
         // Last 18 digits for int values.
         verifyIntValue(
                 223372036854775808LL, 
-                precision.initVisibleDigits(INT64_MIN, digits, status));
-        assertSuccess("INT64_MIN", status);
+                precision.initVisibleDigits(U_INT64_MIN, digits, status));
+        assertSuccess("U_INT64_MIN", status);
     }
     {
         UErrorCode status = U_ZERO_ERROR;
@@ -1714,7 +1714,7 @@ void NumberFormat2Test::TestLargeIntValue() {
         // Last 18 digits for int values.
         verifyIntValue(
                 75808LL, 
-                precision.initVisibleDigits(INT64_MIN, digits, status));
+                precision.initVisibleDigits(U_INT64_MIN, digits, status));
         verifySource(75808.0, digits);
         assertSuccess("75808", status);
     }
@@ -1747,7 +1747,7 @@ void NumberFormat2Test::TestIntInitVisibleDigits() {
         verifyVisibleDigits(
                 "9223372036854775808",
                 TRUE,
-                precision.initVisibleDigits(INT64_MIN, digits, status));
+                precision.initVisibleDigits(U_INT64_MIN, digits, status));
         assertSuccess("-9223372036854775808", status);
     }
     {
@@ -1756,7 +1756,7 @@ void NumberFormat2Test::TestIntInitVisibleDigits() {
         verifyVisibleDigits(
                 "9223372036854775807",
                 FALSE,
-                precision.initVisibleDigits(INT64_MAX, digits, status));
+                precision.initVisibleDigits(U_INT64_MAX, digits, status));
         assertSuccess("9223372036854775807", status);
     }
     {
index 46cfd0d..a79816e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0a3143b..ecfc1a8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b10014e..82ee94e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 015836b..95dd69d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -22,6 +22,7 @@
 #include "unicode/ustring.h"
 #include "unicode/measfmt.h"
 #include "unicode/curramt.h"
+#include "unicode/strenum.h"
 #include "digitlst.h"
 #include "textfile.h"
 #include "tokiter.h"
@@ -3244,7 +3245,7 @@ void NumberFormatTest::TestHostClone()
     UDate now = Calendar::getNow();
     NumberFormat *full = NumberFormat::createInstance(loc, status);
     if (full == NULL || U_FAILURE(status)) {
-        dataerrln("FAIL: Can't create Relative date instance - %s", u_errorName(status));
+        dataerrln("FAIL: Can't create NumberFormat date instance - %s", u_errorName(status));
         return;
     }
     UnicodeString result1;
@@ -4343,9 +4344,9 @@ NumberFormatTest::TestParseCurrencyInUCurr() {
         "Cypriot Pound1.00",
         "Cypriot pound1.00",
         "Cypriot pounds1.00",
-        "Czech Republic Koruna1.00",
-        "Czech Republic koruna1.00",
-        "Czech Republic korunas1.00",
+        "Czech Koruna1.00",
+        "Czech koruna1.00",
+        "Czech korunas1.00",
         "Czechoslovak Hard Koruna1.00",
         "Czechoslovak hard koruna1.00",
         "Czechoslovak hard korunas1.00",
@@ -5466,9 +5467,9 @@ NumberFormatTest::TestParseCurrencyInUCurr() {
         "1.00 Cypriot Pound random",
         "1.00 Cypriot pound random",
         "1.00 Cypriot pounds random",
-        "1.00 Czech Republic Koruna random",
-        "1.00 Czech Republic koruna random",
-        "1.00 Czech Republic korunas random",
+        "1.00 Czech Koruna random",
+        "1.00 Czech koruna random",
+        "1.00 Czech korunas random",
         "1.00 Czechoslovak Hard Koruna random",
         "1.00 Czechoslovak hard koruna random",
         "1.00 Czechoslovak hard korunas random",
index e2eb4df..17a411a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT:
index e5b87be..5e44927 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 1997-2016, International Business Machines Corporation
index d4ab58e..1d14c73 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index f89c568..244f817 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d100ef6..db2485d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0583391..038b11b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4d937d9..7d34228 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b1f9363..2189593 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d8d6377..75bc094 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 80f6bb7..a50aab2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
diff --git a/source/test/intltest/punyref.c b/source/test/intltest/punyref.c
deleted file mode 100644 (file)
index 6295f1f..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
- *******************************************************************************
- *
- *   Copyright (C) 2003-2005, International Business Machines
- *   Corporation and others.  All Rights Reserved.
- *
- *******************************************************************************
- *   file name:  punyref.h
- *   encoding:   US-ASCII
- *   tab size:   8 (not used)
- *   indentation:4
- *
- *   created on: 2003feb1
- *   created by: Ram Viswanadha
- */
-
-/*
-Disclaimer and license
-
-    Regarding this entire document or any portion of it (including
-    the pseudocode and C code), the author makes no guarantees and
-    is not responsible for any damage resulting from its use.  The
-    author grants irrevocable permission to anyone to use, modify,
-    and distribute it in any way that does not diminish the rights
-    of anyone else to use, modify, and distribute it, provided that
-    redistributed derivative works do not contain misleading author or
-    version information.  Derivative works need not be licensed under
-    similar terms.
-
-punycode.c 0.4.0 (2001-Nov-17-Sat)
-http://www.cs.berkeley.edu/~amc/idn/
-Adam M. Costello
-http://www.nicemice.net/amc/
-*/
-
-/**********************************************************/
-/* Implementation (would normally go in its own .c file): */
-
-#include <string.h>
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_IDNA
-
-#include "punyref.h"
-
-/*** Bootstring parameters for Punycode ***/
-
-enum { base = 36, tmin = 1, tmax = 26, skew = 38, damp = 700,
-       initial_bias = 72, initial_n = 0x80, delimiter = 0x2D };
-
-/* basic(cp) tests whether cp is a basic code point: */
-#define basic(cp) ((punycode_uint)(cp) < 0x80)
-
-/* delim(cp) tests whether cp is a delimiter: */
-#define delim(cp) ((cp) == delimiter)
-
-U_CDECL_BEGIN
-/* decode_digit(cp) returns the numeric value of a basic code */
-/* point (for use in representing integers) in the range 0 to */
-/* base-1, or base if cp is does not represent a value.       */
-
-static punycode_uint decode_digit(punycode_uint cp)
-{
-  return  cp - 48 < 10 ? cp - 22 :  cp - 65 < 26 ? cp - 65 :
-          cp - 97 < 26 ? cp - 97 :  base;
-}
-
-/* encode_digit(d,flag) returns the basic code point whose value      */
-/* (when used for representing integers) is d, which needs to be in   */
-/* the range 0 to base-1.  The lowercase form is used unless flag is  */
-/* nonzero, in which case the uppercase form is used.  The behavior   */
-/* is undefined if flag is nonzero and digit d has no uppercase form. */
-
-static char encode_digit(punycode_uint d, int flag)
-{
-  return (char) d + 22 + 75 * (d < 26) - ((flag != 0) << 5);
-  /*  0..25 map to ASCII a..z or A..Z */
-  /* 26..35 map to ASCII 0..9         */
-}
-
-/* flagged(bcp) tests whether a basic code point is flagged */
-/* (uppercase).  The behavior is undefined if bcp is not a  */
-/* basic code point.                                        */
-
-#define flagged(bcp) ((punycode_uint)(bcp) - 65 < 26)
-
-/* encode_basic(bcp,flag) forces a basic code point to lowercase */
-/* if flag is zero, uppercase if flag is nonzero, and returns    */
-/* the resulting code point.  The code point is unchanged if it  */
-/* is caseless.  The behavior is undefined if bcp is not a basic */
-/* code point.                                                   */
-
-static char encode_basic(punycode_uint bcp, int flag)
-{
-  bcp -= (bcp - 97 < 26) << 5;
-  return (char) bcp + ((!flag && (bcp - 65 < 26)) << 5);
-}
-
-/*** Platform-specific constants ***/
-
-/* maxint is the maximum value of a punycode_uint variable: */
-static const punycode_uint maxint = (punycode_uint) (-1);
-/* Because maxint is unsigned, -1 becomes the maximum value. */
-
-/*** Bias adaptation function ***/
-
-static punycode_uint adapt(
-  punycode_uint delta, punycode_uint numpoints, int firsttime )
-{
-  punycode_uint k;
-
-  delta = firsttime ? delta / damp : delta >> 1;
-  /* delta >> 1 is a faster way of doing delta / 2 */
-  delta += delta / numpoints;
-
-  for (k = 0;  delta > ((base - tmin) * tmax) / 2;  k += base) {
-    delta /= base - tmin;
-  }
-
-  return k + (base - tmin + 1) * delta / (delta + skew);
-}
-
-/*** Main encode function ***/
-
-enum punycode_status punycode_encode(
-  punycode_uint input_length,
-  const punycode_uint input[],
-  const unsigned char case_flags[],
-  punycode_uint *output_length,
-  char output[] )
-{
-  punycode_uint n, delta, h, b, out, max_out, bias, j, m, q, k, t;
-
-  /* Initialize the state: */
-
-  n = initial_n;
-  delta = out = 0;
-  max_out = *output_length;
-  bias = initial_bias;
-
-  /* Handle the basic code points: */
-
-  for (j = 0;  j < input_length;  ++j) {
-    if (basic(input[j])) {
-      if (max_out - out < 2) return punycode_big_output;
-      output[out++] = (char)
-        (case_flags ?  encode_basic(input[j], case_flags[j]) : input[j]);
-    }
-    /* else if (input[j] < n) return punycode_bad_input; */
-    /* (not needed for Punycode with unsigned code points) */
-  }
-
-  h = b = out;
-
-  /* h is the number of code points that have been handled, b is the  */
-  /* number of basic code points, and out is the number of characters */
-  /* that have been output.                                           */
-
-  if (b > 0) output[out++] = delimiter;
-
-  /* Main encoding loop: */
-
-  while (h < input_length) {
-    /* All non-basic code points < n have been     */
-    /* handled already.  Find the next larger one: */
-
-    for (m = maxint, j = 0;  j < input_length;  ++j) {
-      /* if (basic(input[j])) continue; */
-      /* (not needed for Punycode) */
-      if (input[j] >= n && input[j] < m) m = input[j];
-    }
-
-    /* Increase delta enough to advance the decoder's    */
-    /* <n,i> state to <m,0>, but guard against overflow: */
-
-    if (m - n > (maxint - delta) / (h + 1)) return punycode_overflow;
-    delta += (m - n) * (h + 1);
-    n = m;
-
-    for (j = 0;  j < input_length;  ++j) {
-      /* Punycode does not need to check whether input[j] is basic: */
-      if (input[j] < n /* || basic(input[j]) */ ) {
-        if (++delta == 0) return punycode_overflow;
-      }
-
-      if (input[j] == n) {
-        /* Represent delta as a generalized variable-length integer: */
-
-        for (q = delta, k = base;  ;  k += base) {
-          if (out >= max_out) return punycode_big_output;
-          t = k <= bias /* + tmin */ ? tmin :     /* +tmin not needed */
-              k >= bias + tmax ? tmax : k - bias;
-          if (q < t) break;
-          output[out++] = encode_digit(t + (q - t) % (base - t), 0);
-          q = (q - t) / (base - t);
-        }
-
-        output[out++] = encode_digit(q, case_flags && case_flags[j]);
-        bias = adapt(delta, h + 1, h == b);
-        delta = 0;
-        ++h;
-      }
-    }
-
-    ++delta, ++n;
-  }
-
-  *output_length = out;
-  return punycode_success;
-}
-
-/*** Main decode function ***/
-
-enum punycode_status punycode_decode(
-  punycode_uint input_length,
-  const char input[],
-  punycode_uint *output_length,
-  punycode_uint output[],
-  unsigned char case_flags[] )
-{
-  punycode_uint n, out, i, max_out, bias,
-                 b, j, in, oldi, w, k, digit, t;
-
-  /* Initialize the state: */
-
-  n = initial_n;
-  out = i = 0;
-  max_out = *output_length;
-  bias = initial_bias;
-
-  /* Handle the basic code points:  Let b be the number of input code */
-  /* points before the last delimiter, or 0 if there is none, then    */
-  /* copy the first b code points to the output.                      */
-
-  for (b = j = 0;  j < input_length;  ++j) if (delim(input[j])) b = j;
-  if (b > max_out) return punycode_big_output;
-
-  for (j = 0;  j < b;  ++j) {
-    if (case_flags) case_flags[out] = flagged(input[j]);
-    if (!basic(input[j])) return punycode_bad_input;
-    output[out++] = input[j];
-  }
-
-  /* Main decoding loop:  Start just after the last delimiter if any  */
-  /* basic code points were copied; start at the beginning otherwise. */
-
-  for (in = b > 0 ? b + 1 : 0;  in < input_length;  ++out) {
-
-    /* in is the index of the next character to be consumed, and */
-    /* out is the number of code points in the output array.     */
-
-    /* Decode a generalized variable-length integer into delta,  */
-    /* which gets added to i.  The overflow checking is easier   */
-    /* if we increase i as we go, then subtract off its starting */
-    /* value at the end to obtain delta.                         */
-
-    for (oldi = i, w = 1, k = base;  ;  k += base) {
-      if (in >= input_length) return punycode_bad_input;
-      digit = decode_digit(input[in++]);
-      if (digit >= base) return punycode_bad_input;
-      if (digit > (maxint - i) / w) return punycode_overflow;
-      i += digit * w;
-      t = k <= bias /* + tmin */ ? tmin :     /* +tmin not needed */
-          k >= bias + tmax ? tmax : k - bias;
-      if (digit < t) break;
-      if (w > maxint / (base - t)) return punycode_overflow;
-      w *= (base - t);
-    }
-
-    bias = adapt(i - oldi, out + 1, oldi == 0);
-
-    /* i was supposed to wrap around from out+1 to 0,   */
-    /* incrementing n each time, so we'll fix that now: */
-
-    if (i / (out + 1) > maxint - n) return punycode_overflow;
-    n += i / (out + 1);
-    i %= (out + 1);
-
-    /* Insert n at position i of the output: */
-
-    /* not needed for Punycode: */
-    /* if (decode_digit(n) <= base) return punycode_invalid_input; */
-    if (out >= max_out) return punycode_big_output;
-
-    if (case_flags) {
-      memmove(case_flags + i + 1, case_flags + i, out - i);
-      /* Case of last character determines uppercase flag: */
-      case_flags[i] = flagged(input[in - 1]);
-    }
-
-    memmove(output + i + 1, output + i, (out - i) * sizeof *output);
-    output[i++] = n;
-  }
-
-  *output_length = out;
-  return punycode_success;
-}
-
-U_CDECL_END
-
-#endif /* #if !UCONFIG_NO_IDNA */
index e1a77c0..0aa77b7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 3f2b543..2d4f0c0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6659b0b..6d2ff7d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1999-2016, International Business Machines
@@ -25,7 +25,7 @@
 #include "unicode/ustring.h"
 #include "unicode/utext.h"
 #include "cmemory.h"
-#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING
+#if !UCONFIG_NO_BREAK_ITERATION
 #include "unicode/filteredbrk.h"
 #include <stdio.h> // for sprintf
 #endif
@@ -1067,9 +1067,15 @@ void RBBIAPITest::TestRoundtripRules() {
 void RBBIAPITest::TestGetBinaryRules() {
     UErrorCode status=U_ZERO_ERROR;
     LocalPointer<BreakIterator> bi(BreakIterator::createLineInstance(Locale::getEnglish(), status));
-    TEST_ASSERT_SUCCESS(status);
+    if (U_FAILURE(status)) {
+        dataerrln("FAIL: BreakIterator::createLineInstance for Locale::getEnglish(): %s", u_errorName(status));
+        return;
+    }
     RuleBasedBreakIterator *rbbi = dynamic_cast<RuleBasedBreakIterator *>(bi.getAlias());
-    TEST_ASSERT(rbbi != NULL);
+    if (rbbi == NULL) {
+        dataerrln("FAIL: RuleBasedBreakIterator is NULL");
+        return;
+    }
 
     // Check that the new line break iterator is nominally functional.
     UnicodeString helloWorld("Hello, World!");
@@ -1154,7 +1160,7 @@ void RBBIAPITest::TestRefreshInputText() {
 
 }
 
-#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING && !UCONFIG_NO_FILTERED_BREAK_ITERATION
+#if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION
 static void prtbrks(BreakIterator* brk, const UnicodeString &ustr, IntlTest &it) {
   static const UChar PILCROW=0x00B6, CHSTR=0x3010, CHEND=0x3011; // lenticular brackets
   it.logln(UnicodeString("String:'")+ustr+UnicodeString("'"));
@@ -1196,7 +1202,7 @@ static void prtbrks(BreakIterator* brk, const UnicodeString &ustr, IntlTest &it)
 #endif
 
 void RBBIAPITest::TestFilteredBreakIteratorBuilder() {
-#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING && !UCONFIG_NO_FILTERED_BREAK_ITERATION
+#if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION
   UErrorCode status = U_ZERO_ERROR;
   LocalPointer<FilteredBreakIteratorBuilder> builder;
   LocalPointer<BreakIterator> baseBI;
@@ -1392,7 +1398,7 @@ void RBBIAPITest::TestFilteredBreakIteratorBuilder() {
   }
 
 #else
-  logln("Skipped- not: !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING && !UCONFIG_NO_FILTERED_BREAK_ITERATION");
+  logln("Skipped- not: !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION");
 #endif
 }
 
@@ -1423,7 +1429,7 @@ void RBBIAPITest::runIndexedTest( int32_t index, UBool exec, const char* &name,
     TESTCASE_AUTO(TestGetBinaryRules);
 #endif
     TESTCASE_AUTO(TestRefreshInputText);
-#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING
+#if !UCONFIG_NO_BREAK_ITERATION
     TESTCASE_AUTO(TestFilteredBreakIteratorBuilder);
 #endif
     TESTCASE_AUTO_END;
index 7e84848..13b1e29 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 65eb16f..81335cc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2016, International Business Machines Corporation and
index f044073..baad854 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*************************************************************************
  * Copyright (c) 2016, International Business Machines
index a3102c1..d101c15 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -36,6 +36,7 @@
 
 #include "charstr.h"
 #include "cmemory.h"
+#include "cstr.h"
 #include "intltest.h"
 #include "rbbitst.h"
 #include "utypeinfo.h"  // for 'typeid' to work
@@ -103,6 +104,9 @@ void RBBITest::runIndexedTest( int32_t index, UBool exec, const char* &name, cha
     TESTCASE_AUTO(TestBug5532);
     TESTCASE_AUTO(TestBug7547);
     TESTCASE_AUTO(TestBug12797);
+    TESTCASE_AUTO(TestBug12918);
+    TESTCASE_AUTO(TestBug12932);
+    TESTCASE_AUTO(TestEmoji);
     TESTCASE_AUTO_END;
 }
 
@@ -1121,7 +1125,9 @@ void RBBITest::executeTest(TestParams *t, UErrorCode &status) {
 
 
 void RBBITest::TestExtended() {
-#if !UCONFIG_NO_REGULAR_EXPRESSIONS
+  // Skip test for now when UCONFIG_NO_FILTERED_BREAK_ITERATION is set. This
+  // data driven test closely entangles filtered and regular data.
+#if !UCONFIG_NO_REGULAR_EXPRESSIONS && !UCONFIG_NO_FILTERED_BREAK_ITERATION
     UErrorCode      status  = U_ZERO_ERROR;
     Locale          locale("");
 
@@ -1170,15 +1176,6 @@ void RBBITest::TestExtended() {
 
     EParseState savedState = PARSE_TAG;
 
-    static const UChar CH_LF        = 0x0a;
-    static const UChar CH_CR        = 0x0d;
-    static const UChar CH_HASH      = 0x23;
-    /*static const UChar CH_PERIOD    = 0x2e;*/
-    static const UChar CH_LT        = 0x3c;
-    static const UChar CH_GT        = 0x3e;
-    static const UChar CH_BACKSLASH = 0x5c;
-    static const UChar CH_BULLET    = 0x2022;
-
     int32_t    lineNum  = 1;
     int32_t    colStart = 0;
     int32_t    column   = 0;
@@ -1190,12 +1187,12 @@ void RBBITest::TestExtended() {
         status = U_ZERO_ERROR;
         UChar  c = testString.charAt(charIdx);
         charIdx++;
-        if (c == CH_CR && charIdx<len && testString.charAt(charIdx) == CH_LF) {
+        if (c == u'\r' && charIdx<len && testString.charAt(charIdx) == u'\n') {
             // treat CRLF as a unit
-            c = CH_LF;
+            c = u'\n';
             charIdx++;
         }
-        if (c == CH_LF || c == CH_CR) {
+        if (c == u'\n' || c == u'\r') {
             lineNum++;
             colStart = charIdx;
         }
@@ -1203,14 +1200,14 @@ void RBBITest::TestExtended() {
 
         switch (parseState) {
         case PARSE_COMMENT:
-            if (c == 0x0a || c == 0x0d) {
+            if (c == u'\n' || c == u'\r') {
                 parseState = savedState;
             }
             break;
 
         case PARSE_TAG:
             {
-            if (c == CH_HASH) {
+            if (c == u'#') {
                 parseState = PARSE_COMMENT;
                 savedState = PARSE_TAG;
                 break;
@@ -1282,7 +1279,7 @@ void RBBITest::TestExtended() {
             break;
 
         case PARSE_DATA:
-            if (c == CH_BULLET) {
+            if (c == u'•') {
                 int32_t  breakIdx = tp.dataToBreak.length();
                 tp.expectedBreaks->setSize(breakIdx+1);
                 tp.expectedBreaks->setElementAt(-1, breakIdx);
@@ -1324,7 +1321,7 @@ void RBBITest::TestExtended() {
                 // Get the code point from the name and insert it into the test data.
                 //   (Damn, no API takes names in Unicode  !!!
                 //    we've got to take it back to char *)
-                int32_t nameEndIdx = testString.indexOf((UChar)0x7d/*'}'*/, charIdx);
+                int32_t nameEndIdx = testString.indexOf(u'}', charIdx);
                 int32_t nameLength = nameEndIdx - (charIdx+2);
                 char charNameBuf[200];
                 UChar32 theChar = -1;
@@ -1371,28 +1368,28 @@ void RBBITest::TestExtended() {
                 break;
             }
 
-            if (c == CH_LT) {
+            if (c == u'<') {
                 tagValue   = 0;
                 parseState = PARSE_NUM;
                 break;
             }
 
-            if (c == CH_HASH && column==3) {   // TODO:  why is column off so far?
+            if (c == u'#' && column==3) {   // TODO:  why is column off so far?
                 parseState = PARSE_COMMENT;
                 savedState = PARSE_DATA;
                 break;
             }
 
-            if (c == CH_BACKSLASH) {
+            if (c == u'\\') {
                 // Check for \ at end of line, a line continuation.
                 //     Advance over (discard) the newline
                 UChar32 cp = testString.char32At(charIdx);
-                if (cp == CH_CR && charIdx<len && testString.charAt(charIdx+1) == CH_LF) {
+                if (cp == u'\r' && charIdx<len && testString.charAt(charIdx+1) == u'\n') {
                     // We have a CR LF
                     //  Need an extra increment of the input ptr to move over both of them
                     charIdx++;
                 }
-                if (cp == CH_LF || cp == CH_CR) {
+                if (cp == u'\n' || cp == u'\r') {
                     lineNum++;
                     colStart = charIdx;
                     charIdx++;
@@ -1441,7 +1438,7 @@ void RBBITest::TestExtended() {
                 break;
             }
 
-            if (c == CH_GT) {
+            if (c == u'>') {
                 // Finished the number.  Add the info to the expected break data,
                 //   and switch parse state back to doing plain data.
                 parseState = PARSE_DATA;
@@ -1688,20 +1685,30 @@ void RBBITest::TestUnicodeFiles() {
 // See ticket #7270.
 
 UBool RBBITest::testCaseIsKnownIssue(const UnicodeString &testCase, const char *fileName) {
-    static const UChar badTestCases[][4] = {                     // Line Numbers from Unicode 7.0.0 file.
-        {(UChar)0x200B, (UChar)0x0020, (UChar)0x007D, (UChar)0x0000},   // Line 5198
-        {(UChar)0x200B, (UChar)0x0020, (UChar)0x0029, (UChar)0x0000},   // Line 5202
-        {(UChar)0x200B, (UChar)0x0020, (UChar)0x0021, (UChar)0x0000},   // Line 5214
-        {(UChar)0x200B, (UChar)0x0020, (UChar)0x002c, (UChar)0x0000},   // Line 5246
-        {(UChar)0x200B, (UChar)0x0020, (UChar)0x002f, (UChar)0x0000},   // Line 5298
-        {(UChar)0x200B, (UChar)0x0020, (UChar)0x2060, (UChar)0x0000}    // Line 5302
+    static struct TestCase {
+        const char *fFileName;
+        const UChar *fString;
+    } badTestCases[] = {                                // Line Numbers from Unicode 7.0.0 file.
+        {"LineBreakTest.txt", u"\u200B\u0020}"},        // Line 5198
+        {"LineBreakTest.txt", u"\u200B\u0020)"},        // Line 5202
+        {"LineBreakTest.txt", u"\u200B\u0020!"},        // Line 5214
+        {"LineBreakTest.txt", u"\u200B\u0020,"},        // Line 5246
+        {"LineBreakTest.txt", u"\u200B\u0020/"},        // Line 5298
+        {"LineBreakTest.txt", u"\u200B\u0020\u2060"},   // Line 5302
+                                                        // Line Numbers from pre-release verion of GraphemeBreakTest-10.0.0.txt
+        {"GraphemeBreakTest.txt", u"\u200D\u2640"},     // Line 656, old GB 11 test ZWJ x GAZ
+        {"GraphemeBreakTest.txt", u"\u200D\U0001F466"}, // Line 658, old GB 11 test ZWJ x EBG
+        {"GraphemeBreakTest.txt", u"\u200D\U0001F466\U0001F3FB"}, // Line 842, old GB 11 test ZWJ x EBG x EModifier
+
+                                                        // Line Numbers from pre-release verion of WordBreakTest-10.0.0.txt
+        {"WordBreakTest.txt", u"\u200D\u261D"},         // Line 1356, ZWJ x EmojiNRK
+        {"WordBreakTest.txt", u"\u200D\U0001F3FB"},     // Line 1358, ZWJ x EmojiNRK
     };
-    if (strcmp(fileName, "LineBreakTest.txt") != 0) {
-        return FALSE;
-    }
 
-    for (int i=0; i<UPRV_LENGTHOF(badTestCases); i++) {
-        if (testCase == UnicodeString(badTestCases[i])) {
+    for (int n=0; n<UPRV_LENGTHOF(badTestCases); n++) {
+        const TestCase &badCase = badTestCases[n];
+        if (!strcmp(fileName, badCase.fFileName) &&
+                testCase == UnicodeString(badCase.fString)) {
             return logKnownIssue("7270");
         }
     }
@@ -1951,28 +1958,31 @@ static uint32_t m_rand()
 
 
 //
-// Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
+// Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
 //
-static const char *gExtended_Pict = "["
-    "\\U0001F774-\\U0001F77F\\u2700-\\u2701\\u2703-\\u2704\\u270E\\u2710-\\u2711\\u2765-\\u2767\\U0001F030-\\U0001F093"
-    "\\U0001F094-\\U0001F09F\\U0001F10D-\\U0001F10F\\U0001F12F\\U0001F16C-\\U0001F16F\\U0001F1AD-\\U0001F1E5"
-    "\\U0001F203-\\U0001F20F\\U0001F23C-\\U0001F23F\\U0001F249-\\U0001F24F\\U0001F252-\\U0001F2FF\\U0001F7D5-\\U0001F7FF"
-    "\\U0001F000-\\U0001F003\\U0001F005-\\U0001F02B\\U0001F02C-\\U0001F02F\\U0001F322-\\U0001F323\\U0001F394-\\U0001F395"
-    "\\U0001F398\\U0001F39C-\\U0001F39D\\U0001F3F1-\\U0001F3F2\\U0001F3F6\\U0001F4FE\\U0001F53E-\\U0001F548"
-    "\\U0001F54F\\U0001F568-\\U0001F56E\\U0001F571-\\U0001F572\\U0001F57B-\\U0001F586\\U0001F588-\\U0001F589"
-    "\\U0001F58E-\\U0001F58F\\U0001F591-\\U0001F594\\U0001F597-\\U0001F5A3\\U0001F5A6-\\U0001F5A7\\U0001F5A9-\\U0001F5B0"
-    "\\U0001F5B3-\\U0001F5BB\\U0001F5BD-\\U0001F5C1\\U0001F5C5-\\U0001F5D0\\U0001F5D4-\\U0001F5DB\\U0001F5DF-\\U0001F5E0"
-    "\\U0001F5E2\\U0001F5E4-\\U0001F5E7\\U0001F5E9-\\U0001F5EE\\U0001F5F0-\\U0001F5F2\\U0001F5F4-\\U0001F5F9"
-    "\\u2605\\u2607-\\u260D\\u260F-\\u2610\\u2612\\u2616-\\u2617\\u2619-\\u261C\\u261E-\\u261F\\u2621\\u2624-\\u2625"
-    "\\u2627-\\u2629\\u262B-\\u262D\\u2630-\\u2637\\u263B-\\u2647\\u2654-\\u265F\\u2661-\\u2662\\u2664\\u2667"
-    "\\u2669-\\u267A\\u267C-\\u267E\\u2680-\\u2691\\u2695\\u2698\\u269A\\u269D-\\u269F\\u26A2-\\u26A9\\u26AC-\\u26AF"
-    "\\u26B2-\\u26BC\\u26BF-\\u26C3\\u26C6-\\u26C7\\u26C9-\\u26CD\\u26D0\\u26D2\\u26D5-\\u26E8\\u26EB-\\u26EF"
-    "\\u26F6\\u26FB-\\u26FC\\u26FE-\\u26FF\\u2388\\U0001FA00-\\U0001FFFD\\U0001F0A0-\\U0001F0AE\\U0001F0B1-\\U0001F0BF"
-    "\\U0001F0C1-\\U0001F0CF\\U0001F0D1-\\U0001F0F5\\U0001F0AF-\\U0001F0B0\\U0001F0C0\\U0001F0D0\\U0001F0F6-\\U0001F0FF"
-    "\\U0001F80C-\\U0001F80F\\U0001F848-\\U0001F84F\\U0001F85A-\\U0001F85F\\U0001F888-\\U0001F88F\\U0001F8AE-\\U0001F8FF"
-    "\\U0001F900-\\U0001F90F\\U0001F91F\\U0001F928-\\U0001F92F\\U0001F931-\\U0001F932\\U0001F93F\\U0001F94C-\\U0001F94F"
-    "\\U0001F95F-\\U0001F97F\\U0001F992-\\U0001F9BF\\U0001F9C1-\\U0001F9FF\\U0001F6C6-\\U0001F6CA\\U0001F6E6-\\U0001F6E8"
-    "\\U0001F6EA\\U0001F6F1-\\U0001F6F2\\U0001F6D3-\\U0001F6DF\\U0001F6ED-\\U0001F6EF\\U0001F6F7-\\U0001F6FF"
+static const char16_t *gExtended_Pict = u"["
+    "\\U0001F774-\\U0001F77F\\U00002700-\\U00002701\\U00002703-\\U00002704\\U0000270E\\U00002710-\\U00002711\\U00002765-\\U00002767"
+    "\\U0001F030-\\U0001F093\\U0001F094-\\U0001F09F\\U0001F10D-\\U0001F10F\\U0001F12F\\U0001F16C-\\U0001F16F\\U0001F1AD-\\U0001F1E5"
+    "\\U0001F260-\\U0001F265\\U0001F203-\\U0001F20F\\U0001F23C-\\U0001F23F\\U0001F249-\\U0001F24F\\U0001F252-\\U0001F25F"
+    "\\U0001F266-\\U0001F2FF\\U0001F7D5-\\U0001F7FF\\U0001F000-\\U0001F003\\U0001F005-\\U0001F02B\\U0001F02C-\\U0001F02F"
+    "\\U0001F322-\\U0001F323\\U0001F394-\\U0001F395\\U0001F398\\U0001F39C-\\U0001F39D\\U0001F3F1-\\U0001F3F2\\U0001F3F6"
+    "\\U0001F4FE\\U0001F53E-\\U0001F548\\U0001F54F\\U0001F568-\\U0001F56E\\U0001F571-\\U0001F572\\U0001F57B-\\U0001F586"
+    "\\U0001F588-\\U0001F589\\U0001F58E-\\U0001F58F\\U0001F591-\\U0001F594\\U0001F597-\\U0001F5A3\\U0001F5A6-\\U0001F5A7"
+    "\\U0001F5A9-\\U0001F5B0\\U0001F5B3-\\U0001F5BB\\U0001F5BD-\\U0001F5C1\\U0001F5C5-\\U0001F5D0\\U0001F5D4-\\U0001F5DB"
+    "\\U0001F5DF-\\U0001F5E0\\U0001F5E2\\U0001F5E4-\\U0001F5E7\\U0001F5E9-\\U0001F5EE\\U0001F5F0-\\U0001F5F2\\U0001F5F4-\\U0001F5F9"
+    "\\U00002605\\U00002607-\\U0000260D\\U0000260F-\\U00002610\\U00002612\\U00002616-\\U00002617\\U00002619-\\U0000261C"
+    "\\U0000261E-\\U0000261F\\U00002621\\U00002624-\\U00002625\\U00002627-\\U00002629\\U0000262B-\\U0000262D\\U00002630-\\U00002637"
+    "\\U0000263B-\\U00002647\\U00002654-\\U0000265F\\U00002661-\\U00002662\\U00002664\\U00002667\\U00002669-\\U0000267A"
+    "\\U0000267C-\\U0000267E\\U00002680-\\U00002691\\U00002695\\U00002698\\U0000269A\\U0000269D-\\U0000269F\\U000026A2-\\U000026A9"
+    "\\U000026AC-\\U000026AF\\U000026B2-\\U000026BC\\U000026BF-\\U000026C3\\U000026C6-\\U000026C7\\U000026C9-\\U000026CD"
+    "\\U000026D0\\U000026D2\\U000026D5-\\U000026E8\\U000026EB-\\U000026EF\\U000026F6\\U000026FB-\\U000026FC\\U000026FE-\\U000026FF"
+    "\\U00002388\\U0001FA00-\\U0001FFFD\\U0001F0A0-\\U0001F0AE\\U0001F0B1-\\U0001F0BF\\U0001F0C1-\\U0001F0CF\\U0001F0D1-\\U0001F0F5"
+    "\\U0001F0AF-\\U0001F0B0\\U0001F0C0\\U0001F0D0\\U0001F0F6-\\U0001F0FF\\U0001F80C-\\U0001F80F\\U0001F848-\\U0001F84F"
+    "\\U0001F85A-\\U0001F85F\\U0001F888-\\U0001F88F\\U0001F8AE-\\U0001F8FF\\U0001F900-\\U0001F90B\\U0001F91F\\U0001F928-\\U0001F92F"
+    "\\U0001F931-\\U0001F932\\U0001F94C\\U0001F95F-\\U0001F96B\\U0001F992-\\U0001F997\\U0001F9D0-\\U0001F9E6\\U0001F90C-\\U0001F90F"
+    "\\U0001F93F\\U0001F94D-\\U0001F94F\\U0001F96C-\\U0001F97F\\U0001F998-\\U0001F9BF\\U0001F9C1-\\U0001F9CF\\U0001F9E7-\\U0001F9FF"
+    "\\U0001F6C6-\\U0001F6CA\\U0001F6D3-\\U0001F6D4\\U0001F6E6-\\U0001F6E8\\U0001F6EA\\U0001F6F1-\\U0001F6F2\\U0001F6F7-\\U0001F6F8"
+    "\\U0001F6D5-\\U0001F6DF\\U0001F6ED-\\U0001F6EF\\U0001F6F9-\\U0001F6FF"
     "]";
 
 //------------------------------------------------------------------------------------------
@@ -2040,9 +2050,9 @@ RBBICharMonkey::RBBICharMonkey() {
     fHangulSet->addAll(*fLVSet);
     fHangulSet->addAll(*fLVTSet);
 
-    fEmojiBaseSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Grapheme_Cluster_Break = EB}\\U0001F3C2\\U0001F3C7\\U0001F3CC\\U0001F46A-\\U0001F46D\\U0001F46F\\U0001F574\\U0001F6CC]"), status);
+    fEmojiBaseSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Grapheme_Cluster_Break = EB}]"), status);
     fEmojiModifierSet = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Grapheme_Cluster_Break = EM}]"), status);
-    fExtendedPictSet  = new UnicodeSet(UnicodeString(gExtended_Pict, -1, US_INV), status);
+    fExtendedPictSet  = new UnicodeSet(gExtended_Pict, status);
     fEBGSet           = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Grapheme_Cluster_Break = EBG}]"), status);
     fEmojiNRKSet      = new UnicodeSet(UNICODE_STRING_SIMPLE(
                 "[[\\p{Emoji}]-[\\p{Grapheme_Cluster_Break = Regional_Indicator}*#0-9\\u00a9\\u00ae\\u2122\\u3030\\u303d]]"), status);
@@ -2193,11 +2203,15 @@ int32_t RBBICharMonkey::next(int32_t prevPos) {
             continue;
         }
 
-        // Rule (GB11)   (Glue_After_ZWJ | Emoji) ZWJ x (Glue_After_ZWJ | Emoji)
+        // Rule (GB11)   (Glue_After_ZWJ | Emoji) Extend * ZWJ x (Glue_After_ZWJ | Emoji)
         if ((fExtendedPictSet->contains(c0) || fEmojiNRKSet->contains(c0)) && fZWJSet->contains(c1) &&
                 (fExtendedPictSet->contains(c2) || fEmojiNRKSet->contains(c2))) {
             continue;
         }
+        if ((fExtendedPictSet->contains(cBase) || fEmojiNRKSet->contains(cBase)) && fExtendSet->contains(c0) && fZWJSet->contains(c1) &&
+                (fExtendedPictSet->contains(c2) || fEmojiNRKSet->contains(c2))) {
+            continue;
+        }
 
         // Rule (GB12-13)    Regional_Indicator x Regional_Indicator
         //                   Note: The first if condition is a little tricky. We only need to force
@@ -2301,42 +2315,42 @@ RBBIWordMonkey::RBBIWordMonkey()
 
     fSets            = new UVector(status);
 
-    fCRSet            = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = CR}]"),           status);
-    fLFSet            = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = LF}]"),           status);
-    fNewlineSet       = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Newline}]"),      status);
-    fKatakanaSet      = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Katakana}]"),     status);
-    fRegionalIndicatorSet =  new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Regional_Indicator}]"), status);
-    fHebrew_LetterSet = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Hebrew_Letter}]"), status);
-    fALetterSet       = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = ALetter}]"), status);
-    fSingle_QuoteSet  = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Single_Quote}]"),    status);
-    fDouble_QuoteSet  = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Double_Quote}]"),    status);
-    fMidNumLetSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = MidNumLet}]"),    status);
-    fMidLetterSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = MidLetter}]"),    status);
-    fMidNumSet        = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = MidNum}]"),       status);
-    fNumericSet       = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Numeric}]"),      status);
-    fFormatSet        = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Format}]"),       status);
-    fExtendNumLetSet  = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = ExtendNumLet}]"), status);
-    fExtendSet        = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Extend}]"),       status);
-
-    fEBaseSet         = new UnicodeSet(UNICODE_STRING_SIMPLE(
-            "[\\p{Word_Break = EB}\\U0001F3C2\\U0001F3C7\\U0001F3CC\\U0001F46A-\\U0001F46D\\U0001F46F\\U0001F574\\U0001F6CC]"), status);
-    fEBGSet           = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = EBG}]"),          status);
-    fEModifierSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = EM}]"),           status);
-    fZWJSet           = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = ZWJ}]"),          status);
-    fExtendedPictSet  = new UnicodeSet(UnicodeString(gExtended_Pict, -1, US_INV), status);
-    fEmojiNRKSet      = new UnicodeSet(UNICODE_STRING_SIMPLE(
-            "[[\\p{Emoji}]-[\\p{Word_Break = Regional_Indicator}*#0-9\\u00a9\\u00ae\\u2122\\u3030\\u303d]]"), status);
-
-    fDictionarySet = new UnicodeSet(UNICODE_STRING_SIMPLE("[[\\uac00-\\ud7a3][:Han:][:Hiragana:]]"), status);
+    fCRSet            = new UnicodeSet(u"[\\p{Word_Break = CR}]",           status);
+    fLFSet            = new UnicodeSet(u"[\\p{Word_Break = LF}]",           status);
+    fNewlineSet       = new UnicodeSet(u"[\\p{Word_Break = Newline}]",      status);
+    fKatakanaSet      = new UnicodeSet(u"[\\p{Word_Break = Katakana}]",     status);
+    fRegionalIndicatorSet =  new UnicodeSet(u"[\\p{Word_Break = Regional_Indicator}]", status);
+    fHebrew_LetterSet = new UnicodeSet(u"[\\p{Word_Break = Hebrew_Letter}]", status);
+    fALetterSet       = new UnicodeSet(u"[\\p{Word_Break = ALetter}]", status);
+    fSingle_QuoteSet  = new UnicodeSet(u"[\\p{Word_Break = Single_Quote}]",    status);
+    fDouble_QuoteSet  = new UnicodeSet(u"[\\p{Word_Break = Double_Quote}]",    status);
+    fMidNumLetSet     = new UnicodeSet(u"[\\p{Word_Break = MidNumLet}]",    status);
+    fMidLetterSet     = new UnicodeSet(u"[\\p{Word_Break = MidLetter}]",    status);
+    fMidNumSet        = new UnicodeSet(u"[\\p{Word_Break = MidNum}]",       status);
+    fNumericSet       = new UnicodeSet(u"[\\p{Word_Break = Numeric}]",      status);
+    fFormatSet        = new UnicodeSet(u"[\\p{Word_Break = Format}]",       status);
+    fExtendNumLetSet  = new UnicodeSet(u"[\\p{Word_Break = ExtendNumLet}]", status);
+    fExtendSet        = new UnicodeSet(u"[\\p{Word_Break = Extend}]",       status);
+
+    fEBaseSet         = new UnicodeSet(u"[\\p{Word_Break = EB}]",           status);
+    fEBGSet           = new UnicodeSet(u"[\\p{Word_Break = EBG}]",          status);
+    fEModifierSet     = new UnicodeSet(u"[\\p{Word_Break = EM}]",           status);
+    fZWJSet           = new UnicodeSet(u"[\\p{Word_Break = ZWJ}]",          status);
+    fExtendedPictSet  = new UnicodeSet(gExtended_Pict, status);
+    fEmojiNRKSet      = new UnicodeSet(
+            u"[[\\p{Emoji}]-[\\p{Word_Break = Regional_Indicator}*#0-9\\u00a9\\u00ae\\u2122\\u3030\\u303d]]", status);
+
+    fDictionarySet = new UnicodeSet(u"[[\\uac00-\\ud7a3][:Han:][:Hiragana:]]", status);
     fDictionarySet->addAll(*fKatakanaSet);
-    fDictionarySet->addAll(UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{LineBreak = Complex_Context}]"), status));
+    fDictionarySet->addAll(UnicodeSet(u"[\\p{LineBreak = Complex_Context}]", status));
 
     fALetterSet->removeAll(*fDictionarySet);
 
     fOtherSet        = new UnicodeSet();
     if(U_FAILURE(status)) {
-      deferredStatus = status;
-      return;
+        IntlTest::gTest->errln("%s:%d %s", __FILE__, __LINE__, u_errorName(status));
+        deferredStatus = status;
+        return;
     }
 
     fOtherSet->complement();
@@ -3074,12 +3088,11 @@ RBBILineMonkey::RBBILineMonkey() :
     fRI    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=RI}]"), status);
     fSG    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\ud800-\\udfff]"), status);
     fXX    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=XX}]"), status);
-    fEB    = new UnicodeSet(UNICODE_STRING_SIMPLE(
-            "[\\p{Line_break=EB}\\U0001F3C2\\U0001F3C7\\U0001F3CC\\U0001F46A-\\U0001F46D\\U0001F46F\\U0001F574\\U0001F6CC]"), status);
+    fEB    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=EB}]"), status);
     fEM    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=EM}]"), status);
     fZJ    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=ZWJ}]"), status);
     fEmojiNRK = new UnicodeSet(UNICODE_STRING_SIMPLE("[[\\p{Emoji}]-[\\p{Line_break=RI}*#0-9\\u00a9\\u00ae\\u2122\\u3030\\u303d]]"), status);
-    fExtendedPict = new UnicodeSet(UnicodeString(gExtended_Pict, -1, US_INV), status);
+    fExtendedPict = new UnicodeSet(gExtended_Pict, status);
 
     if (U_FAILURE(status)) {
         deferredStatus = status;
@@ -3202,7 +3215,7 @@ void RBBILineMonkey::rule9Adjust(int32_t pos, UChar32 *posChar, int32_t *nextPos
 
     // LB 10  Treat any remaining combining mark as AL
     if (fCM->contains(*posChar)) {
-        *posChar = 0x41;   // thisChar = 'A';
+        *posChar = u'A';
     }
 
     // Push the updated nextPos and nextChar back to our caller.
@@ -4652,6 +4665,132 @@ void RBBITest::TestBug12797() {
     }
 }
 
+void RBBITest::TestBug12918() {
+    // This test triggers an assertion failure in dictbe.cpp
+    const UChar *crasherString = u"\u3325\u4a16";
+    UErrorCode status = U_ZERO_ERROR;
+    UBreakIterator* iter = ubrk_open(UBRK_WORD, NULL, crasherString, -1, &status);
+    if (U_FAILURE(status)) {
+        dataerrln("%s:%d status = %s", __FILE__, __LINE__, u_errorName(status));
+        return;
+    }
+    ubrk_first(iter);
+    int32_t pos = 0;
+    int32_t lastPos = -1;
+    while((pos = ubrk_next(iter)) != UBRK_DONE) {
+        if (pos <= lastPos) {
+            errln("%s:%d (pos, lastPos) = (%d, %d)", __FILE__, __LINE__, pos, lastPos);
+            break;
+        }
+    }
+    ubrk_close(iter);
+}
+
+void RBBITest::TestBug12932() {
+    // Node Stack overflow in the RBBI rule parser caused a seg fault.
+    UnicodeString ruleStr(
+            "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("
+            "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("
+            "(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))"
+            ")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))"
+            ")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))"
+            ")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))");
+
+    UErrorCode status = U_ZERO_ERROR;
+    UParseError parseError;
+    RuleBasedBreakIterator rbbi(ruleStr, parseError, status);
+    if (status != U_BRK_RULE_SYNTAX) {
+        errln("%s:%d expected U_BRK_RULE_SYNTAX, got %s",
+                __FILE__, __LINE__, u_errorName(status));
+    }
+}
+
+
+// Emoji Test. Verify that the sequences defined in the Unicode data file emoji-test.txt
+//             remain undevided by ICU char, word and line break.
+void RBBITest::TestEmoji() {
+    UErrorCode  status = U_ZERO_ERROR;
+
+    CharString testFileName;
+    testFileName.append(IntlTest::getSourceTestData(status), status);
+    testFileName.appendPathPart("emoji-test.txt", status);
+    if (U_FAILURE(status)) {
+        errln("%s:%s %s while opening emoji-test.txt", __FILE__, __LINE__, u_errorName(status));
+        return;
+    }
+    logln("Opening data file %s\n", testFileName.data());
+
+    int    len;
+    UChar *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
+    if (U_FAILURE(status) || testFile == NULL) {
+        errln("%s:%s %s while opening emoji-test.txt", __FILE__, __LINE__, u_errorName(status));
+        return;
+    }
+    UnicodeString testFileAsString(testFile, len);
+    delete [] testFile;
+
+    RegexMatcher lineMatcher(u"^.*?$", testFileAsString, UREGEX_MULTILINE, status);
+    RegexMatcher hexMatcher(u"\\s*([a-f0-9]*)", UREGEX_CASE_INSENSITIVE, status);
+    //           hexMatcher group(1) is a hex number, or empty string if no hex number present.
+    int32_t lineNumber = 0;
+
+    LocalPointer<BreakIterator> charBreaks(BreakIterator::createCharacterInstance(Locale::getEnglish(), status), status);
+    LocalPointer<BreakIterator> wordBreaks(BreakIterator::createWordInstance(Locale::getEnglish(), status), status);
+    LocalPointer<BreakIterator> lineBreaks(BreakIterator::createLineInstance(Locale::getEnglish(), status), status);
+    if (U_FAILURE(status)) {
+        dataerrln("%s:%d %s while opening break iterators", __FILE__, __LINE__, u_errorName(status));
+        return;
+    }
+
+    while (lineMatcher.find()) {
+        ++lineNumber;
+        UnicodeString line = lineMatcher.group(status);
+        hexMatcher.reset(line);
+        UnicodeString testString;   // accumulates the emoji sequence.
+        while (hexMatcher.find() && hexMatcher.group(1, status).length() > 0) {
+            UnicodeString hex = hexMatcher.group(1, status);
+            if (hex.length() > 8) {
+                errln("%s:%d emoji-test.txt:%d invalid code point %s", __FILE__, __LINE__, lineNumber, CStr(hex)());
+                break;
+            }
+            CharString hex8;
+            hex8.appendInvariantChars(hex, status);
+            UChar32 c = (UChar32)strtol(hex8.data(), NULL, 16);
+            if (c<=0x10ffff) {
+                testString.append(c);
+            } else {
+                errln("%s:%d emoji-test.txt:%d Error: Unicode Character %s value out of range.",
+                        __FILE__, __LINE__, lineNumber, hex8.data());
+                break;
+            }
+        }
+
+        if (testString.length() > 1) {
+            charBreaks->setText(testString);
+            charBreaks->first();
+            int32_t firstBreak = charBreaks->next();
+            if (testString.length() != firstBreak) {
+                errln("%s:%d  emoji-test.txt:%d Error, uexpected break at offset %d",
+                        __FILE__, __LINE__, lineNumber, firstBreak);
+            }
+            wordBreaks->setText(testString);
+            wordBreaks->first();
+            firstBreak = wordBreaks->next();
+            if (testString.length() != firstBreak) {
+                errln("%s:%d  emoji-test.txt:%d Error, uexpected break at offset %d",
+                        __FILE__, __LINE__, lineNumber, firstBreak);
+            }
+            lineBreaks->setText(testString);
+            lineBreaks->first();
+            firstBreak = lineBreaks->next();
+            if (testString.length() != firstBreak) {
+                errln("%s:%d  emoji-test.txt:%d Error, uexpected break at offset %d",
+                        __FILE__, __LINE__, lineNumber, firstBreak);
+            }
+        }
+    }
+}
+
 
 //
 //  TestDebug    -  A place-holder test for debugging purposes.
@@ -4659,7 +4798,6 @@ void RBBITest::TestBug12797() {
 //                  for tracing  without a lot of unwanted extra stuff happening.
 //
 void RBBITest::TestDebug(void) {
-
 }
 
 void RBBITest::TestProperties() {
index 6b2c2f0..6809376 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*************************************************************************
  * Copyright (c) 1999-2016, International Business Machines
@@ -76,6 +76,9 @@ public:
     void TestBug9983();
     void TestBug7547();
     void TestBug12797();
+    void TestBug12918();
+    void TestBug12932();
+    void TestEmoji();
 
     void TestDebug();
     void TestProperties();
index 39d5c54..766a72e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index f0947ee..424acb2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 34642ec..0dbc910 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -68,107 +68,43 @@ RegexTest::~RegexTest()
 void RegexTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
 {
     if (exec) logln("TestSuite RegexTest: ");
-    switch (index) {
-
-        case 0: name = "Basic";
-            if (exec) Basic();
-            break;
-        case 1: name = "API_Match";
-            if (exec) API_Match();
-            break;
-        case 2: name = "API_Replace";
-            if (exec) API_Replace();
-            break;
-        case 3: name = "API_Pattern";
-            if (exec) API_Pattern();
-            break;
-        case 4:
+    TESTCASE_AUTO_BEGIN;
+    TESTCASE_AUTO(Basic);
+    TESTCASE_AUTO(API_Match);
+    TESTCASE_AUTO(API_Replace);
+    TESTCASE_AUTO(API_Pattern);
 #if !UCONFIG_NO_FILE_IO
-            name = "Extended";
-            if (exec) Extended();
-#else
-            name = "skip";
+    TESTCASE_AUTO(Extended);
 #endif
-            break;
-        case 5: name = "Errors";
-            if (exec) Errors();
-            break;
-        case 6: name = "PerlTests";
-            if (exec) PerlTests();
-            break;
-        case 7: name = "Callbacks";
-            if (exec) Callbacks();
-            break;
-        case 8: name = "FindProgressCallbacks";
-            if (exec) FindProgressCallbacks();
-            break;
-        case 9: name = "Bug 6149";
-             if (exec) Bug6149();
-             break;
-        case 10: name = "UTextBasic";
-          if (exec) UTextBasic();
-          break;
-        case 11: name = "API_Match_UTF8";
-          if (exec) API_Match_UTF8();
-          break;
-        case 12: name = "API_Replace_UTF8";
-          if (exec) API_Replace_UTF8();
-          break;
-        case 13: name = "API_Pattern_UTF8";
-          if (exec) API_Pattern_UTF8();
-          break;
-        case 14: name = "PerlTestsUTF8";
-          if (exec) PerlTestsUTF8();
-          break;
-        case 15: name = "PreAllocatedUTextCAPI";
-          if (exec) PreAllocatedUTextCAPI();
-          break;
-        case 16: name = "Bug 7651";
-             if (exec) Bug7651();
-             break;
-        case 17: name = "Bug 7740";
-            if (exec) Bug7740();
-            break;
-        case 18: name = "Bug 8479";
-            if (exec) Bug8479();
-            break;
-        case 19: name = "Bug 7029";
-            if (exec) Bug7029();
-            break;
-        case 20: name = "CheckInvBufSize";
-            if (exec) CheckInvBufSize();
-            break;
-        case 21: name = "Bug 9283";
-            if (exec) Bug9283();
-            break;
-        case 22: name = "Bug10459";
-            if (exec) Bug10459();
-            break;
-        case 23: name = "TestCaseInsensitiveStarters";
-            if (exec) TestCaseInsensitiveStarters();
-            break;
-        case 24: name = "TestBug11049";
-            if (exec) TestBug11049();
-            break;
-        case 25: name = "TestBug11371";
-            if (exec) TestBug11371();
-            break;
-        case 26: name = "TestBug11480";
-            if (exec) TestBug11480();
-            break;
-        case 27: name = "NamedCapture";
-            if (exec) NamedCapture();
-            break;
-        case 28: name = "NamedCaptureLimits";
-            if (exec) NamedCaptureLimits();
-            break;
-        default: name = "";
-            break; //needed to end loop
-    }
+    TESTCASE_AUTO(Errors);
+    TESTCASE_AUTO(PerlTests);
+    TESTCASE_AUTO(Callbacks);
+    TESTCASE_AUTO(FindProgressCallbacks);
+    TESTCASE_AUTO(Bug6149);
+    TESTCASE_AUTO(UTextBasic);
+    TESTCASE_AUTO(API_Match_UTF8);
+    TESTCASE_AUTO(API_Replace_UTF8);
+    TESTCASE_AUTO(API_Pattern_UTF8);
+    TESTCASE_AUTO(PerlTestsUTF8);
+    TESTCASE_AUTO(PreAllocatedUTextCAPI);
+    TESTCASE_AUTO(Bug7651);
+    TESTCASE_AUTO(Bug7740);
+    TESTCASE_AUTO(Bug8479);
+    TESTCASE_AUTO(Bug7029);
+    TESTCASE_AUTO(CheckInvBufSize);
+    TESTCASE_AUTO(Bug9283);
+    TESTCASE_AUTO(Bug10459);
+    TESTCASE_AUTO(TestCaseInsensitiveStarters);
+    TESTCASE_AUTO(TestBug11049);
+    TESTCASE_AUTO(TestBug11371);
+    TESTCASE_AUTO(TestBug11480);
+    TESTCASE_AUTO(NamedCapture);
+    TESTCASE_AUTO(NamedCaptureLimits);
+    TESTCASE_AUTO(TestBug12884);
+    TESTCASE_AUTO_END;
 }
 
 
-
 /**
  * Calls utext_openUTF8 after, potentially, converting invariant text from the compilation codepage
  * into ASCII.
@@ -5833,5 +5769,41 @@ void RegexTest::TestBug11480() {
     REGEX_CHECK_STATUS;
 }
 
+void RegexTest::TestBug12884() {
+    // setTimeLimit() was not effective for empty sub-patterns with large {minimum counts}
+    UnicodeString pattern(u"(((((((){120}){11}){11}){11}){80}){11}){4}");
+    UnicodeString text(u"hello");
+    UErrorCode status = U_ZERO_ERROR;
+    RegexMatcher m(pattern, text, 0, status);
+    REGEX_CHECK_STATUS;
+    m.setTimeLimit(5, status);
+    m.find(status);
+    REGEX_ASSERT(status == U_REGEX_TIME_OUT);
+
+    // Non-greedy loops. They take a different code path during matching.
+    UnicodeString ngPattern(u"(((((((){120}?){11}?){11}?){11}?){80}?){11}?){4}?");
+    status = U_ZERO_ERROR;
+    RegexMatcher ngM(ngPattern, text, 0, status);
+    REGEX_CHECK_STATUS;
+    ngM.setTimeLimit(5, status);
+    ngM.find(status);
+    REGEX_ASSERT(status == U_REGEX_TIME_OUT);
+
+    // UText, wrapping non-UTF-16 text, also takes a different execution path.
+    const char *text8 = u8"¿Qué es Unicode?  Unicode proporciona un número único para cada"
+                          "carácter, sin importar la plataforma, sin importar el programa,"
+                          "sin importar el idioma.";
+    status = U_ZERO_ERROR;
+    LocalUTextPointer ut(utext_openUTF8(NULL, text8, -1, &status));
+    REGEX_CHECK_STATUS;
+    m.reset(ut.getAlias());
+    m.find(status);
+    REGEX_ASSERT(status == U_REGEX_TIME_OUT);
+
+    status = U_ZERO_ERROR;
+    ngM.reset(ut.getAlias());
+    ngM.find(status);
+    REGEX_ASSERT(status == U_REGEX_TIME_OUT);
+}
 
 #endif  /* !UCONFIG_NO_REGULAR_EXPRESSIONS  */
index 9cae007..3f90de0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -56,6 +56,7 @@ public:
     virtual void TestBug11049();
     virtual void TestBug11371();
     virtual void TestBug11480();
+    virtual void TestBug12884();
     
     // The following functions are internal to the regexp tests.
     virtual void assertUText(const char *expected, UText *actual, const char *file, int line);
index 9444dc4..4d3561a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 936a47e..32e0e01 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT:
index 3a91f4c..c0765dd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2b44134..35a3f5d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9b8b95c..ee95f10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 75c9f22..5ffcb94 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5f0df9a..879bb6e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 52cce8f..5483cdd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index ae87e0c..817e5b3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2967088..c76e19c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6eaa7f2..ba48346 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index 9d0f498..8e31cc1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index f4074ec..81b73ae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index adea86b..e0ddfa2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 308dd05..9b12161 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  sfwdchit.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 */
index 6938bb1..388e6ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index f503f39..3a77768 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9c1e0e1..10b635d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8b04418..9fcb52a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3fb0c22..a7534dd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************
@@ -644,7 +644,7 @@ void StringSearchTest::TestOpenClose()
     }
     delete result;
 
-    text.append(0, 0x1);
+    // No-op: text.append(0, 0x1); -- what was intended here?
     status = U_ZERO_ERROR;
     result = new StringSearch(pattern, text, NULL, NULL, status);
     if (U_SUCCESS(status)) {
index 53a95b6..2b436ca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /****************************************************************************
  * COPYRIGHT: 
index eae05e3..5a68838 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index ac5e690..59d5b67 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 7054b7f..5c29198 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  strcase.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -19,6 +19,8 @@
 */
 
 #include "unicode/std_string.h"
+#include "unicode/casemap.h"
+#include "unicode/edits.h"
 #include "unicode/uchar.h"
 #include "unicode/ures.h"
 #include "unicode/uloc.h"
 #include "unicode/tstdtmod.h"
 #include "cmemory.h"
 
+struct EditChange {
+    UBool change;
+    int32_t oldLength, newLength;
+};
+
+class StringCaseTest: public IntlTest {
+public:
+    StringCaseTest();
+    virtual ~StringCaseTest();
+
+    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
+
+    void TestCaseConversion();
+
+    void TestCasingImpl(const UnicodeString &input,
+                        const UnicodeString &output,
+                        int32_t whichCase,
+                        void *iter, const char *localeID, uint32_t options);
+    void TestCasing();
+    void TestFullCaseFoldingIterator();
+    void TestGreekUpper();
+    void TestLongUpper();
+    void TestMalformedUTF8();
+    void TestBufferOverflow();
+    void TestEdits();
+    void TestCaseMapWithEdits();
+    void TestCaseMapUTF8WithEdits();
+    void TestLongUnicodeString();
+    void TestBug13127();
+
+private:
+    void assertGreekUpper(const char16_t *s, const char16_t *expected);
+    void checkEditsIter(
+        const UnicodeString &name, Edits::Iterator ei1, Edits::Iterator ei2,  // two equal iterators
+        const EditChange expected[], int32_t expLength, UBool withUnchanged,
+        UErrorCode &errorCode);
+
+    Locale GREEK_LOCALE_;
+};
+
 StringCaseTest::StringCaseTest() : GREEK_LOCALE_("el") {}
 
 StringCaseTest::~StringCaseTest() {}
 
+extern IntlTest *createStringCaseTest() {
+    return new StringCaseTest();
+}
+
 void
 StringCaseTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) {
     if(exec) {
@@ -44,12 +90,17 @@ StringCaseTest::runIndexedTest(int32_t index, UBool exec, const char *&name, cha
     TESTCASE_AUTO(TestCaseConversion);
 #if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
     TESTCASE_AUTO(TestCasing);
+    TESTCASE_AUTO(TestBug13127);
 #endif
     TESTCASE_AUTO(TestFullCaseFoldingIterator);
     TESTCASE_AUTO(TestGreekUpper);
     TESTCASE_AUTO(TestLongUpper);
     TESTCASE_AUTO(TestMalformedUTF8);
     TESTCASE_AUTO(TestBufferOverflow);
+    TESTCASE_AUTO(TestEdits);
+    TESTCASE_AUTO(TestCaseMapWithEdits);
+    TESTCASE_AUTO(TestCaseMapUTF8WithEdits);
+    TESTCASE_AUTO(TestLongUnicodeString);
     TESTCASE_AUTO_END;
 }
 
@@ -582,9 +633,9 @@ StringCaseTest::TestFullCaseFoldingIterator() {
 }
 
 void
-StringCaseTest::assertGreekUpper(const char *s, const char *expected) {
-    UnicodeString s16 = UnicodeString(s).unescape();
-    UnicodeString expected16 = UnicodeString(expected).unescape();
+StringCaseTest::assertGreekUpper(const char16_t *s, const char16_t *expected) {
+    UnicodeString s16(s);
+    UnicodeString expected16(expected);
     UnicodeString msg = UnicodeString("UnicodeString::toUpper/Greek(\"") + s16 + "\")";
     UnicodeString result16(s16);
     result16.toUpper(GREEK_LOCALE_);
@@ -619,7 +670,6 @@ StringCaseTest::assertGreekUpper(const char *s, const char *expected) {
         }
     }
 
-#if U_HAVE_STD_STRING
     UErrorCode errorCode = U_ZERO_ERROR;
     LocalUCaseMapPointer csm(ucasemap_open("el", 0, &errorCode));
     assertSuccess("ucasemap_open", errorCode);
@@ -655,98 +705,43 @@ StringCaseTest::assertGreekUpper(const char *s, const char *expected) {
             expectedErrorCode = U_STRING_NOT_TERMINATED_WARNING;
         } else {
             expectedErrorCode = U_ZERO_ERROR;
-            assertEquals(msg + cap + " NUL", 0, dest8b[length]);
+            // Casts to int32_t to avoid matching UBool.
+            assertEquals(msg + cap + " NUL", (int32_t)0, (int32_t)dest8b[length]);
         }
         assertEquals(msg + cap + " errorCode", expectedErrorCode, errorCode);
         if (cap >= expected8Length) {
             assertEquals(msg + cap + " (memcmp)", 0, memcmp(dest8, dest8b, expected8Length));
         }
     }
-#endif
 }
 
 void
 StringCaseTest::TestGreekUpper() {
-    // See UCharacterCaseTest.java for human-readable strings.
-
     // http://bugs.icu-project.org/trac/ticket/5456
-    assertGreekUpper("\\u03AC\\u03B4\\u03B9\\u03BA\\u03BF\\u03C2, "
-                     "\\u03BA\\u03B5\\u03AF\\u03BC\\u03B5\\u03BD\\u03BF, "
-                     "\\u03AF\\u03C1\\u03B9\\u03B4\\u03B1",
-                     "\\u0391\\u0394\\u0399\\u039A\\u039F\\u03A3, "
-                     "\\u039A\\u0395\\u0399\\u039C\\u0395\\u039D\\u039F, "
-                     "\\u0399\\u03A1\\u0399\\u0394\\u0391");
+    assertGreekUpper(u"άδικος, κείμενο, ίριδα", u"ΑΔΙΚΟΣ, ΚΕΙΜΕΝΟ, ΙΡΙΔΑ");
     // https://bugzilla.mozilla.org/show_bug.cgi?id=307039
     // https://bug307039.bmoattachments.org/attachment.cgi?id=194893
-    assertGreekUpper("\\u03A0\\u03B1\\u03C4\\u03AC\\u03C4\\u03B1",
-                     "\\u03A0\\u0391\\u03A4\\u0391\\u03A4\\u0391");
-    assertGreekUpper("\\u0391\\u03AD\\u03C1\\u03B1\\u03C2, "
-                     "\\u039C\\u03C5\\u03C3\\u03C4\\u03AE\\u03C1\\u03B9\\u03BF, "
-                     "\\u03A9\\u03C1\\u03B1\\u03AF\\u03BF",
-                     "\\u0391\\u0395\\u03A1\\u0391\\u03A3, "
-                     "\\u039C\\u03A5\\u03A3\\u03A4\\u0397\\u03A1\\u0399\\u039F, "
-                     "\\u03A9\\u03A1\\u0391\\u0399\\u039F");
-    assertGreekUpper("\\u039C\\u03B1\\u0390\\u03BF\\u03C5, \\u03A0\\u03CC\\u03C1\\u03BF\\u03C2, "
-                     "\\u03A1\\u03CD\\u03B8\\u03BC\\u03B9\\u03C3\\u03B7",
-                     "\\u039C\\u0391\\u03AA\\u039F\\u03A5, \\u03A0\\u039F\\u03A1\\u039F\\u03A3, "
-                     "\\u03A1\\u03A5\\u0398\\u039C\\u0399\\u03A3\\u0397");
-    assertGreekUpper("\\u03B0, \\u03A4\\u03B7\\u03C1\\u03CE, \\u039C\\u03AC\\u03B9\\u03BF\\u03C2",
-                     "\\u03AB, \\u03A4\\u0397\\u03A1\\u03A9, \\u039C\\u0391\\u03AA\\u039F\\u03A3");
-    assertGreekUpper("\\u03AC\\u03C5\\u03BB\\u03BF\\u03C2",
-                     "\\u0391\\u03AB\\u039B\\u039F\\u03A3");
-    assertGreekUpper("\\u0391\\u03AB\\u039B\\u039F\\u03A3",
-                     "\\u0391\\u03AB\\u039B\\u039F\\u03A3");
-    assertGreekUpper("\\u0386\\u03BA\\u03BB\\u03B9\\u03C4\\u03B1 "
-                     "\\u03C1\\u03AE\\u03BC\\u03B1\\u03C4\\u03B1 \\u03AE "
-                     "\\u03AC\\u03BA\\u03BB\\u03B9\\u03C4\\u03B5\\u03C2 "
-                     "\\u03BC\\u03B5\\u03C4\\u03BF\\u03C7\\u03AD\\u03C2",
-                     "\\u0391\\u039A\\u039B\\u0399\\u03A4\\u0391 "
-                     "\\u03A1\\u0397\\u039C\\u0391\\u03A4\\u0391 \\u0397\\u0301 "
-                     "\\u0391\\u039A\\u039B\\u0399\\u03A4\\u0395\\u03A3 "
-                     "\\u039C\\u0395\\u03A4\\u039F\\u03A7\\u0395\\u03A3");
+    assertGreekUpper(u"Πατάτα", u"ΠΑΤΑΤΑ");
+    assertGreekUpper(u"Αέρας, Μυστήριο, Ωραίο", u"ΑΕΡΑΣ, ΜΥΣΤΗΡΙΟ, ΩΡΑΙΟ");
+    assertGreekUpper(u"Μαΐου, Πόρος, Ρύθμιση", u"ΜΑΪΟΥ, ΠΟΡΟΣ, ΡΥΘΜΙΣΗ");
+    assertGreekUpper(u"ΰ, Τηρώ, Μάιος", u"Ϋ, ΤΗΡΩ, ΜΑΪΟΣ");
+    assertGreekUpper(u"άυλος", u"ΑΫΛΟΣ");
+    assertGreekUpper(u"ΑΫΛΟΣ", u"ΑΫΛΟΣ");
+    assertGreekUpper(u"Άκλιτα ρήματα ή άκλιτες μετοχές", u"ΑΚΛΙΤΑ ΡΗΜΑΤΑ Ή ΑΚΛΙΤΕΣ ΜΕΤΟΧΕΣ");
     // http://www.unicode.org/udhr/d/udhr_ell_monotonic.html
-    assertGreekUpper("\\u0395\\u03C0\\u03B5\\u03B9\\u03B4\\u03AE \\u03B7 "
-                     "\\u03B1\\u03BD\\u03B1\\u03B3\\u03BD\\u03CE\\u03C1\\u03B9\\u03C3\\u03B7 "
-                     "\\u03C4\\u03B7\\u03C2 \\u03B1\\u03BE\\u03B9\\u03BF\\u03C0\\u03C1\\u03AD"
-                     "\\u03C0\\u03B5\\u03B9\\u03B1\\u03C2",
-                     "\\u0395\\u03A0\\u0395\\u0399\\u0394\\u0397 \\u0397 "
-                     "\\u0391\\u039D\\u0391\\u0393\\u039D\\u03A9\\u03A1\\u0399\\u03A3\\u0397 "
-                     "\\u03A4\\u0397\\u03A3 \\u0391\\u039E\\u0399\\u039F\\u03A0\\u03A1\\u0395"
-                     "\\u03A0\\u0395\\u0399\\u0391\\u03A3");
-    assertGreekUpper("\\u03BD\\u03BF\\u03BC\\u03B9\\u03BA\\u03BF\\u03CD \\u03AE "
-                     "\\u03B4\\u03B9\\u03B5\\u03B8\\u03BD\\u03BF\\u03CD\\u03C2",
-                     "\\u039D\\u039F\\u039C\\u0399\\u039A\\u039F\\u03A5 \\u0397\\u0301 "
-                     "\\u0394\\u0399\\u0395\\u0398\\u039D\\u039F\\u03A5\\u03A3");
+    assertGreekUpper(u"Επειδή η αναγνώριση της αξιοπρέπειας", u"ΕΠΕΙΔΗ Η ΑΝΑΓΝΩΡΙΣΗ ΤΗΣ ΑΞΙΟΠΡΕΠΕΙΑΣ");
+    assertGreekUpper(u"νομικού ή διεθνούς", u"ΝΟΜΙΚΟΥ Ή ΔΙΕΘΝΟΥΣ");
     // http://unicode.org/udhr/d/udhr_ell_polytonic.html
-    assertGreekUpper("\\u1F18\\u03C0\\u03B5\\u03B9\\u03B4\\u1F74 \\u1F21 "
-                     "\\u1F00\\u03BD\\u03B1\\u03B3\\u03BD\\u1F7D\\u03C1\\u03B9\\u03C3\\u03B7",
-                     "\\u0395\\u03A0\\u0395\\u0399\\u0394\\u0397 \\u0397 "
-                     "\\u0391\\u039D\\u0391\\u0393\\u039D\\u03A9\\u03A1\\u0399\\u03A3\\u0397");
-    assertGreekUpper("\\u03BD\\u03BF\\u03BC\\u03B9\\u03BA\\u03BF\\u1FE6 \\u1F22 "
-                     "\\u03B4\\u03B9\\u03B5\\u03B8\\u03BD\\u03BF\\u1FE6\\u03C2",
-                     "\\u039D\\u039F\\u039C\\u0399\\u039A\\u039F\\u03A5 \\u0397\\u0301 "
-                     "\\u0394\\u0399\\u0395\\u0398\\u039D\\u039F\\u03A5\\u03A3");
+    assertGreekUpper(u"Ἐπειδὴ ἡ ἀναγνώριση", u"ΕΠΕΙΔΗ Η ΑΝΑΓΝΩΡΙΣΗ");
+    assertGreekUpper(u"νομικοῦ ἢ διεθνοῦς", u"ΝΟΜΙΚΟΥ Ή ΔΙΕΘΝΟΥΣ");
     // From Google bug report
-    assertGreekUpper("\\u039D\\u03AD\\u03BF, "
-                     "\\u0394\\u03B7\\u03BC\\u03B9\\u03BF\\u03C5\\u03C1\\u03B3\\u03AF\\u03B1",
-                     "\\u039D\\u0395\\u039F, "
-                     "\\u0394\\u0397\\u039C\\u0399\\u039F\\u03A5\\u03A1\\u0393\\u0399\\u0391");
+    assertGreekUpper(u"Νέο, Δημιουργία", u"ΝΕΟ, ΔΗΜΙΟΥΡΓΙΑ");
     // http://crbug.com/234797
-    assertGreekUpper("\\u0395\\u03BB\\u03AC\\u03C4\\u03B5 \\u03BD\\u03B1 \\u03C6\\u03AC\\u03C4\\u03B5 "
-                     "\\u03C4\\u03B1 \\u03BA\\u03B1\\u03BB\\u03CD\\u03C4\\u03B5\\u03C1\\u03B1 "
-                     "\\u03C0\\u03B1\\u03CA\\u03B4\\u03AC\\u03BA\\u03B9\\u03B1!",
-                     "\\u0395\\u039B\\u0391\\u03A4\\u0395 \\u039D\\u0391 \\u03A6\\u0391\\u03A4\\u0395 "
-                     "\\u03A4\\u0391 \\u039A\\u0391\\u039B\\u03A5\\u03A4\\u0395\\u03A1\\u0391 "
-                     "\\u03A0\\u0391\\u03AA\\u0394\\u0391\\u039A\\u0399\\u0391!");
-    assertGreekUpper("\\u039C\\u03B1\\u0390\\u03BF\\u03C5, \\u03C4\\u03C1\\u03CC\\u03BB\\u03B5\\u03CA",
-                     "\\u039C\\u0391\\u03AA\\u039F\\u03A5, \\u03A4\\u03A1\\u039F\\u039B\\u0395\\u03AA");
-    assertGreekUpper("\\u03A4\\u03BF \\u03AD\\u03BD\\u03B1 \\u03AE \\u03C4\\u03BF "
-                     "\\u03AC\\u03BB\\u03BB\\u03BF.",
-                     "\\u03A4\\u039F \\u0395\\u039D\\u0391 \\u0397\\u0301 \\u03A4\\u039F "
-                     "\\u0391\\u039B\\u039B\\u039F.");
+    assertGreekUpper(u"Ελάτε να φάτε τα καλύτερα παϊδάκια!", u"ΕΛΑΤΕ ΝΑ ΦΑΤΕ ΤΑ ΚΑΛΥΤΕΡΑ ΠΑΪΔΑΚΙΑ!");
+    assertGreekUpper(u"Μαΐου, τρόλεϊ", u"ΜΑΪΟΥ, ΤΡΟΛΕΪ");
+    assertGreekUpper(u"Το ένα ή το άλλο.", u"ΤΟ ΕΝΑ Ή ΤΟ ΑΛΛΟ.");
     // http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/
-    assertGreekUpper("\\u03C1\\u03C9\\u03BC\\u03AD\\u03B9\\u03BA\\u03B1",
-                     "\\u03A1\\u03A9\\u039C\\u0395\\u03AA\\u039A\\u0391");
+    assertGreekUpper(u"ρωμέικα", u"ΡΩΜΕΪΚΑ");
 }
 
 void
@@ -786,11 +781,14 @@ void StringCaseTest::TestMalformedUTF8() {
     }
     char src[1] = { (char)0x85 };  // malformed UTF-8
     char dest[3] = { 0, 0, 0 };
-    int32_t destLength = ucasemap_utf8ToTitle(csm.getAlias(), dest, 3, src, 1, errorCode);
+    int32_t destLength;
+#if !UCONFIG_NO_BREAK_ITERATION
+    destLength = ucasemap_utf8ToTitle(csm.getAlias(), dest, 3, src, 1, errorCode);
     if (errorCode.isFailure() || destLength != 1 || dest[0] != src[0]) {
         errln("ucasemap_utf8ToTitle(\\x85) failed: %s destLength=%d dest[0]=0x%02x",
               errorCode.errorName(), (int)destLength, dest[0]);
     }
+#endif
 
     errorCode.reset();
     dest[0] = 0;
@@ -828,23 +826,324 @@ void StringCaseTest::TestBufferOverflow() {
     }
 
     UnicodeString data("hello world");
-    int32_t result = ucasemap_toTitle(csm.getAlias(), NULL, 0, data.getBuffer(), data.length(), errorCode);
+    int32_t result;
+#if !UCONFIG_NO_BREAK_ITERATION
+    result = ucasemap_toTitle(csm.getAlias(), NULL, 0, data.getBuffer(), data.length(), errorCode);
     if (errorCode.get() != U_BUFFER_OVERFLOW_ERROR || result != data.length()) {
         errln("%s:%d ucasemap_toTitle(\"hello world\") failed: "
               "expected (U_BUFFER_OVERFLOW_ERROR, %d), got (%s, %d)",
               __FILE__, __LINE__, data.length(), errorCode.errorName(), result);
     }
+#endif
     errorCode.reset();
 
-#if U_HAVE_STD_STRING
     std::string data_utf8;
     data.toUTF8String(data_utf8);
+#if !UCONFIG_NO_BREAK_ITERATION
     result = ucasemap_utf8ToTitle(csm.getAlias(), NULL, 0, data_utf8.c_str(), data_utf8.length(), errorCode);
     if (errorCode.get() != U_BUFFER_OVERFLOW_ERROR || result != (int32_t)data_utf8.length()) {
         errln("%s:%d ucasemap_toTitle(\"hello world\") failed: "
               "expected (U_BUFFER_OVERFLOW_ERROR, %d), got (%s, %d)",
               __FILE__, __LINE__, data_utf8.length(), errorCode.errorName(), result);
     }
+#endif
     errorCode.reset();
-#endif  // U_HAVE_STD_STRING
+}
+
+void StringCaseTest::checkEditsIter(
+        const UnicodeString &name,
+        Edits::Iterator ei1, Edits::Iterator ei2,  // two equal iterators
+        const EditChange expected[], int32_t expLength, UBool withUnchanged,
+        UErrorCode &errorCode) {
+    assertFalse(name, ei2.findSourceIndex(-1, errorCode));
+
+    int32_t expSrcIndex = 0;
+    int32_t expDestIndex = 0;
+    int32_t expReplIndex = 0;
+    for (int32_t expIndex = 0; expIndex < expLength; ++expIndex) {
+        const EditChange &expect = expected[expIndex];
+        UnicodeString msg = UnicodeString(name).append(u' ') + expIndex;
+        if (withUnchanged || expect.change) {
+            assertTrue(msg, ei1.next(errorCode));
+            assertEquals(msg, expect.change, ei1.hasChange());
+            assertEquals(msg, expect.oldLength, ei1.oldLength());
+            assertEquals(msg, expect.newLength, ei1.newLength());
+            assertEquals(msg, expSrcIndex, ei1.sourceIndex());
+            assertEquals(msg, expDestIndex, ei1.destinationIndex());
+            assertEquals(msg, expReplIndex, ei1.replacementIndex());
+        }
+
+        if (expect.oldLength > 0) {
+            assertTrue(msg, ei2.findSourceIndex(expSrcIndex, errorCode));
+            assertEquals(msg, expect.change, ei2.hasChange());
+            assertEquals(msg, expect.oldLength, ei2.oldLength());
+            assertEquals(msg, expect.newLength, ei2.newLength());
+            assertEquals(msg, expSrcIndex, ei2.sourceIndex());
+            assertEquals(msg, expDestIndex, ei2.destinationIndex());
+            assertEquals(msg, expReplIndex, ei2.replacementIndex());
+            if (!withUnchanged) {
+                // For some iterators, move past the current range
+                // so that findSourceIndex() has to look before the current index.
+                ei2.next(errorCode);
+                ei2.next(errorCode);
+            }
+        }
+
+        expSrcIndex += expect.oldLength;
+        expDestIndex += expect.newLength;
+        if (expect.change) {
+            expReplIndex += expect.newLength;
+        }
+    }
+    // TODO: remove casts from u"" when merging into trunk
+    UnicodeString msg = UnicodeString(name).append(u" end");
+    assertFalse(msg, ei1.next(errorCode));
+    assertFalse(msg, ei1.hasChange());
+    assertEquals(msg, 0, ei1.oldLength());
+    assertEquals(msg, 0, ei1.newLength());
+    assertEquals(msg, expSrcIndex, ei1.sourceIndex());
+    assertEquals(msg, expDestIndex, ei1.destinationIndex());
+    assertEquals(msg, expReplIndex, ei1.replacementIndex());
+
+    assertFalse(name, ei2.findSourceIndex(expSrcIndex, errorCode));
+}
+
+void StringCaseTest::TestEdits() {
+    IcuTestErrorCode errorCode(*this, "TestEdits");
+    Edits edits;
+    assertFalse("new Edits", edits.hasChanges());
+    assertEquals("new Edits", 0, edits.lengthDelta());
+    edits.addUnchanged(1);  // multiple unchanged ranges are combined
+    edits.addUnchanged(10000);  // too long, and they are split
+    edits.addReplace(0, 0);
+    edits.addUnchanged(2);
+    assertFalse("unchanged 10003", edits.hasChanges());
+    assertEquals("unchanged 10003", 0, edits.lengthDelta());
+    edits.addReplace(1, 1);  // multiple short equal-length edits are compressed
+    edits.addUnchanged(0);
+    edits.addReplace(1, 1);
+    edits.addReplace(1, 1);
+    edits.addReplace(0, 10);
+    edits.addReplace(100, 0);
+    edits.addReplace(3000, 4000);  // variable-length encoding
+    edits.addReplace(100000, 100000);
+    assertTrue("some edits", edits.hasChanges());
+    assertEquals("some edits", 10 - 100 + 1000, edits.lengthDelta());
+    UErrorCode outErrorCode = U_ZERO_ERROR;
+    assertFalse("edits done: copyErrorTo", edits.copyErrorTo(outErrorCode));
+
+    static const EditChange coarseExpectedChanges[] = {
+            { FALSE, 10003, 10003 },
+            { TRUE, 103103, 104013 }
+    };
+    checkEditsIter(u"coarse",
+            edits.getCoarseIterator(), edits.getCoarseIterator(),
+            coarseExpectedChanges, UPRV_LENGTHOF(coarseExpectedChanges), TRUE, errorCode);
+    checkEditsIter(u"coarse changes",
+            edits.getCoarseChangesIterator(), edits.getCoarseChangesIterator(),
+            coarseExpectedChanges, UPRV_LENGTHOF(coarseExpectedChanges), FALSE, errorCode);
+
+    static const EditChange fineExpectedChanges[] = {
+            { FALSE, 10003, 10003 },
+            { TRUE, 1, 1 },
+            { TRUE, 1, 1 },
+            { TRUE, 1, 1 },
+            { TRUE, 0, 10 },
+            { TRUE, 100, 0 },
+            { TRUE, 3000, 4000 },
+            { TRUE, 100000, 100000 }
+    };
+    checkEditsIter(u"fine",
+            edits.getFineIterator(), edits.getFineIterator(),
+            fineExpectedChanges, UPRV_LENGTHOF(fineExpectedChanges), TRUE, errorCode);
+    checkEditsIter(u"fine changes",
+            edits.getFineChangesIterator(), edits.getFineChangesIterator(),
+            fineExpectedChanges, UPRV_LENGTHOF(fineExpectedChanges), FALSE, errorCode);
+
+    edits.reset();
+    assertFalse("reset", edits.hasChanges());
+    assertEquals("reset", 0, edits.lengthDelta());
+    Edits::Iterator ei = edits.getCoarseChangesIterator();
+    assertFalse("reset then iterator", ei.next(errorCode));
+}
+
+void StringCaseTest::TestCaseMapWithEdits() {
+    IcuTestErrorCode errorCode(*this, "TestEdits");
+    UChar dest[20];
+    Edits edits;
+
+    int32_t length = CaseMap::toLower("tr", UCASEMAP_OMIT_UNCHANGED_TEXT,
+                                      u"IstanBul", 8, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
+    assertEquals(u"toLower(IstanBul)", UnicodeString(u"ıb"), UnicodeString(TRUE, dest, length));
+    static const EditChange lowerExpectedChanges[] = {
+            { TRUE, 1, 1 },
+            { FALSE, 4, 4 },
+            { TRUE, 1, 1 },
+            { FALSE, 2, 2 }
+    };
+    checkEditsIter(u"toLower(IstanBul)",
+            edits.getFineIterator(), edits.getFineIterator(),
+            lowerExpectedChanges, UPRV_LENGTHOF(lowerExpectedChanges),
+            TRUE, errorCode);
+
+    edits.reset();
+    length = CaseMap::toUpper("el", UCASEMAP_OMIT_UNCHANGED_TEXT,
+                              u"Πατάτα", 6, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
+    assertEquals(u"toUpper(Πατάτα)", UnicodeString(u"ΑΤΑΤΑ"), UnicodeString(TRUE, dest, length));
+    static const EditChange upperExpectedChanges[] = {
+            { FALSE, 1, 1 },
+            { TRUE, 1, 1 },
+            { TRUE, 1, 1 },
+            { TRUE, 1, 1 },
+            { TRUE, 1, 1 },
+            { TRUE, 1, 1 }
+    };
+    checkEditsIter(u"toUpper(Πατάτα)",
+            edits.getFineIterator(), edits.getFineIterator(),
+            upperExpectedChanges, UPRV_LENGTHOF(upperExpectedChanges),
+            TRUE, errorCode);
+
+    edits.reset();
+
+#if !UCONFIG_NO_BREAK_ITERATION
+    length = CaseMap::toTitle("nl",
+                              UCASEMAP_OMIT_UNCHANGED_TEXT |
+                              U_TITLECASE_NO_BREAK_ADJUSTMENT |
+                              U_TITLECASE_NO_LOWERCASE,
+                              NULL, u"IjssEL IglOo", 12,
+                              dest, UPRV_LENGTHOF(dest), &edits, errorCode);
+    assertEquals(u"toTitle(IjssEL IglOo)", UnicodeString(u"J"), UnicodeString(TRUE, dest, length));
+    static const EditChange titleExpectedChanges[] = {
+            { FALSE, 1, 1 },
+            { TRUE, 1, 1 },
+            { FALSE, 10, 10 }
+    };
+    checkEditsIter(u"toTitle(IjssEL IglOo)",
+            edits.getFineIterator(), edits.getFineIterator(),
+            titleExpectedChanges, UPRV_LENGTHOF(titleExpectedChanges),
+            TRUE, errorCode);
+#endif
+
+    edits.reset();
+    length = CaseMap::fold(UCASEMAP_OMIT_UNCHANGED_TEXT | U_FOLD_CASE_EXCLUDE_SPECIAL_I,
+                           u"IßtanBul", 8, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
+    assertEquals(u"foldCase(IßtanBul)", UnicodeString(u"ıssb"), UnicodeString(TRUE, dest, length));
+    static const EditChange foldExpectedChanges[] = {
+            { TRUE, 1, 1 },
+            { TRUE, 1, 2 },
+            { FALSE, 3, 3 },
+            { TRUE, 1, 1 },
+            { FALSE, 2, 2 }
+    };
+    checkEditsIter(u"foldCase(IßtanBul)",
+            edits.getFineIterator(), edits.getFineIterator(),
+            foldExpectedChanges, UPRV_LENGTHOF(foldExpectedChanges),
+            TRUE, errorCode);
+}
+
+void StringCaseTest::TestCaseMapUTF8WithEdits() {
+    IcuTestErrorCode errorCode(*this, "TestEdits");
+    char dest[50];
+    Edits edits;
+
+    int32_t length = CaseMap::utf8ToLower("tr", UCASEMAP_OMIT_UNCHANGED_TEXT,
+                                          u8"IstanBul", 8, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
+    assertEquals(u"toLower(IstanBul)", UnicodeString(u"ıb"),
+                 UnicodeString::fromUTF8(StringPiece(dest, length)));
+    static const EditChange lowerExpectedChanges[] = {
+            { TRUE, 1, 2 },
+            { FALSE, 4, 4 },
+            { TRUE, 1, 1 },
+            { FALSE, 2, 2 }
+    };
+    checkEditsIter(u"toLower(IstanBul)",
+            edits.getFineIterator(), edits.getFineIterator(),
+            lowerExpectedChanges, UPRV_LENGTHOF(lowerExpectedChanges),
+            TRUE, errorCode);
+
+    edits.reset();
+    length = CaseMap::utf8ToUpper("el", UCASEMAP_OMIT_UNCHANGED_TEXT,
+                                  u8"Πατάτα", 6 * 2, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
+    assertEquals(u"toUpper(Πατάτα)", UnicodeString(u"ΑΤΑΤΑ"),
+                 UnicodeString::fromUTF8(StringPiece(dest, length)));
+    static const EditChange upperExpectedChanges[] = {
+            { FALSE, 2, 2 },
+            { TRUE, 2, 2 },
+            { TRUE, 2, 2 },
+            { TRUE, 2, 2 },
+            { TRUE, 2, 2 },
+            { TRUE, 2, 2 }
+    };
+    checkEditsIter(u"toUpper(Πατάτα)",
+            edits.getFineIterator(), edits.getFineIterator(),
+            upperExpectedChanges, UPRV_LENGTHOF(upperExpectedChanges),
+            TRUE, errorCode);
+
+    edits.reset();
+#if !UCONFIG_NO_BREAK_ITERATION
+    length = CaseMap::utf8ToTitle("nl",
+                                  UCASEMAP_OMIT_UNCHANGED_TEXT |
+                                  U_TITLECASE_NO_BREAK_ADJUSTMENT |
+                                  U_TITLECASE_NO_LOWERCASE,
+                                  NULL, u8"IjssEL IglOo", 12,
+                                  dest, UPRV_LENGTHOF(dest), &edits, errorCode);
+    assertEquals(u"toTitle(IjssEL IglOo)", UnicodeString(u"J"),
+                 UnicodeString::fromUTF8(StringPiece(dest, length)));
+    static const EditChange titleExpectedChanges[] = {
+            { FALSE, 1, 1 },
+            { TRUE, 1, 1 },
+            { FALSE, 10, 10 }
+    };
+    checkEditsIter(u"toTitle(IjssEL IglOo)",
+            edits.getFineIterator(), edits.getFineIterator(),
+            titleExpectedChanges, UPRV_LENGTHOF(titleExpectedChanges),
+            TRUE, errorCode);
+#endif
+
+    edits.reset();
+    length = CaseMap::utf8Fold(UCASEMAP_OMIT_UNCHANGED_TEXT | U_FOLD_CASE_EXCLUDE_SPECIAL_I,
+                               u8"IßtanBul", 1 + 2 + 6, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
+    assertEquals(u"foldCase(IßtanBul)", UnicodeString(u"ıssb"),
+                 UnicodeString::fromUTF8(StringPiece(dest, length)));
+    static const EditChange foldExpectedChanges[] = {
+            { TRUE, 1, 2 },
+            { TRUE, 2, 2 },
+            { FALSE, 3, 3 },
+            { TRUE, 1, 1 },
+            { FALSE, 2, 2 }
+    };
+    checkEditsIter(u"foldCase(IßtanBul)",
+            edits.getFineIterator(), edits.getFineIterator(),
+            foldExpectedChanges, UPRV_LENGTHOF(foldExpectedChanges),
+            TRUE, errorCode);
+}
+
+void StringCaseTest::TestLongUnicodeString() {
+    // Code coverage for UnicodeString case mapping code handling
+    // long strings or many changes in a string.
+    UnicodeString s(TRUE,
+        (const UChar *)
+        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
+        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
+        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
+        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
+        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
+        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF", 6 * 51);
+    UnicodeString expected(TRUE,
+        (const UChar *)
+        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
+        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
+        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
+        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
+        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
+        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF", 6 * 51);
+    s.toUpper(Locale::getRoot());
+    assertEquals("string length 306", expected, s);
+}
+
+void StringCaseTest::TestBug13127() {
+    // Test case crashed when the bug was present.
+    const char16_t *s16 = u"日本語";
+    UnicodeString s(TRUE, s16, -1);
+    s.toTitle(0, Locale::getEnglish());
 }
index f621631..ccc618a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  strtest.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -22,6 +22,8 @@
 #include "unicode/stringpiece.h"
 #include "unicode/unistr.h"
 #include "unicode/ustring.h"
+#include "unicode/utf_old.h"    // for UTF8_COUNT_TRAIL_BYTES
+#include "unicode/utf8.h"
 #include "charstr.h"
 #include "cstr.h"
 #include "intltest.h"
@@ -148,8 +150,18 @@ StringTest::Test_UTF8_COUNT_TRAIL_BYTES() {
         || UTF8_COUNT_TRAIL_BYTES(0xF0) != 3)
     {
         errln("Test_UTF8_COUNT_TRAIL_BYTES: UTF8_COUNT_TRAIL_BYTES does not work right! "
-              "See utf8.h.");
-    }
+              "See utf_old.h.");
+    }
+       // Note: U8_COUNT_TRAIL_BYTES (current) and UTF8_COUNT_TRAIL_BYTES (deprecated)
+       //       have completely different implementations.
+       if (U8_COUNT_TRAIL_BYTES(0x7F) != 0
+               || U8_COUNT_TRAIL_BYTES(0xC0) != 1
+               || U8_COUNT_TRAIL_BYTES(0xE0) != 2
+               || U8_COUNT_TRAIL_BYTES(0xF0) != 3)
+       {
+               errln("Test_UTF8_COUNT_TRAIL_BYTES: U8_COUNT_TRAIL_BYTES does not work right! "
+                       "See utf8.h.");
+       }
 }
 
 void StringTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) {
@@ -200,14 +212,12 @@ StringTest::TestStringPiece() {
     if(abcd.empty() || abcd.data()!=abcdefg_chars || abcd.length()!=4 || abcd.size()!=4) {
         errln("StringPiece(abcdefg_chars, 4) failed");
     }
-#if U_HAVE_STD_STRING
     // Construct from std::string.
     std::string uvwxyz_string("uvwxyz");
     StringPiece uvwxyz(uvwxyz_string);
     if(uvwxyz.empty() || uvwxyz.data()!=uvwxyz_string.data() || uvwxyz.length()!=6 || uvwxyz.size()!=6) {
         errln("StringPiece(uvwxyz_string) failed");
     }
-#endif
     // Substring constructor with pos.
     StringPiece sp(abcd, -1);
     if(sp.empty() || sp.data()!=abcdefg_chars || sp.length()!=4 || sp.size()!=4) {
@@ -451,7 +461,6 @@ StringTest::TestCheckedArrayByteSink() {
 
 void
 StringTest::TestStringByteSink() {
-#if U_HAVE_STD_STRING
     // Not much to test because only the constructor and Append()
     // are implemented, and trivially so.
     std::string result("abc");  // std::string
@@ -460,7 +469,6 @@ StringTest::TestStringByteSink() {
     if(result != "abcdef") {
         errln("StringByteSink did not Append() as expected");
     }
-#endif
 }
 
 #if defined(_MSC_VER)
index d72834e..5462afb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  strtest.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a897d9c..ecc1d50 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 3c589dc..1cae2b6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2004, International Business Machines Corporation
index 9f51991..942119e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index ddc070c..057971c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index 023c69b..29ac0b2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  testidn.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4b39c96..3c92d88 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  testidna.cpp
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 8bd1a6f..250a3f8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  testidna.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 82851c8..8ed110a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8c76ad2..d6d4262 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 325d9e3..292620e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index f74667e..c4ef673 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d419b35..427eb10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT:
index 17eed3c..c058c95 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 7fccbf8..077487a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 61f4ef7..ea7e1c7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 44a50b8..26c44cd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -32,6 +32,7 @@
 #include "unicode/messagepattern.h"
 #include "unicode/selfmt.h"
 #include "unicode/gregocal.h"
+#include "unicode/strenum.h"
 #include <stdio.h>
 
 void
@@ -780,6 +781,7 @@ void TestMessageFormat::testMsgFormatSelect(/* char* par */)
     err = U_ZERO_ERROR;
     //Create the MessageFormat with Plural format with embedded select format(nested pattern)
     MessageFormat* msgFmt5 = internalCreate(t5.unescape(), Locale("fr"),err,(char*)"From TestMessageFormat::TestSelectFormat create t5");
+    // with no data the above should fail but it seems to construct an invalid MessageFormat with no reported error. See #13079
     if (!U_FAILURE(err)) {
         //Arguments 
         Formattable testArgs10[] = {"Kirti",(int32_t)6,"female"};  
index 97ab67c..7c0afc4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b9cdaaf..4280973 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 29e5114..670ace7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c1f083d..76597d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT: 
index fce3697..801c8f1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4d7b73b..0b8c944 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ffcf488..03ed0be 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d8a7521..93e9033 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -243,7 +243,8 @@ void TransliteratorTest::TestInstantiation() {
         if (t == 0) {
 #if UCONFIG_NO_BREAK_ITERATION
             // If UCONFIG_NO_BREAK_ITERATION is on, then only Thai should fail.
-            if (id.compare((UnicodeString)"Thai-Latin") != 0)
+            if (id.compare((UnicodeString)"Thai-Latn") != 0 &&
+                id.compare((UnicodeString)"Thai-Latin") != 0)
 #endif
                 dataerrln(UnicodeString("FAIL: Couldn't create ") + id +
                       /*", parse error " + parseError.code +*/
index 5fc310b..8a2bcc6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ddd83b0..a5d3a35 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b403ed8..1a8e644 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5b412b7..0f13b33 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2001-2009, International Business Machines
index 743c440..85e5e80 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 222896c..b13f30a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 20f6bf0..173e609 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 34714a8..15d8a57 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 1997-2009, International Business Machines Corporation
index 54e0f68..df7cfbd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2dcb24e..eb5bc3b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 5296918..5df1bc7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index fede0ad..c1efcc2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2013, International Business Machines
index f6803ba..ea9afc7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 83f9298..036d5e1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 3d27db5..6ed24d7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index da4a263..845206f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index e92da9a..d680d46 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 085727e..8a169ca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5baca29..43a4a8a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b407a3a..104ed36 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index cf72fe0..6ca4ce7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 294a539..744b0ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 129ee46..91a2667 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2008-2016, International Business Machines Corporation and
index cacd615..5106e99 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index d0758c0..edd89a6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index dadcb54..9557b14 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -82,6 +82,7 @@ TimeZoneFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name
         TESTCASE(3, TestISOFormat);
         TESTCASE(4, TestFormat);
         TESTCASE(5, TestFormatTZDBNames);
+        TESTCASE(6, TestFormatCustomZone);
         default: name = ""; break;
     }
 }
@@ -1213,5 +1214,42 @@ TimeZoneFormatTest::TestFormatTZDBNames(void) {
     }
 }
 
+void
+TimeZoneFormatTest::TestFormatCustomZone(void) {
+    struct {
+        const char* id;
+        int32_t offset;
+        const char* expected;
+    } TESTDATA[] = {
+        { "abc", 3600000, "GMT+01:00" },                    // unknown ID
+        { "$abc", -3600000, "GMT-01:00" },                 // unknown, with ASCII variant char '$'
+        { "\\u00c1\\u00df\\u00c7", 5400000, "GMT+01:30"},    // unknown, with non-ASCII chars
+        { 0, 0, 0 }
+    };
+
+    UDate now = Calendar::getNow();
+
+    for (int32_t i = 0; ; i++) {
+        const char *id = TESTDATA[i].id;
+        if (id == 0) {
+            break;
+        }
+        UnicodeString tzid = UnicodeString(id, -1, US_INV).unescape();
+        SimpleTimeZone tz(TESTDATA[i].offset, tzid);
+
+        UErrorCode status = U_ZERO_ERROR;
+        LocalPointer<TimeZoneFormat> tzfmt(TimeZoneFormat::createInstance(Locale("en"), status));
+        if (tzfmt.isNull()) {
+            dataerrln("FAIL: TimeZoneFormat::createInstance failed for en");
+            return;
+        }
+        UnicodeString tzstr;
+        UnicodeString expected = UnicodeString(TESTDATA[i].expected, -1, US_INV).unescape();
+
+        tzfmt->format(UTZFMT_STYLE_SPECIFIC_LONG, tz, now, tzstr, NULL);
+        assertEquals(UnicodeString("Format result for ") + tzid, expected, tzstr);
+    }
+}
+
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
index fd2da58..0bf91ae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -27,6 +27,7 @@ class TimeZoneFormatTest : public IntlTest {
     void TestISOFormat(void);
     void TestFormat(void);
     void TestFormatTZDBNames(void);
+    void TestFormatCustomZone(void);
 
     void RunTimeRoundTripTests(int32_t threadNumber);
 };
index 146c109..1402469 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index fa731b9..55b4d86 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0bb0292..b749c2d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index 284dc59..2d7f7ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d98ed52..cc699bb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -18,6 +18,7 @@
 #include "unicode/tzrule.h"
 #include "unicode/calendar.h"
 #include "unicode/gregocal.h"
+#include "unicode/strenum.h"
 #include "unicode/ucal.h"
 #include "unicode/unistr.h"
 #include "unicode/ustring.h"
index a897d50..e677238 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 00a6707..3ab04d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
@@ -138,8 +138,11 @@ TimeZoneTest::TestGenericAPI()
     }
 
     TimeZone* hostZone = TimeZone::detectHostTimeZone();
+    int32_t hostZoneRawOffset = hostZone->getRawOffset();
+    logln("hostZone->getRawOffset() = %d , tzoffset = %d", hostZoneRawOffset, tzoffset * (-1000));
+
     /* Host time zone's offset should match the offset returned by uprv_timezone() */
-    if (hostZone->getRawOffset() != tzoffset * (-1000)) {
+    if (hostZoneRawOffset != tzoffset * (-1000)) {
         errln("FAIL: detectHostTimeZone()'s raw offset != host timezone's offset");
     }
     delete hostZone;
@@ -1205,31 +1208,43 @@ TimeZoneTest::TestAliasedNames()
         /* Generated by org.unicode.cldr.tool.CountItems */
 
         /* zoneID, canonical zoneID */
-        {"Africa/Timbuktu", "Africa/Bamako"},
+        {"Africa/Asmara", "Africa/Addis_Ababa"},
+        {"Africa/Timbuktu", "Africa/Abidjan"},
         {"America/Argentina/Buenos_Aires", "America/Buenos_Aires"},
         {"America/Argentina/Catamarca", "America/Catamarca"},
         {"America/Argentina/ComodRivadavia", "America/Catamarca"},
         {"America/Argentina/Cordoba", "America/Cordoba"},
         {"America/Argentina/Jujuy", "America/Jujuy"},
         {"America/Argentina/Mendoza", "America/Mendoza"},
+        {"America/Atikokan", "America/Coral_Harbour"},
         {"America/Atka", "America/Adak"},
         {"America/Ensenada", "America/Tijuana"},
-        {"America/Fort_Wayne", "America/Indiana/Indianapolis"},
-        {"America/Indianapolis", "America/Indiana/Indianapolis"},
+        {"America/Fort_Wayne", "America/Indianapolis"},
+        {"America/Indiana/Indianapolis", "America/Indianapolis"},
+        {"America/Kentucky/Louisville", "America/Louisville"},
         {"America/Knox_IN", "America/Indiana/Knox"},
-        {"America/Louisville", "America/Kentucky/Louisville"},
         {"America/Porto_Acre", "America/Rio_Branco"},
         {"America/Rosario", "America/Cordoba"},
-        {"America/Virgin", "America/St_Thomas"},
+        {"America/Shiprock", "America/Denver"},
+        {"America/Virgin", "America/Anguilla"},
+        {"Antarctica/South_Pole", "Antarctica/McMurdo"},
         {"Asia/Ashkhabad", "Asia/Ashgabat"},
-        {"Asia/Chungking", "Asia/Chongqing"},
+        {"Asia/Chongqing", "Asia/Shanghai"},
+        {"Asia/Chungking", "Asia/Shanghai"},
         {"Asia/Dacca", "Asia/Dhaka"},
+        {"Asia/Harbin", "Asia/Shanghai"},
+        {"Asia/Ho_Chi_Minh", "Asia/Saigon"},
         {"Asia/Istanbul", "Europe/Istanbul"},
+        {"Asia/Kashgar", "Asia/Urumqi"},
+        {"Asia/Kathmandu", "Asia/Katmandu"},
+        {"Asia/Kolkata", "Asia/Calcutta"},
         {"Asia/Macao", "Asia/Macau"},
         {"Asia/Tel_Aviv", "Asia/Jerusalem"},
         {"Asia/Thimbu", "Asia/Thimphu"},
         {"Asia/Ujung_Pandang", "Asia/Makassar"},
         {"Asia/Ulan_Bator", "Asia/Ulaanbaatar"},
+        {"Atlantic/Faroe", "Atlantic/Faeroe"},
+        {"Atlantic/Jan_Mayen", "Arctic/Longyearbyen"},
         {"Australia/ACT", "Australia/Sydney"},
         {"Australia/Canberra", "Australia/Sydney"},
         {"Australia/LHI", "Australia/Lord_Howe"},
@@ -1257,16 +1272,16 @@ TimeZoneTest::TestAliasedNames()
         {"Chile/Continental", "America/Santiago"},
         {"Chile/EasterIsland", "Pacific/Easter"},
         {"Cuba", "America/Havana"},
+        {"EST", "Etc/GMT+5"},
         {"Egypt", "Africa/Cairo"},
         {"Eire", "Europe/Dublin"},
         {"Etc/GMT+0", "Etc/GMT"},
         {"Etc/GMT-0", "Etc/GMT"},
         {"Etc/GMT0", "Etc/GMT"},
         {"Etc/Greenwich", "Etc/GMT"},
-        {"Etc/UCT", "Etc/GMT"},
-        {"Etc/UTC", "Etc/GMT"},
-        {"Etc/Universal", "Etc/GMT"},
-        {"Etc/Zulu", "Etc/GMT"},
+        {"Etc/UCT", "Etc/UTC"},
+        {"Etc/Universal", "Etc/UTC"},
+        {"Etc/Zulu", "Etc/UTC"},
         {"Europe/Belfast", "Europe/London"},
         {"Europe/Nicosia", "Asia/Nicosia"},
         {"Europe/Tiraspol", "Europe/Chisinau"},
@@ -1277,6 +1292,7 @@ TimeZoneTest::TestAliasedNames()
         {"GMT-0", "Etc/GMT"},
         {"GMT0", "Etc/GMT"},
         {"Greenwich", "Etc/GMT"},
+        {"HST", "Etc/GMT+10"},
         {"Hongkong", "Asia/Hong_Kong"},
         {"Iceland", "Atlantic/Reykjavik"},
         {"Iran", "Asia/Tehran"},
@@ -1285,27 +1301,37 @@ TimeZoneTest::TestAliasedNames()
         {"Japan", "Asia/Tokyo"},
         {"Kwajalein", "Pacific/Kwajalein"},
         {"Libya", "Africa/Tripoli"},
+        {"MST", "Etc/GMT+7"},
         {"Mexico/BajaNorte", "America/Tijuana"},
         {"Mexico/BajaSur", "America/Mazatlan"},
         {"Mexico/General", "America/Mexico_City"},
-        {"NZ", "Pacific/Auckland"},
+        {"NZ", "Antarctica/McMurdo"},
         {"NZ-CHAT", "Pacific/Chatham"},
-        {"Navajo", "America/Shiprock"},
+        {"Navajo", "America/Denver"},
         {"PRC", "Asia/Shanghai"},
-        {"Pacific/Samoa", "Pacific/Pago_Pago"},
+        {"Pacific/Chuuk", "Pacific/Truk"},
+        {"Pacific/Pohnpei", "Pacific/Ponape"},
+        {"Pacific/Samoa", "Pacific/Midway"},
         {"Pacific/Yap", "Pacific/Truk"},
         {"Poland", "Europe/Warsaw"},
         {"Portugal", "Europe/Lisbon"},
         {"ROC", "Asia/Taipei"},
         {"ROK", "Asia/Seoul"},
         {"Singapore", "Asia/Singapore"},
+        {"SystemV/AST4", "Etc/GMT+4"},
+        {"SystemV/CST6", "Etc/GMT+6"},
+        {"SystemV/EST5", "Etc/GMT+5"},
+        {"SystemV/HST10", "Etc/GMT+10"},
+        {"SystemV/MST7", "Etc/GMT+7"},
+        {"SystemV/PST8", "Etc/GMT+8"},
+        {"SystemV/YST9", "Etc/GMT+9"},
         {"Turkey", "Europe/Istanbul"},
-        {"UCT", "Etc/GMT"},
+        {"UCT", "Etc/UTC"},
         {"US/Alaska", "America/Anchorage"},
         {"US/Aleutian", "America/Adak"},
         {"US/Arizona", "America/Phoenix"},
         {"US/Central", "America/Chicago"},
-        {"US/East-Indiana", "America/Indiana/Indianapolis"},
+        {"US/East-Indiana", "America/Indianapolis"},
         {"US/Eastern", "America/New_York"},
         {"US/Hawaii", "Pacific/Honolulu"},
         {"US/Indiana-Starke", "America/Indiana/Knox"},
@@ -1313,13 +1339,12 @@ TimeZoneTest::TestAliasedNames()
         {"US/Mountain", "America/Denver"},
         {"US/Pacific", "America/Los_Angeles"},
         {"US/Pacific-New", "America/Los_Angeles"},
-        {"US/Samoa", "Pacific/Pago_Pago"},
-        {"UTC", "Etc/GMT"},
-        {"Universal", "Etc/GMT"},
+        {"US/Samoa", "Pacific/Midway"},
+        {"UTC", "Etc/UTC"},
+        {"Universal", "Etc/UTC"},
         {"W-SU", "Europe/Moscow"},
-        {"Zulu", "Etc/GMT"},
-        /* Total: 113 */
-
+        {"Zulu", "Etc/UTC"},
+        /* Total: 136 */
     };
 
     TimeZone::EDisplayType styles[] = { TimeZone::SHORT, TimeZone::LONG };
index e41fed9..99a44fe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index 50beb8c..e239ccf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index a0317b1..69294af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index b693f7d..ed7edc9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines Corporation and
index 4e8f10e..0f3966d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines Corporation and
index cb2ca3c..816a67a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstrietest.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index abbbae9..762194a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index fc3c4e2..b1d6738 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -384,13 +384,11 @@ void UObjectTest::testIDs()
     TESTCLASSID_FACTORY(IndianCalendar, Calendar::createInstance(Locale("@calendar=indian"), status));
     TESTCLASSID_FACTORY(ChineseCalendar, Calendar::createInstance(Locale("@calendar=chinese"), status));
     TESTCLASSID_FACTORY(TaiwanCalendar, Calendar::createInstance(Locale("@calendar=roc"), status));
-#if U_PLATFORM_HAS_WIN32_API
-    TESTCLASSID_FACTORY(Win32DateFormat, DateFormat::createDateInstance(DateFormat::kFull, Locale("@compat=host")));
 #if U_PLATFORM_USES_ONLY_WIN32_API
+    TESTCLASSID_FACTORY(Win32DateFormat, DateFormat::createDateInstance(DateFormat::kFull, Locale("@compat=host")));
     TESTCLASSID_FACTORY(Win32NumberFormat, NumberFormat::createInstance(Locale("@compat=host"), status));
 #endif
 #endif
-#endif
 
 #if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILE_IO
     /* TESTCLASSID_ABSTRACT(BreakIterator); No staticID!  */
index 93ef4b0..b4c13f9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d8e1160..4085117 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index dec48f9..45c6dfd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index 96be030..d3734fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -13,6 +13,7 @@
 #include "unicode/uchar.h"
 #include "unicode/ustring.h"
 #include "unicode/locid.h"
+#include "unicode/strenum.h"
 #include "unicode/ucnv.h"
 #include "unicode/uenum.h"
 #include "unicode/utf16.h"
@@ -29,11 +30,13 @@ using namespace std;
 
 UnicodeStringTest::~UnicodeStringTest() {}
 
+extern IntlTest *createStringCaseTest();
+
 void UnicodeStringTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char *par)
 {
     if (exec) logln("TestSuite UnicodeStringTest: ");
     TESTCASE_AUTO_BEGIN;
-    TESTCASE_AUTO_CLASS(StringCaseTest);
+    TESTCASE_AUTO_CREATE_CLASS(StringCaseTest);
     TESTCASE_AUTO(TestBasicManipulation);
     TESTCASE_AUTO(TestCompare);
     TESTCASE_AUTO(TestExtract);
@@ -58,6 +61,9 @@ void UnicodeStringTest::runIndexedTest( int32_t index, UBool exec, const char* &
     TESTCASE_AUTO(TestSizeofUnicodeString);
     TESTCASE_AUTO(TestStartsWithAndEndsWithNulTerminated);
     TESTCASE_AUTO(TestMoveSwap);
+    TESTCASE_AUTO(TestUInt16Pointers);
+    TESTCASE_AUTO(TestWCharPointers);
+    TESTCASE_AUTO(TestNullPointers);
     TESTCASE_AUTO_END;
 }
 
@@ -1551,7 +1557,10 @@ UnicodeStringTest::TestBogus() {
 
     // writable alias to another string's buffer: very bad idea, just convenient for this test
     test3.setToBogus();
-    if(!test3.isBogus() || test3.setTo((UChar *)test1.getBuffer(), test1.length(), test1.getCapacity()).isBogus() || test3!=test1) {
+    if(!test3.isBogus() ||
+            test3.setTo(const_cast<UChar *>(test1.getBuffer()),
+                        test1.length(), test1.getCapacity()).isBogus() ||
+            test3!=test1) {
         errln("bogus.setTo(writable alias) failed");
     }
 
@@ -1606,8 +1615,8 @@ UnicodeStringTest::TestBogus() {
     // test that NULL primitive input string values are treated like
     // empty strings, not errors (bogus)
     test2.setTo((UChar32)0x10005);
-    if(test2.insert(1, NULL, 1).length()!=2) {
-        errln("UniStr.insert(...NULL...) should not modify the string but does");
+    if(test2.insert(1, nullptr, 1).length()!=2) {
+        errln("UniStr.insert(...nullptr...) should not modify the string but does");
     }
 
     UErrorCode errorCode=U_ZERO_ERROR;
@@ -1885,13 +1894,11 @@ UnicodeStringTest::TestUTF8() {
     if(from8 != expected) {
         errln("UnicodeString::fromUTF8(StringPiece) did not create the expected string.");
     }
-#if U_HAVE_STD_STRING
     std::string utf8_string((const char *)utf8, sizeof(utf8));
     UnicodeString from8b = UnicodeString::fromUTF8(utf8_string);
     if(from8b != expected) {
         errln("UnicodeString::fromUTF8(std::string) did not create the expected string.");
     }
-#endif
 
     static const UChar utf16[] = {
         0x41, 0xd900, 0x61, 0xdc00, 0x5a, 0xd900, 0xdc00, 0x7a, 0xd800, 0xdc00, 0xdbff, 0xdfff
@@ -1913,7 +1920,6 @@ UnicodeStringTest::TestUTF8() {
     if(!sink.calledFlush) {
         errln("UnicodeString::toUTF8(sink) did not sink.Flush().");
     }
-#if U_HAVE_STD_STRING
     // Initial contents for testing that toUTF8String() appends.
     std::string result8 = "-->";
     std::string expected8 = "-->" + std::string((const char *)expected_utf8, sizeof(expected_utf8));
@@ -1922,7 +1928,6 @@ UnicodeStringTest::TestUTF8() {
     if(result8r != expected8 || &result8r != &result8) {
         errln("UnicodeString::toUTF8String() did not create the expected string.");
     }
-#endif
 }
 
 // Test if this compiler supports Return Value Optimization of unnamed temporary objects.
@@ -2187,3 +2192,64 @@ UnicodeStringTest::TestMoveSwap() {
         errln("UnicodeString copy after self-move did not work");
     }
 }
+
+void
+UnicodeStringTest::TestUInt16Pointers() {
+    static const uint16_t carr[] = { 0x61, 0x62, 0x63, 0 };
+    uint16_t arr[4];
+
+    UnicodeString expected(u"abc");
+    assertEquals("abc from pointer", expected, UnicodeString(carr));
+    assertEquals("abc from pointer+length", expected, UnicodeString(carr, 3));
+    assertEquals("abc from read-only-alias pointer", expected, UnicodeString(TRUE, carr, 3));
+
+    UnicodeString alias(arr, 0, 4);
+    alias.append(u'a').append(u'b').append(u'c');
+    assertEquals("abc from writable alias", expected, alias);
+    assertEquals("buffer=abc from writable alias", expected, UnicodeString(arr, 3));
+
+    UErrorCode errorCode = U_ZERO_ERROR;
+    int32_t length = UnicodeString(u"def").extract(arr, 4, errorCode);
+    TEST_ASSERT_STATUS(errorCode);
+    assertEquals("def from extract()", UnicodeString(u"def"), UnicodeString(arr, length));
+}
+
+void
+UnicodeStringTest::TestWCharPointers() {
+#if U_SIZEOF_WCHAR_T==2
+    static const wchar_t carr[] = { 0x61, 0x62, 0x63, 0 };
+    wchar_t arr[4];
+
+    UnicodeString expected(u"abc");
+    assertEquals("abc from pointer", expected, UnicodeString(carr));
+    assertEquals("abc from pointer+length", expected, UnicodeString(carr, 3));
+    assertEquals("abc from read-only-alias pointer", expected, UnicodeString(TRUE, carr, 3));
+
+    UnicodeString alias(arr, 0, 4);
+    alias.append(u'a').append(u'b').append(u'c');
+    assertEquals("abc from writable alias", expected, alias);
+    assertEquals("buffer=abc from writable alias", expected, UnicodeString(arr, 3));
+
+    UErrorCode errorCode = U_ZERO_ERROR;
+    int32_t length = UnicodeString(u"def").extract(arr, 4, errorCode);
+    TEST_ASSERT_STATUS(errorCode);
+    assertEquals("def from extract()", UnicodeString(u"def"), UnicodeString(arr, length));
+#endif
+}
+
+void
+UnicodeStringTest::TestNullPointers() {
+    assertTrue("empty from nullptr", UnicodeString(nullptr).isEmpty());
+    assertTrue("empty from nullptr+length", UnicodeString(nullptr, 2).isEmpty());
+    assertTrue("empty from read-only-alias nullptr", UnicodeString(TRUE, nullptr, 3).isEmpty());
+
+    UnicodeString alias(nullptr, 4, 4);  // empty, no alias
+    assertTrue("empty from writable alias", alias.isEmpty());
+    alias.append(u'a').append(u'b').append(u'c');
+    UnicodeString expected(u"abc");
+    assertEquals("abc from writable alias", expected, alias);
+
+    UErrorCode errorCode = U_ZERO_ERROR;
+    UnicodeString(u"def").extract(nullptr, 0, errorCode);
+    assertEquals("buffer overflow extracting to nullptr", U_BUFFER_OVERFLOW_ERROR, errorCode);
+}
index 37b3a88..4ba348c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -92,32 +92,10 @@ public:
     void TestUnicodeStringImplementsAppendable();
     void TestSizeofUnicodeString();
     void TestMoveSwap();
-};
-
-class StringCaseTest: public IntlTest {
-public:
-    StringCaseTest();
-    virtual ~StringCaseTest();
-
-    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
-
-    void TestCaseConversion();
-
-    void TestCasingImpl(const UnicodeString &input,
-                        const UnicodeString &output,
-                        int32_t whichCase,
-                        void *iter, const char *localeID, uint32_t options);
-    void TestCasing();
-    void TestFullCaseFoldingIterator();
-    void TestGreekUpper();
-    void TestLongUpper();
-    void TestMalformedUTF8();
-    void TestBufferOverflow();
-
-private:
-    void assertGreekUpper(const char *s, const char *expected);
 
-    Locale GREEK_LOCALE_;
+    void TestUInt16Pointers();
+    void TestWCharPointers();
+    void TestNullPointers();
 };
 
 #endif
index fdc1628..077dadf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uts46test.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -830,8 +830,7 @@ void UTS46Test::TestSomeCases() {
                 continue;
             }
         }
-        // UTF-8 if we have std::string
-#if U_HAVE_STD_STRING
+        // UTF-8
         std::string input8, aT8, uT8, aN8, uN8;
         StringByteSink<std::string> aT8Sink(&aT8), uT8Sink(&uT8), aN8Sink(&aN8), uN8Sink(&uN8);
         IDNAInfo aT8Info, uT8Info, aN8Info, uN8Info;
@@ -879,7 +878,6 @@ void UTS46Test::TestSomeCases() {
                   testCase.o, (int)i, testCase.s);
             continue;
         }
-#endif
     }
 }
 
index 762c799..91d86a8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -67,6 +67,8 @@ UTextTest::runIndexedTest(int32_t index, UBool exec,
             if (exec) Ticket10983();  break;
         case 7: name = "Ticket12130";
             if (exec) Ticket12130(); break;
+        case 8: name = "Ticket12888";
+            if (exec) Ticket12888(); break;
         default: name = "";          break;
     }
 }
@@ -1583,3 +1585,63 @@ void UTextTest::Ticket12130() {
     }
     utext_close(&ut);
 }
+
+// Ticket 12888: bad handling of illegal utf-8 containing many instances of the archaic, now illegal,
+//               six byte utf-8 forms. Original implementation had an assumption that
+//               there would be at most three utf-8 bytes per UTF-16 code unit.
+//               The five and six byte sequences map to a single replacement character.
+
+void UTextTest::Ticket12888() {
+    const char *badString = 
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
+            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80";
+
+    UErrorCode status = U_ZERO_ERROR;
+    LocalUTextPointer ut(utext_openUTF8(NULL, badString, -1, &status));
+    TEST_SUCCESS(status);
+    for (;;) {
+        UChar32 c = utext_next32(ut.getAlias());
+        if (c == U_SENTINEL) {
+            break;
+        }
+    }
+    int32_t endIdx = utext_getNativeIndex(ut.getAlias());
+    if (endIdx != (int32_t)strlen(badString)) {
+        errln("%s:%d expected=%d, actual=%d", __FILE__, __LINE__, strlen(badString), endIdx);
+        return;
+    }
+
+    for (int32_t prevIndex = endIdx; prevIndex>0;) {
+        UChar32 c = utext_previous32(ut.getAlias());
+        int32_t currentIndex = utext_getNativeIndex(ut.getAlias());
+        if (c != 0xfffd) {
+            errln("%s:%d (expected, actual, index) = (%d, %d, %d)\n",
+                    __FILE__, __LINE__, 0xfffd, c, currentIndex);
+            break;
+        }
+        if (currentIndex != prevIndex - 6) {
+            errln("%s:%d: wrong index. Expected, actual = %d, %d",
+                    __FILE__, __LINE__, prevIndex - 6, currentIndex);
+            break;
+        }
+        prevIndex = currentIndex;
+    }
+}
index 5884522..26bb93c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -38,6 +38,7 @@ public:
     void Ticket10562();
     void Ticket10983();
     void Ticket12130();
+    void Ticket12888();
 
 private:
     struct m {                              // Map between native indices & code points.
index 2b71eb0..4b73b56 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index c55f087..abf6e10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 4dce6b9..85567c0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 0af8e24..dc710d9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index f705689..467ddb7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -13,7 +13,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
 
 #if !UCONFIG_NO_FORMATTING
 
@@ -28,6 +28,8 @@
 #include "winutil.h"
 #include "windttst.h"
 
+#include "dtfmttst.h"
+
 #include "cmemory.h"
 #include "cstring.h"
 #include "locmap.h"
@@ -66,7 +68,7 @@ static const char *getCalendarType(int32_t type)
     }
 }
 
-void Win32DateTimeTest::testLocales(TestLog *log)
+void Win32DateTimeTest::testLocales(DateFormatTest *log)
 {
     SYSTEMTIME winNow;
     UDate icuNow = 0;
@@ -118,6 +120,21 @@ void Win32DateTimeTest::testLocales(TestLog *log)
             continue;
         }
 
+        // Some locales have had their names change over various OS releases; skip them in the test for now.
+        int32_t failingLocaleLCIDs[] = {
+            0x040a, /* es-ES_tradnl;es-ES-u-co-trad; */
+            0x048c, /* fa-AF;prs-AF;prs-Arab-AF; */
+            0x046b, /* qu-BO;quz-BO;quz-Latn-BO; */
+            0x086b, /* qu-EC;quz-EC;quz-Latn-EC; */
+            0x0c6b, /* qu-PE;quz-PE;quz-Latn-PE; */
+            0x0492  /* ckb-IQ;ku-Arab-IQ; */
+        };
+        bool skip = (std::find(std::begin(failingLocaleLCIDs), std::end(failingLocaleLCIDs), lcidRecords[i].lcid) != std::end(failingLocaleLCIDs));
+        if (skip && log->logKnownIssue("13119", "Windows '@compat=host' fails on down-level versions of the OS")) {
+            log->logln("ticket:13119 - Skipping LCID = 0x%04x", lcidRecords[i].lcid);
+            continue;
+        }
+
         GetLocaleInfoW(lcidRecords[i].lcid, LOCALE_SLONGDATE,   longDateFormat, 81);
         GetLocaleInfoW(lcidRecords[i].lcid, LOCALE_STIMEFORMAT, longTimeFormat, 81);
         GetLocaleInfoW(lcidRecords[i].lcid, LOCALE_RETURN_NUMBER|LOCALE_ICALENDARTYPE, (LPWSTR) calType, sizeof(int32_t));
@@ -193,4 +210,4 @@ void Win32DateTimeTest::testLocales(TestLog *log)
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
-#endif /* U_PLATFORM_HAS_WIN32_API */
+#endif /* U_PLATFORM_USES_ONLY_WIN32_API */
index 02fc6df..a685e64 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -16,7 +16,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
 
 #if !UCONFIG_NO_FORMATTING
 
  * \brief C++ API: Format dates using Windows API.
  */
 
-class TestLog;
+class DateFormatTest;
 
 class Win32DateTimeTest
 {
 public:
-    static void testLocales(TestLog *log);
+    static void testLocales(DateFormatTest *log);
 
 private:
     Win32DateTimeTest();
@@ -38,6 +38,6 @@ private:
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
-#endif // U_PLATFORM_HAS_WIN32_API
+#endif // U_PLATFORM_USES_ONLY_WIN32_API
 
 #endif // __WINDTTST
index 12c25f8..b65ad73 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -28,6 +28,8 @@
 #include "winutil.h"
 #include "winnmtst.h"
 
+#include "numfmtst.h"
+
 #include "cmemory.h"
 #include "cstring.h"
 #include "locmap.h"
@@ -268,7 +270,7 @@ static void testLocale(const char *localeID, int32_t lcid, NumberFormat *wnf, UB
     }
 }
 
-void Win32NumberTest::testLocales(TestLog *log)
+void Win32NumberTest::testLocales(NumberFormatTest *log)
 {
     int32_t lcidCount = 0;
     Win32Utilities::LCIDRecord *lcidRecords = Win32Utilities::getLocales(lcidCount);
@@ -282,6 +284,21 @@ void Win32NumberTest::testLocales(TestLog *log)
             continue;
         }
 
+        // Some locales have had their names change over various OS releases; skip them in the test for now.
+        int32_t failingLocaleLCIDs[] = {
+            0x040a, /* es-ES_tradnl;es-ES-u-co-trad; */
+            0x048c, /* fa-AF;prs-AF;prs-Arab-AF; */
+            0x046b, /* qu-BO;quz-BO;quz-Latn-BO; */
+            0x086b, /* qu-EC;quz-EC;quz-Latn-EC; */
+            0x0c6b, /* qu-PE;quz-PE;quz-Latn-PE; */
+            0x0492  /* ckb-IQ;ku-Arab-IQ; */
+        };
+        bool skip = (std::find(std::begin(failingLocaleLCIDs), std::end(failingLocaleLCIDs), lcidRecords[i].lcid) != std::end(failingLocaleLCIDs));
+        if (skip && log->logKnownIssue("13119", "Windows '@compat=host' fails on down-level versions of the OS")) {
+            log->logln("ticket:13119 - Skipping LCID = 0x%04x", lcidRecords[i].lcid);
+            continue;
+        }
+
         strcpy(localeID, lcidRecords[i].localeID);
 
         if (strchr(localeID, '@') > 0) {
index 45b12b9..84d276a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
  * \brief C++ API: Format dates using Windows API.
  */
 
-class TestLog;
+class NumberFormatTest;
 
 class Win32NumberTest
 {
 public:
-    static void testLocales(TestLog *log);
+    static void testLocales(NumberFormatTest *log);
 
 private:
     Win32NumberTest();
index df104e9..87b2d40 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -36,6 +36,7 @@ static Win32Utilities::LCIDRecord *lcidRecords = NULL;
 static int32_t lcidCount  = 0;
 static int32_t lcidMax = 0;
 
+// TODO: Note that this test will skip locale names and only hit locales with assigned LCIDs
 BOOL CALLBACK EnumLocalesProc(LPSTR lpLocaleString)
 {
     char localeID[ULOC_FULLNAME_CAPACITY];
@@ -70,6 +71,7 @@ BOOL CALLBACK EnumLocalesProc(LPSTR lpLocaleString)
     return TRUE;
 }
 
+// TODO: Note that this test will skip locale names and only hit locales with assigned LCIDs
 Win32Utilities::LCIDRecord *Win32Utilities::getLocales(int32_t &localeCount)
 {
     LCIDRecord *result;
index 92159cf..9cdae02 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 192e4b3..9d2b94c 100644 (file)
@@ -34,7 +34,7 @@ BUILDDIR := $(BUILDDIR:test\\iotest/../../=)
 # Simplify the path for Windows 98
 BUILDDIR := $(BUILDDIR:TEST\\IOTEST/../../=)
 
-CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/io
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/io
 CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT=
 DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
 LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUIO) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
index d8edff7..12646e6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  **********************************************************************
  *   file name:  filetst.c
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index ac5865f..f8dc96d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  iotest.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 19d7434..514575e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  **********************************************************************
  *   file name:  iotest.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index c0502cd..d454744 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{E4993E82-D68A-46CA-BAE0-9D35E172E46F}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/iotest.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/iotest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/iotest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/iotest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/iotest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/iotest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/iotest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/iotest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/iotest.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/iotest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/iotest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/iotest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/iotest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/iotest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/iotest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/iotest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="filetst.c" />\r
-    <ClCompile Include="iotest.cpp" />\r
-    <ClCompile Include="stream.cpp">\r
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>\r
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>\r
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>\r
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>\r
-    </ClCompile>\r
-    <ClCompile Include="strtst.c" />\r
-    <ClCompile Include="trnstst.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="iotest.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\io\io.vcxproj">\r
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\tools\ctestfw\ctestfw.vcxproj">\r
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E4993E82-D68A-46CA-BAE0-9D35E172E46F}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/iotest.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/iotest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/iotest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/iotest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/iotest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/iotest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/iotest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/iotest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/iotest.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/iotest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/iotest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/iotest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/iotest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/iotest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/iotest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/iotest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="filetst.c" />
+    <ClCompile Include="iotest.cpp" />
+    <ClCompile Include="stream.cpp">
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
+    </ClCompile>
+    <ClCompile Include="strtst.c" />
+    <ClCompile Include="trnstst.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="iotest.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\io\io.vcxproj">
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tools\ctestfw\ctestfw.vcxproj">
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 23d44b9..424d4e3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  iotest.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -106,12 +106,12 @@ static void U_CALLCONV TestStream(void)
 
     inTestStream >> inStr >> inStr2;
     if (inStr.compare(thisMu) != 0) {
-        u_austrncpy(inStrC, inStr.getBuffer(), inStr.length());
+        u_austrncpy(inStrC, toUCharPtr(inStr.getBuffer()), inStr.length());
         inStrC[inStr.length()] = 0;
         log_err("Got: \"%s\", Expected: \"tHis\\u03BC\"\n", inStrC);
     }
     if (inStr2.compare(mu) != 0) {
-        u_austrncpy(inStrC, inStr.getBuffer(), inStr.length());
+        u_austrncpy(inStrC, toUCharPtr(inStr.getBuffer()), inStr.length());
         inStrC[inStr.length()] = 0;
         log_err("Got: \"%s\", Expected: \"mu\"\n", inStrC);
     }
index 5cf0dc4..ce38aff 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  strtst.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a4e910e..be32143 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 7d9e482..459a1a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index e3d8e81..e8c9c9d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index 0db3ead..03c273f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 9a8ae99..b91a75d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 4021c50..26c7fbd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index effb619..a8d8634 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /*
index 26d76ec..5c46103 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 77ed047..521cb88 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 9314763..07af957 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index e3d77a1..efa1286 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index 673dfad..3839d1e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index e28e04d..804c6a3 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{798E3AE4-A984-43FF-8928-EACFF43F56AE}</ProjectGuid>\r
-    <RootNamespace>cletest</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir).\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir).\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;..\..\..\lib\icutestd.lib;..\..\..\lib\icutud.lib;..\..\..\lib\iculed.lib;..\..\..\lib\iculxd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>NotSet</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib\icuuc.lib;..\..\..\lib\icuin.lib;..\..\..\lib\icutest.lib;..\..\..\lib\icutu.lib;..\..\..\lib\icule.lib;..\..\..\lib\iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>NotSet</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib64\icuucd.lib;..\..\..\lib64\icuind.lib;..\..\..\lib64\icutestd.lib;..\..\..\lib64\icutud.lib;..\..\..\lib64\iculed.lib;..\..\..\lib64\iculxd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib64\icuuc.lib;..\..\..\lib64\icuin.lib;..\..\..\lib64\icutest.lib;..\..\..\lib64\icutu.lib;..\..\..\lib64\icule.lib;..\..\..\lib64\iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="cfonts.cpp" />\r
-    <ClCompile Include="cletest.c" />\r
-    <ClCompile Include="cmaps.cpp" />\r
-    <ClCompile Include="FontObject.cpp" />\r
-    <ClCompile Include="FontTableCache.cpp" />\r
-    <ClCompile Include="letest.cpp" />\r
-    <ClCompile Include="letsutil.cpp" />\r
-    <ClCompile Include="PortableFontInstance.cpp" />\r
-    <ClCompile Include="SimpleFontInstance.cpp" />\r
-    <ClCompile Include="xmlreader.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="cfonts.h" />\r
-    <ClInclude Include="cmaps.h" />\r
-    <ClInclude Include="FontObject.h" />\r
-    <ClInclude Include="FontTableCache.h" />\r
-    <ClInclude Include="letest.h" />\r
-    <ClInclude Include="letsutil.h" />\r
-    <ClInclude Include="PortableFontInstance.h" />\r
-    <ClInclude Include="sfnt.h" />\r
-    <ClInclude Include="SimpleFontInstance.h" />\r
-    <ClInclude Include="xmlreader.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{798E3AE4-A984-43FF-8928-EACFF43F56AE}</ProjectGuid>
+    <RootNamespace>cletest</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir).\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir).\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;..\..\..\lib\icutestd.lib;..\..\..\lib\icutud.lib;..\..\..\lib\iculed.lib;..\..\..\lib\iculxd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>NotSet</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib\icuuc.lib;..\..\..\lib\icuin.lib;..\..\..\lib\icutest.lib;..\..\..\lib\icutu.lib;..\..\..\lib\icule.lib;..\..\..\lib\iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>NotSet</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib64\icuucd.lib;..\..\..\lib64\icuind.lib;..\..\..\lib64\icutestd.lib;..\..\..\lib64\icutud.lib;..\..\..\lib64\iculed.lib;..\..\..\lib64\iculxd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib64\icuuc.lib;..\..\..\lib64\icuin.lib;..\..\..\lib64\icutest.lib;..\..\..\lib64\icutu.lib;..\..\..\lib64\icule.lib;..\..\..\lib64\iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="cfonts.cpp" />
+    <ClCompile Include="cletest.c" />
+    <ClCompile Include="cmaps.cpp" />
+    <ClCompile Include="FontObject.cpp" />
+    <ClCompile Include="FontTableCache.cpp" />
+    <ClCompile Include="letest.cpp" />
+    <ClCompile Include="letsutil.cpp" />
+    <ClCompile Include="PortableFontInstance.cpp" />
+    <ClCompile Include="SimpleFontInstance.cpp" />
+    <ClCompile Include="xmlreader.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="cfonts.h" />
+    <ClInclude Include="cmaps.h" />
+    <ClInclude Include="FontObject.h" />
+    <ClInclude Include="FontTableCache.h" />
+    <ClInclude Include="letest.h" />
+    <ClInclude Include="letsutil.h" />
+    <ClInclude Include="PortableFontInstance.h" />
+    <ClInclude Include="sfnt.h" />
+    <ClInclude Include="SimpleFontInstance.h" />
+    <ClInclude Include="xmlreader.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 9684b5f..382799a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index ebdca44..875bb97 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index 35977e8..a9c5da5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index d75da2e..0e564b9 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{DA322426-C37C-4909-A99D-16B05E7FA498}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/gendata.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gendata.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib\iculed.lib;..\..\..\lib\icuucd.lib;..\..\..\lib\icutud.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/gendata.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/gendata.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/gendata.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gendata.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib64\iculed.lib;..\..\..\lib64\icuucd.lib;..\..\..\lib64\icutud.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/gendata.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/gendata.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/gendata.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/gendata.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib\icule.lib;..\..\..\lib\icuuc.lib;..\..\..\lib\icutu.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/gendata.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/gendata.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/gendata.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/gendata.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>..\..\..\lib64\icule.lib;..\..\..\lib64\icuuc.lib;..\..\..\lib64\icutu.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/gendata.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/gendata.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="cmaps.cpp" />\r
-    <ClCompile Include="FontTableCache.cpp" />\r
-    <ClCompile Include="gendata.cpp" />\r
-    <ClCompile Include="letsutil.cpp" />\r
-    <ClCompile Include="PortableFontInstance.cpp" />\r
-    <ClCompile Include="SimpleFontInstance.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="cmaps.h" />\r
-    <ClInclude Include="FontTableCache.h" />\r
-    <ClInclude Include="letest.h" />\r
-    <ClInclude Include="letsutil.h" />\r
-    <ClInclude Include="PortableFontInstance.h" />\r
-    <ClInclude Include="sfnt.h" />\r
-    <ClInclude Include="SimpleFontInstance.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{DA322426-C37C-4909-A99D-16B05E7FA498}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/gendata.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gendata.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib\iculed.lib;..\..\..\lib\icuucd.lib;..\..\..\lib\icutud.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/gendata.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/gendata.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/gendata.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gendata.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib64\iculed.lib;..\..\..\lib64\icuucd.lib;..\..\..\lib64\icutud.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/gendata.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/gendata.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/gendata.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/gendata.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib\icule.lib;..\..\..\lib\icuuc.lib;..\..\..\lib\icutu.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/gendata.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/gendata.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/gendata.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/gendata.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>..\..\..\lib64\icule.lib;..\..\..\lib64\icuuc.lib;..\..\..\lib64\icutu.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/gendata.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/gendata.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="cmaps.cpp" />
+    <ClCompile Include="FontTableCache.cpp" />
+    <ClCompile Include="gendata.cpp" />
+    <ClCompile Include="letsutil.cpp" />
+    <ClCompile Include="PortableFontInstance.cpp" />
+    <ClCompile Include="SimpleFontInstance.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="cmaps.h" />
+    <ClInclude Include="FontTableCache.h" />
+    <ClInclude Include="letest.h" />
+    <ClInclude Include="letsutil.h" />
+    <ClInclude Include="PortableFontInstance.h" />
+    <ClInclude Include="sfnt.h" />
+    <ClInclude Include="SimpleFontInstance.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 7bafd11..bb94a09 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index b6c46cd..b26e857 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index d55768e..50c54ee 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{67351485-4D18-4245-BE39-A7EF0675ACD2}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/letest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/letest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/letest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/letest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/letest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/letest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/letest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/letest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/letest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/letest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/letest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/letest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/letest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/letest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/letest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/letest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="cfonts.cpp" />\r
-    <ClCompile Include="cletest.c" />\r
-    <ClCompile Include="cmaps.cpp" />\r
-    <ClCompile Include="FontTableCache.cpp" />\r
-    <ClCompile Include="letest.cpp" />\r
-    <ClCompile Include="letsutil.cpp" />\r
-    <ClCompile Include="PortableFontInstance.cpp" />\r
-    <ClCompile Include="SimpleFontInstance.cpp" />\r
-    <ClCompile Include="xmlreader.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="cfonts.h" />\r
-    <ClInclude Include="cmaps.h" />\r
-    <ClInclude Include="FontTableCache.h" />\r
-    <ClInclude Include="letest.h" />\r
-    <ClInclude Include="letsutil.h" />\r
-    <ClInclude Include="PortableFontInstance.h" />\r
-    <ClInclude Include="sfnt.h" />\r
-    <ClInclude Include="SimpleFontInstance.h" />\r
-    <ClInclude Include="xmlreader.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\layoutex\layoutex.vcxproj">\r
-      <Project>{37fc2c7f-1904-4811-8955-2f478830ead1}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\layout\layout.vcxproj">\r
-      <Project>{c920062a-0647-4553-a3b2-37c58065664b}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\tools\ctestfw\ctestfw.vcxproj">\r
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\tools\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{67351485-4D18-4245-BE39-A7EF0675ACD2}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/letest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/letest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/letest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/letest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/letest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/letest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/letest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/letest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/letest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/letest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/letest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/letest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/letest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/letest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/letest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/letest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="cfonts.cpp" />
+    <ClCompile Include="cletest.c" />
+    <ClCompile Include="cmaps.cpp" />
+    <ClCompile Include="FontTableCache.cpp" />
+    <ClCompile Include="letest.cpp" />
+    <ClCompile Include="letsutil.cpp" />
+    <ClCompile Include="PortableFontInstance.cpp" />
+    <ClCompile Include="SimpleFontInstance.cpp" />
+    <ClCompile Include="xmlreader.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="cfonts.h" />
+    <ClInclude Include="cmaps.h" />
+    <ClInclude Include="FontTableCache.h" />
+    <ClInclude Include="letest.h" />
+    <ClInclude Include="letsutil.h" />
+    <ClInclude Include="PortableFontInstance.h" />
+    <ClInclude Include="sfnt.h" />
+    <ClInclude Include="SimpleFontInstance.h" />
+    <ClInclude Include="xmlreader.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\layoutex\layoutex.vcxproj">
+      <Project>{37fc2c7f-1904-4811-8955-2f478830ead1}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\layout\layout.vcxproj">
+      <Project>{c920062a-0647-4553-a3b2-37c58065664b}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tools\ctestfw\ctestfw.vcxproj">
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tools\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 323defc..1726b4e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 2bb5974..734e2aa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 6cec2e5..140e094 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index 91e3d13..914fa22 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 7ddb399..a5e0403 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 2281319..2067f0a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index d5e0c8b..4f053c3 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index c9d2c82..b07a7e0 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 609f303..5903da2 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{B5E59422-0C52-4469-AB69-0C2AFD6E37A5}</ProjectGuid>\r
-    <RootNamespace>DateFmtPerf</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\x86\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/datefmtperf.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>\r
-      </DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(SolutionDir)\x86\$(Configuration)/datefmtperf.exe</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>false</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Release/DateFmtPerf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>\r
-      </OptimizeReferences>\r
-      <EnableCOMDATFolding>\r
-      </EnableCOMDATFolding>\r
-      <LinkTimeCodeGeneration>\r
-      </LinkTimeCodeGeneration>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="DateFmtPerf.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="breakdata.h" />\r
-    <ClInclude Include="collationdata.h" />\r
-    <ClInclude Include="datedata.h" />\r
-    <ClInclude Include="DateFmtPerf.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="ReadMe.txt" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B5E59422-0C52-4469-AB69-0C2AFD6E37A5}</ProjectGuid>
+    <RootNamespace>DateFmtPerf</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\x86\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/datefmtperf.exe</OutputFile>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>
+      </DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\x86\$(Configuration)/datefmtperf.exe</OutputFile>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Release/DateFmtPerf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>
+      </OptimizeReferences>
+      <EnableCOMDATFolding>
+      </EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>
+      </LinkTimeCodeGeneration>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="DateFmtPerf.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="breakdata.h" />
+    <ClInclude Include="collationdata.h" />
+    <ClInclude Include="datedata.h" />
+    <ClInclude Include="DateFmtPerf.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 03297da..f94f314 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index d886785..82304db 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 5e2d390..e30fdc7 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 0f71f51..a1dda4a 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 8700bba..ab794b6 100644 (file)
@@ -1,6 +1,6 @@
 /*
 **********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 **********************************************************************
 **********************************************************************
index c189a34..49887c8 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{D850A4B6-7D94-476E-9392-E9272DA4EAAF}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/charperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/charperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/charperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/charperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/charperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/charperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/charperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/charperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/charperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/charperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/charperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/charperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/charperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/charperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/charperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/charperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="charperf.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="charperf.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D850A4B6-7D94-476E-9392-E9272DA4EAAF}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/charperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/charperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/charperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/charperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/charperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/charperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/charperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/charperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/charperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/charperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/charperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/charperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/charperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/charperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/charperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/charperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="charperf.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="charperf.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index d92ecc6..fe334a2 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index e98499e..137b31a 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***********************************************************************
index 9501c3a..b296c24 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{01807B4A-E3B5-4B97-A7F3-207746DCD71E}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/collperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/collperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/collperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/collperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/collperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/collperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/collperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/collperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/collperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/collperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/collperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/collperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/collperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/collperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/collperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/collperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="collperf.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{01807B4A-E3B5-4B97-A7F3-207746DCD71E}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/collperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/collperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/collperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/collperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/collperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/collperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/collperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/collperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/collperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x86\Release/collperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/collperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/collperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/collperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x64\Release/collperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/collperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/collperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="collperf.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 17ea48a..35201dc 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index ded6729..9dbd58c 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 162724f..69e4d11 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 800270a..cc1e3d5 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 4dfbb2a..60a5edf 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{B4C03939-D417-41F0-85B4-848ECF105E3A}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/convperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/convperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/convperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/convperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/convperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/convperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/convperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/convperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/convperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/convperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/convperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/convperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/convperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/convperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/convperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/convperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="convperf.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="convperf.h" />\r
-    <ClInclude Include="data.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B4C03939-D417-41F0-85B4-848ECF105E3A}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/convperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/convperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/convperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/convperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/convperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/convperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/convperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/convperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/convperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/convperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/convperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/convperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/convperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/convperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/convperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/convperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="convperf.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="convperf.h" />
+    <ClInclude Include="data.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index ff5af5f..0ff8563 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 0e59a3f..661c6e8 100644 (file)
@@ -1,6 +1,6 @@
 /*  
  ***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
@@ -8,7 +8,7 @@
  *   Corporation and others.  All Rights Reserved.
  ***********************************************************************
  *  file name:  dicttrieperf.cpp
- *  encoding:   US-ASCII
+ *  encoding:   UTF-8
  *  tab size:   8 (not used)
  *  indentation:4
  *
index e68dda9..a50642e 100644 (file)
@@ -59,7 +59,7 @@ distclean-local: clean-local
        $(RMV) Makefile
 
 invoke check-local: all-local
-       ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) ./$(TARGET) ./howexpensive.xml
+       ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) ./$(TARGET) -f ./howexpensive.xml
 
 Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
        cd $(top_builddir) \
index d3320c6..fb16e4f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index c54fea3..6190de7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 80e6709..168f82e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index f07a1b3..39aefe9 100644 (file)
@@ -1,6 +1,6 @@
 /***************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ****************************************************************************/
index 210db95..83fe8fb 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index 6b5b9d5..b312432 100644 (file)
@@ -1,6 +1,6 @@
 /*
 **************************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index b55d41d..038a01f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  **********************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  **********************************************************************
  **********************************************************************
index 028fe20..28866ab 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 4b36170..6f3f95d 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 41021d0..f143d93 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index f657b90..f50a62a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 35e35da..0031469 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
index 4232e2b..3ab38ec 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
index b5e7db7..da06afb 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index 735dba8..16bf92b 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index 27ad143..1639102 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index fcd7b09..25e6ea9 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index 0b11b1a..73ec116 100644 (file)
@@ -1,6 +1,6 @@
 /***************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ****************************************************************************/
index c1a29b7..1ad9399 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index b11e784..2f01e73 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
index 4bd0af5..a4ebf26 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 660b8c7..76a2293 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8a4cb87..d97e050 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index b7a9e48..0cc65b5 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index e5faf8a..0913fb3 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 1295b5b..f059869 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{56CCC661-8D33-4F0A-B62F-C619CE843C68}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/normperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/normperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/normperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/normperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/normperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/normperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/normperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/normperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/normperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/normperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/normperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/normperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/normperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/normperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/normperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/normperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="normperf.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="normperf.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{56CCC661-8D33-4F0A-B62F-C619CE843C68}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/normperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/normperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/normperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/normperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/normperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/normperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/normperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/normperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/normperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/normperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/normperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/normperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/normperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/normperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/normperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/normperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="normperf.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="normperf.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 8a5f402..406e398 100644 (file)
@@ -1,5 +1,5 @@
 /************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *************************************************************************
index b63b728..81b83bd 100644 (file)
@@ -1,5 +1,5 @@
 /************************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *************************************************************************
index 4568d3a..3f71269 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{241DED26-1635-45E6-9564-7742AC8043B5}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/strsrchperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/strsrchperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/strsrchperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/strsrchperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/strsrchperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/strsrchperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/strsrchperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/strsrchperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/strsrchperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/strsrchperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/strsrchperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/strsrchperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="strsrchperf.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="strsrchperf.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{241DED26-1635-45E6-9564-7742AC8043B5}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/strsrchperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/strsrchperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/strsrchperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/strsrchperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/strsrchperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/strsrchperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/strsrchperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/strsrchperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/strsrchperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/strsrchperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/strsrchperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/strsrchperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="strsrchperf.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="strsrchperf.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index e71ae4d..361a14b 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ***********************************************************************
index 46004b8..bc028da 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index 1094afe..343b7eb 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{7E280294-49BD-43D1-9903-CF29648D88CA}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/ubrkperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/ubrkperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/ubrkperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/ubrkperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/ubrkperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/ubrkperf24.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/ubrkperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/ubrkperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/ubrkperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/ubrkperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>..\..\..\..\bin64\ubrkperf24.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/ubrkperf24.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="ubrkperf.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="ubrkperf.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{7E280294-49BD-43D1-9903-CF29648D88CA}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/ubrkperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/ubrkperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/ubrkperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/ubrkperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x86\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/ubrkperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/ubrkperf24.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/ubrkperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/ubrkperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/ubrkperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/ubrkperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x64\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>..\..\..\..\bin64\ubrkperf24.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/ubrkperf24.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="ubrkperf.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="ubrkperf.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 4090378..19c4721 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ***********************************************************************
index 9775f82..d79468b 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  ucnvavailperf.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 166d0b1..8005fbc 100644 (file)
@@ -1,99 +1,99 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{EE2259BF-280D-4E0E-8A08-D77A26AE4191}</ProjectGuid>\r
-    <RootNamespace>ucnvavailperf</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="ucnvavailperf.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{EE2259BF-280D-4E0E-8A08-D77A26AE4191}</ProjectGuid>
+    <RootNamespace>ucnvavailperf</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="ucnvavailperf.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 68ecc8a..e1eb64e 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 *************************************************************************
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *************************************************************************
 *************************************************************************
@@ -8,7 +8,7 @@
 *   Corporation and others.  All Rights Reserved.
 *************************************************************************
 *   file name:  bitset.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1b42cf2..ad5afde 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 *************************************************************************
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *************************************************************************
 *************************************************************************
@@ -8,7 +8,7 @@
 *   Corporation and others.  All Rights Reserved.
 *************************************************************************
 *   file name:  trieset.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 2acd834..19b5791 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 *************************************************************************
-*   Copyright (C) 2016 and later: Unicode, Inc. and others.
+*   © 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *************************************************************************
 *************************************************************************
@@ -8,7 +8,7 @@
 *   Corporation and others.  All Rights Reserved.
 *************************************************************************
 *   file name:  unicont.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 89760bb..cfeb3ad 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 **************************************************************************
-*    Copyright (C) 2016 and later: Unicode, Inc. and others.
+*    © 2016 and later: Unicode, Inc. and others.
 *    License & terms of use: http://www.unicode.org/copyright.html#License
 **************************************************************************
 **************************************************************************
@@ -8,7 +8,7 @@
 *   Corporation and others.  All Rights Reserved.
 **************************************************************************
 *   file name:  unisetperf.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 426394b..212cfba 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{E7728E98-0469-AF37-43F4-4529A3D52C6B}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/unisetperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/unisetperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/unisetperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/unisetperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/unisetperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/unisetperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/unisetperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/unisetperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/unisetperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/unisetperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/unisetperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/unisetperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/unisetperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/unisetperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="unisetperf.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E7728E98-0469-AF37-43F4-4529A3D52C6B}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/unisetperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/unisetperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/unisetperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/unisetperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/unisetperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/unisetperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/unisetperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x86\Release/unisetperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/unisetperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/unisetperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/unisetperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x64\Release/unisetperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/unisetperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/unisetperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="unisetperf.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 52b1512..ce8842d 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 288ad67..d03aa86 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 65404b6..337b262 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 56129b6..1c9dce3 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/usetperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/usetperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/usetperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/usetperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/usetperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/usetperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/usetperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/usetperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/usetperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/usetperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/usetperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/usetperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/usetperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/usetperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/usetperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/usetperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="bitset.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-    <ClCompile Include="usetperf.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="bitset.h" />\r
-    <ClInclude Include="timer.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/usetperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x86\Release/usetperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/usetperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/usetperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/usetperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x64\Release/usetperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/usetperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/usetperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/usetperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/usetperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/usetperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/usetperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/usetperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/usetperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/usetperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/usetperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="bitset.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <ClCompile Include="usetperf.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="bitset.h" />
+    <ClInclude Include="timer.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index f410ea2..d9b5c12 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ***********************************************************************
index d30e713..5392ee7 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* © 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 90028fe..59a556e 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{523710EA-349D-45BF-8B39-289CC86E7D91}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/stringperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/stringperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/stringperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/stringperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/stringperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/stringperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/stringperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/stringperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/stringperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/stringperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0417</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/stringperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/stringperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/stringperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/stringperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0417</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/stringperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/stringperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="stringperf.cpp">\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="stringperf.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{523710EA-349D-45BF-8B39-289CC86E7D91}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/stringperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Release/stringperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/stringperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/stringperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/stringperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Release/stringperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/stringperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/stringperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/stringperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/stringperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0417</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/stringperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/stringperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/stringperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/stringperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0417</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/stringperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/stringperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="stringperf.cpp">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="stringperf.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index e74e1eb..e027cc8 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 **************************************************************************
- *   Copyright (C) 2016 and later: Unicode, Inc. and others.
+ *   © 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
@@ -8,7 +8,7 @@
  *   Corporation and others.  All Rights Reserved.
  *************************************************************************
  *   file name:  utfperf.cpp
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 0696b0a..db8a15c 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{E7728E98-0469-43F4-AF37-4529A3D52C6B}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/utfperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/utfperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/utfperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/utfperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/utfperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/utfperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/utfperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/utfperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/utfperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/utfperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/utfperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/utfperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/utfperf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/utfperf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/utfperf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/utfperf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="utfperf.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E7728E98-0469-43F4-AF37-4529A3D52C6B}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/utfperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/utfperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/utfperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/utfperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/utfperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/utfperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/utfperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/utfperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/utfperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x86\Release/utfperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/utfperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/utfperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/utfperf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x64\Release/utfperf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/utfperf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/utfperf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="utfperf.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 489a26f..8b28407 100644 (file)
@@ -1,6 +1,6 @@
 /*  
  ***********************************************************************
- * Copyright (C) 2016 and later: Unicode, Inc. and others.
+ * © 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
@@ -8,7 +8,7 @@
  *   Corporation and others.  All Rights Reserved.
  ***********************************************************************
  *  file name:  utrie2perf.cpp
- *  encoding:   US-ASCII
+ *  encoding:   UTF-8
  *  tab size:   8 (not used)
  *  indentation:4
  *
index e78a26f..fa6c969 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{B9458CB3-9B09-402A-8C4C-43B6D0EA9691}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/utrie2perf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Debug/utrie2perf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/utrie2perf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/utrie2perf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Debug/utrie2perf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/utrie2perf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/utrie2perf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x86\Release/utrie2perf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x86\Release/utrie2perf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/utrie2perf.tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>.\x64\Release/utrie2perf.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ProgramDatabaseFile>.\x64\Release/utrie2perf.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="utrie2perf.cpp" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B9458CB3-9B09-402A-8C4C-43B6D0EA9691}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/utrie2perf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Debug/utrie2perf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/utrie2perf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/utrie2perf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Debug/utrie2perf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/utrie2perf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/utrie2perf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x86\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x86\Release/utrie2perf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x86\Release/utrie2perf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/utrie2perf.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>.\x64\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\x64\Release/utrie2perf.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\x64\Release/utrie2perf.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="utrie2perf.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index dfc8deb..53a3d7c 100644 (file)
@@ -1,6 +1,6 @@
-# BidiTest-9.0.0.txt
-# Date: 2016-03-02, 18:54:52 GMT
-# © 2016 Unicode®, Inc.
+# BidiTest-10.0.0.txt
+# Date: 2017-02-14, 04:25:55 GMT
+# © 2017 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
index fbb34a1..4561878 100644 (file)
@@ -1,6 +1,6 @@
-# GraphemeBreakTest-9.0.0.txt
-# Date: 2016-06-02, 18:28:17 GMT
-# © 2016 Unicode®, Inc.
+# GraphemeBreakTest-10.0.0.txt
+# Date: 2017-02-16, 00:24:15 GMT
+# © 2017 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -8,7 +8,6 @@
 #   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Default Grapheme Break Test
-#    Hand-patched for Emoji ZWJ Proposal L2/16-208R2.
 #
 # Format:
 # <string> (# <comment>)? 
@@ -54,8 +53,8 @@
 ÷ 0020 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0020 × 200D ÷     #  ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0020 × 0308 × 200D ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0020 ÷ 2764 ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0020 × 0308 ÷ 2764 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0020 ÷ 2640 ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0020 × 0308 ÷ 2640 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0020 ÷ 1F466 ÷    #  ÷ [0.2] SPACE (Other) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0020 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0020 ÷ 0378 ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -94,8 +93,8 @@
 ÷ 000D ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000D ÷ 200D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 000D ÷ 0308 × 200D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 000D ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 000D ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 2640 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 000D ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] BOY (EBG) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000D ÷ 0378 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000A ÷ 200D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 000A ÷ 0308 × 200D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 000A ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 000A ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 2640 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 000A ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] BOY (EBG) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000A ÷ 0378 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0001 ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0001 ÷ 200D ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0001 ÷ 0308 × 200D ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0001 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0001 ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 ÷ 2640 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0001 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] BOY (EBG) ÷ [0.3]
 ÷ 0001 ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0001 ÷ 0378 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0300 × 200D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0300 × 0308 × 200D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0300 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0300 × 0308 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 ÷ 2640 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 × 0308 ÷ 2640 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0300 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0300 ÷ 0378 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0600 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0600 × 200D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0600 × 0308 × 200D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0600 × 2764 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0600 × 0308 ÷ 2764 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0600 × 2640 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0600 × 0308 ÷ 2640 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0600 × 1F466 ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] BOY (EBG) ÷ [0.3]
 ÷ 0600 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0600 × 0378 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0903 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0903 × 200D ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0903 × 0308 × 200D ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0903 ÷ 2764 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0903 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0903 ÷ 2640 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0903 × 0308 ÷ 2640 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0903 ÷ 1F466 ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0903 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0903 ÷ 0378 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 1100 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1100 × 200D ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1100 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1100 ÷ 2764 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 1100 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1100 ÷ 2640 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1100 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 1100 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1100 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1100 ÷ 0378 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 1160 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1160 × 200D ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1160 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1160 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 1160 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1160 ÷ 2640 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1160 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 1160 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1160 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1160 ÷ 0378 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 11A8 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 11A8 × 200D ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 11A8 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 11A8 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 11A8 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 11A8 ÷ 2640 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 11A8 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 11A8 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 11A8 ÷ 0378 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ AC00 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ AC00 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ AC00 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ AC00 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ AC00 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ AC00 ÷ 2640 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ AC00 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ AC00 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ AC00 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ AC00 ÷ 0378 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ AC01 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ AC01 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ AC01 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ AC01 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ AC01 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ AC01 ÷ 2640 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ AC01 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ AC01 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ AC01 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ AC01 ÷ 0378 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F1E6 × 200D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1F1E6 × 0308 × 200D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1F1E6 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 ÷ 2640 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 2640 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F1E6 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F1E6 ÷ 0378 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 261D × 0308 × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 261D × 200D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 261D × 0308 × 200D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 261D ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 261D × 0308 ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 261D ÷ 2640 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 261D × 0308 ÷ 2640 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 261D ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 261D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 261D ÷ 0378 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F3FB × 200D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1F3FB × 0308 × 200D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1F3FB ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 1F3FB × 0308 ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB ÷ 2640 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 2640 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F3FB ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F3FB ÷ 0378 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 200D × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 200D × 200D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 200D × 0308 × 200D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 200D Ã· 2764 Ã·     #  Ã· [0.2] ZERO WIDTH JOINER (ZWJ) Ã\97 [11.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 200D × 0308 ÷ 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 200D Ã· 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
+÷ 200D Ã\97 2640 Ã·     #  Ã· [0.2] ZERO WIDTH JOINER (ZWJ) Ã\97 [11.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 0308 ÷ 2640 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 200D Ã\97 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
 ÷ 200D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 200D ÷ 0378 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 200D × 0308 ÷ 0378 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 200D ÷ D800 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
 ÷ 200D × 0308 ÷ D800 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 2764 ÷ 0020 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0020 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 2764 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 2764 × 0308 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 2764 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 2764 × 0308 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 2764 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 2764 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
-÷ 2764 × 0308 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
-÷ 2764 ÷ 0600 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0600 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 2764 × 0903 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 2764 × 0308 × 0903 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 2764 ÷ 1100 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 2764 × 0308 ÷ 1100 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 2764 ÷ 1160 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 2764 × 0308 ÷ 1160 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 2764 ÷ 11A8 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 2764 × 0308 ÷ 11A8 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 2764 ÷ AC00 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 2764 × 0308 ÷ AC00 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 2764 ÷ AC01 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 2764 × 0308 ÷ AC01 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 2764 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 2764 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 2764 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 2764 × 0308 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 2764 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 2764 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 2764 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 2764 × 0308 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 2764 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 2764 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 2764 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
-÷ 2764 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
-÷ 2764 ÷ 0378 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0378 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 2764 ÷ D800 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 2764 × 0308 ÷ D800 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 2640 ÷ 0020 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0020 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 2640 ÷ 000D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2640 × 0308 ÷ 000D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2640 ÷ 000A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2640 × 0308 ÷ 000A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2640 ÷ 0001 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0001 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 2640 × 0300 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 2640 × 0308 × 0300 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 2640 ÷ 0600 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0600 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 2640 × 0903 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 2640 × 0308 × 0903 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 2640 ÷ 1100 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 2640 × 0308 ÷ 1100 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 2640 ÷ 1160 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 2640 × 0308 ÷ 1160 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 2640 ÷ 11A8 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 2640 × 0308 ÷ 11A8 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 2640 ÷ AC00 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 2640 × 0308 ÷ AC00 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 2640 ÷ AC01 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 2640 × 0308 ÷ AC01 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 2640 ÷ 1F1E6 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2640 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2640 ÷ 261D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2640 × 0308 ÷ 261D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2640 ÷ 1F3FB ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2640 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2640 × 200D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 2640 × 0308 × 200D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 2640 ÷ 2640 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 2640 × 0308 ÷ 2640 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 2640 ÷ 1F466 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2640 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2640 ÷ 0378 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0378 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 2640 ÷ D800 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 2640 × 0308 ÷ D800 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
 ÷ 1F466 ÷ 0020 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] SPACE (Other) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 0020 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
 ÷ 1F466 ÷ 000D ÷    #  ÷ [0.2] BOY (EBG) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 1F466 × 0308 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F466 × 200D ÷    #  ÷ [0.2] BOY (EBG) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1F466 × 0308 × 200D ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1F466 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 1F466 × 0308 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 ÷ 2640 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 2640 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 ÷ 0378 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0378 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0378 × 200D ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0378 × 0308 × 200D ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0378 ÷ 2764 ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0378 × 0308 ÷ 2764 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0378 ÷ 2640 ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0378 × 0308 ÷ 2640 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0378 ÷ 1F466 ÷    #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0378 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0378 ÷ 0378 ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ D800 ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ D800 ÷ 200D ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ D800 ÷ 0308 × 200D ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ D800 ÷ 2764 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ D800 ÷ 2640 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ D800 ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ D800 ÷ 1F466 ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] BOY (EBG) ÷ [0.3]
 ÷ D800 ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ D800 ÷ 0378 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0061 ÷ 0600 × 0062 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3]
 ÷ 261D × 1F3FB ÷ 261D ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 200D Ã· 1F466 × 1F3FB ÷   #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 200D Ã· 2764 Ã·     #  Ã· [0.2] ZERO WIDTH JOINER (ZWJ) Ã\97 [11.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 200D Ã· 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
+÷ 200D Ã\97 1F466 × 1F3FB ÷   #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D Ã\97 2640 Ã·     #  Ã· [0.2] ZERO WIDTH JOINER (ZWJ) Ã\97 [11.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 200D Ã\97 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
 #
 # Lines: 822
index 76805e6..b8c49a4 100644 (file)
@@ -1,6 +1,6 @@
-# LineBreakTest-9.0.0.txt
-# Date: 2016-06-18, 00:42:06 GMT
-# © 2016 Unicode®, Inc.
+# LineBreakTest-10.0.0.txt
+# Date: 2017-02-27, 22:57:17 GMT
+# © 2017 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
index 50cdf2e..e33fd63 100644 (file)
@@ -1,6 +1,6 @@
-# SentenceBreakTest-9.0.0.txt
-# Date: 2016-06-02, 18:28:30 GMT
-# © 2016 Unicode®, Inc.
+# SentenceBreakTest-10.0.0.txt
+# Date: 2017-02-14, 04:26:30 GMT
+# © 2017 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
index 1cf9023..3a1cc9c 100644 (file)
@@ -1,6 +1,6 @@
-# WordBreakTest-9.0.0.txt
-# Date: 2016-06-02, 18:28:31 GMT
-# © 2016 Unicode®, Inc.
+# WordBreakTest-10.0.0.txt
+# Date: 2017-02-14, 04:26:31 GMT
+# © 2017 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -8,7 +8,6 @@
 #   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Default Word Break Test
-#    Hand-patched for Emoji ZWJ Proposal L2/16-208R2.
 #
 # Format:
 # <string> (# <comment>)? 
@@ -56,8 +55,8 @@
 ÷ 0001 × 0308 ÷ 261D ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0001 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0001 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0001 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0001 × 0308 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 ÷ 2640 ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 × 0308 ÷ 2640 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0001 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0001 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0001 × 00AD ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 000D ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 000D ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 000D ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 2640 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 000D ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] BOY (EBG) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000D ÷ 00AD ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 000A ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 000A ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 000A ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 2640 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 000A ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] BOY (EBG) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000A ÷ 00AD ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 000B ÷ 1F3FB ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 000B ÷ 2764 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 000B ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000B ÷ 2640 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000B ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 000B ÷ 1F466 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] BOY (EBG) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000B ÷ 00AD ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 261D ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 3031 ÷ 1F3FB ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 3031 ÷ 2764 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 3031 × 0308 ÷ 2764 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 3031 ÷ 2640 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 3031 × 0308 ÷ 2640 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 3031 ÷ 1F466 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 3031 × 00AD ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0041 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0041 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0041 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0041 ÷ 2764 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0041 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0041 ÷ 2640 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0041 × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0041 ÷ 1F466 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0041 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0041 × 00AD ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 003A × 0308 ÷ 261D ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 003A ÷ 1F3FB ÷    #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 003A × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 003A ÷ 2764 ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 003A × 0308 ÷ 2764 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 003A ÷ 2640 ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 003A × 0308 ÷ 2640 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 003A ÷ 1F466 ÷    #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 003A × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 003A × 00AD ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002C × 0308 ÷ 261D ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 002C ÷ 1F3FB ÷    #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 002C × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 002C ÷ 2764 ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 002C × 0308 ÷ 2764 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 002C ÷ 2640 ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 002C × 0308 ÷ 2640 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 002C ÷ 1F466 ÷    #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002C × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002C × 00AD ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002E × 0308 ÷ 261D ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 002E ÷ 1F3FB ÷    #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 002E × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 002E ÷ 2764 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 002E × 0308 ÷ 2764 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 002E ÷ 2640 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 002E × 0308 ÷ 2640 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 002E ÷ 1F466 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002E × 0308 ÷ 1F466 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002E × 00AD ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0030 × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0030 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0030 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0030 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0030 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0030 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0030 × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0030 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0030 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0030 × 00AD ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 005F × 0308 ÷ 261D ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 005F ÷ 1F3FB ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 005F × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 005F ÷ 2764 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 005F × 0308 ÷ 2764 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 005F ÷ 2640 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 005F × 0308 ÷ 2640 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 005F ÷ 1F466 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 005F × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 005F × 00AD ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 261D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F1E6 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 1F1E6 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 ÷ 2640 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 2640 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F1E6 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F1E6 × 00AD ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 05D0 × 0308 ÷ 261D ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 05D0 ÷ 1F3FB ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 05D0 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 05D0 ÷ 2764 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 05D0 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 05D0 ÷ 2640 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 05D0 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 05D0 ÷ 1F466 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 05D0 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 05D0 × 00AD ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 261D ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0022 ÷ 1F3FB ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0022 ÷ 2764 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0022 × 0308 ÷ 2764 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0022 ÷ 2640 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0022 × 0308 ÷ 2640 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0022 ÷ 1F466 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0022 × 00AD ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 261D ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0027 ÷ 1F3FB ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0027 ÷ 2764 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0027 × 0308 ÷ 2764 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0027 ÷ 2640 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0027 × 0308 ÷ 2640 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0027 ÷ 1F466 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0027 × 00AD ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 261D × 0308 ÷ 261D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 261D × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 261D × 0308 × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 261D ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 261D × 0308 ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 261D ÷ 2640 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 261D × 0308 ÷ 2640 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 261D ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 261D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 261D × 00AD ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 261D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F3FB ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 1F3FB ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 1F3FB × 0308 ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB ÷ 2640 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 2640 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F3FB ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F3FB × 00AD ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
 ÷ 1F3FB ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2764 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 2764 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 2764 × 0308 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 2764 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 2764 × 0308 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 2764 ÷ 000B ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
-÷ 2764 × 0308 ÷ 000B ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
-÷ 2764 ÷ 3031 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
-÷ 2764 × 0308 ÷ 3031 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
-÷ 2764 ÷ 0041 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0041 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
-÷ 2764 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2764 × 0308 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2764 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2764 × 0308 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2764 ÷ 002E ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
-÷ 2764 × 0308 ÷ 002E ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
-÷ 2764 ÷ 0030 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0030 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 2764 ÷ 005F ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 2764 × 0308 ÷ 005F ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 2764 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 2764 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 2764 ÷ 05D0 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
-÷ 2764 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
-÷ 2764 ÷ 0022 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0022 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
-÷ 2764 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2764 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 2764 × 0308 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 2764 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 2764 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 2764 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 2764 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 2764 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
-÷ 2764 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
-÷ 2764 × 00AD ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
-÷ 2764 × 0308 × 00AD ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
-÷ 2764 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 2764 × 0308 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 2764 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
-÷ 2764 × 0308 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
-÷ 2764 ÷ 0061 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2764 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2764 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2764 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2764 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2764 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2764 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2764 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2764 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2764 × 0308 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2640 ÷ 0001 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0001 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 2640 ÷ 000D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2640 × 0308 ÷ 000D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2640 ÷ 000A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2640 × 0308 ÷ 000A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2640 ÷ 000B ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 2640 × 0308 ÷ 000B ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 2640 ÷ 3031 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 2640 × 0308 ÷ 3031 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 2640 ÷ 0041 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0041 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 2640 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2640 × 0308 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2640 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2640 × 0308 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2640 ÷ 002E ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 2640 × 0308 ÷ 002E ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 2640 ÷ 0030 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0030 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 2640 ÷ 005F ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 2640 × 0308 ÷ 005F ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 2640 ÷ 1F1E6 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2640 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2640 ÷ 05D0 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 2640 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 2640 ÷ 0022 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0022 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 2640 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2640 ÷ 261D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2640 × 0308 ÷ 261D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2640 ÷ 1F3FB ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2640 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2640 ÷ 2640 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 2640 × 0308 ÷ 2640 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 2640 ÷ 1F466 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2640 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2640 × 00AD ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 2640 × 0308 × 00AD ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 2640 × 0300 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 2640 × 0308 × 0300 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 2640 × 200D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 2640 × 0308 × 200D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 2640 ÷ 0061 × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2640 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2640 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2640 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2640 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2640 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2640 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2640 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2640 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2640 × 0308 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 1F466 ÷ 0001 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 0001 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 1F466 ÷ 000D ÷    #  ÷ [0.2] BOY (EBG) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 261D ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F466 × 0308 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 1F466 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 1F466 × 0308 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 ÷ 2640 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 2640 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 × 00AD ÷    #  ÷ [0.2] BOY (EBG) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 261D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 00AD ÷ 1F3FB ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 00AD ÷ 2764 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 00AD × 0308 ÷ 2764 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 00AD ÷ 2640 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 00AD × 0308 ÷ 2640 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 00AD ÷ 1F466 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 1F466 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 00AD × 00AD ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 261D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0300 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0300 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0300 × 0308 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 ÷ 2640 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 × 0308 ÷ 2640 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0300 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0300 × 00AD ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 200D × 0308 ÷ 0022 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 200D ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 200D × 0308 ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 200D Ã\97 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 200D Ã· 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 200D × 0308 ÷ 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 200D Ã\97 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D Ã· 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 200D × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 200D × 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 200D × 0308 ÷ 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 2640 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 0308 ÷ 2640 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 200D × 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BOY (EBG) ÷ [0.3]
 ÷ 200D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 200D × 00AD ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 × 2060 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 × 2060 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 × 2060 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 × 2060 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 × 2060 × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 × 2060 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 × 2060 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 ÷ 003A ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 ÷ 003A ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 ÷ 003A × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 003A × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 ÷ 003A ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 003A × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 ÷ 0027 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 ÷ 0027 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 ÷ 0027 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 ÷ 0027 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 ÷ 0027 × 2060 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 ÷ 002C ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 ÷ 002C × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 002C × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 002C × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0031 ÷ 003A ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0031 ÷ 003A × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 003A × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 003A × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0031 ÷ 0027 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0031 ÷ 0027 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0031 ÷ 002C ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0031 ÷ 002C × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002C × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002C × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0031 ÷ 002E × 2060 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
-÷ 0031 ÷ 002E × 2060 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 261D × 1F3FB ÷ 261D ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 200D × 1F466 × 1F3FB ÷   #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BOY (EBG) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 200D × 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 2640 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
 ÷ 200D × 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BOY (EBG) ÷ [0.3]
 ÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 × 0308 × 200D × 0308 × 0062 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
index ea18ef2..0b551ba 100644 (file)
@@ -36,12 +36,12 @@ LVT                = [\p{Grapheme_Cluster_Break = LVT}];
 # Emoji defintions
 
 EmojiNRK           = [[\p{Emoji}] - [Regional_Indicator\u002a\u00230-9©®™〰〽]];
-E_Base             = [\p{Grapheme_Cluster_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
+E_Base             = [\p{Grapheme_Cluster_Break = EB}];
 E_Modifier         = [\p{Grapheme_Cluster_Break = EM}];
 E_Base_GAZ         = [\p{Grapheme_Cluster_Break = EBG}];
 
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
-Extended_Pict         = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
+Extended_Pict         = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
 
 
 GB3:     CR LF;
@@ -53,7 +53,7 @@ GB7:     (LV | V) (V | T);
 GB8:     (LVT | T) T;
 
 GB10:    (E_Base | E_Base_GAZ) Extend* E_Modifier;
-GB11:    (Extended_Pict | EmojiNRK) ZWJ (Extended_Pict | EmojiNRK);
+GB11:    (Extended_Pict | EmojiNRK) Extend* ZWJ (Extended_Pict | EmojiNRK);
 GB9:     . (Extend | ZWJ);
 
 GB9a:    . SpacingMark;
index 4000740..268da1c 100644 (file)
@@ -27,7 +27,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
+EB = [:LineBreak =  EB:];
 EM = [:LineBreak =  EM:];
 EX = [:LineBreak =  Exclamation:];
 GL = [:LineBreak =  Glue:];
@@ -60,8 +60,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
-Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
+Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
index ec0fdcd..a25e9dc 100644 (file)
@@ -34,7 +34,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
+EB = [:LineBreak =  EB:];
 EM = [:LineBreak =  EM:];
 EX = [:LineBreak =  Exclamation:];
 GL = [:LineBreak =  Glue:];
@@ -68,8 +68,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
-Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
+Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
index 884d04a..14458cf 100644 (file)
@@ -48,7 +48,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
+EB = [:LineBreak =  EB:];
 EM = [:LineBreak =  EM:];
 EXX = [\uFF01 \uFF1F];
 EX = [[:LineBreak =  Exclamation:] - EXX];
@@ -85,8 +85,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
-Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
+Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
index ad9244a..a2e0bc5 100644 (file)
@@ -41,7 +41,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
+EB = [:LineBreak =  EB:];
 EM = [:LineBreak =  EM:];
 EX = [:LineBreak =  Exclamation:];
 GL = [:LineBreak =  Glue:];
@@ -74,8 +74,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
-Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
+Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
index d84bd87..388cd03 100644 (file)
@@ -42,7 +42,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
+EB = [:LineBreak =  EB:];
 EM = [:LineBreak =  EM:];
 EX = [:LineBreak =  Exclamation:];
 GL = [:LineBreak =  Glue:];
@@ -76,8 +76,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
-Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
+Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
@@ -164,7 +164,7 @@ LB20.1b:      CB CM* ÷;
 #       not picking up the continuing match after the BA from 21a.
 # TODO: For CJ tailorings (with BAX) does this rule want to include BAX? If so,
 #       should "HL BAX" not break when followed by a CB? Thats what the current
-#       rules do, which is why "[^CM CB]?"\13 includes the ?.
+#       rules do, which is why "[^CM CB]?" includes the ?.
 LB21a:       HL CM* (HY | BA | BAX) CM* [^CM CB]?;
 
 # DO allow breaks here before $BAXcm and $NSXcm, so don't include them
index 2f24d6e..783dfc9 100644 (file)
@@ -32,11 +32,11 @@ MidLetter          = [\p{Word_Break = MidLetter}];
 MidNum             = [\p{Word_Break = MidNum}];
 Numeric            = [\p{Word_Break = Numeric}];
 ExtendNumLet       = [\p{Word_Break = ExtendNumLet}];
-E_Base             = [\p{Word_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
+E_Base             = [\p{Word_Break = EB}];
 E_Modifier         = [\p{Word_Break = EM}];
 EmojiNRK           = [[\p{Emoji}] - [[Regional_Indicator]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
-Extended_Pict      = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
+Extended_Pict      = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
 EBG                = [\p{Word_Break = EBG}];
 
 #define dicitionary, with the effect being that those characters don't appear in test data.
index 359d444..232e4dd 100644 (file)
@@ -31,11 +31,11 @@ MidLetter          = [\p{Word_Break = MidLetter} - [\:]];
 MidNum             = [\p{Word_Break = MidNum} [.]];
 Numeric            = [\p{Word_Break = Numeric}];
 ExtendNumLet       = [\p{Word_Break = ExtendNumLet}];
-E_Base             = [\p{Word_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
+E_Base             = [\p{Word_Break = EB}];
 E_Modifier         = [\p{Word_Break = EM}];
 EmojiNRK           = [[\p{Emoji}] - [[Regional_Indicator]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
-Extended_Pict      = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
+Extended_Pict      = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
 EBG                = [\p{Word_Break = EBG}];
 
 #define dicitionary, with the effect being that those characters don't appear in test data.
index 82f9de3..a5fc436 100644 (file)
@@ -37,7 +37,7 @@
 #   Temp debugging tests
 <locale en>
 <word>
-<data><0>ク<400>ライアン<400>ト<400>サーバー<400></data>
+<data><0>1•2•3•4•</data>
 # <data><0>ク<400>ライアン<400>トサーバー<400></data>
 
 ## FILTERED BREAK TESTS
@@ -1090,3 +1090,221 @@ Bangkok)•</data>
 <line>
 #     •brk OK before 3063               •no brk before 301C •brk OK btw 2026   •no brk before FF01•
 <data>•\u3084•\u3063•\u3071•\u308A\u0020•\u0031\u301C\u0020•\u2026•\u2026\u0020•u30A2\uFF01\u0020•</data>
+
+####################################################################################
+#
+#  Test breaks for emoji clusters (same for all locales, mostly the same for all break types)
+#
+####################################################################################
+
+<locale root>
+
+<char>
+# woman zwj woman zwj girl zwj girl, woman/fitz-1-2 zwj woman/fitz-4 zwj boy/fitz-6
+<data>•\U0001F469\u200D\U0001F469\u200D\U0001F467\u200D\U0001F467•\U0001F469\U0001F3FB\u200D\U0001F469\U0001F3FD\u200D\U0001F466\U0001F3FF•</data>
+# woman zwj baby/fitz-3, older_woman/fitz-5, runner/fitz-4, raised_fist/fitz-3, fuel_pump, fitz-3
+<data>•\U0001F469\u200D\U0001F476\U0001F3FC•\U0001F475\U0001F3FE•\U0001F3C3\U0001F3FD•\u270A\U0001F3FC•\u26FD•\U0001F3FC•</data>
+# man zwj hvy_blk_heart zwj man, woman, man zwj hvy_blk_heart/evar zwj man, woman
+<data>•\U0001F468\u200D\u2764\u200D\U0001F468•\U0001F469•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F468•\U0001F469•</data>
+# woman zwj hvy_blk_heart/evar zwj kiss_mark zwj woman, sleuth/fitz-4, horse_racing/fitz-5
+<data>•\U0001F469\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F469•\U0001F575\U0001F3FD•\U0001F3C7\U0001F3FE•</data>
+# victory_hand/evar, victory_hand/evar/fitz-1-2, victory_hand/fitz-1-2, rowboat/fitz-4, vulcan_salute/fitz-5, space,
+<data>•\u270C\uFE0F•\u270C\uFE0F\U0001F3FB•\u270C\U0001F3FB•\U0001F6A3\U0001F3FD•\U0001F596\U0001F3FE•\u0020•</data>
+# writing_hand fitz-1-2, splayed_hand/fitz-3, middle_finger/fitz-4, sign_of_horns/fitz-5, eye zwj left_speech_bubble, space
+<data>•\u270D\U0001F3FB•\U0001F590\U0001F3FC•\U0001F595\U0001F3FD•\U0001F918\U0001F3FE•\U0001F441\u200D\U0001F5E8•\u0020•</data>
+# family (man, boy, boy), family (woman, girl), space
+<data>•\U0001F468\u200D\U0001F466\u200D\U0001F466•\U0001F469\u200D\U0001F467•\u0020•</data>
+# rainbow flag using evar, rainbow flag no evar, space
+<data>•\U0001F3F3\uFE0F\u200D\U0001F308•\U0001F3F3\u200D\U0001F308•\u0020•</data>
+# woman with ball using evar, woman with ball no evar, woman with ball fitz 4 using evar, woman with ball fitz 4 no evar, space
+<data>•\u26F9\uFE0F\u200D\u2640\uFE0F•\u26F9\u200D\u2640•\u26F9\U0001F3FD\u200D\u2640\uFE0F•\u26F9\U0001F3FD\u200D\u2640•\u0020•</data>
+# woman runner using evar, woman runner no evar, woman runner fitz 4 using evar, woman runner fitz 4 no evar, space
+<data>•\U0001F3C3\u200D\u2640\uFE0F•\U0001F3C3\u200D\u2640•\U0001F3C3\U0001F3FD\u200D\u2640\uFE0F•\U0001F3C3\U0001F3FD\u200D\u2640•\u0020•</data>
+# 9.0 + professions
+# black heart, fitz 4, squid, fitz4, man dancing /fitz4, mother xmas /fitz4
+<data>•\U0001F5A4•\U0001F3FD•\U0001F991•\U0001F3FD•\U0001F57A\U0001F3FD•\U0001F936\U0001F3FD•\u0020•</data>
+# facepalm, facepalm / fitz4, facepalm + woman +var, facepalm + woman -var, facepalm/fitz4 + woman +var, facepalm/fitz4 + woman -var
+<data>•\U0001F926•\U0001F926\U0001F3FD•\U0001F926\u200D\u2640\uFE0F•\U0001F926\u200D\u2640•\U0001F926\U0001F3FD\u200D\u2640\uFE0F•\U0001F926\U0001F3FD\u200D\u2640•\u0020•</data>
+# handball, handball / fitz4, handball + man +var, handball + man -var, handball/fitz4 + man +var, handball/fitz4 + man -var
+<data>•\U0001F93E•\U0001F93E\U0001F3FD•\U0001F93E\u200D\u2642\uFE0F•\U0001F93E\u200D\u2642•\U0001F93E\U0001F3FD\u200D\u2642\uFE0F•\U0001F93E\U0001F3FD\u200D\u2642•\u0020•</data>
+# man health worker +var, man health worker -var, man health worker / fitz4 +var, man health worker / fitz4 -var
+<data>•\U0001F468\u200D\u2695\uFE0F•\U0001F468\u200D\u2695•\U0001F468\U0001F3FD\u200D\u2695\uFE0F•\U0001F468\U0001F3FD\u200D\u2695•\u0020•</data>
+# woman astronaut, woman astronaut / fitz4
+<data>•\U0001F469\u200D\U0001F680•\U0001F469\U0001F3FD\u200D\U0001F680•\u0020•</data>
+# modifier bases added in emoji 4.0
+# SNOWBOARDER/fitz-3, HORSE RACING/fitz-4, GOLFER/fitz-5, MAN IN BUSINESS SUIT LEVITATING/fitz-6, SLEEPING ACCOMMODATION/fitz-12, space
+<data>•\U0001F3C2\U0001F3FC•\U0001F3C7\U0001F3FD•\U0001F3CC\U0001F3FE•\U0001F574\U0001F3FF•\U0001F6CC\U0001F3FB•\u0020•</data>
+# test kiss: man, man with variation selector
+<data>•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F468•\u0020•</data>
+
+# flags1    AE AF AL AM AO AR AT
+<data>•\U0001F1E6\U0001F1EA•\U0001F1E6\U0001F1EB•\U0001F1E6\U0001F1F1•\U0001F1E6\U0001F1F2•\U0001F1E6\U0001F1F4•\U0001F1E6\U0001F1F7•\U0001F1E6\U0001F1F9•</data>
+# flags2    AU AZ BA BD BE BF BG
+<data>•\U0001F1E6\U0001F1FA•\U0001F1E6\U0001F1FF•\U0001F1E7\U0001F1E6•\U0001F1E7\U0001F1E9•\U0001F1E7\U0001F1EA•\U0001F1E7\U0001F1EB•\U0001F1E7\U0001F1EC•</data>
+# flags3    BH BJ BN BO BR BS BT
+<data>•\U0001F1E7\U0001F1ED•\U0001F1E7\U0001F1EF•\U0001F1E7\U0001F1F3•\U0001F1E7\U0001F1F4•\U0001F1E7\U0001F1F7•\U0001F1E7\U0001F1F8•\U0001F1E7\U0001F1F9•</data>
+# flags4    BW BY BZ CA CD CF CG
+<data>•\U0001F1E7\U0001F1FC•\U0001F1E7\U0001F1FE•\U0001F1E7\U0001F1FF•\U0001F1E8\U0001F1E6•\U0001F1E8\U0001F1E9•\U0001F1E8\U0001F1EB•\U0001F1E8\U0001F1EC•</data>
+# flags5    CH CI CL CM CN CO CR
+<data>•\U0001F1E8\U0001F1ED•\U0001F1E8\U0001F1EE•\U0001F1E8\U0001F1F1•\U0001F1E8\U0001F1F2•\U0001F1E8\U0001F1F3•\U0001F1E8\U0001F1F4•\U0001F1E8\U0001F1F7•</data>
+# flags6    CU CV CY CZ DE DJ DK
+<data>•\U0001F1E8\U0001F1FA•\U0001F1E8\U0001F1FB•\U0001F1E8\U0001F1FE•\U0001F1E8\U0001F1FF•\U0001F1E9\U0001F1EA•\U0001F1E9\U0001F1EF•\U0001F1E9\U0001F1F0•</data>
+# flags7    DM DO DZ EC EE EG ER
+<data>•\U0001F1E9\U0001F1F2•\U0001F1E9\U0001F1F4•\U0001F1E9\U0001F1FF•\U0001F1EA\U0001F1E8•\U0001F1EA\U0001F1EA•\U0001F1EA\U0001F1EC•\U0001F1EA\U0001F1F7•</data>
+# flags8    ES ET FI FJ FR GA GB
+<data>•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F9•\U0001F1EB\U0001F1EE•\U0001F1EB\U0001F1EF•\U0001F1EB\U0001F1F7•\U0001F1EC\U0001F1E6•\U0001F1EC\U0001F1E7•</data>
+# flags9    GE GH GM GN GR GT GW
+<data>•\U0001F1EC\U0001F1EA•\U0001F1EC\U0001F1ED•\U0001F1EC\U0001F1F2•\U0001F1EC\U0001F1F3•\U0001F1EC\U0001F1F7•\U0001F1EC\U0001F1F9•\U0001F1EC\U0001F1FC•</data>
+# flags10   GY HK HN HR HT HU ID
+<data>•\U0001F1EC\U0001F1FE•\U0001F1ED\U0001F1F0•\U0001F1ED\U0001F1F3•\U0001F1ED\U0001F1F7•\U0001F1ED\U0001F1F9•\U0001F1ED\U0001F1FA•\U0001F1EE\U0001F1E9•</data>
+# flags11   IE IL IN IQ IR IS IT
+<data>•\U0001F1EE\U0001F1EA•\U0001F1EE\U0001F1F1•\U0001F1EE\U0001F1F3•\U0001F1EE\U0001F1F6•\U0001F1EE\U0001F1F7•\U0001F1EE\U0001F1F8•\U0001F1EE\U0001F1F9•</data>
+# flags12   JM JO JP KE KG KH KR
+<data>•\U0001F1EF\U0001F1F2•\U0001F1EF\U0001F1F4•\U0001F1EF\U0001F1F5•\U0001F1F0\U0001F1EA•\U0001F1F0\U0001F1EC•\U0001F1F0\U0001F1ED•\U0001F1F0\U0001F1F7•</data>
+# flags13   MX MY NL NO PL PT
+<data>•\U0001F1F2\U0001F1FD•\U0001F1F2\U0001F1FE•\U0001F1F3\U0001F1F1•\U0001F1F3\U0001F1F4•\U0001F1F5\U0001F1F1•\U0001F1F5\U0001F1F9•</data>
+# flags14   RO RU SA SE SK TH TR
+<data>•\U0001F1F7\U0001F1F4•\U0001F1F7\U0001F1FA•\U0001F1F8\U0001F1E6•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1F0•\U0001F1F9\U0001F1ED•\U0001F1F9\U0001F1F7•</data>
+# flags15   UA US VN XK ZW
+<data>•\U0001F1FA\U0001F1E6•\U0001F1FA\U0001F1F8•\U0001F1FB\U0001F1F3•\U0001F1FD\U0001F1F0•\U0001F1FF\U0001F1FC•</data>
+# flagsX1   ES ES ES SE SE SE
+<data>•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F8•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1EA•</data>
+# flagsX2   GB GB GB BG BG BG
+<data>•\U0001F1EC\U0001F1E7•\U0001F1EC\U0001F1E7•\U0001F1EC\U0001F1E7•\U0001F1E7\U0001F1EC•\U0001F1E7\U0001F1EC•\U0001F1E7\U0001F1EC•</data>
+# flagsXtnd AE AF AL AM AO AR
+<data>•\U0001F1E6\U0001F1EA\u200C•\U0001F1E6\U0001F1EB\u200C•\U0001F1E6\U0001F1F1\u200C•\U0001F1E6\U0001F1F2\u0300•\U0001F1E6\U0001F1F4\u20DE•\U0001F1E6\U0001F1F7\u200C•</data>
+
+<word>
+# woman zwj woman zwj girl zwj girl, woman/fitz-1-2 zwj woman/fitz-4 zwj boy/fitz-6
+<data>•\U0001F469\u200D\U0001F469\u200D\U0001F467\u200D\U0001F467•\U0001F469\U0001F3FB\u200D\U0001F469\U0001F3FD\u200D\U0001F466\U0001F3FF•</data>
+# woman zwj baby/fitz-3, older_woman/fitz-5, runner/fitz-4, raised_fist/fitz-3, fuel_pump, fitz-3
+<data>•\U0001F469\u200D\U0001F476\U0001F3FC•\U0001F475\U0001F3FE•\U0001F3C3\U0001F3FD•\u270A\U0001F3FC•\u26FD•\U0001F3FC•</data>
+# man zwj hvy_blk_heart zwj man, woman, man zwj hvy_blk_heart/evar zwj man, woman
+<data>•\U0001F468\u200D\u2764\u200D\U0001F468•\U0001F469•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F468•\U0001F469•</data>
+# woman zwj hvy_blk_heart/evar zwj kiss_mark zwj woman, sleuth/fitz-4, horse_racing/fitz-5
+<data>•\U0001F469\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F469•\U0001F575\U0001F3FD•\U0001F3C7\U0001F3FE•</data>
+# victory_hand/evar, victory_hand/evar/fitz-1-2, victory_hand/fitz-1-2, rowboat/fitz-4, vulcan_salute/fitz-5, space,
+<data>•\u270C\uFE0F•\u270C\uFE0F\U0001F3FB•\u270C\U0001F3FB•\U0001F6A3\U0001F3FD•\U0001F596\U0001F3FE•\u0020•</data>
+# writing_hand fitz-1-2, splayed_hand/fitz-3, middle_finger/fitz-4, sign_of_horns/fitz-5, eye zwj left_speech_bubble, space
+<data>•\u270D\U0001F3FB•\U0001F590\U0001F3FC•\U0001F595\U0001F3FD•\U0001F918\U0001F3FE•\U0001F441\u200D\U0001F5E8•\u0020•</data>
+# family (man, boy, boy), family (woman, girl), space
+<data>•\U0001F468\u200D\U0001F466\u200D\U0001F466•\U0001F469\u200D\U0001F467•\u0020•</data>
+# rainbow flag using evar, rainbow flag no evar, space
+<data>•\U0001F3F3\uFE0F\u200D\U0001F308•\U0001F3F3\u200D\U0001F308•\u0020•</data>
+# woman with ball using evar, woman with ball no evar, woman with ball fitz 4 using evar, woman with ball fitz 4 no evar, space
+<data>•\u26F9\uFE0F\u200D\u2640\uFE0F•\u26F9\u200D\u2640•\u26F9\U0001F3FD\u200D\u2640\uFE0F•\u26F9\U0001F3FD\u200D\u2640•\u0020•</data>
+# woman runner using evar, woman runner no evar, woman runner fitz 4 using evar, woman runner fitz 4 no evar, space
+<data>•\U0001F3C3\u200D\u2640\uFE0F•\U0001F3C3\u200D\u2640•\U0001F3C3\U0001F3FD\u200D\u2640\uFE0F•\U0001F3C3\U0001F3FD\u200D\u2640•\u0020•</data>
+# 9.0 + professions
+# black heart, fitz 4, squid, fitz4, man dancing /fitz4, mother xmas /fitz4
+<data>•\U0001F5A4•\U0001F3FD•\U0001F991•\U0001F3FD•\U0001F57A\U0001F3FD•\U0001F936\U0001F3FD•\u0020•</data>
+# facepalm, facepalm / fitz4, facepalm + woman +evar, facepalm + woman -evar, facepalm/fitz4 + woman +evar, facepalm/fitz4 + woman -evar
+<data>•\U0001F926•\U0001F926\U0001F3FD•\U0001F926\u200D\u2640\uFE0F•\U0001F926\u200D\u2640•\U0001F926\U0001F3FD\u200D\u2640\uFE0F•\U0001F926\U0001F3FD\u200D\u2640•\u0020•</data>
+# handball, handball / fitz4, handball + man +evar, handball + man -evar, handball/fitz4 + man +evar, handball/fitz4 + man -evar
+<data>•\U0001F93E•\U0001F93E\U0001F3FD•\U0001F93E\u200D\u2642\uFE0F•\U0001F93E\u200D\u2642•\U0001F93E\U0001F3FD\u200D\u2642\uFE0F•\U0001F93E\U0001F3FD\u200D\u2642•\u0020•</data>
+# man health worker +evar, man health worker -evar, man health worker / fitz4 +evar, man health worker / fitz4 -evar
+<data>•\U0001F468\u200D\u2695\uFE0F•\U0001F468\u200D\u2695•\U0001F468\U0001F3FD\u200D\u2695\uFE0F•\U0001F468\U0001F3FD\u200D\u2695•\u0020•</data>
+# woman astronaut, woman astronaut / fitz4
+<data>•\U0001F469\u200D\U0001F680•\U0001F469\U0001F3FD\u200D\U0001F680•\u0020•</data>
+# modifier bases added in emoji 4.0
+# SNOWBOARDER/fitz-3, HORSE RACING/fitz-4, GOLFER/fitz-5, MAN IN BUSINESS SUIT LEVITATING/fitz-6, SLEEPING ACCOMMODATION/fitz-12, space
+<data>•\U0001F3C2\U0001F3FC•\U0001F3C7\U0001F3FD•\U0001F3CC\U0001F3FE•\U0001F574\U0001F3FF•\U0001F6CC\U0001F3FB•\u0020•</data>
+
+# flags1    AE AF AL AM AO AR AT
+<data>•\U0001F1E6\U0001F1EA•\U0001F1E6\U0001F1EB•\U0001F1E6\U0001F1F1•\U0001F1E6\U0001F1F2•\U0001F1E6\U0001F1F4•\U0001F1E6\U0001F1F7•\U0001F1E6\U0001F1F9•</data>
+# flags2    AU AZ BA BD BE BF BG
+<data>•\U0001F1E6\U0001F1FA•\U0001F1E6\U0001F1FF•\U0001F1E7\U0001F1E6•\U0001F1E7\U0001F1E9•\U0001F1E7\U0001F1EA•\U0001F1E7\U0001F1EB•\U0001F1E7\U0001F1EC•</data>
+# flags3    BH BJ BN BO BR BS BT
+<data>•\U0001F1E7\U0001F1ED•\U0001F1E7\U0001F1EF•\U0001F1E7\U0001F1F3•\U0001F1E7\U0001F1F4•\U0001F1E7\U0001F1F7•\U0001F1E7\U0001F1F8•\U0001F1E7\U0001F1F9•</data>
+# flags4    BW BY BZ CA CD CF CG
+<data>•\U0001F1E7\U0001F1FC•\U0001F1E7\U0001F1FE•\U0001F1E7\U0001F1FF•\U0001F1E8\U0001F1E6•\U0001F1E8\U0001F1E9•\U0001F1E8\U0001F1EB•\U0001F1E8\U0001F1EC•</data>
+# flags5    CH CI CL CM CN CO CR
+<data>•\U0001F1E8\U0001F1ED•\U0001F1E8\U0001F1EE•\U0001F1E8\U0001F1F1•\U0001F1E8\U0001F1F2•\U0001F1E8\U0001F1F3•\U0001F1E8\U0001F1F4•\U0001F1E8\U0001F1F7•</data>
+# flags6    CU CV CY CZ DE DJ DK
+<data>•\U0001F1E8\U0001F1FA•\U0001F1E8\U0001F1FB•\U0001F1E8\U0001F1FE•\U0001F1E8\U0001F1FF•\U0001F1E9\U0001F1EA•\U0001F1E9\U0001F1EF•\U0001F1E9\U0001F1F0•</data>
+# flags7    DM DO DZ EC EE EG ER
+<data>•\U0001F1E9\U0001F1F2•\U0001F1E9\U0001F1F4•\U0001F1E9\U0001F1FF•\U0001F1EA\U0001F1E8•\U0001F1EA\U0001F1EA•\U0001F1EA\U0001F1EC•\U0001F1EA\U0001F1F7•</data>
+# flags8    ES ET FI FJ FR GA GB
+<data>•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F9•\U0001F1EB\U0001F1EE•\U0001F1EB\U0001F1EF•\U0001F1EB\U0001F1F7•\U0001F1EC\U0001F1E6•\U0001F1EC\U0001F1E7•</data>
+# flags9    GE GH GM GN GR GT GW
+<data>•\U0001F1EC\U0001F1EA•\U0001F1EC\U0001F1ED•\U0001F1EC\U0001F1F2•\U0001F1EC\U0001F1F3•\U0001F1EC\U0001F1F7•\U0001F1EC\U0001F1F9•\U0001F1EC\U0001F1FC•</data>
+# flags10   GY HK HN HR HT HU ID
+<data>•\U0001F1EC\U0001F1FE•\U0001F1ED\U0001F1F0•\U0001F1ED\U0001F1F3•\U0001F1ED\U0001F1F7•\U0001F1ED\U0001F1F9•\U0001F1ED\U0001F1FA•\U0001F1EE\U0001F1E9•</data>
+# flags11   IE IL IN IQ IR IS IT
+<data>•\U0001F1EE\U0001F1EA•\U0001F1EE\U0001F1F1•\U0001F1EE\U0001F1F3•\U0001F1EE\U0001F1F6•\U0001F1EE\U0001F1F7•\U0001F1EE\U0001F1F8•\U0001F1EE\U0001F1F9•</data>
+# flags12   JM JO JP KE KG KH KR
+<data>•\U0001F1EF\U0001F1F2•\U0001F1EF\U0001F1F4•\U0001F1EF\U0001F1F5•\U0001F1F0\U0001F1EA•\U0001F1F0\U0001F1EC•\U0001F1F0\U0001F1ED•\U0001F1F0\U0001F1F7•</data>
+# flags13   MX MY NL NO PL PT
+<data>•\U0001F1F2\U0001F1FD•\U0001F1F2\U0001F1FE•\U0001F1F3\U0001F1F1•\U0001F1F3\U0001F1F4•\U0001F1F5\U0001F1F1•\U0001F1F5\U0001F1F9•</data>
+# flags14   RO RU SA SE SK TH TR
+<data>•\U0001F1F7\U0001F1F4•\U0001F1F7\U0001F1FA•\U0001F1F8\U0001F1E6•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1F0•\U0001F1F9\U0001F1ED•\U0001F1F9\U0001F1F7•</data>
+# flags15   UA US VN XK ZW
+<data>•\U0001F1FA\U0001F1E6•\U0001F1FA\U0001F1F8•\U0001F1FB\U0001F1F3•\U0001F1FD\U0001F1F0•\U0001F1FF\U0001F1FC•</data>
+# flagsX1   ES ES ES SE SE SE
+<data>•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F8•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1EA•</data>
+# flagsX2   GB GB GB BG BG BG
+<data>•\U0001F1EC\U0001F1E7•\U0001F1EC\U0001F1E7•\U0001F1EC\U0001F1E7•\U0001F1E7\U0001F1EC•\U0001F1E7\U0001F1EC•\U0001F1E7\U0001F1EC•</data>
+# flagsXtnd AE AF AL AM AO AR
+<data>•\U0001F1E6\U0001F1EA\u200C•\U0001F1E6\U0001F1EB\u200C•\U0001F1E6\U0001F1F1\u200C•\U0001F1E6\U0001F1F2\u0300•\U0001F1E6\U0001F1F4\u20DE•\U0001F1E6\U0001F1F7\u200C•</data>
+
+<line>
+# woman zwj woman zwj girl zwj girl
+<data>•\U0001F469\u200D\U0001F469\u200D\U0001F467\u200D\U0001F467•</data>
+# woman zwj baby/fitz-3, older_woman/fitz-5, runner/fitz-4, raised_fist/fitz-3, fuel_pump, fitz-3
+<data>•\U0001F469\u200D\U0001F476\U0001F3FC•\U0001F475\U0001F3FE•\U0001F3C3\U0001F3FD•\u270A\U0001F3FC•\u26FD•\U0001F3FC•</data>
+# man zwj hvy_blk_heart zwj man, woman, man zwj hvy_blk_heart/evar zwj man, woman
+<data>•\U0001F468\u200D\u2764\u200D\U0001F468•\U0001F469•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F468•\U0001F469•</data>
+# woman zwj hvy_blk_heart/evar zwj kiss_mark zwj woman, sleuth/fitz-4, horse_racing/fitz-5
+<data>•\U0001F469\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F469•\U0001F575\U0001F3FD•\U0001F3C7\U0001F3FE•</data>
+# victory_hand/evar, victory_hand/evar/fitz-1-2, victory_hand/fitz-1-2, rowboat/fitz-4, vulcan_salute/fitz-5 space,
+<data>•\u270C\uFE0F•\u270C\uFE0F\U0001F3FB•\u270C\U0001F3FB•\U0001F6A3\U0001F3FD•\U0001F596\U0001F3FE\u0020•</data>
+# writing_hand fitz-1-2, splayed_hand/fitz-3, middle_finger/fitz-4, sign_of_horns/fitz-5, eye zwj left_speech_bubble, space
+<data>•\u270D\U0001F3FB•\U0001F590\U0001F3FC•\U0001F595\U0001F3FD•\U0001F918\U0001F3FE•\U0001F441\u200D\U0001F5E8\u0020•</data>
+# family (man, boy, boy), family (woman, girl), space
+<data>•\U0001F468\u200D\U0001F466\u200D\U0001F466•\U0001F469\u200D\U0001F467\u0020•</data>
+# rainbow flag using evar, rainbow flag no evar, space
+<data>•\U0001F3F3\uFE0F\u200D\U0001F308•\U0001F3F3\u200D\U0001F308\u0020•</data>
+# woman with ball using evar, woman with ball no evar, woman with ball fitz 4 using evar, woman with ball fitz 4 no evar, space
+<data>•\u26F9\uFE0F\u200D\u2640\uFE0F•\u26F9\u200D\u2640•\u26F9\U0001F3FD\u200D\u2640\uFE0F•\u26F9\U0001F3FD\u200D\u2640\u0020•</data>
+# woman runner using evar, woman runner no evar, woman runner fitz 4 using evar, woman runner fitz 4 no evar, space
+<data>•\U0001F3C3\u200D\u2640\uFE0F•\U0001F3C3\u200D\u2640•\U0001F3C3\U0001F3FD\u200D\u2640\uFE0F•\U0001F3C3\U0001F3FD\u200D\u2640\u0020•</data>
+# 9.0 + professions
+# black heart, fitz 4, squid, fitz4, man dancing /fitz4, mother xmas /fitz4
+<data>•\U0001F5A4•\U0001F3FD•\U0001F991•\U0001F3FD•\U0001F57A\U0001F3FD•\U0001F936\U0001F3FD\u0020•</data>
+# facepalm, facepalm / fitz4, facepalm + woman +evar, facepalm + woman -evar, facepalm/fitz4 + woman +evar, facepalm/fitz4 + woman -evar
+<data>•\U0001F926•\U0001F926\U0001F3FD•\U0001F926\u200D\u2640\uFE0F•\U0001F926\u200D\u2640•\U0001F926\U0001F3FD\u200D\u2640\uFE0F•\U0001F926\U0001F3FD\u200D\u2640\u0020•</data>
+# handball, handball / fitz4, handball + man +evar, handball + man -evar, handball/fitz4 + man +evar, handball/fitz4 + man -evar
+<data>•\U0001F93E•\U0001F93E\U0001F3FD•\U0001F93E\u200D\u2642\uFE0F•\U0001F93E\u200D\u2642•\U0001F93E\U0001F3FD\u200D\u2642\uFE0F•\U0001F93E\U0001F3FD\u200D\u2642\u0020•</data>
+# man health worker +evar, man health worker -evar, man health worker / fitz4 +evar, man health worker / fitz4 -evar
+<data>•\U0001F468\u200D\u2695\uFE0F•\U0001F468\u200D\u2695•\U0001F468\U0001F3FD\u200D\u2695\uFE0F•\U0001F468\U0001F3FD\u200D\u2695\u0020•</data>
+# woman astronaut, woman astronaut / fitz4
+<data>•\U0001F469\u200D\U0001F680•\U0001F469\U0001F3FD\u200D\U0001F680\u0020•</data>
+# modifier bases added in emoji 4.0
+# SNOWBOARDER/fitz-3, HORSE RACING/fitz-4, GOLFER/fitz-5, MAN IN BUSINESS SUIT LEVITATING/fitz-6, SLEEPING ACCOMMODATION/fitz-12 space
+<data>•\U0001F3C2\U0001F3FC•\U0001F3C7\U0001F3FD•\U0001F3CC\U0001F3FE•\U0001F574\U0001F3FF•\U0001F6CC\U0001F3FB\u0020•</data>
+
+<locale ja@lb=loose>
+<line>
+# woman zwj woman zwj girl zwj girl
+<data>•\U0001F469\u200D\U0001F469\u200D\U0001F467\u200D\U0001F467•</data>
+# woman zwj baby/fitz-3, older_woman/fitz-5, runner/fitz-4, raised_fist/fitz-3, fuel_pump, fitz-3
+<data>•\U0001F469\u200D\U0001F476\U0001F3FC•\U0001F475\U0001F3FE•\U0001F3C3\U0001F3FD•\u270A\U0001F3FC•\u26FD•\U0001F3FC•</data>
+# man zwj hvy_blk_heart zwj man, woman, man zwj hvy_blk_heart/evar zwj man, woman
+<data>•\U0001F468\u200D\u2764\u200D\U0001F468•\U0001F469•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F468•\U0001F469•</data>
+# woman zwj hvy_blk_heart/evar zwj kiss_mark zwj woman, sleuth/fitz-4, horseRacing/fitz-5
+<data>•\U0001F469\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F469•\U0001F575\U0001F3FD•\U0001F3C7\U0001F3FE•</data>
+# victory_hand/evar, victory_hand/evar/fitz-1-2, victory_hand/fitz-1-2, rowboat/fitz-4, vulcan_salute/fitz-5 space,
+<data>•\u270C\uFE0F•\u270C\uFE0F\U0001F3FB•\u270C\U0001F3FB•\U0001F6A3\U0001F3FD•\U0001F596\U0001F3FE\u0020•</data>
+# writing_hand fitz-1-2, splayed_hand/fitz-3, middle_finger/fitz-4, sign_of_horns/fitz-5, eye zwj left_speech_bubble, space
+<data>•\u270D\U0001F3FB•\U0001F590\U0001F3FC•\U0001F595\U0001F3FD•\U0001F918\U0001F3FE•\U0001F441\u200D\U0001F5E8\u0020•</data>
+# 9.0 + professions
+# black heart, fitz 4, squid, fitz4, man dancing /fitz4, mother xmas /fitz4
+<data>•\U0001F5A4•\U0001F3FD•\U0001F991•\U0001F3FD•\U0001F57A\U0001F3FD•\U0001F936\U0001F3FD\u0020•</data>
+# facepalm, facepalm / fitz4, facepalm + woman +evar, facepalm + woman -evar, facepalm/fitz4 + woman +evar, facepalm/fitz4 + woman -evar
+<data>•\U0001F926•\U0001F926\U0001F3FD•\U0001F926\u200D\u2640\uFE0F•\U0001F926\u200D\u2640•\U0001F926\U0001F3FD\u200D\u2640\uFE0F•\U0001F926\U0001F3FD\u200D\u2640\u0020•</data>
+# handball, handball / fitz4, handball + man +evar, handball + man -evar, handball/fitz4 + man +evar, handball/fitz4 + man -evar
+<data>•\U0001F93E•\U0001F93E\U0001F3FD•\U0001F93E\u200D\u2642\uFE0F•\U0001F93E\u200D\u2642•\U0001F93E\U0001F3FD\u200D\u2642\uFE0F•\U0001F93E\U0001F3FD\u200D\u2642\u0020•</data>
+# man health worker +evar, man health worker -evar, man health worker / fitz4 +evar, man health worker / fitz4 -evar
+<data>•\U0001F468\u200D\u2695\uFE0F•\U0001F468\u200D\u2695•\U0001F468\U0001F3FD\u200D\u2695\uFE0F•\U0001F468\U0001F3FD\u200D\u2695\u0020•</data>
+# woman astronaut, woman astronaut / fitz4
+<data>•\U0001F469\u200D\U0001F680•\U0001F469\U0001F3FD\u200D\U0001F680\u0020•</data>
index 276fad8..6873f48 100644 (file)
 "(?<!aą)spam"                   "**bą<0>spam</0>**"
 "(?<!ąabc)spam"                 "**ąabx<0>spam</0>**"
 
+# Bug #12930
+#
+#   Minimum Match Length computation, int32_t overflow on an empty set in the pattern.
+#   The empty set, with no match possible, has a min match length of INT32_MAX.
+#   Was incremented subsequently. Caused assertion failure on pattern compile.
+
+"[^\u0000-\U0010ffff]bc?"       "bc no match"
+"[^\u0000-\U0010ffff]?bc?"      "<0>bc</0> has a match"
+
+
 #  Random debugging, Temporary
 #
 
index 3a1a046..32f88d2 100644 (file)
@@ -13,8 +13,8 @@
 root
 {
     Version { 44.0 }
-    ExpectCLDRVersionAtLeast { 30.0 } // 'base' cldr version. Allow up to version =.=.* of this
-    CurrentCLDRVersion { 30.0.1 } // Current CLDR version as of the test update. Warn if not an exact match.
+    ExpectCLDRVersionAtLeast { 31.0 } // 'base' cldr version. Allow up to version =.=.* of this
+    CurrentCLDRVersion { 31.0 } // Current CLDR version as of the test update. Warn if not an exact match.
 
     ShortLanguage { xxx }
 
index f0de36c..1aa51ba 100644 (file)
@@ -4250,6 +4250,15 @@ structLocale:table(nofallback){
                 }
             }
         }
+        dayOfYear{
+            dn{""}
+        }
+        dayOfYear-short{
+            dn{""}
+        }
+        dayOfYear-narrow{
+            dn{""}
+        }
         dayperiod{
             dn{""}
             dn%variant{""}
@@ -4259,6 +4268,14 @@ structLocale:table(nofallback){
                 "1"{""}
             }
         }
+        dayperiod-short{
+            dn{""}
+            dn%variant{""}
+        }
+        dayperiod-narrow{
+            dn{""}
+            dn%variant{""}
+        }
         era{
             dn{""}
             relative{
@@ -4267,6 +4284,12 @@ structLocale:table(nofallback){
                 "1"{""}
             }
         }
+        era-short{
+            dn{""}
+        }
+        era-narrow{
+            dn{""}
+        }
         fri{
             relative{
                 "-1"{""}
@@ -5263,6 +5286,15 @@ structLocale:table(nofallback){
                 }
             }
         }
+        weekOfMonth{
+            dn{""}
+        }
+        weekOfMonth-short{
+            dn{""}
+        }
+        weekOfMonth-narrow{
+            dn{""}
+        }
         weekday{
             dn{""}
             relative{
@@ -5271,6 +5303,21 @@ structLocale:table(nofallback){
                 "1"{""}
             }
         }
+        weekday-short{
+            dn{""}
+        }
+        weekday-narrow{
+            dn{""}
+        }
+        weekdayOfMonth{
+            dn{""}
+        }
+        weekdayOfMonth-short{
+            dn{""}
+        }
+        weekdayOfMonth-narrow{
+            dn{""}
+        }
         year{
             dn{""}                    
             relative{
@@ -5360,6 +5407,12 @@ structLocale:table(nofallback){
                 "1"{""}
             }
         }
+        zone-short{
+            dn{""}
+        }
+        zone-narrow{
+            dn{""}
+        }
     }
     CurrencyUnitPatterns{
         zero{""}
@@ -5409,6 +5462,7 @@ structLocale:table(nofallback){
         aro{""}
         arp{""}
         arq{""}
+        ars{""}
         arw{""}
         ary{""}
         arz{""}
@@ -13195,6 +13249,24 @@ structLocale:table(nofallback){
                 timeSeparator{""}
             }
         }
+        minimalPairs{
+            ordinal{
+                zero{""}
+                one{""}
+                two{""}
+                few{""}
+                many{""}
+                other{""}
+            }
+            plural{
+                zero{""}
+                one{""}
+                two{""}
+                few{""}
+                many{""}
+                other{""}
+            }
+        }
         mlym{
             miscPatterns{
                 atLeast{""}
index 13121fa..87ad62a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 6546c99..d05ef97 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 1cbef00..c3f81d6 100644 (file)
@@ -19,6 +19,10 @@ SUBDIRS = toolutil ctestfw makeconv genrb genbrk \
 gencnval gensprep icuinfo genccode gencmn icupkg pkgdata \
 gentest gennorm2 gencfu gendict
 
+ifneq (@platform_make_fragment_name@,mh-cygwin-msvc)
+SUBDIRS += escapesrc
+endif
+
 ## List of phony targets
 .PHONY : all all-local all-recursive install install-local     \
 install-recursive clean clean-local clean-recursive distclean          \
index 7d2a447..6b0ee96 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 3ffa3e3..7ca7bd0 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\..\lib\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\..\lib\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>.\..\..\..\lib\icutest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <WholeProgramOptimization>true</WholeProgramOptimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/icutest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>..\..\..\bin\icutest58.dll</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\..\..\..\lib\icutest.pdb</ProgramDatabaseFile>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <ImportLibrary>.\..\..\..\lib\icutest.lib</ImportLibrary>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>.\..\..\..\lib\icutestd.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/icutest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>..\..\..\bin\icutest58d.dll</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\..\..\..\lib\icutestd.pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <ImportLibrary>.\..\..\..\lib\icutestd.lib</ImportLibrary>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\..\..\..\lib64\icutest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <WholeProgramOptimization>true</WholeProgramOptimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/icutest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>..\..\..\bin64\icutest58.dll</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\..\..\..\lib64\icutest.pdb</ProgramDatabaseFile>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\r
-      <ImportLibrary>.\..\..\..\lib64\icutest.lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\..\..\..\lib64\icutestd.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/icutest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>..\..\..\bin64\icutest58d.dll</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\..\..\..\lib64\icutestd.pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>.\..\..\..\lib64\icutestd.lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="ctest.c" />\r
-    <ClCompile Include="datamap.cpp" />\r
-    <ClCompile Include="testdata.cpp">\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-    </ClCompile>\r
-    <ClCompile Include="tstdtmod.cpp">\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-    </ClCompile>\r
-    <ClCompile Include="ucln_ct.c">\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-    </ClCompile>\r
-    <ClCompile Include="uperf.cpp">\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="unicode\ctest.h" />\r
-    <ClInclude Include="unicode\datamap.h" />\r
-    <ClInclude Include="unicode\testdata.h" />\r
-    <ClInclude Include="unicode\testlog.h" />\r
-    <ClInclude Include="unicode\testtype.h" />\r
-    <ClInclude Include="unicode\tstdtmod.h" />\r
-    <ClInclude Include="unicode\uperf.h" />\r
-    <ClInclude Include="unicode\utimer.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\..\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\..\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\..\..\..\lib\icutest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/icutest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>..\..\..\bin\icutest59.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\..\..\..\lib\icutest.pdb</ProgramDatabaseFile>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>.\..\..\..\lib\icutest.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\..\..\..\lib\icutestd.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/icutest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>..\..\..\bin\icutest59d.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\..\..\..\lib\icutestd.pdb</ProgramDatabaseFile>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>.\..\..\..\lib\icutestd.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\..\..\..\lib64\icutest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/icutest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>..\..\..\bin64\icutest59.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\..\..\..\lib64\icutest.pdb</ProgramDatabaseFile>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <ImportLibrary>.\..\..\..\lib64\icutest.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\..\..\..\lib64\icutestd.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/icutest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>..\..\..\bin64\icutest59d.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\..\..\..\lib64\icutestd.pdb</ProgramDatabaseFile>
+      <ImportLibrary>.\..\..\..\lib64\icutestd.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="ctest.c" />
+    <ClCompile Include="datamap.cpp" />
+    <ClCompile Include="testdata.cpp">
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+    </ClCompile>
+    <ClCompile Include="tstdtmod.cpp">
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+    </ClCompile>
+    <ClCompile Include="ucln_ct.c">
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+    </ClCompile>
+    <ClCompile Include="uperf.cpp">
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="unicode\ctest.h" />
+    <ClInclude Include="unicode\datamap.h" />
+    <ClInclude Include="unicode\testdata.h" />
+    <ClInclude Include="unicode\testlog.h" />
+    <ClInclude Include="unicode\testtype.h" />
+    <ClInclude Include="unicode\tstdtmod.h" />
+    <ClInclude Include="unicode\uperf.h" />
+    <ClInclude Include="unicode\utimer.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 0bdee5a..96241a0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -10,6 +10,7 @@
 
 #include "unicode/datamap.h"
 #include "unicode/resbund.h"
+#include "unicode/unistr.h"
 #include "hash.h"
 #include <stdlib.h>
 
@@ -20,7 +21,7 @@ int32_t
 DataMap::utoi(const UnicodeString &s) const
 {
   char ch[256];
-  const UChar *u = s.getBuffer();
+  const UChar *u = toUCharPtr(s.getBuffer());
   int32_t len = s.length();
   u_UCharsToChars(u, ch, len);
   ch[len] = 0; /* include terminating \0 */
index 83d949d..3ccf009 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index be8d318..bb1008d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6ed1d7e..a4d1ce8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index f3549a5..c950bad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index ccc9948..56e9076 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 40536a4..cbee692 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index f9582d0..811f62f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 00c20a0..7849a6d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************************
index 4a1628d..6cdce88 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index ba128ad..d1e0d6e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 899feea..51b7f26 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
@@ -12,7 +12,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
 #   define VC_EXTRALEAN
 #   define WIN32_LEAN_AND_MEAN
 #   include <windows.h>
@@ -162,7 +162,7 @@ typedef struct UTimer UTimer;
 typedef void FuntionToBeTimed(void* param);
 
 
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
 
     struct UTimer{
         LARGE_INTEGER start;
index 1022353..0735f8a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 294f671..0a4ec3c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index fa47d55..f5f06d7 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{C2BE5000-7501-4E87-9724-B8D82494FAE6}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C2BE5000-7501-4E87-9724-B8D82494FAE6}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/genbrk.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/genbrk.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/genbrk.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/genbrk.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Release/genbrk.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/genbrk.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/genbrk.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/genbrk.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/genbrk.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/genbrk.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/genbrk.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/genbrk.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/genbrk.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/genbrk.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/genbrk.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/genbrk.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/genbrk.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/genbrk.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/genbrk.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/genbrk.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/genbrk.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/genbrk.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/genbrk.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/genbrk.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/genbrk.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/genbrk.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/genbrk.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/genbrk.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="genbrk.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/genbrk.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/genbrk.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/genbrk.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/genbrk.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="genbrk.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 2534820..d35b589 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  *******************************************************************************
  *   file name:  gennames.c
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
index d9b4196..b6d00a3 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/genccode.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/genccode.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/genccode.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/genccode.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Release/genccode.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/genccode.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/genccode.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/genccode.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/genccode.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/genccode.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/genccode.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/genccode.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/genccode.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/genccode.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/genccode.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/genccode.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/genccode.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/genccode.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/genccode.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/genccode.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/genccode.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/genccode.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/genccode.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/genccode.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/genccode.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/genccode.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/genccode.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/genccode.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="genccode.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/genccode.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/genccode.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/genccode.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/genccode.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="genccode.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index f1175a7..c4098c8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 9bb9f1d..223ace1 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}</ProjectGuid>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
-      <Command>copy "$(TargetPath)" ..\..\..\bin</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>false</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug\gencfu.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
-      <Command>copy "$(TargetPath)" ..\..\..\bin</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <MinimalRebuild>false</MinimalRebuild>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release\gencfu.exe</OutputFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
-      <Command>copy "$(TargetPath)" ..\..\..\bin64%3b</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/gencfu.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/gencfu.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/gencfu.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/gencfu.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
-      <Command>copy "$(TargetPath)" ..\..\..\bin64%3b</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/gencfu.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gencfu.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/gencfu.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/gencfu.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="gencfu.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
+      <Command>copy "$(TargetPath)" ..\..\..\bin</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>false</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <Link>
+      <OutputFile>.\x86\Debug\gencfu.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
+      <Command>copy "$(TargetPath)" ..\..\..\bin</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <MinimalRebuild>false</MinimalRebuild>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <Link>
+      <OutputFile>.\x86\Release\gencfu.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
+      <Command>copy "$(TargetPath)" ..\..\..\bin64%3b</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/gencfu.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/gencfu.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/gencfu.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/gencfu.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
+      <Command>copy "$(TargetPath)" ..\..\..\bin64%3b</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/gencfu.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gencfu.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/gencfu.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/gencfu.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="gencfu.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index d328a30..77f0c20 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gencmn.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 43096fe..e3d13d9 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/gencmn.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/gencmn.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/gencmn.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/gencmn.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Release/gencmn.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/gencmn.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/gencmn.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/gencmn.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/gencmn.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gencmn.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/gencmn.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/gencmn.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/gencmn.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gencmn.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/gencmn.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/gencmn.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/gencmn.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/gencmn.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/gencmn.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/gencmn.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/gencmn.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/gencmn.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/gencmn.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/gencmn.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/gencmn.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gencmn.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/gencmn.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/gencmn.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="gencmn.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/gencmn.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gencmn.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/gencmn.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/gencmn.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="gencmn.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index ad5b3d2..8d2a04c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gencnval.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 9114002..09647f9 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/gencnval.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/gencnval.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/gencnval.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/gencnval.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Release/gencnval.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/gencnval.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/gencnval.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/gencnval.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/gencnval.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gencnval.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/gencnval.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/gencnval.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/gencnval.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gencnval.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/gencnval.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/gencnval.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/gencnval.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/gencnval.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/gencnval.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/gencnval.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/gencnval.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/gencnval.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/gencnval.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/gencnval.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/gencnval.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gencnval.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/gencnval.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/gencnval.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="gencnval.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/gencnval.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gencnval.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/gencnval.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/gencnval.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="gencnval.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index ef5b8de..c5302e0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  * Copyright (c) 1999-2016, International Business Machines Corporation and
index 0dc3119..d043532 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  * Copyright (c) 1999-2012, International Business Machines Corporation and
index 75c0bdd..73b9fec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -22,6 +22,7 @@
 #include "unicode/ucharstrie.h"
 #include "unicode/bytestrie.h"
 #include "unicode/ucnv.h"
+#include "unicode/ustring.h"
 #include "unicode/utf16.h"
 
 #include "charstr.h"
index 373f02f..76ed333 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{9D4211F7-2C77-439C-82F0-30A4E43BA569}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9D4211F7-2C77-439C-82F0-30A4E43BA569}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/gendict.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/gendict.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/gendict.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/gendict.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Release/gendict.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/gendict.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/gendict.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/gendict.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/gendict.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gendict.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/gendict.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/gendict.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/gendict.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gendict.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/gendict.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/gendict.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/gendict.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/gendict.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/gendict.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/gendict.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/gendict.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/gendict.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/gendict.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/gendict.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/gendict.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gendict.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/gendict.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/gendict.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="gendict.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/gendict.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gendict.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/gendict.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/gendict.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="gendict.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 2280763..729a3d0 100644 (file)
@@ -24,7 +24,7 @@ CLEANFILES = *~ $(DEPS)
 ## Target information
 TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
 OBJECTS = gennorm2.o n2builder.o
index 9c85e0b..477bfd6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gennorm2.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 99625eb..5d264bb 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{C7891A65-80AB-4245-912E-5F1E17B0E6C4}</ProjectGuid>\r
-    <RootNamespace>gennorm2</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C7891A65-80AB-4245-912E-5F1E17B0E6C4}</ProjectGuid>
+    <RootNamespace>gennorm2</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release\gennorm2.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release\</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release\</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release\</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release\gennorm2.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release\gennorm2.pdb</ProgramDatabaseFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>false</DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release\gennorm2.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release\</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release\</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release\</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release\gennorm2.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release\gennorm2.pdb</ProgramDatabaseFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>false</DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug\gennorm2.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug\</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug\</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug\</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug\gennorm2.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug\gennorm2.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>false</DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug\gennorm2.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug\</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug\</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug\</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug\gennorm2.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug\gennorm2.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>false</DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release\gennorm2.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release\</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release\</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release\</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release\gennorm2.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release\gennorm2.pdb</ProgramDatabaseFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>false</DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release\gennorm2.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release\</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release\</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release\</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release\gennorm2.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release\gennorm2.pdb</ProgramDatabaseFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>false</DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug\gennorm2.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug\</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug\</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug\</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug\gennorm2.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug\gennorm2.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>false</DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="gennorm2.cpp" />\r
-    <ClCompile Include="n2builder.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="n2builder.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug\gennorm2.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug\</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug\</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug\</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug\gennorm2.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug\gennorm2.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>false</DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="gennorm2.cpp" />
+    <ClCompile Include="n2builder.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="n2builder.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 54ad860..66ccd70 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  n2builder.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -25,9 +25,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#if U_HAVE_STD_STRING
 #include <vector>
-#endif
 #include "unicode/errorcode.h"
 #include "unicode/localpointer.h"
 #include "unicode/putil.h"
@@ -282,7 +280,7 @@ uint8_t Normalizer2DataBuilder::getCC(UChar32 c) const {
 
 static UBool isWellFormed(const UnicodeString &s) {
     UErrorCode errorCode=U_ZERO_ERROR;
-    u_strToUTF8(NULL, 0, NULL, s.getBuffer(), s.length(), &errorCode);
+    u_strToUTF8(NULL, 0, NULL, toUCharPtr(s.getBuffer()), s.length(), &errorCode);
     return U_SUCCESS(errorCode) || errorCode==U_BUFFER_OVERFLOW_ERROR;
 }
 
@@ -315,7 +313,7 @@ void Normalizer2DataBuilder::setRoundTripMapping(UChar32 c, const UnicodeString
                 (int)phase, (long)c);
         exit(U_INVALID_FORMAT_ERROR);
     }
-    int32_t numCP=u_countChar32(m.getBuffer(), m.length());
+    int32_t numCP=u_countChar32(toUCharPtr(m.getBuffer()), m.length());
     if(numCP!=2) {
         fprintf(stderr,
                 "error in gennorm2 phase %d: "
@@ -452,7 +450,7 @@ Normalizer2DataBuilder::decompose(UChar32 start, UChar32 end, uint32_t value) {
         Norm &norm=norms[value];
         const UnicodeString &m=*norm.mapping;
         UnicodeString *decomposed=NULL;
-        const UChar *s=m.getBuffer();
+        const UChar *s=toUCharPtr(m.getBuffer());
         int32_t length=m.length();
         int32_t prev, i=0;
         UChar32 c;
@@ -607,7 +605,7 @@ Normalizer2DataBuilder::reorder(Norm *p, BuilderReorderingBuffer &buffer) {
     if(length>Normalizer2Impl::MAPPING_LENGTH_MASK) {
         return;  // writeMapping() will complain about it and print the code point.
     }
-    const UChar *s=m.getBuffer();
+    const UChar *s=toUCharPtr(m.getBuffer());
     int32_t i=0;
     UChar32 c;
     while(i<length) {
@@ -1209,7 +1207,7 @@ void Normalizer2DataBuilder::writeBinaryFile(const char *filename) {
     }
     udata_writeBlock(pData, indexes, sizeof(indexes));
     udata_writeBlock(pData, norm16TrieBytes.getAlias(), norm16TrieLength);
-    udata_writeUString(pData, extraData.getBuffer(), extraData.length());
+    udata_writeUString(pData, toUCharPtr(extraData.getBuffer()), extraData.length());
     udata_writeBlock(pData, smallFCD, sizeof(smallFCD));
     int32_t writtenSize=udata_finish(pData, errorCode);
     if(errorCode.isFailure()) {
index 6f8b8af..c231a3d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  n2builder.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 63cd52b..7e2360b 100644 (file)
@@ -33,7 +33,7 @@ TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 # derb depends on icuio
 @ICUIO_TRUE@DERB = $(BINDIR)/$(DERB_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil -I$(top_srcdir)/io
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil -I$(top_srcdir)/io
 CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
index 22e275e..ac26d95 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  derb.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 2777eec..73180d0 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{D3065ADB-8820-4CC7-9B6C-9510833961A3}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release_derb\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release_derb\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug_derb\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug_derb\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release_derb\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release_derb\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug_derb\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug_derb\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D3065ADB-8820-4CC7-9B6C-9510833961A3}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release_derb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release_derb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug_derb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug_derb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release_derb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release_derb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug_derb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug_derb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>.\x86\Release_derb/derb.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release_derb/derb.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release_derb/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release_derb/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release_derb/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release_derb/derb.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release_derb/derb.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\x86\Release_derb/derb.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release_derb/derb.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release_derb/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release_derb/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release_derb/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release_derb/derb.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release_derb/derb.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>.\x86\Debug_derb/derb.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug_derb/derb.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug_derb/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug_derb/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug_derb/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug_derb/derb.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug_derb/derb.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\x86\Debug_derb/derb.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug_derb/derb.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug_derb/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug_derb/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug_derb/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug_derb/derb.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug_derb/derb.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release_derb/derb.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release_derb/derb.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release_derb/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release_derb/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release_derb/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release_derb/derb.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release_derb/derb.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release_derb/derb.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release_derb/derb.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release_derb/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release_derb/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release_derb/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release_derb/derb.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release_derb/derb.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug_derb/derb.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug_derb/derb.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug_derb/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug_derb/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug_derb/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug_derb/derb.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug_derb/derb.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="derb.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\io\io.vcxproj">\r
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
-      <Private>true</Private>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>\r
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug_derb/derb.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug_derb/derb.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug_derb/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug_derb/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug_derb/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug_derb/derb.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug_derb/derb.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="derb.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\io\io.vcxproj">
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
+      <Private>true</Private>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 7340f01..603f26a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5026ecf..e01b955 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 685fb58..68870bd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 99c604f..019020a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d795450..7ac4512 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 81a3bf5..18f994d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d7341be..dfe3b8d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 03cad7f..5e44547 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 7ceaa6c..43195d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d3882c4..1983a2f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d2a3035..9a12c50 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 468c27e..9135da2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 74b8c82..e5b8d15 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9420184..2e04bbc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -271,7 +271,7 @@ StringBaseResource::StringBaseResource(SRBRoot *bundle, const char *tag, int8_t
         return;
     }
 
-    fString.setTo(value, len);
+    fString.setTo(ConstChar16Ptr(value), len);
     fString.getTerminatedBuffer();  // Some code relies on NUL-termination.
     if (U_SUCCESS(errorCode) && fString.isBogus()) {
         errorCode = U_MEMORY_ALLOCATION_ERROR;
@@ -1031,7 +1031,7 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
             if (f16BitUnits.length() <= 1) {
                 // no pool strings to checksum
             } else if (U_IS_BIG_ENDIAN) {
-                checksum = computeCRC((const char *)f16BitUnits.getBuffer(),
+                checksum = computeCRC(reinterpret_cast<const char *>(f16BitUnits.getBuffer()),
                                       (uint32_t)f16BitUnits.length() * 2, checksum);
             } else {
                 // Swap to big-endian so we get the same checksum on all platforms
@@ -1039,7 +1039,7 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
                 UnicodeString s(f16BitUnits);
                 s.append((UChar)1);  // Ensure that we own this buffer.
                 assert(!s.isBogus());
-                uint16_t *p = (uint16_t *)s.getBuffer();
+                uint16_t *p = const_cast<uint16_t *>(reinterpret_cast<const uint16_t *>(s.getBuffer()));
                 for (int32_t count = f16BitUnits.length(); count > 0; --count) {
                     uint16_t x = *p;
                     *p++ = (uint16_t)((x << 8) | (x >> 8));
index de6faf6..ee1ecf3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -304,7 +304,7 @@ public:
     StringBaseResource(int8_t type, const UChar *value, int32_t len, UErrorCode &errorCode);
     virtual ~StringBaseResource();
 
-    const UChar *getBuffer() const { return fString.getBuffer(); }
+    const UChar *getBuffer() const { return icu::toUCharPtr(fString.getBuffer()); }
     int32_t length() const { return fString.length(); }
 
     virtual void handlePreWrite(uint32_t *byteOffset);
index 33e42d6..91be063 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 682ee7a..2684bbe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 07e9b15..15f76a8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c27a781..91483d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d5cc942..02bcb62 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 62fdd24..2bfcfeb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -73,7 +73,7 @@ static int32_t write_utf8_file(FileStream* fileStream, UnicodeString outString)
     u_strToUTF8(NULL,
                 0,
                 &len,
-                outString.getBuffer(),
+                toUCharPtr(outString.getBuffer()),
                 outString.length(),
                 &status);
 
@@ -85,7 +85,7 @@ static int32_t write_utf8_file(FileStream* fileStream, UnicodeString outString)
     u_strToUTF8(dest,
                 len,
                 &len,
-                outString.getBuffer(),
+                toUCharPtr(outString.getBuffer()),
                 outString.length(),
                 &status);
 
index 592a641..faf0047 100755 (executable)
@@ -8,7 +8,7 @@
 #*******************************************************************************
 #*
 #*   file name:  genren.pl
-#*   encoding:   US-ASCII
+#*   encoding:   UTF-8
 #*   tab size:   8 (not used)
 #*   indentation:4
 #*
@@ -80,7 +80,7 @@ print HEADER <<"EndOfHeaderComment";
 *******************************************************************************
 *
 *   file name:  $headername
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 258bad4..a835323 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gensprep.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 487ef6c..a2e5e61 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gensprep.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e2260a5..ccfadd2 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{631C23CE-6C1D-4875-88F0-85E0A42B36EA}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{631C23CE-6C1D-4875-88F0-85E0A42B36EA}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/gensprep.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/gensprep.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/gensprep.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/gensprep.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Release/gensprep.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/gensprep.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/gensprep.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/gensprep.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/gensprep.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gensprep.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/gensprep.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/gensprep.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/gensprep.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gensprep.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/gensprep.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/gensprep.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/gensprep.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/gensprep.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/gensprep.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/gensprep.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/gensprep.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/gensprep.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/gensprep.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/gensprep.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/gensprep.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gensprep.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/gensprep.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/gensprep.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="gensprep.c" />\r
-    <ClCompile Include="store.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="gensprep.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/gensprep.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gensprep.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/gensprep.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/gensprep.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="gensprep.c" />
+    <ClCompile Include="store.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="gensprep.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index ea7ee70..60252b9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  store.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 68ae0fd..6417155 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  genres32.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4ae6280..77076e9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gentest.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f55bd00..adb08c7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 7815094..d8840ff 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{77C78066-746F-4EA6-B3FE-B8C8A4A97891}</ProjectGuid>\r
-    <RootNamespace>gentest</RootNamespace>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/gentest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/gentest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/gentest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/gentest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/gentest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gentest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/gentest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/gentest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/gentest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/gentest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/gentest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/gentest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/gentest.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gentest.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/gentest.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/gentest.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="genres32.c" />\r
-    <ClCompile Include="gentest.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="gentest.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\ctestfw\ctestfw.vcxproj">\r
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{77C78066-746F-4EA6-B3FE-B8C8A4A97891}</ProjectGuid>
+    <RootNamespace>gentest</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Release/gentest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/gentest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/gentest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/gentest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/gentest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gentest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/gentest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/gentest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/gentest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/gentest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/gentest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/gentest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/gentest.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gentest.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/gentest.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/gentest.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="genres32.c" />
+    <ClCompile Include="gentest.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="gentest.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\ctestfw\ctestfw.vcxproj">
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 4eb505c..080b9fe 100755 (executable)
@@ -30,64 +30,6 @@ import os.path
 import re
 import getopt
 
-#
-#  svn autoprops definitions.
-#      Copy and paste here the ICU recommended auto-props from
-#      http://icu-project.org/docs/subversion_howto/index.html
-#
-#  This program will parse this autoprops string, and verify that files in
-#  the repository have the recommeded properties set.
-#
-svn_auto_props = """
-### Section for configuring automatic properties.
-[auto-props]
-### The format of the entries is:
-###   file-name-pattern = propname[=value][;propname[=value]...]
-### The file-name-pattern can contain wildcards (such as '*' and
-### '?').  All entries which match will be applied to the file.
-### Note that auto-props functionality must be enabled, which
-### is typically done by setting the 'enable-auto-props' option.
-*.c = svn:eol-style=native
-*.cc = svn:eol-style=native
-*.cpp = svn:eol-style=native
-*.h = svn:eol-style=native
-*.rc = svn:eol-style=native
-*.dsp = svn:eol-style=native
-*.dsw = svn:eol-style=native
-*.sln = svn:eol-style=native
-*.vcproj = svn:eol-style=native
-configure = svn:eol-style=native;svn:executable
-*.sh = svn:eol-style=native;svn:executable
-*.pl = svn:eol-style=native;svn:executable
-*.py = svn:eol-style=native;svn:executable
-*.txt = svn:mime-type=text/plain;svn:eol-style=native
-*.java = svn:eol-style=native;svn:mime-type=text/plain;;charset=utf-8
-*.ucm = svn:eol-style=native
-*.html = svn:eol-style=native;svn:mime-type=text/html
-*.htm = svn:eol-style=native;svn:mime-type=text/html
-*.xml = svn:eol-style=native
-Makefile = svn:eol-style=native
-*.in = svn:eol-style=native
-*.mak = svn:eol-style=native
-*.mk = svn:eol-style=native
-*.png = svn:mime-type=image/png
-*.jpeg = svn:mime-type=image/jpeg
-*.jpg = svn:mime-type=image/jpeg
-*.bin = svn:mime-type=application/octet-stream
-*.brk = svn:mime-type=application/octet-stream
-*.cnv = svn:mime-type=application/octet-stream
-*.dat = svn:mime-type=application/octet-stream
-*.icu = svn:mime-type=application/octet-stream
-*.res = svn:mime-type=application/octet-stream
-*.spp = svn:mime-type=application/octet-stream
-# new additions 2007-dec-5 srl
-*.rtf = mime-type=text/rtf
-*.pdf = mime-type=application/pdf
-# changed 2008-04-08: modified .txt, above, adding mime-type
-# changed 2010-11-09: modified .java, adding mime-type
-# Note: The escape syntax for semicolon (";;") is supported since subversion 1.6.1
-"""
-
 
 # file_types:  The parsed form of the svn auto-props specification.
 #              A list of file types - .cc, .cpp, .txt, etc.
@@ -148,45 +90,48 @@ def runCommand(cmd):
         sys.exit(exit_status)
     return output_text
 
+svn_auto_props = runCommand("svn propget svn:auto-props http://source.icu-project.org/repos/icu")
 
 def usage():
     print "usage: " + sys.argv[0] + " [-f | --fix] [-h | --help]"
 
     
 #
-#  UTF-8 file check.   For text files, add a charset to the mime-type if their contents are UTF-8
+#  UTF-8 file check.   For text files with svn:mime-type=text/anything, check the specified charset
 #    file_name:        name of a text file.
-#    base_mime_type:   svn:mime-type property value from the auto-props file (no charset= part)
+#    base_mime_type:   svn:mime-type property from the auto-props settings for this file type.
 #    actual_mime_type: existing svn:mime-type property value for the file.
-#    return:           svn:mime-type property value, with charset added when appropriate.
+#    return:           The correct svn:mime-type property value,
+#                         either the original, if it looks OK, otherwise the value from auto-props
 #
 def check_utf8(file_name, base_mime_type, actual_mime_type):
 
-    # If the file already has a charset in its mime-type, don't make any change.
-
-    if actual_mime_type.find("charset=") > 0:
-        return actual_mime_type;
-
     f = open(file_name, 'r')
     bytes = f.read()
     f.close()
-
-    if all(ord(byte) < 128 for byte in bytes):
-        # pure ASCII.
-        # print "Pure ASCII " + file_name
-        return base_mime_type
-
+    file_is_utf8 = True
     try:
         bytes.decode("UTF-8")
     except UnicodeDecodeError:
-        print "warning: %s: not ASCII, not UTF-8" % file_name
-        return base_mime_type
+        file_is_utf8 = False
+
+    if not file_is_utf8 and actual_mime_type.find("utf-8") >= 0:
+        print "Error: %s is not valid utf-8, but has a utf-8 mime type." % file_name
+        return actual_mime_type
+
+    if file_is_utf8 and actual_mime_type.find("charset") >=0 and actual_mime_type.find("utf-8") < 0:
+        print "Warning: %s is valid utf-8, but has a mime-type of %s." % (file_name, actual_mime_type)
 
-    if ord(bytes[0]) != 0xef:
-      print "UTF-8 file with no BOM: " + file_name
+    if ord(bytes[0]) == 0xef:
+        if not file_name.endswith(".txt"):
+            print "Warning: file %s contains a UTF-8 BOM: " % file_name
+
+    # If the file already has a charset in its mime-type, don't make any change.
+
+    if actual_mime_type.find("charset=") >= 0:
+        return actual_mime_type;
 
-    # Append charset=utf-8.
-    return base_mime_type + ';charset=utf-8'
+    return base_mime_type
 
 
 def main(argv):
@@ -233,13 +178,6 @@ def main(argv):
                         print "svn propset %s '%s' %s" % (propname, propval, f)
                         if fix_problems:
                             os.system("svn propset %s '%s' %s" % (propname, propval, f))
-                    if propname == "svn:eol-style" and propval == "native":
-                        if os.system("grep -q -v \r " + f):
-                            if fix_problems:
-                                print f + ": Removing DOS CR characters."
-                                os.system("sed -i s/\r// " + f);
-                            else:
-                                print f + " contains DOS CR characters."
 
 
 if __name__ == "__main__":
index 77f45fb..08bd87b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  icuinfo.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 33a0bd6..05f1dbb 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{E7611F49-F088-4175-9446-6111444E72C8}</ProjectGuid>\r
-    <RootNamespace>icuinfo</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E7611F49-F088-4175-9446-6111444E72C8}</ProjectGuid>
+    <RootNamespace>icuinfo</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>x86\Release/icuinfo.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>x86\Release/icuinfo.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>x86\Release/icuinfo.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level4</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>x86\Release/icuinfo.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>Debug/icuinfo.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)icuinfo.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>Debug/icuinfo.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>Debug/</AssemblerListingLocation>
+      <ObjectFileName>Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level4</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)icuinfo.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>x64\Release/icuinfo.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>x64\Release/icuinfo.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>x64\Release/icuinfo.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level4</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>x64\Release/icuinfo.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>Debug/icuinfo.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)icuinfo.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="icuinfo.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="icuplugins_windows_sample.txt" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\ctestfw\ctestfw.vcxproj">\r
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>Debug/icuinfo.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>Debug/</AssemblerListingLocation>
+      <ObjectFileName>Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level4</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)icuinfo.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="icuinfo.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="icuplugins_windows_sample.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\ctestfw\ctestfw.vcxproj">
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index f9cff6a..011a2b2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 80db332..b31ee28 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\..\lib\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release-testplug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\..\lib\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug-testplug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release-testplug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release-testplug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug-testplug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug-testplug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>.\..\..\..\lib\testplug.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <WholeProgramOptimization>true</WholeProgramOptimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release-testplug/testplug.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release-testplug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release-testplug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release-testplug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>..\..\..\bin\testplug.dll</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\..\..\..\lib\testplug.pdb</ProgramDatabaseFile>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <ImportLibrary>.\..\..\..\lib\testplug.lib</ImportLibrary>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>.\..\..\..\lib\testplugd.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug-testplug/testplug.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug-testplug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug-testplug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug-testplug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>..\..\..\bin\testplug.dll</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\..\..\..\lib\testplugd.pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <ImportLibrary>.\..\..\..\lib\testplugd.lib</ImportLibrary>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\..\..\..\lib64\testplug.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <WholeProgramOptimization>true</WholeProgramOptimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release-testplug/testplug.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release-testplug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release-testplug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release-testplug/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>..\..\..\bin64\testplug.dll</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\..\..\..\lib64\testplug.pdb</ProgramDatabaseFile>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\r
-      <ImportLibrary>.\..\..\..\lib64\testplug.lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\..\..\..\lib64\testplugd.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug-testplug/testplug.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug-testplug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug-testplug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug-testplug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>..\..\..\bin64\testplug.dll</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\..\..\..\lib64\testplugd.pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>.\..\..\..\lib64\testplugd.lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="testplug.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\..\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release-testplug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\..\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug-testplug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release-testplug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release-testplug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug-testplug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug-testplug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\..\..\..\lib\testplug.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release-testplug/testplug.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release-testplug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release-testplug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release-testplug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>..\..\..\bin\testplug.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\..\..\..\lib\testplug.pdb</ProgramDatabaseFile>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>.\..\..\..\lib\testplug.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\..\..\..\lib\testplugd.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug-testplug/testplug.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug-testplug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug-testplug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug-testplug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>..\..\..\bin\testplug.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\..\..\..\lib\testplugd.pdb</ProgramDatabaseFile>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>.\..\..\..\lib\testplugd.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\..\..\..\lib64\testplug.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release-testplug/testplug.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release-testplug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release-testplug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release-testplug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>..\..\..\bin64\testplug.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\..\..\..\lib64\testplug.pdb</ProgramDatabaseFile>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <ImportLibrary>.\..\..\..\lib64\testplug.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\..\..\..\lib64\testplugd.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug-testplug/testplug.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug-testplug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug-testplug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug-testplug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>..\..\..\bin64\testplug.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\..\..\..\lib64\testplugd.pdb</ProgramDatabaseFile>
+      <ImportLibrary>.\..\..\..\lib64\testplugd.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="testplug.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 2023930..ea7be4a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  icupkg.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 321640d..4b43ae4 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}</ProjectGuid>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>x86\Release/icupkg.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>$(OutDir)icupkg.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>x86\Release/icupkg.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>x86\Release/icupkg.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level4</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)icupkg.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>x86\Release/icupkg.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>Debug/icupkg.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>$(OutDir)icupkg.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)icupkg.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>Debug/icupkg.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>Debug/</AssemblerListingLocation>
+      <ObjectFileName>Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level4</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)icupkg.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)icupkg.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>x64\Release/icupkg.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>$(OutDir)icupkg.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>x64\Release/icupkg.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>x64\Release/icupkg.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level4</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)icupkg.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>x64\Release/icupkg.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>Debug/icupkg.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>$(OutDir)icupkg.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)icupkg.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="icupkg.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>Debug/icupkg.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>Debug/</AssemblerListingLocation>
+      <ObjectFileName>Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level4</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)icupkg.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)icupkg.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="icupkg.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index 641a6cb..228554c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  icuswap.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 35d92fe..6447283 100644 (file)
@@ -28,7 +28,7 @@ CLEANFILES = *~ $(DEPS) $(MAN_FILES)
 ## Target information
 TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
 OBJECTS = makeconv.o ucnvstat.o genmbcs.o gencnvex.o
index 124d3d9..dcc849d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gencnvex.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 68c9eb3..79f185f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  genmbcs.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -64,6 +64,7 @@ struct MBCSData {
 };
 
 /* prototypes */
+U_CDECL_BEGIN
 static void
 MBCSClose(NewConverter *cnvData);
 
@@ -101,6 +102,7 @@ MBCSAddTable(NewConverter *cnvData, UCMTable *table, UConverterStaticData *stati
 static uint32_t
 MBCSWrite(NewConverter *cnvData, const UConverterStaticData *staticData,
           UNewDataMemory *pData, int32_t tableType);
+U_CDECL_END
 
 /* helper ------------------------------------------------------------------- */
 
@@ -127,6 +129,7 @@ printBytes(char *buffer, const uint8_t *bytes, int32_t length) {
 
 static MBCSData gDummy;
 
+
 U_CFUNC const MBCSData *
 MBCSGetDummy() {
     uprv_memset(&gDummy, 0, sizeof(MBCSData));
@@ -160,7 +163,7 @@ MBCSInit(MBCSData *mbcsData, UCMFile *ucm) {
     mbcsData->newConverter.write=MBCSWrite;
 }
 
-NewConverter *
+U_CFUNC NewConverter *
 MBCSOpen(UCMFile *ucm) {
     MBCSData *mbcsData=(MBCSData *)uprv_malloc(sizeof(MBCSData));
     if(mbcsData==NULL) {
@@ -178,6 +181,7 @@ MBCSDestruct(MBCSData *mbcsData) {
     uprv_free(mbcsData->fromUBytes);
 }
 
+U_CDECL_BEGIN
 static void
 MBCSClose(NewConverter *cnvData) {
     MBCSData *mbcsData=(MBCSData *)cnvData;
@@ -186,6 +190,7 @@ MBCSClose(NewConverter *cnvData) {
         uprv_free(mbcsData);
     }
 }
+U_CDECL_END
 
 static UBool
 MBCSStartMappings(MBCSData *mbcsData) {
@@ -546,6 +551,7 @@ MBCSAddToUnicode(MBCSData *mbcsData,
     }
 }
 
+U_CDECL_BEGIN
 /* is this byte sequence valid? (this is almost the same as MBCSAddToUnicode()) */
 static UBool
 MBCSIsValid(NewConverter *cnvData,
@@ -554,7 +560,7 @@ MBCSIsValid(NewConverter *cnvData,
 
     return (UBool)(1==ucm_countChars(&mbcsData->ucm->states, bytes, length));
 }
-
+U_CDECL_END
 static UBool
 MBCSSingleAddFromUnicode(MBCSData *mbcsData,
                          const uint8_t *bytes, int32_t /*length*/,
@@ -936,6 +942,7 @@ MBCSOkForBaseFromUnicode(const MBCSData *mbcsData,
     return TRUE;
 }
 
+U_CDECL_BEGIN
 /* we can assume that the table only contains 1:1 mappings with <=4 bytes each */
 static UBool
 MBCSAddTable(NewConverter *cnvData, UCMTable *table, UConverterStaticData *staticData) {
@@ -1071,7 +1078,7 @@ MBCSAddTable(NewConverter *cnvData, UCMTable *table, UConverterStaticData *stati
 
     return isOK;
 }
-
+U_CDECL_END
 static UBool
 transformEUC(MBCSData *mbcsData) {
     uint8_t *p8;
@@ -1410,6 +1417,7 @@ MBCSPostprocess(MBCSData *mbcsData, const UConverterStaticData * /*staticData*/)
     }
 }
 
+U_CDECL_BEGIN
 static uint32_t
 MBCSWrite(NewConverter *cnvData, const UConverterStaticData *staticData,
           UNewDataMemory *pData, int32_t tableType) {
@@ -1564,3 +1572,4 @@ MBCSWrite(NewConverter *cnvData, const UConverterStaticData *staticData,
     /* return the number of bytes that should have been written */
     return top;
 }
+U_CDECL_END
index b1bf8e1..9ff1c77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  genmbcs.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6ca3e61..5a01e20 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index b791885..e174393 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  makeconv.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -41,21 +41,22 @@ enum {
 struct NewConverter;
 typedef struct NewConverter NewConverter;
 
+U_CDECL_BEGIN
 struct NewConverter {
     void
-    (*close)(NewConverter *cnvData);
+    (* U_CALLCONV close)(NewConverter *cnvData);
 
     /** is this byte sequence valid? */
     UBool
-    (*isValid)(NewConverter *cnvData,
+    (* U_CALLCONV isValid)(NewConverter *cnvData,
                const uint8_t *bytes, int32_t length);
 
     UBool
-    (*addTable)(NewConverter *cnvData, UCMTable *table, UConverterStaticData *staticData);
+    (* U_CALLCONV addTable)(NewConverter *cnvData, UCMTable *table, UConverterStaticData *staticData);
 
     uint32_t
-    (*write)(NewConverter *cnvData, const UConverterStaticData *staticData,
+    (* U_CALLCONV write)(NewConverter *cnvData, const UConverterStaticData *staticData,
              UNewDataMemory *pData, int32_t tableType);
 };
-
+U_CDECL_END
 #endif /* __MAKECONV_H__ */
index 3895e89..9fbd0e9 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 890e731..c04a025 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 6f08b8e..13e1289 100644 (file)
@@ -32,7 +32,7 @@ endif
 ## Target information
 TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 DEFS += -DUDATA_SO_SUFFIX=\".$(SO)\" -DSTATIC_O=\"$(STATIC_O)\"
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
index 2b3c29f..ffcf459 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2000-2016, International Business Machines
@@ -26,7 +26,7 @@
 #include "putilimp.h"
 
 #if U_HAVE_POPEN
-#if (U_PF_MINGW <= U_PLATFORM || U_PLATFORM <= U_PF_CYGWIN) && defined(__STRICT_ANSI__)
+#if (U_PF_MINGW <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN) && defined(__STRICT_ANSI__)
 /* popen/pclose aren't defined in strict ANSI on Cygwin and MinGW */
 #undef __STRICT_ANSI__
 #endif
@@ -121,7 +121,9 @@ enum {
     LIBNAME,
     QUIET,
     WITHOUT_ASSEMBLY,
-    PDS_BUILD
+    PDS_BUILD,
+    UWP_BUILD,
+    UWP_ARM_BUILD
 };
 
 /* This sets the modes that are available */
@@ -163,7 +165,9 @@ static UOption options[]={
     /*18*/    UOPTION_DEF( "libname", 'L', UOPT_REQUIRES_ARG),
     /*19*/    UOPTION_DEF( "quiet", 'q', UOPT_NO_ARG),
     /*20*/    UOPTION_DEF( "without-assembly", 'w', UOPT_NO_ARG),
-    /*21*/    UOPTION_DEF( "zos-pds-build", 'z', UOPT_NO_ARG)
+    /*21*/    UOPTION_DEF("zos-pds-build", 'z', UOPT_NO_ARG),
+    /*22*/    UOPTION_DEF("windows-uwp-build", 'u', UOPT_NO_ARG),
+    /*23*/    UOPTION_DEF("windows-uwp-arm-build", 'a', UOPT_NO_ARG)
 };
 
 /* This enum and the following char array should be kept in sync. */
@@ -250,9 +254,11 @@ const char options_help[][320]={
     "Specify a version when packaging in dll or static mode",
     "Add package to all file names if not present",
     "Library name to build (if different than package name)",
-    "Quite mode. (e.g. Do not output a readme file for static libraries)",
+    "Quiet mode. (e.g. Do not output a readme file for static libraries)",
     "Build the data without assembly code",
-    "Build PDS dataset (zOS build only)"
+    "Build PDS dataset (zOS build only)",
+    "Build for Universal Windows Platform (Windows build only)",
+    "Set DLL machine type for UWP to target windows ARM (Windows UWP build only)"
 };
 
 const char  *progname = "PKGDATA";
@@ -1751,7 +1757,14 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD
 
 #ifdef WINDOWS_WITH_MSVC
 #define LINK_CMD "link.exe /nologo /release /out:"
-#define LINK_FLAGS "/DLL /NOENTRY /MANIFEST:NO  /base:0x4ad00000 /implib:"
+#define LINK_FLAGS "/DLL /NOENTRY /MANIFEST:NO /implib:"
+#ifdef _WIN64
+#define LINK_EXTRA_UWP_FLAGS "/NXCOMPAT /DYNAMICBASE /APPCONTAINER "
+#else
+#define LINK_EXTRA_UWP_FLAGS "/NXCOMPAT /SAFESEH /DYNAMICBASE /APPCONTAINER /MACHINE:X86"
+#endif
+#define LINK_EXTRA_UWP_FLAGS_ARM "/NXCOMPAT /DYNAMICBASE /APPCONTAINER /MACHINE:ARM"
+#define LINK_EXTRA_NO_UWP_FLAGS "/base:0x4ad00000 "
 #define LIB_CMD "LIB.exe /nologo /out:"
 #define LIB_FILE "icudt.lib"
 #define LIB_EXT UDATA_LIB_SUFFIX
@@ -1831,14 +1844,33 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U
           return 0;
         }
 
-        sprintf(cmd, "%s\"%s\" %s\"%s\" \"%s\" %s",
-                LINK_CMD,
-                dllFilePath,
-                LINK_FLAGS,
-                libFilePath,
-                gencFilePath,
-                resFilePath
-                );
+        char *extraFlags = "";
+#ifdef WINDOWS_WITH_MSVC
+        if (options[UWP_BUILD].doesOccur)
+        {
+            if (options[UWP_ARM_BUILD].doesOccur)
+            {
+                extraFlags = LINK_EXTRA_UWP_FLAGS_ARM;
+            }
+            else
+            {
+                extraFlags = LINK_EXTRA_UWP_FLAGS;
+            }
+        }
+        else
+        {
+            extraFlags = LINK_EXTRA_NO_UWP_FLAGS;
+        }
+#endif
+        sprintf(cmd, "%s\"%s\" %s %s\"%s\" \"%s\" %s",
+            LINK_CMD,
+            dllFilePath,
+            extraFlags,
+            LINK_FLAGS,
+            libFilePath,
+            gencFilePath,
+            resFilePath
+        );
     }
 
     result = runCommand(cmd, TRUE);
index 9f4e589..dc2bf11 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}</ProjectGuid>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <CustomBuildStep>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Debug/pkgdata.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Debug/pkgdata.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0411</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Debug/pkgdata.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x86\Debug/pkgdata.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Debug/pkgdata.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Debug/pkgdata.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0411</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Debug/pkgdata.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x86\Debug/pkgdata.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>\r
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TypeLibraryName>.\x86\Release/pkgdata.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x86\Release/pkgdata.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0411</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x86\Release/pkgdata.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x86\Release/pkgdata.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TypeLibraryName>.\x86\Release/pkgdata.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x86\Release/pkgdata.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x86\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0411</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x86\Release/pkgdata.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x86\Release/pkgdata.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Debug/pkgdata.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Debug/pkgdata.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0411</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Debug/pkgdata.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>.\x64\Debug/pkgdata.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <CustomBuildStep>\r
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Debug/pkgdata.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Debug/pkgdata.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0411</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Debug/pkgdata.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\x64\Debug/pkgdata.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <CustomBuildStep>
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>\r
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
-    </CustomBuildStep>\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>.\x64\Release/pkgdata.tlb</TypeLibraryName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
-      <PrecompiledHeaderOutputFile>.\x64\Release/pkgdata.pch</PrecompiledHeaderOutputFile>\r
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
-      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>Default</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0411</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <OutputFile>.\x64\Release/pkgdata.exe</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <ProgramDatabaseFile>.\x64\Release/pkgdata.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="pkgdata.cpp" />\r
-    <ClCompile Include="pkgtypes.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="pkgtypes.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\genccode\genccode.vcxproj">\r
-      <Project>{fdd3c4f2-9805-44eb-9a77-bc1c1c95b547}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\gencmn\gencmn.vcxproj">\r
-      <Project>{a8d36f8d-09e6-4174-91c3-7beaa9c3f04f}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\icupkg\icupkg.vcxproj">\r
-      <Project>{62d4b15d-7a90-4ecb-ba19-5e021d6a21bc}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Command>
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\x64\Release/pkgdata.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PrecompiledHeaderOutputFile>.\x64\Release/pkgdata.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\x64\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0411</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>.\x64\Release/pkgdata.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\x64\Release/pkgdata.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="pkgdata.cpp" />
+    <ClCompile Include="pkgtypes.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="pkgtypes.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\genccode\genccode.vcxproj">
+      <Project>{fdd3c4f2-9805-44eb-9a77-bc1c1c95b547}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\gencmn\gencmn.vcxproj">
+      <Project>{a8d36f8d-09e6-4174-91c3-7beaa9c3f04f}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\icupkg\icupkg.vcxproj">
+      <Project>{62d4b15d-7a90-4ecb-ba19-5e021d6a21bc}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
index eadf634..43ee3df 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**************************************************************************
 *
index c7eeba4..3297d0a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**************************************************************************
 *
index 097fcf1..82ca0d8 100644 (file)
@@ -45,7 +45,7 @@ DYNAMICCXXFLAGS = $(SHAREDLIBCXXFLAGS)
 CFLAGS += $(LIBCFLAGS)
 CXXFLAGS += $(LIBCXXFLAGS)
 
-CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n $(LIBCPPFLAGS)
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n $(LIBCPPFLAGS)
 
 # from icuinfo
 CPPFLAGS+=  "-DU_BUILD=\"@build@\"" "-DU_HOST=\"@host@\"" "-DU_CC=\"@CC@\"" "-DU_CXX=\"@CXX@\""
index bbb1839..6bad90e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 48cd556..815b89d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 77e2711..a5a3f51 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -117,7 +117,7 @@ U_CAPI int32_t
 udbg_stoi(const UnicodeString &s)
 {
     char ch[256];
-    const UChar *u = s.getBuffer();
+    const UChar *u = toUCharPtr(s.getBuffer());
     int32_t len = s.length();
     u_UCharsToChars(u, ch, len);
     ch[len] = 0; /* include terminating \0 */
@@ -129,7 +129,7 @@ U_CAPI double
 udbg_stod(const UnicodeString &s)
 {
     char ch[256];
-    const UChar *u = s.getBuffer();
+    const UChar *u = toUCharPtr(s.getBuffer());
     int32_t len = s.length();
     u_UCharsToChars(u, ch, len);
     ch[len] = 0; /* include terminating \0 */
index ad61532..43fe217 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /*
index 3b83715..f5e52b1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  denseranges.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 7b072f4..c489ca4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  denseranges.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/filestrm.c b/source/tools/toolutil/filestrm.c
deleted file mode 100644 (file)
index e84160e..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-******************************************************************************
-*
-*   Copyright (C) 1997-2011, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-* File FILESTRM.C
-*
-* @author       Glenn Marcy
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   5/8/98      gm          Created
-*  03/02/99     stephen     Reordered params in ungetc to match stdio
-*                           Added wopen
-*   3/29/99     helena      Merged Stephen and Bertrand's changes.
-*
-******************************************************************************
-*/
-
-#include "filestrm.h"
-
-#include "cmemory.h"
-
-#include <stdio.h>
-
-U_CAPI FileStream* U_EXPORT2
-T_FileStream_open(const char* filename, const char* mode)
-{
-    if(filename != NULL && *filename != 0 && mode != NULL && *mode != 0) {
-        FILE *file = fopen(filename, mode);
-        return (FileStream*)file;
-    } else {
-        return NULL;
-    }
-}
-
-/*
-U_CAPI FileStream* U_EXPORT2
-T_FileStream_wopen(const wchar_t* filename, const wchar_t* mode)
-{
-   // TBD: _wfopen is believed to be MS-specific? 
-#if U_PLATFORM_USES_ONLY_WIN32_API
-    FILE* result = _wfopen(filename, mode);
-    return (FileStream*)result;
-#else
-    size_t fnMbsSize, mdMbsSize;
-    char *fn, *md;
-    FILE *result;
-
-    // convert from wchar_t to char 
-    fnMbsSize = wcstombs(NULL, filename, ((size_t)-1) >> 1);
-    fn = (char*)uprv_malloc(fnMbsSize+2);
-    wcstombs(fn, filename, fnMbsSize);
-    fn[fnMbsSize] = 0;
-
-    mdMbsSize = wcstombs(NULL, mode, ((size_t)-1) >> 1);
-    md = (char*)uprv_malloc(mdMbsSize+2);
-    wcstombs(md, mode, mdMbsSize);
-    md[mdMbsSize] = 0;
-
-    result = fopen(fn, md);
-    uprv_free(fn);
-    uprv_free(md);
-    return (FileStream*)result;
-#endif
-}
-*/
-U_CAPI void U_EXPORT2
-T_FileStream_close(FileStream* fileStream)
-{
-    if (fileStream != 0)
-        fclose((FILE*)fileStream);
-}
-
-U_CAPI UBool U_EXPORT2
-T_FileStream_file_exists(const char* filename)
-{
-    FILE* temp = fopen(filename, "r");
-    if (temp) {
-        fclose(temp);
-        return TRUE;
-    } else
-        return FALSE;
-}
-
-/*static const int32_t kEOF;
-const int32_t FileStream::kEOF = EOF;*/
-
-/*
-U_CAPI FileStream*
-T_FileStream_tmpfile()
-{
-    FILE* file = tmpfile();
-    return (FileStream*)file;
-}
-*/
-
-U_CAPI int32_t U_EXPORT2
-T_FileStream_read(FileStream* fileStream, void* addr, int32_t len)
-{
-    return fread(addr, 1, len, (FILE*)fileStream);
-}
-
-U_CAPI int32_t U_EXPORT2
-T_FileStream_write(FileStream* fileStream, const void* addr, int32_t len)
-{
-
-    return fwrite(addr, 1, len, (FILE*)fileStream);
-}
-
-U_CAPI void U_EXPORT2
-T_FileStream_rewind(FileStream* fileStream)
-{
-    rewind((FILE*)fileStream);
-}
-
-U_CAPI int32_t U_EXPORT2
-T_FileStream_putc(FileStream* fileStream, int32_t ch)
-{
-    int32_t c = fputc(ch, (FILE*)fileStream);
-    return c;
-}
-
-U_CAPI int U_EXPORT2
-T_FileStream_getc(FileStream* fileStream)
-{
-    int c = fgetc((FILE*)fileStream);
-    return c;
-}
-
-U_CAPI int32_t U_EXPORT2
-T_FileStream_ungetc(int32_t ch, FileStream* fileStream)
-{
-
-    int32_t c = ungetc(ch, (FILE*)fileStream);
-    return c;
-}
-
-U_CAPI int32_t U_EXPORT2
-T_FileStream_peek(FileStream* fileStream)
-{
-    int32_t c = fgetc((FILE*)fileStream);
-    return ungetc(c, (FILE*)fileStream);
-}
-
-U_CAPI char* U_EXPORT2
-T_FileStream_readLine(FileStream* fileStream, char* buffer, int32_t length)
-{
-    return fgets(buffer, length, (FILE*)fileStream);
-}
-
-U_CAPI int32_t U_EXPORT2
-T_FileStream_writeLine(FileStream* fileStream, const char* buffer)
-{
-    return fputs(buffer, (FILE*)fileStream);
-}
-
-U_CAPI int32_t U_EXPORT2
-T_FileStream_size(FileStream* fileStream)
-{
-    int32_t savedPos = ftell((FILE*)fileStream);
-    int32_t size = 0;
-
-    /*Changes by Bertrand A. D. doesn't affect the current position
-    goes to the end of the file before ftell*/
-    fseek((FILE*)fileStream, 0, SEEK_END);
-    size = (int32_t)ftell((FILE*)fileStream);
-    fseek((FILE*)fileStream, savedPos, SEEK_SET);
-    return size;
-}
-
-U_CAPI int U_EXPORT2
-T_FileStream_eof(FileStream* fileStream)
-{
-    return feof((FILE*)fileStream);
-}
-
-/*
- Warning 
- This function may not work consistently on all platforms
- (e.g. HP-UX, FreeBSD and MacOSX don't return an error when
- putc is used on a file opened as readonly)
-*/
-U_CAPI int U_EXPORT2
-T_FileStream_error(FileStream* fileStream)
-{
-    return (fileStream == 0 || ferror((FILE*)fileStream));
-}
-
-/* This function doesn't work. */
-/* force the stream to set its error flag*/
-/*U_CAPI void U_EXPORT2
-T_FileStream_setError(FileStream* fileStream)
-{
-    fseek((FILE*)fileStream, 99999, SEEK_SET);
-}
-*/
-
-U_CAPI FileStream* U_EXPORT2
-T_FileStream_stdin(void)
-{
-    return (FileStream*)stdin;
-}
-
-U_CAPI FileStream* U_EXPORT2
-T_FileStream_stdout(void)
-{
-    return (FileStream*)stdout;
-}
-
-
-U_CAPI FileStream* U_EXPORT2
-T_FileStream_stderr(void)
-{
-    return (FileStream*)stderr;
-}
-
-U_CAPI UBool U_EXPORT2
-T_FileStream_remove(const char* fileName){
-    return (remove(fileName) == 0);
-}
index b423451..86fac30 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index b0d4ed8..176a791 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2009-2013, International Business Machines
index 5ede027..6a25c36 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  filetools.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/flagparser.c b/source/tools/toolutil/flagparser.c
deleted file mode 100644 (file)
index 0ffc371..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/******************************************************************************
- *   Copyright (C) 2009-2015, International Business Machines
- *   Corporation and others.  All Rights Reserved.
- *******************************************************************************
- */
-
-#include "flagparser.h"
-#include "filestrm.h"
-#include "cstring.h"
-#include "cmemory.h"
-
-#define DEFAULT_BUFFER_SIZE 512
-
-static int32_t currentBufferSize = DEFAULT_BUFFER_SIZE;
-
-static int32_t extractFlag(char* buffer, int32_t bufferSize, char* flag, int32_t flagSize, const char ** flagNames, int32_t numOfFlags, UErrorCode *status);
-static int32_t getFlagOffset(const char *buffer, int32_t bufferSize);
-
-/*
- * Opens the given fileName and reads in the information storing the data in flagBuffer.
- */
-U_CAPI int32_t U_EXPORT2
-parseFlagsFile(const char *fileName, char **flagBuffer, int32_t flagBufferSize, const char ** flagNames, int32_t numOfFlags, UErrorCode *status) {
-    char* buffer = NULL;
-    char* tmpFlagBuffer = NULL;
-    UBool allocateMoreSpace = FALSE;
-    int32_t idx, i;
-    int32_t result = 0;
-
-    FileStream *f = T_FileStream_open(fileName, "r");
-    if (f == NULL) {
-        *status = U_FILE_ACCESS_ERROR;
-        goto parseFlagsFile_cleanup;
-    }
-    
-    buffer = uprv_malloc(sizeof(char) * currentBufferSize);
-    tmpFlagBuffer = uprv_malloc(sizeof(char) * flagBufferSize);
-
-    if (buffer == NULL || tmpFlagBuffer == NULL) {
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        goto parseFlagsFile_cleanup;
-    }
-
-    do {
-        if (allocateMoreSpace) {
-            allocateMoreSpace = FALSE;
-            currentBufferSize *= 2;
-            uprv_free(buffer);
-            buffer = uprv_malloc(sizeof(char) * currentBufferSize);
-            if (buffer == NULL) {
-                *status = U_MEMORY_ALLOCATION_ERROR;
-                goto parseFlagsFile_cleanup;
-            }
-        }
-        for (i = 0; i < numOfFlags;) {
-            if (T_FileStream_readLine(f, buffer, currentBufferSize) == NULL) {
-                /* End of file reached. */
-                break;
-            }
-            if (buffer[0] == '#') {
-                continue;
-            }
-
-            if ((int32_t)uprv_strlen(buffer) == (currentBufferSize - 1) && buffer[currentBufferSize-2] != '\n') {
-                /* Allocate more space for buffer if it didnot read the entrire line */
-                allocateMoreSpace = TRUE;
-                T_FileStream_rewind(f);
-                break;
-            } else {
-                idx = extractFlag(buffer, currentBufferSize, tmpFlagBuffer, flagBufferSize, flagNames, numOfFlags, status);
-                if (U_FAILURE(*status)) {
-                    if (*status == U_BUFFER_OVERFLOW_ERROR) {
-                        result = currentBufferSize;
-                    } else {
-                        result = -1;
-                    }
-                    break;
-                } else {
-                    if (flagNames != NULL) {
-                        if (idx >= 0) {
-                            uprv_strcpy(flagBuffer[idx], tmpFlagBuffer);
-                        } else {
-                            /* No match found.  Skip it. */
-                            continue;
-                        }
-                    } else {
-                        uprv_strcpy(flagBuffer[i++], tmpFlagBuffer);
-                    }
-                }
-            }
-        }
-    } while (allocateMoreSpace && U_SUCCESS(*status));
-
-parseFlagsFile_cleanup:
-    uprv_free(tmpFlagBuffer);
-    uprv_free(buffer);
-
-    T_FileStream_close(f);
-    
-    if (U_FAILURE(*status) && *status != U_BUFFER_OVERFLOW_ERROR) {
-        return -1;
-    }
-
-    if (U_SUCCESS(*status) && result == 0) {
-        currentBufferSize = DEFAULT_BUFFER_SIZE;
-    }
-
-    return result;
-}
-
-
-/*
- * Extract the setting after the '=' and store it in flag excluding the newline character.
- */
-static int32_t extractFlag(char* buffer, int32_t bufferSize, char* flag, int32_t flagSize, const char **flagNames, int32_t numOfFlags, UErrorCode *status) {
-    int32_t i, idx = -1;
-    char *pBuffer;
-    int32_t offset=0;
-    UBool bufferWritten = FALSE;
-
-    if (buffer[0] != 0) {
-        /* Get the offset (i.e. position after the '=') */
-        offset = getFlagOffset(buffer, bufferSize);
-        pBuffer = buffer+offset;
-        for(i = 0;;i++) {
-            if (i >= flagSize) {
-                *status = U_BUFFER_OVERFLOW_ERROR;
-                return -1;
-            }
-            if (pBuffer[i+1] == 0) {
-                /* Indicates a new line character. End here. */
-                flag[i] = 0;
-                break;
-            }
-
-            flag[i] = pBuffer[i];
-            if (i == 0) {
-                bufferWritten = TRUE;
-            }
-        }
-    }
-
-    if (!bufferWritten) {
-        flag[0] = 0;
-    }
-
-    if (flagNames != NULL && offset>0) {
-        offset--;  /* Move offset back 1 because of '='*/
-        for (i = 0; i < numOfFlags; i++) {
-            if (uprv_strncmp(buffer, flagNames[i], offset) == 0) {
-                idx = i;
-                break;
-            }
-        }
-    }
-
-    return idx;
-}
-
-/*
- * Get the position after the '=' character.
- */
-static int32_t getFlagOffset(const char *buffer, int32_t bufferSize) {
-    int32_t offset = 0;
-
-    for (offset = 0; offset < bufferSize;offset++) {
-        if (buffer[offset] == '=') {
-            offset++;
-            break;
-        }
-    }
-
-    if (offset == bufferSize || (offset - 1) == bufferSize) {
-        offset = 0;
-    }
-
-    return offset;
-}
index 4aa03c8..aa42547 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  flagparser.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a5835e9..e3354b3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  package.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -381,7 +381,7 @@ U_CDECL_END
 
 U_NAMESPACE_BEGIN
 
-Package::Package() 
+Package::Package()
         : doAutoPrefix(FALSE), prefixEndsWithType(FALSE) {
     inPkgName[0]=0;
     pkgPrefix[0]=0;
@@ -1281,7 +1281,7 @@ Package::sortItems() {
     }
 }
 
-void Package::setItemCapacity(int32_t max) 
+void Package::setItemCapacity(int32_t max)
 {
   if(max<=itemMax) {
     return;
@@ -1289,8 +1289,8 @@ void Package::setItemCapacity(int32_t max)
   Item *newItems = (Item*)uprv_malloc(max * sizeof(items[0]));
   Item *oldItems = items;
   if(newItems == NULL) {
-    fprintf(stderr, "icupkg: Out of memory trying to allocate %lu bytes for %d items\n", 
-        (unsigned long)max*sizeof(items[0]), max);
+    fprintf(stderr, "icupkg: Out of memory trying to allocate %lu bytes for %d items\n",
+        (unsigned long)(max*sizeof(items[0])), max);
     exit(U_MEMORY_ALLOCATION_ERROR);
   }
   if(items && itemCount>0) {
index d3b83b6..2c5bd16 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  package.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/pkg_genc.c b/source/tools/toolutil/pkg_genc.c
deleted file mode 100644 (file)
index f0dbd4c..0000000
+++ /dev/null
@@ -1,1199 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/******************************************************************************
- *   Copyright (C) 2009-2016, International Business Machines
- *   Corporation and others.  All Rights Reserved.
- *******************************************************************************
- */
-#include "unicode/utypes.h"
-
-#if U_PLATFORM_HAS_WIN32_API
-#   define VC_EXTRALEAN
-#   define WIN32_LEAN_AND_MEAN
-#   define NOUSER
-#   define NOSERVICE
-#   define NOIME
-#   define NOMCX
-#include <windows.h>
-#include <time.h>
-#   ifdef __GNUC__
-#       define WINDOWS_WITH_GNUC
-#   endif
-#endif
-
-#if U_PLATFORM_IS_LINUX_BASED && U_HAVE_ELF_H
-#   define U_ELF
-#endif
-
-#ifdef U_ELF
-#   include <elf.h>
-#   if defined(ELFCLASS64)
-#       define U_ELF64
-#   endif
-    /* Old elf.h headers may not have EM_X86_64, or have EM_X8664 instead. */
-#   ifndef EM_X86_64
-#       define EM_X86_64 62
-#   endif
-#   define ICU_ENTRY_OFFSET 0
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "unicode/putil.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "filestrm.h"
-#include "toolutil.h"
-#include "unicode/uclean.h"
-#include "uoptions.h"
-#include "pkg_genc.h"
-
-#define MAX_COLUMN ((uint32_t)(0xFFFFFFFFU))
-
-#define HEX_0X 0 /*  0x1234 */
-#define HEX_0H 1 /*  01234h */
-
-/* prototypes --------------------------------------------------------------- */
-static void
-getOutFilename(const char *inFilename, const char *destdir, char *outFilename, char *entryName, const char *newSuffix, const char *optFilename);
-
-static uint32_t
-write8(FileStream *out, uint8_t byte, uint32_t column);
-
-static uint32_t
-write32(FileStream *out, uint32_t byte, uint32_t column);
-
-#if U_PLATFORM == U_PF_OS400
-static uint32_t
-write8str(FileStream *out, uint8_t byte, uint32_t column);
-#endif
-/* -------------------------------------------------------------------------- */
-
-/*
-Creating Template Files for New Platforms
-
-Let the cc compiler help you get started.
-Compile this program
-    const unsigned int x[5] = {1, 2, 0xdeadbeef, 0xffffffff, 16};
-with the -S option to produce assembly output.
-
-For example, this will generate array.s:
-gcc -S array.c
-
-This will produce a .s file that may look like this:
-
-    .file   "array.c"
-    .version        "01.01"
-gcc2_compiled.:
-    .globl x
-    .section        .rodata
-    .align 4
-    .type    x,@object
-    .size    x,20
-x:
-    .long   1
-    .long   2
-    .long   -559038737
-    .long   -1
-    .long   16
-    .ident  "GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-85)"
-
-which gives a starting point that will compile, and can be transformed
-to become the template, generally with some consulting of as docs and
-some experimentation.
-
-If you want ICU to automatically use this assembly, you should
-specify "GENCCODE_ASSEMBLY=-a name" in the specific config/mh-* file,
-where the name is the compiler or platform that you used in this
-assemblyHeader data structure.
-*/
-static const struct AssemblyType {
-    const char *name;
-    const char *header;
-    const char *beginLine;
-    const char *footer;
-    int8_t      hexType; /* HEX_0X or HEX_0h */
-} assemblyHeader[] = {
-    /* For gcc assemblers, the meaning of .align changes depending on the */
-    /* hardware, so we use .balign 16 which always means 16 bytes. */
-    /* https://sourceware.org/binutils/docs/as/Pseudo-Ops.html */
-    {"gcc",
-        ".globl %s\n"
-        "\t.section .note.GNU-stack,\"\",%%progbits\n"
-        "\t.section .rodata\n"
-        "\t.balign 16\n"
-        "#ifdef U_HIDE_DATA_SYMBOL\n"
-        "\t.hidden %s\n"
-        "#endif\n"
-        "\t.type %s,%%object\n"
-        "%s:\n\n",
-
-        ".long ",".size %s, .-%s\n",HEX_0X
-    },
-    {"gcc-darwin",
-        /*"\t.section __TEXT,__text,regular,pure_instructions\n"
-        "\t.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32\n"*/
-        ".globl _%s\n"
-        "#ifdef U_HIDE_DATA_SYMBOL\n"
-        "\t.private_extern _%s\n"
-        "#endif\n"
-        "\t.data\n"
-        "\t.const\n"
-        "\t.balign 16\n"
-        "_%s:\n\n",
-
-        ".long ","",HEX_0X
-    },
-    {"gcc-cygwin",
-        ".globl _%s\n"
-        "\t.section .rodata\n"
-        "\t.balign 16\n"
-        "_%s:\n\n",
-
-        ".long ","",HEX_0X
-    },
-    {"gcc-mingw64",
-        ".globl %s\n"
-        "\t.section .rodata\n"
-        "\t.balign 16\n"
-        "%s:\n\n",
-
-        ".long ","",HEX_0X
-    },
-/* 16 bytes alignment. */
-/* http://docs.oracle.com/cd/E19641-01/802-1947/802-1947.pdf */
-    {"sun",
-        "\t.section \".rodata\"\n"
-        "\t.align   16\n"
-        ".globl     %s\n"
-        "%s:\n",
-
-        ".word ","",HEX_0X
-    },
-/* 16 bytes alignment for sun-x86. */
-/* http://docs.oracle.com/cd/E19963-01/html/821-1608/eoiyg.html */
-    {"sun-x86",
-        "Drodata.rodata:\n"
-        "\t.type   Drodata.rodata,@object\n"
-        "\t.size   Drodata.rodata,0\n"
-        "\t.globl  %s\n"
-        "\t.align  16\n" 
-        "%s:\n",
-
-        ".4byte ","",HEX_0X
-    },
-/* 1<<4 bit alignment for aix. */
-/* http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.aixassem%2Fdoc%2Falangref%2Fidalangref_csect_pseudoop.htm */
-    {"xlc",
-        ".globl %s{RO}\n"
-        "\t.toc\n"
-        "%s:\n"
-        "\t.csect %s{RO}, 4\n",
-
-        ".long ","",HEX_0X
-    },
-    {"aCC-ia64",
-        "\t.file   \"%s.s\"\n"
-        "\t.type   %s,@object\n"
-        "\t.global %s\n"
-        "\t.secalias .abe$0.rodata, \".rodata\"\n"
-        "\t.section .abe$0.rodata = \"a\", \"progbits\"\n"
-        "\t.align  16\n"
-        "%s::\t",
-
-        "data4 ","",HEX_0X
-    },
-    {"aCC-parisc",
-        "\t.SPACE  $TEXT$\n"
-        "\t.SUBSPA $LIT$\n"
-        "%s\n"
-        "\t.EXPORT %s\n"
-        "\t.ALIGN  16\n",
-
-        ".WORD ","",HEX_0X
-    },
-/* align 16 bytes */
-/*  http://msdn.microsoft.com/en-us/library/dwa9fwef.aspx */
-    { "masm",
-      "\tTITLE %s\n"
-      "; generated by genccode\n"
-      ".386\n"
-      ".model flat\n"
-      "\tPUBLIC _%s\n"
-      "ICUDATA_%s\tSEGMENT READONLY PARA PUBLIC FLAT 'DATA'\n"
-      "\tALIGN 16\n"
-      "_%s\tLABEL DWORD\n",
-      "\tDWORD ","\nICUDATA_%s\tENDS\n\tEND\n",HEX_0H
-    }
-};
-
-static int32_t assemblyHeaderIndex = -1;
-static int32_t hexType = HEX_0X;
-
-U_CAPI UBool U_EXPORT2
-checkAssemblyHeaderName(const char* optAssembly) {
-    int32_t idx;
-    assemblyHeaderIndex = -1;
-    for (idx = 0; idx < UPRV_LENGTHOF(assemblyHeader); idx++) {
-        if (uprv_strcmp(optAssembly, assemblyHeader[idx].name) == 0) {
-            assemblyHeaderIndex = idx;
-            hexType = assemblyHeader[idx].hexType; /* set the hex type */
-            return TRUE;
-        }
-    }
-
-    return FALSE;
-}
-
-
-U_CAPI void U_EXPORT2
-printAssemblyHeadersToStdErr(void) {
-    int32_t idx;
-    fprintf(stderr, "%s", assemblyHeader[0].name);
-    for (idx = 1; idx < UPRV_LENGTHOF(assemblyHeader); idx++) {
-        fprintf(stderr, ", %s", assemblyHeader[idx].name);
-    }
-    fprintf(stderr,
-        ")\n");
-}
-
-U_CAPI void U_EXPORT2
-writeAssemblyCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optFilename, char *outFilePath) {
-    uint32_t column = MAX_COLUMN;
-    char entry[64];
-    uint32_t buffer[1024];
-    char *bufferStr = (char *)buffer;
-    FileStream *in, *out;
-    size_t i, length;
-
-    in=T_FileStream_open(filename, "rb");
-    if(in==NULL) {
-        fprintf(stderr, "genccode: unable to open input file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    getOutFilename(filename, destdir, bufferStr, entry, ".S", optFilename);
-    out=T_FileStream_open(bufferStr, "w");
-    if(out==NULL) {
-        fprintf(stderr, "genccode: unable to open output file %s\n", bufferStr);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    if (outFilePath != NULL) {
-        uprv_strcpy(outFilePath, bufferStr);
-    }
-
-#ifdef WINDOWS_WITH_GNUC
-    /* Need to fix the file seperator character when using MinGW. */
-    swapFileSepChar(outFilePath, U_FILE_SEP_CHAR, '/');
-#endif
-
-    if(optEntryPoint != NULL) {
-        uprv_strcpy(entry, optEntryPoint);
-        uprv_strcat(entry, "_dat");
-    }
-
-    /* turn dashes or dots in the entry name into underscores */
-    length=uprv_strlen(entry);
-    for(i=0; i<length; ++i) {
-        if(entry[i]=='-' || entry[i]=='.') {
-            entry[i]='_';
-        }
-    }
-
-    sprintf(bufferStr, assemblyHeader[assemblyHeaderIndex].header,
-        entry, entry, entry, entry,
-        entry, entry, entry, entry);
-    T_FileStream_writeLine(out, bufferStr);
-    T_FileStream_writeLine(out, assemblyHeader[assemblyHeaderIndex].beginLine);
-
-    for(;;) {
-        length=T_FileStream_read(in, buffer, sizeof(buffer));
-        if(length==0) {
-            break;
-        }
-        if (length != sizeof(buffer)) {
-            /* pad with extra 0's when at the end of the file */
-            for(i=0; i < (length % sizeof(uint32_t)); ++i) {
-                buffer[length+i] = 0;
-            }
-        }
-        for(i=0; i<(length/sizeof(buffer[0])); i++) {
-            column = write32(out, buffer[i], column);
-        }
-    }
-
-    T_FileStream_writeLine(out, "\n");
-
-    sprintf(bufferStr, assemblyHeader[assemblyHeaderIndex].footer,
-        entry, entry, entry, entry,
-        entry, entry, entry, entry);
-    T_FileStream_writeLine(out, bufferStr);
-
-    if(T_FileStream_error(in)) {
-        fprintf(stderr, "genccode: file read error while generating from file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    if(T_FileStream_error(out)) {
-        fprintf(stderr, "genccode: file write error while generating from file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    T_FileStream_close(out);
-    T_FileStream_close(in);
-}
-
-U_CAPI void U_EXPORT2
-writeCCode(const char *filename, const char *destdir, const char *optName, const char *optFilename, char *outFilePath) {
-    uint32_t column = MAX_COLUMN;
-    char buffer[4096], entry[64];
-    FileStream *in, *out;
-    size_t i, length;
-
-    in=T_FileStream_open(filename, "rb");
-    if(in==NULL) {
-        fprintf(stderr, "genccode: unable to open input file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    if(optName != NULL) { /* prepend  'icudt28_' */
-      strcpy(entry, optName);
-      strcat(entry, "_");
-    } else {
-      entry[0] = 0;
-    }
-
-    getOutFilename(filename, destdir, buffer, entry+uprv_strlen(entry), ".c", optFilename);
-    if (outFilePath != NULL) {
-        uprv_strcpy(outFilePath, buffer);
-    }
-    out=T_FileStream_open(buffer, "w");
-    if(out==NULL) {
-        fprintf(stderr, "genccode: unable to open output file %s\n", buffer);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    /* turn dashes or dots in the entry name into underscores */
-    length=uprv_strlen(entry);
-    for(i=0; i<length; ++i) {
-        if(entry[i]=='-' || entry[i]=='.') {
-            entry[i]='_';
-        }
-    }
-
-#if U_PLATFORM == U_PF_OS400
-    /*
-    TODO: Fix this once the compiler implements this feature. Keep in sync with udatamem.c
-
-    This is here because this platform can't currently put
-    const data into the read-only pages of an object or
-    shared library (service program). Only strings are allowed in read-only
-    pages, so we use char * strings to store the data.
-
-    In order to prevent the beginning of the data from ever matching the
-    magic numbers we must still use the initial double.
-    [grhoten 4/24/2003]
-    */
-    sprintf(buffer,
-        "#ifndef IN_GENERATED_CCODE\n"
-        "#define IN_GENERATED_CCODE\n"
-        "#define U_DISABLE_RENAMING 1\n"
-        "#include \"unicode/umachine.h\"\n"
-        "#endif\n"
-        "U_CDECL_BEGIN\n"
-        "const struct {\n"
-        "    double bogus;\n"
-        "    const char *bytes; \n"
-        "} %s={ 0.0, \n",
-        entry);
-    T_FileStream_writeLine(out, buffer);
-
-    for(;;) {
-        length=T_FileStream_read(in, buffer, sizeof(buffer));
-        if(length==0) {
-            break;
-        }
-        for(i=0; i<length; ++i) {
-            column = write8str(out, (uint8_t)buffer[i], column);
-        }
-    }
-
-    T_FileStream_writeLine(out, "\"\n};\nU_CDECL_END\n");
-#else
-    /* Function renaming shouldn't be done in data */
-    sprintf(buffer,
-        "#ifndef IN_GENERATED_CCODE\n"
-        "#define IN_GENERATED_CCODE\n"
-        "#define U_DISABLE_RENAMING 1\n"
-        "#include \"unicode/umachine.h\"\n"
-        "#endif\n"
-        "U_CDECL_BEGIN\n"
-        "const struct {\n"
-        "    double bogus;\n"
-        "    uint8_t bytes[%ld]; \n"
-        "} %s={ 0.0, {\n",
-        (long)T_FileStream_size(in), entry);
-    T_FileStream_writeLine(out, buffer);
-
-    for(;;) {
-        length=T_FileStream_read(in, buffer, sizeof(buffer));
-        if(length==0) {
-            break;
-        }
-        for(i=0; i<length; ++i) {
-            column = write8(out, (uint8_t)buffer[i], column);
-        }
-    }
-
-    T_FileStream_writeLine(out, "\n}\n};\nU_CDECL_END\n");
-#endif
-
-    if(T_FileStream_error(in)) {
-        fprintf(stderr, "genccode: file read error while generating from file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    if(T_FileStream_error(out)) {
-        fprintf(stderr, "genccode: file write error while generating from file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    T_FileStream_close(out);
-    T_FileStream_close(in);
-}
-
-static uint32_t
-write32(FileStream *out, uint32_t bitField, uint32_t column) {
-    int32_t i;
-    char bitFieldStr[64]; /* This is more bits than needed for a 32-bit number */
-    char *s = bitFieldStr;
-    uint8_t *ptrIdx = (uint8_t *)&bitField;
-    static const char hexToStr[16] = {
-        '0','1','2','3',
-        '4','5','6','7',
-        '8','9','A','B',
-        'C','D','E','F'
-    };
-
-    /* write the value, possibly with comma and newline */
-    if(column==MAX_COLUMN) {
-        /* first byte */
-        column=1;
-    } else if(column<32) {
-        *(s++)=',';
-        ++column;
-    } else {
-        *(s++)='\n';
-        uprv_strcpy(s, assemblyHeader[assemblyHeaderIndex].beginLine);
-        s+=uprv_strlen(s);
-        column=1;
-    }
-
-    if (bitField < 10) {
-        /* It's a small number. Don't waste the space for 0x */
-        *(s++)=hexToStr[bitField];
-    }
-    else {
-        int seenNonZero = 0; /* This is used to remove leading zeros */
-
-        if(hexType==HEX_0X) {
-         *(s++)='0';
-         *(s++)='x';
-        } else if(hexType==HEX_0H) {
-         *(s++)='0';
-        }
-
-        /* This creates a 32-bit field */
-#if U_IS_BIG_ENDIAN
-        for (i = 0; i < sizeof(uint32_t); i++)
-#else
-        for (i = sizeof(uint32_t)-1; i >= 0 ; i--)
-#endif
-        {
-            uint8_t value = ptrIdx[i];
-            if (value || seenNonZero) {
-                *(s++)=hexToStr[value>>4];
-                *(s++)=hexToStr[value&0xF];
-                seenNonZero = 1;
-            }
-        }
-        if(hexType==HEX_0H) {
-         *(s++)='h';
-        }
-    }
-
-    *(s++)=0;
-    T_FileStream_writeLine(out, bitFieldStr);
-    return column;
-}
-
-static uint32_t
-write8(FileStream *out, uint8_t byte, uint32_t column) {
-    char s[4];
-    int i=0;
-
-    /* convert the byte value to a string */
-    if(byte>=100) {
-        s[i++]=(char)('0'+byte/100);
-        byte%=100;
-    }
-    if(i>0 || byte>=10) {
-        s[i++]=(char)('0'+byte/10);
-        byte%=10;
-    }
-    s[i++]=(char)('0'+byte);
-    s[i]=0;
-
-    /* write the value, possibly with comma and newline */
-    if(column==MAX_COLUMN) {
-        /* first byte */
-        column=1;
-    } else if(column<16) {
-        T_FileStream_writeLine(out, ",");
-        ++column;
-    } else {
-        T_FileStream_writeLine(out, ",\n");
-        column=1;
-    }
-    T_FileStream_writeLine(out, s);
-    return column;
-}
-
-#if U_PLATFORM == U_PF_OS400
-static uint32_t
-write8str(FileStream *out, uint8_t byte, uint32_t column) {
-    char s[8];
-
-    if (byte > 7)
-        sprintf(s, "\\x%X", byte);
-    else
-        sprintf(s, "\\%X", byte);
-
-    /* write the value, possibly with comma and newline */
-    if(column==MAX_COLUMN) {
-        /* first byte */
-        column=1;
-        T_FileStream_writeLine(out, "\"");
-    } else if(column<24) {
-        ++column;
-    } else {
-        T_FileStream_writeLine(out, "\"\n\"");
-        column=1;
-    }
-    T_FileStream_writeLine(out, s);
-    return column;
-}
-#endif
-
-static void
-getOutFilename(const char *inFilename, const char *destdir, char *outFilename, char *entryName, const char *newSuffix, const char *optFilename) {
-    const char *basename=findBasename(inFilename), *suffix=uprv_strrchr(basename, '.');
-
-    /* copy path */
-    if(destdir!=NULL && *destdir!=0) {
-        do {
-            *outFilename++=*destdir++;
-        } while(*destdir!=0);
-        if(*(outFilename-1)!=U_FILE_SEP_CHAR) {
-            *outFilename++=U_FILE_SEP_CHAR;
-        }
-        inFilename=basename;
-    } else {
-        while(inFilename<basename) {
-            *outFilename++=*inFilename++;
-        }
-    }
-
-    if(suffix==NULL) {
-        /* the filename does not have a suffix */
-        uprv_strcpy(entryName, inFilename);
-        if(optFilename != NULL) {
-          uprv_strcpy(outFilename, optFilename);
-        } else {
-          uprv_strcpy(outFilename, inFilename);
-        }
-        uprv_strcat(outFilename, newSuffix);
-    } else {
-        char *saveOutFilename = outFilename;
-        /* copy basename */
-        while(inFilename<suffix) {
-            if(*inFilename=='-') {
-                /* iSeries cannot have '-' in the .o objects. */
-                *outFilename++=*entryName++='_';
-                inFilename++;
-            }
-            else {
-                *outFilename++=*entryName++=*inFilename++;
-            }
-        }
-
-        /* replace '.' by '_' */
-        *outFilename++=*entryName++='_';
-        ++inFilename;
-
-        /* copy suffix */
-        while(*inFilename!=0) {
-            *outFilename++=*entryName++=*inFilename++;
-        }
-
-        *entryName=0;
-
-        if(optFilename != NULL) {
-            uprv_strcpy(saveOutFilename, optFilename);
-            uprv_strcat(saveOutFilename, newSuffix);
-        } else {
-            /* add ".c" */
-            uprv_strcpy(outFilename, newSuffix);
-        }
-    }
-}
-
-#ifdef CAN_GENERATE_OBJECTS
-static void
-getArchitecture(uint16_t *pCPU, uint16_t *pBits, UBool *pIsBigEndian, const char *optMatchArch) {
-    union {
-        char        bytes[2048];
-#ifdef U_ELF
-        Elf32_Ehdr  header32;
-        /* Elf32_Ehdr and ELF64_Ehdr are identical for the necessary fields. */
-#elif U_PLATFORM_HAS_WIN32_API
-        IMAGE_FILE_HEADER header;
-#endif
-    } buffer;
-
-    const char *filename;
-    FileStream *in;
-    int32_t length;
-
-#ifdef U_ELF
-
-#elif U_PLATFORM_HAS_WIN32_API
-    const IMAGE_FILE_HEADER *pHeader;
-#else
-#   error "Unknown platform for CAN_GENERATE_OBJECTS."
-#endif
-
-    if(optMatchArch != NULL) {
-        filename=optMatchArch;
-    } else {
-        /* set defaults */
-#ifdef U_ELF
-        /* set EM_386 because elf.h does not provide better defaults */
-        *pCPU=EM_386;
-        *pBits=32;
-        *pIsBigEndian=(UBool)(U_IS_BIG_ENDIAN ? ELFDATA2MSB : ELFDATA2LSB);
-#elif U_PLATFORM_HAS_WIN32_API
-/* _M_IA64 should be defined in windows.h */
-#   if defined(_M_IA64)
-        *pCPU=IMAGE_FILE_MACHINE_IA64;
-#   elif defined(_M_AMD64)
-        *pCPU=IMAGE_FILE_MACHINE_AMD64;
-#   else
-        *pCPU=IMAGE_FILE_MACHINE_I386;
-#   endif
-        *pBits= *pCPU==IMAGE_FILE_MACHINE_I386 ? 32 : 64;
-        *pIsBigEndian=FALSE;
-#else
-#   error "Unknown platform for CAN_GENERATE_OBJECTS."
-#endif
-        return;
-    }
-
-    in=T_FileStream_open(filename, "rb");
-    if(in==NULL) {
-        fprintf(stderr, "genccode: unable to open match-arch file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-    length=T_FileStream_read(in, buffer.bytes, sizeof(buffer.bytes));
-
-#ifdef U_ELF
-    if(length<sizeof(Elf32_Ehdr)) {
-        fprintf(stderr, "genccode: match-arch file %s is too short\n", filename);
-        exit(U_UNSUPPORTED_ERROR);
-    }
-    if(
-        buffer.header32.e_ident[0]!=ELFMAG0 ||
-        buffer.header32.e_ident[1]!=ELFMAG1 ||
-        buffer.header32.e_ident[2]!=ELFMAG2 ||
-        buffer.header32.e_ident[3]!=ELFMAG3 ||
-        buffer.header32.e_ident[EI_CLASS]<ELFCLASS32 || buffer.header32.e_ident[EI_CLASS]>ELFCLASS64
-    ) {
-        fprintf(stderr, "genccode: match-arch file %s is not an ELF object file, or not supported\n", filename);
-        exit(U_UNSUPPORTED_ERROR);
-    }
-
-    *pBits= buffer.header32.e_ident[EI_CLASS]==ELFCLASS32 ? 32 : 64; /* only 32 or 64: see check above */
-#ifdef U_ELF64
-    if(*pBits!=32 && *pBits!=64) {
-        fprintf(stderr, "genccode: currently only supports 32-bit and 64-bit ELF format\n");
-        exit(U_UNSUPPORTED_ERROR);
-    }
-#else
-    if(*pBits!=32) {
-        fprintf(stderr, "genccode: built with elf.h missing 64-bit definitions\n");
-        exit(U_UNSUPPORTED_ERROR);
-    }
-#endif
-
-    *pIsBigEndian=(UBool)(buffer.header32.e_ident[EI_DATA]==ELFDATA2MSB);
-    if(*pIsBigEndian!=U_IS_BIG_ENDIAN) {
-        fprintf(stderr, "genccode: currently only same-endianness ELF formats are supported\n");
-        exit(U_UNSUPPORTED_ERROR);
-    }
-    /* TODO: Support byte swapping */
-
-    *pCPU=buffer.header32.e_machine;
-#elif U_PLATFORM_HAS_WIN32_API
-    if(length<sizeof(IMAGE_FILE_HEADER)) {
-        fprintf(stderr, "genccode: match-arch file %s is too short\n", filename);
-        exit(U_UNSUPPORTED_ERROR);
-    }
-    /* TODO: Use buffer.header.  Keep aliasing legal.  */
-    pHeader=(const IMAGE_FILE_HEADER *)buffer.bytes;
-    *pCPU=pHeader->Machine;
-    /*
-     * The number of bits is implicit with the Machine value.
-     * *pBits is ignored in the calling code, so this need not be precise.
-     */
-    *pBits= *pCPU==IMAGE_FILE_MACHINE_I386 ? 32 : 64;
-    /* Windows always runs on little-endian CPUs. */
-    *pIsBigEndian=FALSE;
-#else
-#   error "Unknown platform for CAN_GENERATE_OBJECTS."
-#endif
-
-    T_FileStream_close(in);
-}
-
-U_CAPI void U_EXPORT2
-writeObjectCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optMatchArch, const char *optFilename, char *outFilePath) {
-    /* common variables */
-    char buffer[4096], entry[96]={ 0 };
-    FileStream *in, *out;
-    const char *newSuffix;
-    int32_t i, entryLength, length, size, entryOffset=0, entryLengthOffset=0;
-
-    uint16_t cpu, bits;
-    UBool makeBigEndian;
-
-    /* platform-specific variables and initialization code */
-#ifdef U_ELF
-    /* 32-bit Elf file header */
-    static Elf32_Ehdr header32={
-        {
-            /* e_ident[] */
-            ELFMAG0, ELFMAG1, ELFMAG2, ELFMAG3,
-            ELFCLASS32,
-            U_IS_BIG_ENDIAN ? ELFDATA2MSB : ELFDATA2LSB,
-            EV_CURRENT /* EI_VERSION */
-        },
-        ET_REL,
-        EM_386,
-        EV_CURRENT, /* e_version */
-        0, /* e_entry */
-        0, /* e_phoff */
-        (Elf32_Off)sizeof(Elf32_Ehdr), /* e_shoff */
-        0, /* e_flags */
-        (Elf32_Half)sizeof(Elf32_Ehdr), /* eh_size */
-        0, /* e_phentsize */
-        0, /* e_phnum */
-        (Elf32_Half)sizeof(Elf32_Shdr), /* e_shentsize */
-        5, /* e_shnum */
-        2 /* e_shstrndx */
-    };
-
-    /* 32-bit Elf section header table */
-    static Elf32_Shdr sectionHeaders32[5]={
-        { /* SHN_UNDEF */
-            0
-        },
-        { /* .symtab */
-            1, /* sh_name */
-            SHT_SYMTAB,
-            0, /* sh_flags */
-            0, /* sh_addr */
-            (Elf32_Off)(sizeof(header32)+sizeof(sectionHeaders32)), /* sh_offset */
-            (Elf32_Word)(2*sizeof(Elf32_Sym)), /* sh_size */
-            3, /* sh_link=sect hdr index of .strtab */
-            1, /* sh_info=One greater than the symbol table index of the last
-                * local symbol (with STB_LOCAL). */
-            4, /* sh_addralign */
-            (Elf32_Word)(sizeof(Elf32_Sym)) /* sh_entsize */
-        },
-        { /* .shstrtab */
-            9, /* sh_name */
-            SHT_STRTAB,
-            0, /* sh_flags */
-            0, /* sh_addr */
-            (Elf32_Off)(sizeof(header32)+sizeof(sectionHeaders32)+2*sizeof(Elf32_Sym)), /* sh_offset */
-            40, /* sh_size */
-            0, /* sh_link */
-            0, /* sh_info */
-            1, /* sh_addralign */
-            0 /* sh_entsize */
-        },
-        { /* .strtab */
-            19, /* sh_name */
-            SHT_STRTAB,
-            0, /* sh_flags */
-            0, /* sh_addr */
-            (Elf32_Off)(sizeof(header32)+sizeof(sectionHeaders32)+2*sizeof(Elf32_Sym)+40), /* sh_offset */
-            (Elf32_Word)sizeof(entry), /* sh_size */
-            0, /* sh_link */
-            0, /* sh_info */
-            1, /* sh_addralign */
-            0 /* sh_entsize */
-        },
-        { /* .rodata */
-            27, /* sh_name */
-            SHT_PROGBITS,
-            SHF_ALLOC, /* sh_flags */
-            0, /* sh_addr */
-            (Elf32_Off)(sizeof(header32)+sizeof(sectionHeaders32)+2*sizeof(Elf32_Sym)+40+sizeof(entry)), /* sh_offset */
-            0, /* sh_size */
-            0, /* sh_link */
-            0, /* sh_info */
-            16, /* sh_addralign */
-            0 /* sh_entsize */
-        }
-    };
-
-    /* symbol table */
-    static Elf32_Sym symbols32[2]={
-        { /* STN_UNDEF */
-            0
-        },
-        { /* data entry point */
-            1, /* st_name */
-            0, /* st_value */
-            0, /* st_size */
-            ELF64_ST_INFO(STB_GLOBAL, STT_OBJECT),
-            0, /* st_other */
-            4 /* st_shndx=index of related section table entry */
-        }
-    };
-
-    /* section header string table, with decimal string offsets */
-    static const char sectionStrings[40]=
-        /*  0 */ "\0"
-        /*  1 */ ".symtab\0"
-        /*  9 */ ".shstrtab\0"
-        /* 19 */ ".strtab\0"
-        /* 27 */ ".rodata\0"
-        /* 35 */ "\0\0\0\0"; /* contains terminating NUL */
-        /* 40: padded to multiple of 8 bytes */
-
-    /*
-     * Use entry[] for the string table which will contain only the
-     * entry point name.
-     * entry[0] must be 0 (NUL)
-     * The entry point name can be up to 38 characters long (sizeof(entry)-2).
-     */
-
-    /* 16-align .rodata in the .o file, just in case */
-    static const char padding[16]={ 0 };
-    int32_t paddingSize;
-
-#ifdef U_ELF64
-    /* 64-bit Elf file header */
-    static Elf64_Ehdr header64={
-        {
-            /* e_ident[] */
-            ELFMAG0, ELFMAG1, ELFMAG2, ELFMAG3,
-            ELFCLASS64,
-            U_IS_BIG_ENDIAN ? ELFDATA2MSB : ELFDATA2LSB,
-            EV_CURRENT /* EI_VERSION */
-        },
-        ET_REL,
-        EM_X86_64,
-        EV_CURRENT, /* e_version */
-        0, /* e_entry */
-        0, /* e_phoff */
-        (Elf64_Off)sizeof(Elf64_Ehdr), /* e_shoff */
-        0, /* e_flags */
-        (Elf64_Half)sizeof(Elf64_Ehdr), /* eh_size */
-        0, /* e_phentsize */
-        0, /* e_phnum */
-        (Elf64_Half)sizeof(Elf64_Shdr), /* e_shentsize */
-        5, /* e_shnum */
-        2 /* e_shstrndx */
-    };
-
-    /* 64-bit Elf section header table */
-    static Elf64_Shdr sectionHeaders64[5]={
-        { /* SHN_UNDEF */
-            0
-        },
-        { /* .symtab */
-            1, /* sh_name */
-            SHT_SYMTAB,
-            0, /* sh_flags */
-            0, /* sh_addr */
-            (Elf64_Off)(sizeof(header64)+sizeof(sectionHeaders64)), /* sh_offset */
-            (Elf64_Xword)(2*sizeof(Elf64_Sym)), /* sh_size */
-            3, /* sh_link=sect hdr index of .strtab */
-            1, /* sh_info=One greater than the symbol table index of the last
-                * local symbol (with STB_LOCAL). */
-            4, /* sh_addralign */
-            (Elf64_Xword)(sizeof(Elf64_Sym)) /* sh_entsize */
-        },
-        { /* .shstrtab */
-            9, /* sh_name */
-            SHT_STRTAB,
-            0, /* sh_flags */
-            0, /* sh_addr */
-            (Elf64_Off)(sizeof(header64)+sizeof(sectionHeaders64)+2*sizeof(Elf64_Sym)), /* sh_offset */
-            40, /* sh_size */
-            0, /* sh_link */
-            0, /* sh_info */
-            1, /* sh_addralign */
-            0 /* sh_entsize */
-        },
-        { /* .strtab */
-            19, /* sh_name */
-            SHT_STRTAB,
-            0, /* sh_flags */
-            0, /* sh_addr */
-            (Elf64_Off)(sizeof(header64)+sizeof(sectionHeaders64)+2*sizeof(Elf64_Sym)+40), /* sh_offset */
-            (Elf64_Xword)sizeof(entry), /* sh_size */
-            0, /* sh_link */
-            0, /* sh_info */
-            1, /* sh_addralign */
-            0 /* sh_entsize */
-        },
-        { /* .rodata */
-            27, /* sh_name */
-            SHT_PROGBITS,
-            SHF_ALLOC, /* sh_flags */
-            0, /* sh_addr */
-            (Elf64_Off)(sizeof(header64)+sizeof(sectionHeaders64)+2*sizeof(Elf64_Sym)+40+sizeof(entry)), /* sh_offset */
-            0, /* sh_size */
-            0, /* sh_link */
-            0, /* sh_info */
-            16, /* sh_addralign */
-            0 /* sh_entsize */
-        }
-    };
-
-    /*
-     * 64-bit symbol table
-     * careful: different order of items compared with Elf32_sym!
-     */
-    static Elf64_Sym symbols64[2]={
-        { /* STN_UNDEF */
-            0
-        },
-        { /* data entry point */
-            1, /* st_name */
-            ELF64_ST_INFO(STB_GLOBAL, STT_OBJECT),
-            0, /* st_other */
-            4, /* st_shndx=index of related section table entry */
-            0, /* st_value */
-            0 /* st_size */
-        }
-    };
-
-#endif /* U_ELF64 */
-
-    /* entry[] have a leading NUL */
-    entryOffset=1;
-
-    /* in the common code, count entryLength from after the NUL */
-    entryLengthOffset=1;
-
-    newSuffix=".o";
-
-#elif U_PLATFORM_HAS_WIN32_API
-    struct {
-        IMAGE_FILE_HEADER fileHeader;
-        IMAGE_SECTION_HEADER sections[2];
-        char linkerOptions[100];
-    } objHeader;
-    IMAGE_SYMBOL symbols[1];
-    struct {
-        DWORD sizeofLongNames;
-        char longNames[100];
-    } symbolNames;
-
-    /*
-     * entry sometimes have a leading '_'
-     * overwritten if entryOffset==0 depending on the target platform
-     * see check for cpu below
-     */
-    entry[0]='_';
-
-    newSuffix=".obj";
-#else
-#   error "Unknown platform for CAN_GENERATE_OBJECTS."
-#endif
-
-    /* deal with options, files and the entry point name */
-    getArchitecture(&cpu, &bits, &makeBigEndian, optMatchArch);
-    printf("genccode: --match-arch cpu=%hu bits=%hu big-endian=%d\n", cpu, bits, makeBigEndian);
-#if U_PLATFORM_HAS_WIN32_API
-    if(cpu==IMAGE_FILE_MACHINE_I386) {
-        entryOffset=1;
-    }
-#endif
-
-    in=T_FileStream_open(filename, "rb");
-    if(in==NULL) {
-        fprintf(stderr, "genccode: unable to open input file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-    size=T_FileStream_size(in);
-
-    getOutFilename(filename, destdir, buffer, entry+entryOffset, newSuffix, optFilename);
-    if (outFilePath != NULL) {
-        uprv_strcpy(outFilePath, buffer);
-    }
-
-    if(optEntryPoint != NULL) {
-        uprv_strcpy(entry+entryOffset, optEntryPoint);
-        uprv_strcat(entry+entryOffset, "_dat");
-    }
-    /* turn dashes in the entry name into underscores */
-    entryLength=(int32_t)uprv_strlen(entry+entryLengthOffset);
-    for(i=0; i<entryLength; ++i) {
-        if(entry[entryLengthOffset+i]=='-') {
-            entry[entryLengthOffset+i]='_';
-        }
-    }
-
-    /* open the output file */
-    out=T_FileStream_open(buffer, "wb");
-    if(out==NULL) {
-        fprintf(stderr, "genccode: unable to open output file %s\n", buffer);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-#ifdef U_ELF
-    if(bits==32) {
-        header32.e_ident[EI_DATA]= makeBigEndian ? ELFDATA2MSB : ELFDATA2LSB;
-        header32.e_machine=cpu;
-
-        /* 16-align .rodata in the .o file, just in case */
-        paddingSize=sectionHeaders32[4].sh_offset & 0xf;
-        if(paddingSize!=0) {
-                paddingSize=0x10-paddingSize;
-                sectionHeaders32[4].sh_offset+=paddingSize;
-        }
-
-        sectionHeaders32[4].sh_size=(Elf32_Word)size;
-
-        symbols32[1].st_size=(Elf32_Word)size;
-
-        /* write .o headers */
-        T_FileStream_write(out, &header32, (int32_t)sizeof(header32));
-        T_FileStream_write(out, sectionHeaders32, (int32_t)sizeof(sectionHeaders32));
-        T_FileStream_write(out, symbols32, (int32_t)sizeof(symbols32));
-    } else /* bits==64 */ {
-#ifdef U_ELF64
-        header64.e_ident[EI_DATA]= makeBigEndian ? ELFDATA2MSB : ELFDATA2LSB;
-        header64.e_machine=cpu;
-
-        /* 16-align .rodata in the .o file, just in case */
-        paddingSize=sectionHeaders64[4].sh_offset & 0xf;
-        if(paddingSize!=0) {
-                paddingSize=0x10-paddingSize;
-                sectionHeaders64[4].sh_offset+=paddingSize;
-        }
-
-        sectionHeaders64[4].sh_size=(Elf64_Xword)size;
-
-        symbols64[1].st_size=(Elf64_Xword)size;
-
-        /* write .o headers */
-        T_FileStream_write(out, &header64, (int32_t)sizeof(header64));
-        T_FileStream_write(out, sectionHeaders64, (int32_t)sizeof(sectionHeaders64));
-        T_FileStream_write(out, symbols64, (int32_t)sizeof(symbols64));
-#endif
-    }
-
-    T_FileStream_write(out, sectionStrings, (int32_t)sizeof(sectionStrings));
-    T_FileStream_write(out, entry, (int32_t)sizeof(entry));
-    if(paddingSize!=0) {
-        T_FileStream_write(out, padding, paddingSize);
-    }
-#elif U_PLATFORM_HAS_WIN32_API
-    /* populate the .obj headers */
-    uprv_memset(&objHeader, 0, sizeof(objHeader));
-    uprv_memset(&symbols, 0, sizeof(symbols));
-    uprv_memset(&symbolNames, 0, sizeof(symbolNames));
-
-    /* write the linker export directive */
-    uprv_strcpy(objHeader.linkerOptions, "-export:");
-    length=8;
-    uprv_strcpy(objHeader.linkerOptions+length, entry);
-    length+=entryLength;
-    uprv_strcpy(objHeader.linkerOptions+length, ",data ");
-    length+=6;
-
-    /* set the file header */
-    objHeader.fileHeader.Machine=cpu;
-    objHeader.fileHeader.NumberOfSections=2;
-    objHeader.fileHeader.TimeDateStamp=(DWORD)time(NULL);
-    objHeader.fileHeader.PointerToSymbolTable=IMAGE_SIZEOF_FILE_HEADER+2*IMAGE_SIZEOF_SECTION_HEADER+length+size; /* start of symbol table */
-    objHeader.fileHeader.NumberOfSymbols=1;
-
-    /* set the section for the linker options */
-    uprv_strncpy((char *)objHeader.sections[0].Name, ".drectve", 8);
-    objHeader.sections[0].SizeOfRawData=length;
-    objHeader.sections[0].PointerToRawData=IMAGE_SIZEOF_FILE_HEADER+2*IMAGE_SIZEOF_SECTION_HEADER;
-    objHeader.sections[0].Characteristics=IMAGE_SCN_LNK_INFO|IMAGE_SCN_LNK_REMOVE|IMAGE_SCN_ALIGN_1BYTES;
-
-    /* set the data section */
-    uprv_strncpy((char *)objHeader.sections[1].Name, ".rdata", 6);
-    objHeader.sections[1].SizeOfRawData=size;
-    objHeader.sections[1].PointerToRawData=IMAGE_SIZEOF_FILE_HEADER+2*IMAGE_SIZEOF_SECTION_HEADER+length;
-    objHeader.sections[1].Characteristics=IMAGE_SCN_CNT_INITIALIZED_DATA|IMAGE_SCN_ALIGN_16BYTES|IMAGE_SCN_MEM_READ;
-
-    /* set the symbol table */
-    if(entryLength<=8) {
-        uprv_strncpy((char *)symbols[0].N.ShortName, entry, entryLength);
-        symbolNames.sizeofLongNames=4;
-    } else {
-        symbols[0].N.Name.Short=0;
-        symbols[0].N.Name.Long=4;
-        symbolNames.sizeofLongNames=4+entryLength+1;
-        uprv_strcpy(symbolNames.longNames, entry);
-    }
-    symbols[0].SectionNumber=2;
-    symbols[0].StorageClass=IMAGE_SYM_CLASS_EXTERNAL;
-
-    /* write the file header and the linker options section */
-    T_FileStream_write(out, &objHeader, objHeader.sections[1].PointerToRawData);
-#else
-#   error "Unknown platform for CAN_GENERATE_OBJECTS."
-#endif
-
-    /* copy the data file into section 2 */
-    for(;;) {
-        length=T_FileStream_read(in, buffer, sizeof(buffer));
-        if(length==0) {
-            break;
-        }
-        T_FileStream_write(out, buffer, (int32_t)length);
-    }
-
-#if U_PLATFORM_HAS_WIN32_API
-    /* write the symbol table */
-    T_FileStream_write(out, symbols, IMAGE_SIZEOF_SYMBOL);
-    T_FileStream_write(out, &symbolNames, symbolNames.sizeofLongNames);
-#endif
-
-    if(T_FileStream_error(in)) {
-        fprintf(stderr, "genccode: file read error while generating from file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    if(T_FileStream_error(out)) {
-        fprintf(stderr, "genccode: file write error while generating from file %s\n", filename);
-        exit(U_FILE_ACCESS_ERROR);
-    }
-
-    T_FileStream_close(out);
-    T_FileStream_close(in);
-}
-#endif
index 12ffc92..5039f27 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2008-2011, International Business Machines
diff --git a/source/tools/toolutil/pkg_gencmn.c b/source/tools/toolutil/pkg_gencmn.c
deleted file mode 100644 (file)
index 38cc820..0000000
+++ /dev/null
@@ -1,573 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/******************************************************************************
- *   Copyright (C) 2008-2012, International Business Machines
- *   Corporation and others.  All Rights Reserved.
- *******************************************************************************
- */
-#include "unicode/utypes.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "unicode/utypes.h"
-#include "unicode/putil.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "filestrm.h"
-#include "toolutil.h"
-#include "unicode/uclean.h"
-#include "unewdata.h"
-#include "putilimp.h"
-#include "pkg_gencmn.h"
-
-#define STRING_STORE_SIZE 200000
-
-#define COMMON_DATA_NAME U_ICUDATA_NAME
-#define DATA_TYPE "dat"
-
-/* ICU package data file format (.dat files) ------------------------------- ***
-
-Description of the data format after the usual ICU data file header
-(UDataInfo etc.).
-
-Format version 1
-
-A .dat package file contains a simple Table of Contents of item names,
-followed by the items themselves:
-
-1. ToC table
-
-uint32_t count; - number of items
-UDataOffsetTOCEntry entry[count]; - pair of uint32_t values per item:
-    uint32_t nameOffset; - offset of the item name
-    uint32_t dataOffset; - offset of the item data
-both are byte offsets from the beginning of the data
-
-2. item name strings
-
-All item names are stored as char * strings in one block between the ToC table
-and the data items.
-
-3. data items
-
-The data items are stored following the item names block.
-Each data item is 16-aligned.
-The data items are stored in the sorted order of their names.
-
-Therefore, the top of the name strings block is the offset of the first item,
-the length of the last item is the difference between its offset and
-the .dat file length, and the length of all previous items is the difference
-between its offset and the next one.
-
------------------------------------------------------------------------------ */
-
-/* UDataInfo cf. udata.h */
-static const UDataInfo dataInfo={
-    sizeof(UDataInfo),
-    0,
-
-    U_IS_BIG_ENDIAN,
-    U_CHARSET_FAMILY,
-    sizeof(UChar),
-    0,
-
-    {0x43, 0x6d, 0x6e, 0x44},     /* dataFormat="CmnD" */
-    {1, 0, 0, 0},                 /* formatVersion */
-    {3, 0, 0, 0}                  /* dataVersion */
-};
-
-static uint32_t maxSize;
-
-static char stringStore[STRING_STORE_SIZE];
-static uint32_t stringTop=0, basenameTotal=0;
-
-typedef struct {
-    char *pathname, *basename;
-    uint32_t basenameLength, basenameOffset, fileSize, fileOffset;
-} File;
-
-#define CHUNK_FILE_COUNT 256
-static File *files = NULL;
-static uint32_t fileCount=0;
-static uint32_t fileMax = 0;
-
-
-static char *symPrefix = NULL;
-
-#define LINE_BUFFER_SIZE 512
-/* prototypes --------------------------------------------------------------- */
-
-static void
-addFile(const char *filename, const char *name, const char *source, UBool sourceTOC, UBool verbose);
-
-static char *
-allocString(uint32_t length);
-
-static int
-compareFiles(const void *file1, const void *file2);
-
-static char *
-pathToFullPath(const char *path, const char *source);
-
-/* map non-tree separator (such as '\') to tree separator ('/') inplace. */
-static void
-fixDirToTreePath(char *s);
-/* -------------------------------------------------------------------------- */
-
-U_CAPI void U_EXPORT2
-createCommonDataFile(const char *destDir, const char *name, const char *entrypointName, const char *type, const char *source, const char *copyRight,
-                     const char *dataFile, uint32_t max_size, UBool sourceTOC, UBool verbose, char *gencmnFileName) {
-    static char buffer[4096];
-    char *line;
-    char *linePtr;
-    char *s = NULL;
-    UErrorCode errorCode=U_ZERO_ERROR;
-    uint32_t i, fileOffset, basenameOffset, length, nread;
-    FileStream *in, *file;
-
-    line = (char *)uprv_malloc(sizeof(char) * LINE_BUFFER_SIZE);
-    if (line == NULL) {
-        fprintf(stderr, "gencmn: unable to allocate memory for line buffer of size %d\n", LINE_BUFFER_SIZE);
-        exit(U_MEMORY_ALLOCATION_ERROR);
-    }
-
-    linePtr = line;
-
-    maxSize = max_size;
-
-    if (destDir == NULL) {
-        destDir = u_getDataDirectory();
-    }
-    if (name == NULL) {
-        name = COMMON_DATA_NAME;
-    }
-    if (type == NULL) {
-        type = DATA_TYPE;
-    }
-    if (source == NULL) {
-        source = ".";
-    }
-
-    if (dataFile == NULL) {
-        in = T_FileStream_stdin();
-    } else {
-        in = T_FileStream_open(dataFile, "r");
-        if(in == NULL) {
-            fprintf(stderr, "gencmn: unable to open input file %s\n", dataFile);
-            exit(U_FILE_ACCESS_ERROR);
-        }
-    }
-
-    if (verbose) {
-        if(sourceTOC) {
-            printf("generating %s_%s.c (table of contents source file)\n", name, type);
-        } else {
-            printf("generating %s.%s (common data file with table of contents)\n", name, type);
-        }
-    }
-
-    /* read the list of files and get their lengths */
-    while((s != NULL && *s != 0) || (s=T_FileStream_readLine(in, (line=linePtr),
-                                                             LINE_BUFFER_SIZE))!=NULL) {
-        /* remove trailing newline characters and parse space separated items */
-        if (s != NULL && *s != 0) {
-            line=s;
-        } else {
-            s=line;
-        }
-        while(*s!=0) {
-            if(*s==' ') {
-                *s=0;
-                ++s;
-                break;
-            } else if(*s=='\r' || *s=='\n') {
-                *s=0;
-                break;
-            }
-            ++s;
-        }
-
-        /* check for comment */
-
-        if (*line == '#') {
-            continue;
-        }
-
-        /* add the file */
-#if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR)
-        {
-          char *t;
-          while((t = uprv_strchr(line,U_FILE_ALT_SEP_CHAR))) {
-            *t = U_FILE_SEP_CHAR;
-          }
-        }
-#endif
-        addFile(getLongPathname(line), name, source, sourceTOC, verbose);
-    }
-
-    uprv_free(linePtr);
-
-    if(in!=T_FileStream_stdin()) {
-        T_FileStream_close(in);
-    }
-
-    if(fileCount==0) {
-        fprintf(stderr, "gencmn: no files listed in %s\n", dataFile == NULL ? "<stdin>" : dataFile);
-        return;
-    }
-
-    /* sort the files by basename */
-    qsort(files, fileCount, sizeof(File), compareFiles);
-
-    if(!sourceTOC) {
-        UNewDataMemory *out;
-
-        /* determine the offsets of all basenames and files in this common one */
-        basenameOffset=4+8*fileCount;
-        fileOffset=(basenameOffset+(basenameTotal+15))&~0xf;
-        for(i=0; i<fileCount; ++i) {
-            files[i].fileOffset=fileOffset;
-            fileOffset+=(files[i].fileSize+15)&~0xf;
-            files[i].basenameOffset=basenameOffset;
-            basenameOffset+=files[i].basenameLength;
-        }
-
-        /* create the output file */
-        out=udata_create(destDir, type, name,
-                         &dataInfo,
-                         copyRight == NULL ? U_COPYRIGHT_STRING : copyRight,
-                         &errorCode);
-        if(U_FAILURE(errorCode)) {
-            fprintf(stderr, "gencmn: udata_create(-d %s -n %s -t %s) failed - %s\n",
-                destDir, name, type,
-                u_errorName(errorCode));
-            exit(errorCode);
-        }
-
-        /* write the table of contents */
-        udata_write32(out, fileCount);
-        for(i=0; i<fileCount; ++i) {
-            udata_write32(out, files[i].basenameOffset);
-            udata_write32(out, files[i].fileOffset);
-        }
-
-        /* write the basenames */
-        for(i=0; i<fileCount; ++i) {
-            udata_writeString(out, files[i].basename, files[i].basenameLength);
-        }
-        length=4+8*fileCount+basenameTotal;
-
-        /* copy the files */
-        for(i=0; i<fileCount; ++i) {
-            /* pad to 16-align the next file */
-            length&=0xf;
-            if(length!=0) {
-                udata_writePadding(out, 16-length);
-            }
-
-            if (verbose) {
-                printf("adding %s (%ld byte%s)\n", files[i].pathname, (long)files[i].fileSize, files[i].fileSize == 1 ? "" : "s");
-            }
-
-            /* copy the next file */
-            file=T_FileStream_open(files[i].pathname, "rb");
-            if(file==NULL) {
-                fprintf(stderr, "gencmn: unable to open listed file %s\n", files[i].pathname);
-                exit(U_FILE_ACCESS_ERROR);
-            }
-            for(nread = 0;;) {
-                length=T_FileStream_read(file, buffer, sizeof(buffer));
-                if(length <= 0) {
-                    break;
-                }
-                nread += length;
-                udata_writeBlock(out, buffer, length);
-            }
-            T_FileStream_close(file);
-            length=files[i].fileSize;
-
-            if (nread != files[i].fileSize) {
-              fprintf(stderr, "gencmn: unable to read %s properly (got %ld/%ld byte%s)\n", files[i].pathname,  (long)nread, (long)files[i].fileSize, files[i].fileSize == 1 ? "" : "s");
-                exit(U_FILE_ACCESS_ERROR);
-            }
-        }
-
-        /* pad to 16-align the last file (cleaner, avoids growing .dat files in icuswap) */
-        length&=0xf;
-        if(length!=0) {
-            udata_writePadding(out, 16-length);
-        }
-
-        /* finish */
-        udata_finish(out, &errorCode);
-        if(U_FAILURE(errorCode)) {
-            fprintf(stderr, "gencmn: udata_finish() failed - %s\n", u_errorName(errorCode));
-            exit(errorCode);
-        }
-    } else {
-        /* write a .c source file with the table of contents */
-        char *filename;
-        FileStream *out;
-
-        /* create the output filename */
-        filename=s=buffer;
-        uprv_strcpy(filename, destDir);
-        s=filename+uprv_strlen(filename);
-        if(s>filename && *(s-1)!=U_FILE_SEP_CHAR) {
-            *s++=U_FILE_SEP_CHAR;
-        }
-        uprv_strcpy(s, name);
-        if(*(type)!=0) {
-            s+=uprv_strlen(s);
-            *s++='_';
-            uprv_strcpy(s, type);
-        }
-        s+=uprv_strlen(s);
-        uprv_strcpy(s, ".c");
-
-        /* open the output file */
-        out=T_FileStream_open(filename, "w");
-        if (gencmnFileName != NULL) {
-            uprv_strcpy(gencmnFileName, filename);
-        }
-        if(out==NULL) {
-            fprintf(stderr, "gencmn: unable to open .c output file %s\n", filename);
-            exit(U_FILE_ACCESS_ERROR);
-        }
-
-        /* write the source file */
-        sprintf(buffer,
-            "/*\n"
-            " * ICU common data table of contents for %s.%s\n"
-            " * Automatically generated by icu/source/tools/gencmn/gencmn .\n"
-            " */\n\n"
-            "#include \"unicode/utypes.h\"\n"
-            "#include \"unicode/udata.h\"\n"
-            "\n"
-            "/* external symbol declarations for data (%d files) */\n",
-                name, type, fileCount);
-        T_FileStream_writeLine(out, buffer);
-
-        sprintf(buffer, "extern const char\n    %s%s[]", symPrefix?symPrefix:"", files[0].pathname);
-        T_FileStream_writeLine(out, buffer);
-        for(i=1; i<fileCount; ++i) {
-            sprintf(buffer, ",\n    %s%s[]", symPrefix?symPrefix:"", files[i].pathname);
-            T_FileStream_writeLine(out, buffer);
-        }
-        T_FileStream_writeLine(out, ";\n\n");
-
-        sprintf(
-            buffer,
-            "U_EXPORT struct {\n"
-            "    uint16_t headerSize;\n"
-            "    uint8_t magic1, magic2;\n"
-            "    UDataInfo info;\n"
-            "    char padding[%lu];\n"
-            "    uint32_t count, reserved;\n"
-            "    struct {\n"
-            "        const char *name;\n"
-            "        const void *data;\n"
-            "    } toc[%lu];\n"
-            "} U_EXPORT2 %s_dat = {\n"
-            "    32, 0xda, 0x27, {\n"
-            "        %lu, 0,\n"
-            "        %u, %u, %u, 0,\n"
-            "        {0x54, 0x6f, 0x43, 0x50},\n"
-            "        {1, 0, 0, 0},\n"
-            "        {0, 0, 0, 0}\n"
-            "    },\n"
-            "    \"\", %lu, 0, {\n",
-            (unsigned long)32-4-sizeof(UDataInfo),
-            (unsigned long)fileCount,
-            entrypointName,
-            (unsigned long)sizeof(UDataInfo),
-            U_IS_BIG_ENDIAN,
-            U_CHARSET_FAMILY,
-            U_SIZEOF_UCHAR,
-            (unsigned long)fileCount
-        );
-        T_FileStream_writeLine(out, buffer);
-
-        sprintf(buffer, "        { \"%s\", %s%s }", files[0].basename, symPrefix?symPrefix:"", files[0].pathname);
-        T_FileStream_writeLine(out, buffer);
-        for(i=1; i<fileCount; ++i) {
-            sprintf(buffer, ",\n        { \"%s\", %s%s }", files[i].basename, symPrefix?symPrefix:"", files[i].pathname);
-            T_FileStream_writeLine(out, buffer);
-        }
-
-        T_FileStream_writeLine(out, "\n    }\n};\n");
-        T_FileStream_close(out);
-
-        uprv_free(symPrefix);
-    }
-}
-
-static void
-addFile(const char *filename, const char *name, const char *source, UBool sourceTOC, UBool verbose) {
-    char *s;
-    uint32_t length;
-    char *fullPath = NULL;
-
-    if(fileCount==fileMax) {
-      fileMax += CHUNK_FILE_COUNT;
-      files = uprv_realloc(files, fileMax*sizeof(files[0])); /* note: never freed. */
-      if(files==NULL) {
-        fprintf(stderr, "pkgdata/gencmn: Could not allocate %u bytes for %d files\n", (unsigned int)(fileMax*sizeof(files[0])), fileCount);
-        exit(U_MEMORY_ALLOCATION_ERROR);
-      }
-    }
-
-    if(!sourceTOC) {
-        FileStream *file;
-
-        if(uprv_pathIsAbsolute(filename)) {
-            fprintf(stderr, "gencmn: Error: absolute path encountered. Old style paths are not supported. Use relative paths such as 'fur.res' or 'translit%cfur.res'.\n\tBad path: '%s'\n", U_FILE_SEP_CHAR, filename);
-            exit(U_ILLEGAL_ARGUMENT_ERROR);
-        }
-        fullPath = pathToFullPath(filename, source);
-        /* store the pathname */
-        length = (uint32_t)(uprv_strlen(filename) + 1 + uprv_strlen(name) + 1);
-        s=allocString(length);
-        uprv_strcpy(s, name);
-        uprv_strcat(s, U_TREE_ENTRY_SEP_STRING);
-        uprv_strcat(s, filename);
-
-        /* get the basename */
-        fixDirToTreePath(s);
-        files[fileCount].basename=s;
-        files[fileCount].basenameLength=length;
-
-        files[fileCount].pathname=fullPath;
-
-        basenameTotal+=length;
-
-        /* try to open the file */
-        file=T_FileStream_open(fullPath, "rb");
-        if(file==NULL) {
-            fprintf(stderr, "gencmn: unable to open listed file %s\n", fullPath);
-            exit(U_FILE_ACCESS_ERROR);
-        }
-
-        /* get the file length */
-        length=T_FileStream_size(file);
-        if(T_FileStream_error(file) || length<=20) {
-            fprintf(stderr, "gencmn: unable to get length of listed file %s\n", fullPath);
-            exit(U_FILE_ACCESS_ERROR);
-        }
-
-        T_FileStream_close(file);
-
-        /* do not add files that are longer than maxSize */
-        if(maxSize && length>maxSize) {
-            if (verbose) {
-                printf("%s ignored (size %ld > %ld)\n", fullPath, (long)length, (long)maxSize);
-            }
-            return;
-        }
-        files[fileCount].fileSize=length;
-    } else {
-        char *t;
-        /* get and store the basename */
-        /* need to include the package name */
-        length = (uint32_t)(uprv_strlen(filename) + 1 + uprv_strlen(name) + 1);
-        s=allocString(length);
-        uprv_strcpy(s, name);
-        uprv_strcat(s, U_TREE_ENTRY_SEP_STRING);
-        uprv_strcat(s, filename);
-        fixDirToTreePath(s);
-        files[fileCount].basename=s;
-        /* turn the basename into an entry point name and store in the pathname field */
-        t=files[fileCount].pathname=allocString(length);
-        while(--length>0) {
-            if(*s=='.' || *s=='-' || *s=='/') {
-                *t='_';
-            } else {
-                *t=*s;
-            }
-            ++s;
-            ++t;
-        }
-        *t=0;
-    }
-    ++fileCount;
-}
-
-static char *
-allocString(uint32_t length) {
-    uint32_t top=stringTop+length;
-    char *p;
-
-    if(top>STRING_STORE_SIZE) {
-        fprintf(stderr, "gencmn: out of memory\n");
-        exit(U_MEMORY_ALLOCATION_ERROR);
-    }
-    p=stringStore+stringTop;
-    stringTop=top;
-    return p;
-}
-
-static char *
-pathToFullPath(const char *path, const char *source) {
-    int32_t length;
-    int32_t newLength;
-    char *fullPath;
-    int32_t n;
-
-    length = (uint32_t)(uprv_strlen(path) + 1);
-    newLength = (length + 1 + (int32_t)uprv_strlen(source));
-    fullPath = uprv_malloc(newLength);
-    if(source != NULL) {
-        uprv_strcpy(fullPath, source);
-        uprv_strcat(fullPath, U_FILE_SEP_STRING);
-    } else {
-        fullPath[0] = 0;
-    }
-    n = (int32_t)uprv_strlen(fullPath);
-    fullPath[n] = 0;       /* Suppress compiler warning for unused variable n    */
-                           /*  when conditional code below is not compiled.      */
-    uprv_strcat(fullPath, path);
-
-#if (U_FILE_ALT_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR)
-#if (U_FILE_ALT_SEP_CHAR != U_FILE_SEP_CHAR)
-    /* replace tree separator (such as '/') with file sep char (such as ':' or '\\') */
-    for(;fullPath[n];n++) {
-        if(fullPath[n] == U_FILE_ALT_SEP_CHAR) {
-            fullPath[n] = U_FILE_SEP_CHAR;
-        }
-    }
-#endif
-#endif
-#if (U_FILE_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR)
-    /* replace tree separator (such as '/') with file sep char (such as ':' or '\\') */
-    for(;fullPath[n];n++) {
-        if(fullPath[n] == U_TREE_ENTRY_SEP_CHAR) {
-            fullPath[n] = U_FILE_SEP_CHAR;
-        }
-    }
-#endif
-    return fullPath;
-}
-
-static int
-compareFiles(const void *file1, const void *file2) {
-    /* sort by basename */
-    return uprv_strcmp(((File *)file1)->basename, ((File *)file2)->basename);
-}
-
-static void
-fixDirToTreePath(char *s)
-{
-#if (U_FILE_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR) || ((U_FILE_ALT_SEP_CHAR != U_FILE_SEP_CHAR) && (U_FILE_ALT_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR))
-    char *t;
-#endif
-#if (U_FILE_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR)
-    for(t=s;t=uprv_strchr(t,U_FILE_SEP_CHAR);) {
-        *t = U_TREE_ENTRY_SEP_CHAR;
-    }
-#endif
-#if (U_FILE_ALT_SEP_CHAR != U_FILE_SEP_CHAR) && (U_FILE_ALT_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR)
-    for(t=s;t=uprv_strchr(t,U_FILE_ALT_SEP_CHAR);) {
-        *t = U_TREE_ENTRY_SEP_CHAR;
-    }
-#endif
-}
index 62f8327..2382399 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2008, International Business Machines
index e679c23..ce0bfc2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2008-2015, International Business Machines
index 3d620f7..638056e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2008-2016, International Business Machines
index c9fe81b..29abd8d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  pkg_imp.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b4bcf18..cb23b45 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  pkgitems.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 18d317e..cccde81 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ppucd.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -515,12 +515,12 @@ PreparsedUCD::parseCodePointRange(const char *s, UChar32 &start, UChar32 &end, U
 
 void
 PreparsedUCD::parseString(const char *s, UnicodeString &uni, UErrorCode &errorCode) {
-    UChar *buffer=uni.getBuffer(-1);
+    UChar *buffer=toUCharPtr(uni.getBuffer(-1));
     int32_t length=u_parseString(s, buffer, uni.getCapacity(), NULL, &errorCode);
     if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
         errorCode=U_ZERO_ERROR;
         uni.releaseBuffer(0);
-        buffer=uni.getBuffer(length);
+        buffer=toUCharPtr(uni.getBuffer(length));
         length=u_parseString(s, buffer, uni.getCapacity(), NULL, &errorCode);
     }
     uni.releaseBuffer(length);
index 593bd24..3cd6fee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ppucd.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6cc2162..620a387 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  swapimpl.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 0e4d417..8c6474f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  swapimpl.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6afce5b..fb7263d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  toolutil.c
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ad51438..7ab665c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  toolutil.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6567fae..4ea1907 100644 (file)
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\..\bin\icutu58.dll</OutputFile>
+      <OutputFile>..\..\..\bin\icutu59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <ProgramDatabaseFile>.\..\..\..\lib\icutu.pdb</ProgramDatabaseFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\..\bin\icutu58d.dll</OutputFile>
+      <OutputFile>..\..\..\bin\icutu59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\..\bin64\icutu58.dll</OutputFile>
+      <OutputFile>..\..\..\bin64\icutu59.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <ProgramDatabaseFile>.\..\..\..\lib64\icutu.pdb</ProgramDatabaseFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
+      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\..\bin64\icutu58d.dll</OutputFile>
+      <OutputFile>..\..\..\bin64\icutu59d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="denseranges.cpp" />
-    <ClCompile Include="filestrm.c" />
+    <ClCompile Include="filestrm.cpp" />
     <ClCompile Include="filetools.cpp" />
-    <ClCompile Include="flagparser.c" />
+    <ClCompile Include="flagparser.cpp" />
     <ClCompile Include="package.cpp" />
-    <ClCompile Include="pkg_genc.c">
+    <ClCompile Include="pkg_genc.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="pkg_gencmn.c">
+    <ClCompile Include="pkg_gencmn.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="pkg_icu.cpp" />
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="ucbuf.cpp" />
-    <ClCompile Include="ucm.c" />
-    <ClCompile Include="ucmstate.c" />
-    <ClCompile Include="unewdata.c" />
-    <ClCompile Include="uoptions.c" />
-    <ClCompile Include="uparse.c" />
-    <ClCompile Include="writesrc.c" />
+    <ClCompile Include="ucm.cpp" />
+    <ClCompile Include="ucmstate.cpp" />
+    <ClCompile Include="unewdata.cpp" />
+    <ClCompile Include="uoptions.cpp" />
+    <ClCompile Include="uparse.cpp" />
+    <ClCompile Include="writesrc.cpp" />
     <ClCompile Include="xmlparser.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index a203cfa..fa9edd1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 3894c89..81f8ba6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2f67641..5354fe1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
diff --git a/source/tools/toolutil/ucm.c b/source/tools/toolutil/ucm.c
deleted file mode 100644 (file)
index 8d4cdfc..0000000
+++ /dev/null
@@ -1,1191 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2003-2013, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  ucm.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2003jun20
-*   created by: Markus W. Scherer
-*
-*   This file reads a .ucm file, stores its mappings and sorts them.
-*   It implements handling of Unicode conversion mappings from .ucm files
-*   for makeconv, canonucm, rptp2ucm, etc.
-*
-*   Unicode code point sequences with a length of more than 1,
-*   as well as byte sequences with more than 4 bytes or more than one complete
-*   character sequence are handled to support m:n mappings.
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/ustring.h"
-#include "cstring.h"
-#include "cmemory.h"
-#include "filestrm.h"
-#include "uarrsort.h"
-#include "ucnvmbcs.h"
-#include "ucnv_bld.h"
-#include "ucnv_ext.h"
-#include "uparse.h"
-#include "ucm.h"
-#include <stdio.h>
-
-#if !UCONFIG_NO_CONVERSION
-
-/* -------------------------------------------------------------------------- */
-
-static void
-printMapping(UCMapping *m, UChar32 *codePoints, uint8_t *bytes, FILE *f) {
-    int32_t j;
-
-    for(j=0; j<m->uLen; ++j) {
-        fprintf(f, "<U%04lX>", (long)codePoints[j]);
-    }
-
-    fputc(' ', f);
-
-    for(j=0; j<m->bLen; ++j) {
-        fprintf(f, "\\x%02X", bytes[j]);
-    }
-
-    if(m->f>=0) {
-        fprintf(f, " |%u\n", m->f);
-    } else {
-        fputs("\n", f);
-    }
-}
-
-U_CAPI void U_EXPORT2
-ucm_printMapping(UCMTable *table, UCMapping *m, FILE *f) {
-    printMapping(m, UCM_GET_CODE_POINTS(table, m), UCM_GET_BYTES(table, m), f);
-}
-
-U_CAPI void U_EXPORT2
-ucm_printTable(UCMTable *table, FILE *f, UBool byUnicode) {
-    UCMapping *m;
-    int32_t i, length;
-
-    m=table->mappings;
-    length=table->mappingsLength;
-    if(byUnicode) {
-        for(i=0; i<length; ++m, ++i) {
-            ucm_printMapping(table, m, f);
-        }
-    } else {
-        const int32_t *map=table->reverseMap;
-        for(i=0; i<length; ++i) {
-            ucm_printMapping(table, m+map[i], f);
-        }
-    }
-}
-
-/* mapping comparisons ------------------------------------------------------ */
-
-static int32_t
-compareUnicode(UCMTable *lTable, const UCMapping *l,
-               UCMTable *rTable, const UCMapping *r) {
-    const UChar32 *lu, *ru;
-    int32_t result, i, length;
-
-    if(l->uLen==1 && r->uLen==1) {
-        /* compare two single code points */
-        return l->u-r->u;
-    }
-
-    /* get pointers to the code point sequences */
-    lu=UCM_GET_CODE_POINTS(lTable, l);
-    ru=UCM_GET_CODE_POINTS(rTable, r);
-
-    /* get the minimum length */
-    if(l->uLen<=r->uLen) {
-        length=l->uLen;
-    } else {
-        length=r->uLen;
-    }
-
-    /* compare the code points */
-    for(i=0; i<length; ++i) {
-        result=lu[i]-ru[i];
-        if(result!=0) {
-            return result;
-        }
-    }
-
-    /* compare the lengths */
-    return l->uLen-r->uLen;
-}
-
-static int32_t
-compareBytes(UCMTable *lTable, const UCMapping *l,
-             UCMTable *rTable, const UCMapping *r,
-             UBool lexical) {
-    const uint8_t *lb, *rb;
-    int32_t result, i, length;
-
-    /*
-     * A lexical comparison is used for sorting in the builder, to allow
-     * an efficient search for a byte sequence that could be a prefix
-     * of a previously entered byte sequence.
-     *
-     * Comparing by lengths first is for compatibility with old .ucm tools
-     * like canonucm and rptp2ucm.
-     */
-    if(lexical) {
-        /* get the minimum length and continue */
-        if(l->bLen<=r->bLen) {
-            length=l->bLen;
-        } else {
-            length=r->bLen;
-        }
-    } else {
-        /* compare lengths first */
-        result=l->bLen-r->bLen;
-        if(result!=0) {
-            return result;
-        } else {
-            length=l->bLen;
-        }
-    }
-
-    /* get pointers to the byte sequences */
-    lb=UCM_GET_BYTES(lTable, l);
-    rb=UCM_GET_BYTES(rTable, r);
-
-    /* compare the bytes */
-    for(i=0; i<length; ++i) {
-        result=lb[i]-rb[i];
-        if(result!=0) {
-            return result;
-        }
-    }
-
-    /* compare the lengths */
-    return l->bLen-r->bLen;
-}
-
-/* compare UCMappings for sorting */
-static int32_t
-compareMappings(UCMTable *lTable, const UCMapping *l,
-                UCMTable *rTable, const UCMapping *r,
-                UBool uFirst) {
-    int32_t result;
-
-    /* choose which side to compare first */
-    if(uFirst) {
-        /* Unicode then bytes */
-        result=compareUnicode(lTable, l, rTable, r);
-        if(result==0) {
-            result=compareBytes(lTable, l, rTable, r, FALSE); /* not lexically, like canonucm */
-        }
-    } else {
-        /* bytes then Unicode */
-        result=compareBytes(lTable, l, rTable, r, TRUE); /* lexically, for builder */
-        if(result==0) {
-            result=compareUnicode(lTable, l, rTable, r);
-        }
-    }
-
-    if(result!=0) {
-        return result;
-    }
-
-    /* compare the flags */
-    return l->f-r->f;
-}
-
-/* sorting by Unicode first sorts mappings directly */
-static int32_t
-compareMappingsUnicodeFirst(const void *context, const void *left, const void *right) {
-    return compareMappings(
-        (UCMTable *)context, (const UCMapping *)left,
-        (UCMTable *)context, (const UCMapping *)right, TRUE);
-}
-
-/* sorting by bytes first sorts the reverseMap; use indirection to mappings */
-static int32_t
-compareMappingsBytesFirst(const void *context, const void *left, const void *right) {
-    UCMTable *table=(UCMTable *)context;
-    int32_t l=*(const int32_t *)left, r=*(const int32_t *)right;
-    return compareMappings(
-        table, table->mappings+l,
-        table, table->mappings+r, FALSE);
-}
-
-U_CAPI void U_EXPORT2
-ucm_sortTable(UCMTable *t) {
-    UErrorCode errorCode;
-    int32_t i;
-
-    if(t->isSorted) {
-        return;
-    }
-
-    errorCode=U_ZERO_ERROR;
-
-    /* 1. sort by Unicode first */
-    uprv_sortArray(t->mappings, t->mappingsLength, sizeof(UCMapping),
-                   compareMappingsUnicodeFirst, t,
-                   FALSE, &errorCode);
-
-    /* build the reverseMap */
-    if(t->reverseMap==NULL) {
-        /*
-         * allocate mappingsCapacity instead of mappingsLength so that
-         * if mappings are added, the reverseMap need not be
-         * reallocated each time
-         * (see ucm_moveMappings() and ucm_addMapping())
-         */
-        t->reverseMap=(int32_t *)uprv_malloc(t->mappingsCapacity*sizeof(int32_t));
-        if(t->reverseMap==NULL) {
-            fprintf(stderr, "ucm error: unable to allocate reverseMap\n");
-            exit(U_MEMORY_ALLOCATION_ERROR);
-        }
-    }
-    for(i=0; i<t->mappingsLength; ++i) {
-        t->reverseMap[i]=i;
-    }
-
-    /* 2. sort reverseMap by mappings bytes first */
-    uprv_sortArray(t->reverseMap, t->mappingsLength, sizeof(int32_t),
-                   compareMappingsBytesFirst, t,
-                   FALSE, &errorCode);
-
-    if(U_FAILURE(errorCode)) {
-        fprintf(stderr, "ucm error: sortTable()/uprv_sortArray() fails - %s\n",
-                u_errorName(errorCode));
-        exit(errorCode);
-    }
-
-    t->isSorted=TRUE;
-}
-
-/*
- * remove mappings with their move flag set from the base table
- * and move some of them (with UCM_MOVE_TO_EXT) to the extension table
- */
-U_CAPI void U_EXPORT2
-ucm_moveMappings(UCMTable *base, UCMTable *ext) {
-    UCMapping *mb, *mbLimit;
-    int8_t flag;
-
-    mb=base->mappings;
-    mbLimit=mb+base->mappingsLength;
-
-    while(mb<mbLimit) {
-        flag=mb->moveFlag;
-        if(flag!=0) {
-            /* reset the move flag */
-            mb->moveFlag=0;
-
-            if(ext!=NULL && (flag&UCM_MOVE_TO_EXT)) {
-                /* add the mapping to the extension table */
-                ucm_addMapping(ext, mb, UCM_GET_CODE_POINTS(base, mb), UCM_GET_BYTES(base, mb));
-            }
-
-            /* remove this mapping: move the last base mapping down and overwrite the current one */
-            if(mb<(mbLimit-1)) {
-                uprv_memcpy(mb, mbLimit-1, sizeof(UCMapping));
-            }
-            --mbLimit;
-            --base->mappingsLength;
-            base->isSorted=FALSE;
-        } else {
-            ++mb;
-        }
-    }
-}
-
-enum {
-    NEEDS_MOVE=1,
-    HAS_ERRORS=2
-};
-
-static uint8_t
-checkBaseExtUnicode(UCMStates *baseStates, UCMTable *base, UCMTable *ext,
-                    UBool moveToExt, UBool intersectBase) {
-    UCMapping *mb, *me, *mbLimit, *meLimit;
-    int32_t cmp;
-    uint8_t result;
-
-    mb=base->mappings;
-    mbLimit=mb+base->mappingsLength;
-
-    me=ext->mappings;
-    meLimit=me+ext->mappingsLength;
-
-    result=0;
-
-    for(;;) {
-        /* skip irrelevant mappings on both sides */
-        for(;;) {
-            if(mb==mbLimit) {
-                return result;
-            }
-
-            if((0<=mb->f && mb->f<=2) || mb->f==4) {
-                break;
-            }
-
-            ++mb;
-        }
-
-        for(;;) {
-            if(me==meLimit) {
-                return result;
-            }
-
-            if((0<=me->f && me->f<=2) || me->f==4) {
-                break;
-            }
-
-            ++me;
-        }
-
-        /* compare the base and extension mappings */
-        cmp=compareUnicode(base, mb, ext, me);
-        if(cmp<0) {
-            if(intersectBase && (intersectBase!=2 || mb->bLen>1)) {
-                /*
-                 * mapping in base but not in ext, move it
-                 *
-                 * if ext is DBCS, move DBCS mappings here
-                 * and check SBCS ones for Unicode prefix below
-                 */
-                mb->moveFlag|=UCM_MOVE_TO_EXT;
-                result|=NEEDS_MOVE;
-
-            /* does mb map from an input sequence that is a prefix of me's? */
-            } else if( mb->uLen<me->uLen &&
-                0==uprv_memcmp(UCM_GET_CODE_POINTS(base, mb), UCM_GET_CODE_POINTS(ext, me), 4*mb->uLen)
-            ) {
-                if(moveToExt) {
-                    /* mark this mapping to be moved to the extension table */
-                    mb->moveFlag|=UCM_MOVE_TO_EXT;
-                    result|=NEEDS_MOVE;
-                } else {
-                    fprintf(stderr,
-                            "ucm error: the base table contains a mapping whose input sequence\n"
-                            "           is a prefix of the input sequence of an extension mapping\n");
-                    ucm_printMapping(base, mb, stderr);
-                    ucm_printMapping(ext, me, stderr);
-                    result|=HAS_ERRORS;
-                }
-            }
-
-            ++mb;
-        } else if(cmp==0) {
-            /*
-             * same output: remove the extension mapping,
-             * otherwise treat as an error
-             */
-            if( mb->f==me->f && mb->bLen==me->bLen &&
-                0==uprv_memcmp(UCM_GET_BYTES(base, mb), UCM_GET_BYTES(ext, me), mb->bLen)
-            ) {
-                me->moveFlag|=UCM_REMOVE_MAPPING;
-                result|=NEEDS_MOVE;
-            } else if(intersectBase) {
-                /* mapping in base but not in ext, move it */
-                mb->moveFlag|=UCM_MOVE_TO_EXT;
-                result|=NEEDS_MOVE;
-            } else {
-                fprintf(stderr,
-                        "ucm error: the base table contains a mapping whose input sequence\n"
-                        "           is the same as the input sequence of an extension mapping\n"
-                        "           but it maps differently\n");
-                ucm_printMapping(base, mb, stderr);
-                ucm_printMapping(ext, me, stderr);
-                result|=HAS_ERRORS;
-            }
-
-            ++mb;
-        } else /* cmp>0 */ {
-            ++me;
-        }
-    }
-}
-
-static uint8_t
-checkBaseExtBytes(UCMStates *baseStates, UCMTable *base, UCMTable *ext,
-                  UBool moveToExt, UBool intersectBase) {
-    UCMapping *mb, *me;
-    int32_t *baseMap, *extMap;
-    int32_t b, e, bLimit, eLimit, cmp;
-    uint8_t result;
-    UBool isSISO;
-
-    baseMap=base->reverseMap;
-    extMap=ext->reverseMap;
-
-    b=e=0;
-    bLimit=base->mappingsLength;
-    eLimit=ext->mappingsLength;
-
-    result=0;
-
-    isSISO=(UBool)(baseStates->outputType==MBCS_OUTPUT_2_SISO);
-
-    for(;;) {
-        /* skip irrelevant mappings on both sides */
-        for(;; ++b) {
-            if(b==bLimit) {
-                return result;
-            }
-            mb=base->mappings+baseMap[b];
-
-            if(intersectBase==2 && mb->bLen==1) {
-                /*
-                 * comparing a base against a DBCS extension:
-                 * leave SBCS base mappings alone
-                 */
-                continue;
-            }
-
-            if(mb->f==0 || mb->f==3) {
-                break;
-            }
-        }
-
-        for(;;) {
-            if(e==eLimit) {
-                return result;
-            }
-            me=ext->mappings+extMap[e];
-
-            if(me->f==0 || me->f==3) {
-                break;
-            }
-
-            ++e;
-        }
-
-        /* compare the base and extension mappings */
-        cmp=compareBytes(base, mb, ext, me, TRUE);
-        if(cmp<0) {
-            if(intersectBase) {
-                /* mapping in base but not in ext, move it */
-                mb->moveFlag|=UCM_MOVE_TO_EXT;
-                result|=NEEDS_MOVE;
-
-            /*
-             * does mb map from an input sequence that is a prefix of me's?
-             * for SI/SO tables, a single byte is never a prefix because it
-             * occurs in a separate single-byte state
-             */
-            } else if( mb->bLen<me->bLen &&
-                (!isSISO || mb->bLen>1) &&
-                0==uprv_memcmp(UCM_GET_BYTES(base, mb), UCM_GET_BYTES(ext, me), mb->bLen)
-            ) {
-                if(moveToExt) {
-                    /* mark this mapping to be moved to the extension table */
-                    mb->moveFlag|=UCM_MOVE_TO_EXT;
-                    result|=NEEDS_MOVE;
-                } else {
-                    fprintf(stderr,
-                            "ucm error: the base table contains a mapping whose input sequence\n"
-                            "           is a prefix of the input sequence of an extension mapping\n");
-                    ucm_printMapping(base, mb, stderr);
-                    ucm_printMapping(ext, me, stderr);
-                    result|=HAS_ERRORS;
-                }
-            }
-
-            ++b;
-        } else if(cmp==0) {
-            /*
-             * same output: remove the extension mapping,
-             * otherwise treat as an error
-             */
-            if( mb->f==me->f && mb->uLen==me->uLen &&
-                0==uprv_memcmp(UCM_GET_CODE_POINTS(base, mb), UCM_GET_CODE_POINTS(ext, me), 4*mb->uLen)
-            ) {
-                me->moveFlag|=UCM_REMOVE_MAPPING;
-                result|=NEEDS_MOVE;
-            } else if(intersectBase) {
-                /* mapping in base but not in ext, move it */
-                mb->moveFlag|=UCM_MOVE_TO_EXT;
-                result|=NEEDS_MOVE;
-            } else {
-                fprintf(stderr,
-                        "ucm error: the base table contains a mapping whose input sequence\n"
-                        "           is the same as the input sequence of an extension mapping\n"
-                        "           but it maps differently\n");
-                ucm_printMapping(base, mb, stderr);
-                ucm_printMapping(ext, me, stderr);
-                result|=HAS_ERRORS;
-            }
-
-            ++b;
-        } else /* cmp>0 */ {
-            ++e;
-        }
-    }
-}
-
-U_CAPI UBool U_EXPORT2
-ucm_checkValidity(UCMTable *table, UCMStates *baseStates) {
-    UCMapping *m, *mLimit;
-    int32_t count;
-    UBool isOK;
-
-    m=table->mappings;
-    mLimit=m+table->mappingsLength;
-    isOK=TRUE;
-
-    while(m<mLimit) {
-        count=ucm_countChars(baseStates, UCM_GET_BYTES(table, m), m->bLen);
-        if(count<1) {
-            ucm_printMapping(table, m, stderr);
-            isOK=FALSE;
-        }
-        ++m;
-    }
-
-    return isOK;
-}
-
-U_CAPI UBool U_EXPORT2
-ucm_checkBaseExt(UCMStates *baseStates,
-                 UCMTable *base, UCMTable *ext, UCMTable *moveTarget,
-                 UBool intersectBase) {
-    uint8_t result;
-
-    /* if we have an extension table, we must always use precision flags */
-    if(base->flagsType&UCM_FLAGS_IMPLICIT) {
-        fprintf(stderr, "ucm error: the base table contains mappings without precision flags\n");
-        return FALSE;
-    }
-    if(ext->flagsType&UCM_FLAGS_IMPLICIT) {
-        fprintf(stderr, "ucm error: extension table contains mappings without precision flags\n");
-        return FALSE;
-    }
-
-    /* checking requires both tables to be sorted */
-    ucm_sortTable(base);
-    ucm_sortTable(ext);
-
-    /* check */
-    result=
-        checkBaseExtUnicode(baseStates, base, ext, (UBool)(moveTarget!=NULL), intersectBase)|
-        checkBaseExtBytes(baseStates, base, ext, (UBool)(moveTarget!=NULL), intersectBase);
-
-    if(result&HAS_ERRORS) {
-        return FALSE;
-    }
-
-    if(result&NEEDS_MOVE) {
-        ucm_moveMappings(ext, NULL);
-        ucm_moveMappings(base, moveTarget);
-        ucm_sortTable(base);
-        ucm_sortTable(ext);
-        if(moveTarget!=NULL) {
-            ucm_sortTable(moveTarget);
-        }
-    }
-
-    return TRUE;
-}
-
-/* merge tables for rptp2ucm ------------------------------------------------ */
-
-U_CAPI void U_EXPORT2
-ucm_mergeTables(UCMTable *fromUTable, UCMTable *toUTable,
-                const uint8_t *subchar, int32_t subcharLength,
-                uint8_t subchar1) {
-    UCMapping *fromUMapping, *toUMapping;
-    int32_t fromUIndex, toUIndex, fromUTop, toUTop, cmp;
-
-    ucm_sortTable(fromUTable);
-    ucm_sortTable(toUTable);
-
-    fromUMapping=fromUTable->mappings;
-    toUMapping=toUTable->mappings;
-
-    fromUTop=fromUTable->mappingsLength;
-    toUTop=toUTable->mappingsLength;
-
-    fromUIndex=toUIndex=0;
-
-    while(fromUIndex<fromUTop && toUIndex<toUTop) {
-        cmp=compareMappings(fromUTable, fromUMapping, toUTable, toUMapping, TRUE);
-        if(cmp==0) {
-            /* equal: roundtrip, nothing to do (flags are initially 0) */
-            ++fromUMapping;
-            ++toUMapping;
-
-            ++fromUIndex;
-            ++toUIndex;
-        } else if(cmp<0) {
-            /*
-             * the fromU mapping does not have a toU counterpart:
-             * fallback Unicode->codepage
-             */
-            if( (fromUMapping->bLen==subcharLength &&
-                 0==uprv_memcmp(UCM_GET_BYTES(fromUTable, fromUMapping), subchar, subcharLength)) ||
-                (subchar1!=0 && fromUMapping->bLen==1 && fromUMapping->b.bytes[0]==subchar1)
-            ) {
-                fromUMapping->f=2; /* SUB mapping */
-            } else {
-                fromUMapping->f=1; /* normal fallback */
-            }
-
-            ++fromUMapping;
-            ++fromUIndex;
-        } else {
-            /*
-             * the toU mapping does not have a fromU counterpart:
-             * (reverse) fallback codepage->Unicode, copy it to the fromU table
-             */
-
-            /* ignore reverse fallbacks to Unicode SUB */
-            if(!(toUMapping->uLen==1 && (toUMapping->u==0xfffd || toUMapping->u==0x1a))) {
-                toUMapping->f=3; /* reverse fallback */
-                ucm_addMapping(fromUTable, toUMapping, UCM_GET_CODE_POINTS(toUTable, toUMapping), UCM_GET_BYTES(toUTable, toUMapping));
-
-                /* the table may have been reallocated */
-                fromUMapping=fromUTable->mappings+fromUIndex;
-            }
-
-            ++toUMapping;
-            ++toUIndex;
-        }
-    }
-
-    /* either one or both tables are exhausted */
-    while(fromUIndex<fromUTop) {
-        /* leftover fromU mappings are fallbacks */
-        if( (fromUMapping->bLen==subcharLength &&
-             0==uprv_memcmp(UCM_GET_BYTES(fromUTable, fromUMapping), subchar, subcharLength)) ||
-            (subchar1!=0 && fromUMapping->bLen==1 && fromUMapping->b.bytes[0]==subchar1)
-        ) {
-            fromUMapping->f=2; /* SUB mapping */
-        } else {
-            fromUMapping->f=1; /* normal fallback */
-        }
-
-        ++fromUMapping;
-        ++fromUIndex;
-    }
-
-    while(toUIndex<toUTop) {
-        /* leftover toU mappings are reverse fallbacks */
-
-        /* ignore reverse fallbacks to Unicode SUB */
-        if(!(toUMapping->uLen==1 && (toUMapping->u==0xfffd || toUMapping->u==0x1a))) {
-            toUMapping->f=3; /* reverse fallback */
-            ucm_addMapping(fromUTable, toUMapping, UCM_GET_CODE_POINTS(toUTable, toUMapping), UCM_GET_BYTES(toUTable, toUMapping));
-        }
-
-        ++toUMapping;
-        ++toUIndex;
-    }
-
-    fromUTable->isSorted=FALSE;
-}
-
-/* separate extension mappings out of base table for rptp2ucm --------------- */
-
-U_CAPI UBool U_EXPORT2
-ucm_separateMappings(UCMFile *ucm, UBool isSISO) {
-    UCMTable *table;
-    UCMapping *m, *mLimit;
-    int32_t type;
-    UBool needsMove, isOK;
-
-    table=ucm->base;
-    m=table->mappings;
-    mLimit=m+table->mappingsLength;
-
-    needsMove=FALSE;
-    isOK=TRUE;
-
-    for(; m<mLimit; ++m) {
-        if(isSISO && m->bLen==1 && (m->b.bytes[0]==0xe || m->b.bytes[0]==0xf)) {
-            fprintf(stderr, "warning: removing illegal mapping from an SI/SO-stateful table\n");
-            ucm_printMapping(table, m, stderr);
-            m->moveFlag|=UCM_REMOVE_MAPPING;
-            needsMove=TRUE;
-            continue;
-        }
-
-        type=ucm_mappingType(
-                &ucm->states, m,
-                UCM_GET_CODE_POINTS(table, m), UCM_GET_BYTES(table, m));
-        if(type<0) {
-            /* illegal byte sequence */
-            printMapping(m, UCM_GET_CODE_POINTS(table, m), UCM_GET_BYTES(table, m), stderr);
-            isOK=FALSE;
-        } else if(type>0) {
-            m->moveFlag|=UCM_MOVE_TO_EXT;
-            needsMove=TRUE;
-        }
-    }
-
-    if(!isOK) {
-        return FALSE;
-    }
-    if(needsMove) {
-        ucm_moveMappings(ucm->base, ucm->ext);
-        return ucm_checkBaseExt(&ucm->states, ucm->base, ucm->ext, ucm->ext, FALSE);
-    } else {
-        ucm_sortTable(ucm->base);
-        return TRUE;
-    }
-}
-
-/* ucm parser --------------------------------------------------------------- */
-
-U_CAPI int8_t U_EXPORT2
-ucm_parseBytes(uint8_t bytes[UCNV_EXT_MAX_BYTES], const char *line, const char **ps) {
-    const char *s=*ps;
-    char *end;
-    uint8_t byte;
-    int8_t bLen;
-
-    bLen=0;
-    for(;;) {
-        /* skip an optional plus sign */
-        if(bLen>0 && *s=='+') {
-            ++s;
-        }
-        if(*s!='\\') {
-            break;
-        }
-
-        if( s[1]!='x' ||
-            (byte=(uint8_t)uprv_strtoul(s+2, &end, 16), end)!=s+4
-        ) {
-            fprintf(stderr, "ucm error: byte must be formatted as \\xXX (2 hex digits) - \"%s\"\n", line);
-            return -1;
-        }
-
-        if(bLen==UCNV_EXT_MAX_BYTES) {
-            fprintf(stderr, "ucm error: too many bytes on \"%s\"\n", line);
-            return -1;
-        }
-        bytes[bLen++]=byte;
-        s=end;
-    }
-
-    *ps=s;
-    return bLen;
-}
-
-/* parse a mapping line; must not be empty */
-U_CAPI UBool U_EXPORT2
-ucm_parseMappingLine(UCMapping *m,
-                     UChar32 codePoints[UCNV_EXT_MAX_UCHARS],
-                     uint8_t bytes[UCNV_EXT_MAX_BYTES],
-                     const char *line) {
-    const char *s;
-    char *end;
-    UChar32 cp;
-    int32_t u16Length;
-    int8_t uLen, bLen, f;
-
-    s=line;
-    uLen=bLen=0;
-
-    /* parse code points */
-    for(;;) {
-        /* skip an optional plus sign */
-        if(uLen>0 && *s=='+') {
-            ++s;
-        }
-        if(*s!='<') {
-            break;
-        }
-
-        if( s[1]!='U' ||
-            (cp=(UChar32)uprv_strtoul(s+2, &end, 16), end)==s+2 ||
-            *end!='>'
-        ) {
-            fprintf(stderr, "ucm error: Unicode code point must be formatted as <UXXXX> (1..6 hex digits) - \"%s\"\n", line);
-            return FALSE;
-        }
-        if((uint32_t)cp>0x10ffff || U_IS_SURROGATE(cp)) {
-            fprintf(stderr, "ucm error: Unicode code point must be 0..d7ff or e000..10ffff - \"%s\"\n", line);
-            return FALSE;
-        }
-
-        if(uLen==UCNV_EXT_MAX_UCHARS) {
-            fprintf(stderr, "ucm error: too many code points on \"%s\"\n", line);
-            return FALSE;
-        }
-        codePoints[uLen++]=cp;
-        s=end+1;
-    }
-
-    if(uLen==0) {
-        fprintf(stderr, "ucm error: no Unicode code points on \"%s\"\n", line);
-        return FALSE;
-    } else if(uLen==1) {
-        m->u=codePoints[0];
-    } else {
-        UErrorCode errorCode=U_ZERO_ERROR;
-        u_strFromUTF32(NULL, 0, &u16Length, codePoints, uLen, &errorCode);
-        if( (U_FAILURE(errorCode) && errorCode!=U_BUFFER_OVERFLOW_ERROR) ||
-            u16Length>UCNV_EXT_MAX_UCHARS
-        ) {
-            fprintf(stderr, "ucm error: too many UChars on \"%s\"\n", line);
-            return FALSE;
-        }
-    }
-
-    s=u_skipWhitespace(s);
-
-    /* parse bytes */
-    bLen=ucm_parseBytes(bytes, line, &s);
-
-    if(bLen<0) {
-        return FALSE;
-    } else if(bLen==0) {
-        fprintf(stderr, "ucm error: no bytes on \"%s\"\n", line);
-        return FALSE;
-    } else if(bLen<=4) {
-        uprv_memcpy(m->b.bytes, bytes, bLen);
-    }
-
-    /* skip everything until the fallback indicator, even the start of a comment */
-    for(;;) {
-        if(*s==0) {
-            f=-1; /* no fallback indicator */
-            break;
-        } else if(*s=='|') {
-            f=(int8_t)(s[1]-'0');
-            if((uint8_t)f>4) {
-                fprintf(stderr, "ucm error: fallback indicator must be |0..|4 - \"%s\"\n", line);
-                return FALSE;
-            }
-            break;
-        }
-        ++s;
-    }
-
-    m->uLen=uLen;
-    m->bLen=bLen;
-    m->f=f;
-    return TRUE;
-}
-
-/* general APIs ------------------------------------------------------------- */
-
-U_CAPI UCMTable * U_EXPORT2
-ucm_openTable() {
-    UCMTable *table=(UCMTable *)uprv_malloc(sizeof(UCMTable));
-    if(table==NULL) {
-        fprintf(stderr, "ucm error: unable to allocate a UCMTable\n");
-        exit(U_MEMORY_ALLOCATION_ERROR);
-    }
-
-    memset(table, 0, sizeof(UCMTable));
-    return table;
-}
-
-U_CAPI void U_EXPORT2
-ucm_closeTable(UCMTable *table) {
-    if(table!=NULL) {
-        uprv_free(table->mappings);
-        uprv_free(table->codePoints);
-        uprv_free(table->bytes);
-        uprv_free(table->reverseMap);
-        uprv_free(table);
-    }
-}
-
-U_CAPI void U_EXPORT2
-ucm_resetTable(UCMTable *table) {
-    if(table!=NULL) {
-        table->mappingsLength=0;
-        table->flagsType=0;
-        table->unicodeMask=0;
-        table->bytesLength=table->codePointsLength=0;
-        table->isSorted=FALSE;
-    }
-}
-
-U_CAPI void U_EXPORT2
-ucm_addMapping(UCMTable *table,
-               UCMapping *m,
-               UChar32 codePoints[UCNV_EXT_MAX_UCHARS],
-               uint8_t bytes[UCNV_EXT_MAX_BYTES]) {
-    UCMapping *tm;
-    UChar32 c;
-    int32_t idx;
-
-    if(table->mappingsLength>=table->mappingsCapacity) {
-        /* make the mappings array larger */
-        if(table->mappingsCapacity==0) {
-            table->mappingsCapacity=1000;
-        } else {
-            table->mappingsCapacity*=10;
-        }
-        table->mappings=(UCMapping *)uprv_realloc(table->mappings,
-                                             table->mappingsCapacity*sizeof(UCMapping));
-        if(table->mappings==NULL) {
-            fprintf(stderr, "ucm error: unable to allocate %d UCMappings\n",
-                            (int)table->mappingsCapacity);
-            exit(U_MEMORY_ALLOCATION_ERROR);
-        }
-
-        if(table->reverseMap!=NULL) {
-            /* the reverseMap must be reallocated in a new sort */
-            uprv_free(table->reverseMap);
-            table->reverseMap=NULL;
-        }
-    }
-
-    if(m->uLen>1 && table->codePointsCapacity==0) {
-        table->codePointsCapacity=10000;
-        table->codePoints=(UChar32 *)uprv_malloc(table->codePointsCapacity*4);
-        if(table->codePoints==NULL) {
-            fprintf(stderr, "ucm error: unable to allocate %d UChar32s\n",
-                            (int)table->codePointsCapacity);
-            exit(U_MEMORY_ALLOCATION_ERROR);
-        }
-    }
-
-    if(m->bLen>4 && table->bytesCapacity==0) {
-        table->bytesCapacity=10000;
-        table->bytes=(uint8_t *)uprv_malloc(table->bytesCapacity);
-        if(table->bytes==NULL) {
-            fprintf(stderr, "ucm error: unable to allocate %d bytes\n",
-                            (int)table->bytesCapacity);
-            exit(U_MEMORY_ALLOCATION_ERROR);
-        }
-    }
-
-    if(m->uLen>1) {
-        idx=table->codePointsLength;
-        table->codePointsLength+=m->uLen;
-        if(table->codePointsLength>table->codePointsCapacity) {
-            fprintf(stderr, "ucm error: too many code points in multiple-code point mappings\n");
-            exit(U_MEMORY_ALLOCATION_ERROR);
-        }
-
-        uprv_memcpy(table->codePoints+idx, codePoints, (size_t)m->uLen*4);
-        m->u=idx;
-    }
-
-    if(m->bLen>4) {
-        idx=table->bytesLength;
-        table->bytesLength+=m->bLen;
-        if(table->bytesLength>table->bytesCapacity) {
-            fprintf(stderr, "ucm error: too many bytes in mappings with >4 charset bytes\n");
-            exit(U_MEMORY_ALLOCATION_ERROR);
-        }
-
-        uprv_memcpy(table->bytes+idx, bytes, m->bLen);
-        m->b.idx=idx;
-    }
-
-    /* set unicodeMask */
-    for(idx=0; idx<m->uLen; ++idx) {
-        c=codePoints[idx];
-        if(c>=0x10000) {
-            table->unicodeMask|=UCNV_HAS_SUPPLEMENTARY; /* there are supplementary code points */
-        } else if(U_IS_SURROGATE(c)) {
-            table->unicodeMask|=UCNV_HAS_SURROGATES;    /* there are surrogate code points */
-        }
-    }
-
-    /* set flagsType */
-    if(m->f<0) {
-        table->flagsType|=UCM_FLAGS_IMPLICIT;
-    } else {
-        table->flagsType|=UCM_FLAGS_EXPLICIT;
-    }
-
-    tm=table->mappings+table->mappingsLength++;
-    uprv_memcpy(tm, m, sizeof(UCMapping));
-
-    table->isSorted=FALSE;
-}
-
-U_CAPI UCMFile * U_EXPORT2
-ucm_open() {
-    UCMFile *ucm=(UCMFile *)uprv_malloc(sizeof(UCMFile));
-    if(ucm==NULL) {
-        fprintf(stderr, "ucm error: unable to allocate a UCMFile\n");
-        exit(U_MEMORY_ALLOCATION_ERROR);
-    }
-
-    memset(ucm, 0, sizeof(UCMFile));
-
-    ucm->base=ucm_openTable();
-    ucm->ext=ucm_openTable();
-
-    ucm->states.stateFlags[0]=MBCS_STATE_FLAG_DIRECT;
-    ucm->states.conversionType=UCNV_UNSUPPORTED_CONVERTER;
-    ucm->states.outputType=-1;
-    ucm->states.minCharLength=ucm->states.maxCharLength=1;
-
-    return ucm;
-}
-
-U_CAPI void U_EXPORT2
-ucm_close(UCMFile *ucm) {
-    if(ucm!=NULL) {
-        ucm_closeTable(ucm->base);
-        ucm_closeTable(ucm->ext);
-        uprv_free(ucm);
-    }
-}
-
-U_CAPI int32_t U_EXPORT2
-ucm_mappingType(UCMStates *baseStates,
-                UCMapping *m,
-                UChar32 codePoints[UCNV_EXT_MAX_UCHARS],
-                uint8_t bytes[UCNV_EXT_MAX_BYTES]) {
-    /* check validity of the bytes and count the characters in them */
-    int32_t count=ucm_countChars(baseStates, bytes, m->bLen);
-    if(count<1) {
-        /* illegal byte sequence */
-        return -1;
-    }
-
-    /*
-     * Suitable for an ICU conversion base table means:
-     * - a 1:1 mapping (1 Unicode code point : 1 byte sequence)
-     * - precision flag 0..3
-     * - SBCS: any 1:1 mapping
-     *         (the table stores additional bits to distinguish mapping types)
-     * - MBCS: not a |2 SUB mapping for <subchar1>
-     * - MBCS: not a |1 fallback to 0x00
-     * - MBCS: not a multi-byte mapping with leading 0x00 bytes
-     *
-     * Further restrictions for fromUnicode tables
-     * are enforced in makeconv (MBCSOkForBaseFromUnicode()).
-     *
-     * All of the MBCS fromUnicode specific tests could be removed from here,
-     * but the ones above are for unusual mappings, and removing the tests
-     * from here would change canonucm output which seems gratuitous.
-     * (Markus Scherer 2006-nov-28)
-     *
-     * Exception: All implicit mappings (f<0) that need to be moved
-     * because of fromUnicode restrictions _must_ be moved here because
-     * makeconv uses a hack for moving mappings only for the fromUnicode table
-     * that only works with non-negative values of f.
-     */
-    if( m->uLen==1 && count==1 && m->f<=3 &&
-        (baseStates->maxCharLength==1 ||
-            !((m->f==2 && m->bLen==1) ||
-              (m->f==1 && bytes[0]==0) ||
-              (m->f<=1 && m->bLen>1 && bytes[0]==0)))
-    ) {
-        return 0; /* suitable for a base table */
-    } else {
-        return 1; /* needs to go into an extension table */
-    }
-}
-
-U_CAPI UBool U_EXPORT2
-ucm_addMappingAuto(UCMFile *ucm, UBool forBase, UCMStates *baseStates,
-                   UCMapping *m,
-                   UChar32 codePoints[UCNV_EXT_MAX_UCHARS],
-                   uint8_t bytes[UCNV_EXT_MAX_BYTES]) {
-    int32_t type;
-
-    if(m->f==2 && m->uLen>1) {
-        fprintf(stderr, "ucm error: illegal <subchar1> |2 mapping from multiple code points\n");
-        printMapping(m, codePoints, bytes, stderr);
-        return FALSE;
-    }
-
-    if(baseStates!=NULL) {
-        /* check validity of the bytes and count the characters in them */
-        type=ucm_mappingType(baseStates, m, codePoints, bytes);
-        if(type<0) {
-            /* illegal byte sequence */
-            printMapping(m, codePoints, bytes, stderr);
-            return FALSE;
-        }
-    } else {
-        /* not used - adding a mapping for an extension-only table before its base table is read */
-        type=1;
-    }
-
-    /*
-     * Add the mapping to the base table if this is requested and suitable.
-     * Otherwise, add it to the extension table.
-     */
-    if(forBase && type==0) {
-        ucm_addMapping(ucm->base, m, codePoints, bytes);
-    } else {
-        ucm_addMapping(ucm->ext, m, codePoints, bytes);
-    }
-
-    return TRUE;
-}
-
-U_CAPI UBool U_EXPORT2
-ucm_addMappingFromLine(UCMFile *ucm, const char *line, UBool forBase, UCMStates *baseStates) {
-  UCMapping m={ 0, {0}, 0, 0, 0, 0 };
-    UChar32 codePoints[UCNV_EXT_MAX_UCHARS];
-    uint8_t bytes[UCNV_EXT_MAX_BYTES];
-
-    const char *s;
-
-    /* ignore empty and comment lines */
-    if(line[0]=='#' || *(s=u_skipWhitespace(line))==0 || *s=='\n' || *s=='\r') {
-        return TRUE;
-    }
-
-    return
-        ucm_parseMappingLine(&m, codePoints, bytes, line) &&
-        ucm_addMappingAuto(ucm, forBase, baseStates, &m, codePoints, bytes);
-}
-
-U_CAPI void U_EXPORT2
-ucm_readTable(UCMFile *ucm, FileStream* convFile,
-              UBool forBase, UCMStates *baseStates,
-              UErrorCode *pErrorCode) {
-    char line[500];
-    char *end;
-    UBool isOK;
-
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-
-    isOK=TRUE;
-
-    for(;;) {
-        /* read the next line */
-        if(!T_FileStream_readLine(convFile, line, sizeof(line))) {
-            fprintf(stderr, "incomplete charmap section\n");
-            isOK=FALSE;
-            break;
-        }
-
-        /* remove CR LF */
-        end=uprv_strchr(line, 0);
-        while(line<end && (*(end-1)=='\r' || *(end-1)=='\n')) {
-            --end;
-        }
-        *end=0;
-
-        /* ignore empty and comment lines */
-        if(line[0]==0 || line[0]=='#') {
-            continue;
-        }
-
-        /* stop at the end of the mapping table */
-        if(0==uprv_strcmp(line, "END CHARMAP")) {
-            break;
-        }
-
-        isOK&=ucm_addMappingFromLine(ucm, line, forBase, baseStates);
-    }
-
-    if(!isOK) {
-        *pErrorCode=U_INVALID_TABLE_FORMAT;
-    }
-}
-#endif
index a3e3b8d..04e6b20 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  *******************************************************************************
  *   file name:  ucm.h
- *   encoding:   US-ASCII
+ *   encoding:   UTF-8
  *   tab size:   8 (not used)
  *   indentation:4
  *
diff --git a/source/tools/toolutil/ucmstate.c b/source/tools/toolutil/ucmstate.c
deleted file mode 100644 (file)
index 1aabbfb..0000000
+++ /dev/null
@@ -1,1049 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2003-2012, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  ucmstate.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2003oct09
-*   created by: Markus W. Scherer
-*
-*   This file handles ICU .ucm file state information as part of the ucm module.
-*   Most of this code used to be in makeconv.c.
-*/
-
-#include "unicode/utypes.h"
-#include "cstring.h"
-#include "cmemory.h"
-#include "uarrsort.h"
-#include "ucnvmbcs.h"
-#include "ucnv_ext.h"
-#include "uparse.h"
-#include "ucm.h"
-#include <stdio.h>
-
-#if !UCONFIG_NO_CONVERSION
-
-/* MBCS state handling ------------------------------------------------------ */
-
-/*
- * state table row grammar (ebnf-style):
- * (whitespace is allowed between all tokens)
- *
- * row=[[firstentry ','] entry (',' entry)*]
- * firstentry="initial" | "surrogates"
- *            (initial state (default for state 0), output is all surrogate pairs)
- * entry=range [':' nextstate] ['.' action]
- * range=number ['-' number]
- * nextstate=number
- *           (0..7f)
- * action='u' | 's' | 'p' | 'i'
- *        (unassigned, state change only, surrogate pair, illegal)
- * number=(1- or 2-digit hexadecimal number)
- */
-static const char *
-parseState(const char *s, int32_t state[256], uint32_t *pFlags) {
-    const char *t;
-    uint32_t start, end, i;
-    int32_t entry;
-
-    /* initialize the state: all illegal with U+ffff */
-    for(i=0; i<256; ++i) {
-        state[i]=MBCS_ENTRY_FINAL(0, MBCS_STATE_ILLEGAL, 0xffff);
-    }
-
-    /* skip leading white space */
-    s=u_skipWhitespace(s);
-
-    /* is there an "initial" or "surrogates" directive? */
-    if(uprv_strncmp("initial", s, 7)==0) {
-        *pFlags=MBCS_STATE_FLAG_DIRECT;
-        s=u_skipWhitespace(s+7);
-        if(*s++!=',') {
-            return s-1;
-        }
-    } else if(*pFlags==0 && uprv_strncmp("surrogates", s, 10)==0) {
-        *pFlags=MBCS_STATE_FLAG_SURROGATES;
-        s=u_skipWhitespace(s+10);
-        if(*s++!=',') {
-            return s-1;
-        }
-    } else if(*s==0) {
-        /* empty state row: all-illegal */
-        return NULL;
-    }
-
-    for(;;) {
-        /* read an entry, the start of the range first */
-        s=u_skipWhitespace(s);
-        start=uprv_strtoul(s, (char **)&t, 16);
-        if(s==t || 0xff<start) {
-            return s;
-        }
-        s=u_skipWhitespace(t);
-
-        /* read the end of the range if there is one */
-        if(*s=='-') {
-            s=u_skipWhitespace(s+1);
-            end=uprv_strtoul(s, (char **)&t, 16);
-            if(s==t || end<start || 0xff<end) {
-                return s;
-            }
-            s=u_skipWhitespace(t);
-        } else {
-            end=start;
-        }
-
-        /* determine the state entrys for this range */
-        if(*s!=':' && *s!='.') {
-            /* the default is: final state with valid entries */
-            entry=MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_16, 0);
-        } else {
-            entry=MBCS_ENTRY_TRANSITION(0, 0);
-            if(*s==':') {
-                /* get the next state, default to 0 */
-                s=u_skipWhitespace(s+1);
-                i=uprv_strtoul(s, (char **)&t, 16);
-                if(s!=t) {
-                    if(0x7f<i) {
-                        return s;
-                    }
-                    s=u_skipWhitespace(t);
-                    entry=MBCS_ENTRY_SET_STATE(entry, i);
-                }
-            }
-
-            /* get the state action, default to valid */
-            if(*s=='.') {
-                /* this is a final state */
-                entry=MBCS_ENTRY_SET_FINAL(entry);
-
-                s=u_skipWhitespace(s+1);
-                if(*s=='u') {
-                    /* unassigned set U+fffe */
-                    entry=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_UNASSIGNED, 0xfffe);
-                    s=u_skipWhitespace(s+1);
-                } else if(*s=='p') {
-                    if(*pFlags!=MBCS_STATE_FLAG_DIRECT) {
-                        entry=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_VALID_16_PAIR);
-                    } else {
-                        entry=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_VALID_16);
-                    }
-                    s=u_skipWhitespace(s+1);
-                } else if(*s=='s') {
-                    entry=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_CHANGE_ONLY);
-                    s=u_skipWhitespace(s+1);
-                } else if(*s=='i') {
-                    /* illegal set U+ffff */
-                    entry=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_ILLEGAL, 0xffff);
-                    s=u_skipWhitespace(s+1);
-                } else {
-                    /* default to valid */
-                    entry=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_VALID_16);
-                }
-            } else {
-                /* this is an intermediate state, nothing to do */
-            }
-        }
-
-        /* adjust "final valid" states according to the state flags */
-        if(MBCS_ENTRY_FINAL_ACTION(entry)==MBCS_STATE_VALID_16) {
-            switch(*pFlags) {
-            case 0:
-                /* no adjustment */
-                break;
-            case MBCS_STATE_FLAG_DIRECT:
-                /* set the valid-direct code point to "unassigned"==0xfffe */
-                entry=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_VALID_DIRECT_16, 0xfffe);
-                break;
-            case MBCS_STATE_FLAG_SURROGATES:
-                entry=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_VALID_16_PAIR, 0);
-                break;
-            default:
-                break;
-            }
-        }
-
-        /* set this entry for the range */
-        for(i=start; i<=end; ++i) {
-            state[i]=entry;
-        }
-
-        if(*s==',') {
-            ++s;
-        } else {
-            return *s==0 ? NULL : s;
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-ucm_addState(UCMStates *states, const char *s) {
-    const char *error;
-
-    if(states->countStates==MBCS_MAX_STATE_COUNT) {
-        fprintf(stderr, "ucm error: too many states (maximum %u)\n", MBCS_MAX_STATE_COUNT);
-        exit(U_INVALID_TABLE_FORMAT);
-    }
-
-    error=parseState(s, states->stateTable[states->countStates],
-                       &states->stateFlags[states->countStates]);
-    if(error!=NULL) {
-        fprintf(stderr, "ucm error: parse error in state definition at '%s'\n", error);
-        exit(U_INVALID_TABLE_FORMAT);
-    }
-
-    ++states->countStates;
-}
-
-U_CAPI UBool U_EXPORT2
-ucm_parseHeaderLine(UCMFile *ucm,
-                    char *line, char **pKey, char **pValue) {
-    UCMStates *states;
-    char *s, *end;
-    char c;
-
-    states=&ucm->states;
-
-    /* remove comments and trailing CR and LF and remove whitespace from the end */
-    for(end=line; (c=*end)!=0; ++end) {
-        if(c=='#' || c=='\r' || c=='\n') {
-            break;
-        }
-    }
-    while(end>line && (*(end-1)==' ' || *(end-1)=='\t')) {
-        --end;
-    }
-    *end=0;
-
-    /* skip leading white space and ignore empty lines */
-    s=(char *)u_skipWhitespace(line);
-    if(*s==0) {
-        return TRUE;
-    }
-
-    /* stop at the beginning of the mapping section */
-    if(uprv_memcmp(s, "CHARMAP", 7)==0) {
-        return FALSE;
-    }
-
-    /* get the key name, bracketed in <> */
-    if(*s!='<') {
-        fprintf(stderr, "ucm error: no header field <key> in line \"%s\"\n", line);
-        exit(U_INVALID_TABLE_FORMAT);
-    }
-    *pKey=++s;
-    while(*s!='>') {
-        if(*s==0) {
-            fprintf(stderr, "ucm error: incomplete header field <key> in line \"%s\"\n", line);
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        ++s;
-    }
-    *s=0;
-
-    /* get the value string, possibly quoted */
-    s=(char *)u_skipWhitespace(s+1);
-    if(*s!='"') {
-        *pValue=s;
-    } else {
-        /* remove the quotes */
-        *pValue=s+1;
-        if(end>*pValue && *(end-1)=='"') {
-            *--end=0;
-        }
-    }
-
-    /* collect the information from the header field, ignore unknown keys */
-    if(uprv_strcmp(*pKey, "uconv_class")==0) {
-        if(uprv_strcmp(*pValue, "DBCS")==0) {
-            states->conversionType=UCNV_DBCS;
-        } else if(uprv_strcmp(*pValue, "SBCS")==0) {
-            states->conversionType = UCNV_SBCS;
-        } else if(uprv_strcmp(*pValue, "MBCS")==0) {
-            states->conversionType = UCNV_MBCS;
-        } else if(uprv_strcmp(*pValue, "EBCDIC_STATEFUL")==0) {
-            states->conversionType = UCNV_EBCDIC_STATEFUL;
-        } else {
-            fprintf(stderr, "ucm error: unknown <uconv_class> %s\n", *pValue);
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        return TRUE;
-    } else if(uprv_strcmp(*pKey, "mb_cur_max")==0) {
-        c=**pValue;
-        if('1'<=c && c<='4' && (*pValue)[1]==0) {
-            states->maxCharLength=(int8_t)(c-'0');
-            states->outputType=(int8_t)(states->maxCharLength-1);
-        } else {
-            fprintf(stderr, "ucm error: illegal <mb_cur_max> %s\n", *pValue);
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        return TRUE;
-    } else if(uprv_strcmp(*pKey, "mb_cur_min")==0) {
-        c=**pValue;
-        if('1'<=c && c<='4' && (*pValue)[1]==0) {
-            states->minCharLength=(int8_t)(c-'0');
-        } else {
-            fprintf(stderr, "ucm error: illegal <mb_cur_min> %s\n", *pValue);
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        return TRUE;
-    } else if(uprv_strcmp(*pKey, "icu:state")==0) {
-        /* if an SBCS/DBCS/EBCDIC_STATEFUL converter has icu:state, then turn it into MBCS */
-        switch(states->conversionType) {
-        case UCNV_SBCS:
-        case UCNV_DBCS:
-        case UCNV_EBCDIC_STATEFUL:
-            states->conversionType=UCNV_MBCS;
-            break;
-        case UCNV_MBCS:
-            break;
-        default:
-            fprintf(stderr, "ucm error: <icu:state> entry for non-MBCS table or before the <uconv_class> line\n");
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-
-        if(states->maxCharLength==0) {
-            fprintf(stderr, "ucm error: <icu:state> before the <mb_cur_max> line\n");
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        ucm_addState(states, *pValue);
-        return TRUE;
-    } else if(uprv_strcmp(*pKey, "icu:base")==0) {
-        if(**pValue==0) {
-            fprintf(stderr, "ucm error: <icu:base> without a base table name\n");
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        uprv_strcpy(ucm->baseName, *pValue);
-        return TRUE;
-    }
-
-    return FALSE;
-}
-
-/* post-processing ---------------------------------------------------------- */
-
-static int32_t
-sumUpStates(UCMStates *states) {
-    int32_t entry, sum, state, cell, count;
-    UBool allStatesReady;
-
-    /*
-     * Sum up the offsets for all states.
-     * In each final state (where there are only final entries),
-     * the offsets add up directly.
-     * In all other state table rows, for each transition entry to another state,
-     * the offsets sum of that state needs to be added.
-     * This is achieved in at most countStates iterations.
-     */
-    allStatesReady=FALSE;
-    for(count=states->countStates; !allStatesReady && count>=0; --count) {
-        allStatesReady=TRUE;
-        for(state=states->countStates-1; state>=0; --state) {
-            if(!(states->stateFlags[state]&MBCS_STATE_FLAG_READY)) {
-                allStatesReady=FALSE;
-                sum=0;
-
-                /* at first, add up only the final delta offsets to keep them <512 */
-                for(cell=0; cell<256; ++cell) {
-                    entry=states->stateTable[state][cell];
-                    if(MBCS_ENTRY_IS_FINAL(entry)) {
-                        switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
-                        case MBCS_STATE_VALID_16:
-                            states->stateTable[state][cell]=MBCS_ENTRY_FINAL_SET_VALUE(entry, sum);
-                            sum+=1;
-                            break;
-                        case MBCS_STATE_VALID_16_PAIR:
-                            states->stateTable[state][cell]=MBCS_ENTRY_FINAL_SET_VALUE(entry, sum);
-                            sum+=2;
-                            break;
-                        default:
-                            /* no addition */
-                            break;
-                        }
-                    }
-                }
-
-                /* now, add up the delta offsets for the transitional entries */
-                for(cell=0; cell<256; ++cell) {
-                    entry=states->stateTable[state][cell];
-                    if(MBCS_ENTRY_IS_TRANSITION(entry)) {
-                        if(states->stateFlags[MBCS_ENTRY_TRANSITION_STATE(entry)]&MBCS_STATE_FLAG_READY) {
-                            states->stateTable[state][cell]=MBCS_ENTRY_TRANSITION_SET_OFFSET(entry, sum);
-                            sum+=states->stateOffsetSum[MBCS_ENTRY_TRANSITION_STATE(entry)];
-                        } else {
-                            /* that next state does not have a sum yet, we cannot finish the one for this state */
-                            sum=-1;
-                            break;
-                        }
-                    }
-                }
-
-                if(sum!=-1) {
-                    states->stateOffsetSum[state]=sum;
-                    states->stateFlags[state]|=MBCS_STATE_FLAG_READY;
-                }
-            }
-        }
-    }
-
-    if(!allStatesReady) {
-        fprintf(stderr, "ucm error: the state table contains loops\n");
-        exit(U_INVALID_TABLE_FORMAT);
-    }
-
-    /*
-     * For all "direct" (i.e., initial) states>0,
-     * the offsets need to be increased by the sum of
-     * the previous initial states.
-     */
-    sum=states->stateOffsetSum[0];
-    for(state=1; state<states->countStates; ++state) {
-        if((states->stateFlags[state]&0xf)==MBCS_STATE_FLAG_DIRECT) {
-            int32_t sum2=sum;
-            sum+=states->stateOffsetSum[state];
-            for(cell=0; cell<256; ++cell) {
-                entry=states->stateTable[state][cell];
-                if(MBCS_ENTRY_IS_TRANSITION(entry)) {
-                    states->stateTable[state][cell]=MBCS_ENTRY_TRANSITION_ADD_OFFSET(entry, sum2);
-                }
-            }
-        }
-    }
-
-    /* round up to the next even number to have the following data 32-bit-aligned */
-    return states->countToUCodeUnits=(sum+1)&~1;
-}
-
-U_CAPI void U_EXPORT2
-ucm_processStates(UCMStates *states, UBool ignoreSISOCheck) {
-    int32_t entry, state, cell, count;
-
-    if(states->conversionType==UCNV_UNSUPPORTED_CONVERTER) {
-        fprintf(stderr, "ucm error: missing conversion type (<uconv_class>)\n");
-        exit(U_INVALID_TABLE_FORMAT);
-    }
-
-    if(states->countStates==0) {
-        switch(states->conversionType) {
-        case UCNV_SBCS:
-            /* SBCS: use MBCS data structure with a default state table */
-            if(states->maxCharLength!=1) {
-                fprintf(stderr, "error: SBCS codepage with max B/char!=1\n");
-                exit(U_INVALID_TABLE_FORMAT);
-            }
-            states->conversionType=UCNV_MBCS;
-            ucm_addState(states, "0-ff");
-            break;
-        case UCNV_MBCS:
-            fprintf(stderr, "ucm error: missing state table information (<icu:state>) for MBCS\n");
-            exit(U_INVALID_TABLE_FORMAT);
-            break;
-        case UCNV_EBCDIC_STATEFUL:
-            /* EBCDIC_STATEFUL: use MBCS data structure with a default state table */
-            if(states->minCharLength!=1 || states->maxCharLength!=2) {
-                fprintf(stderr, "error: DBCS codepage with min B/char!=1 or max B/char!=2\n");
-                exit(U_INVALID_TABLE_FORMAT);
-            }
-            states->conversionType=UCNV_MBCS;
-            ucm_addState(states, "0-ff, e:1.s, f:0.s");
-            ucm_addState(states, "initial, 0-3f:4, e:1.s, f:0.s, 40:3, 41-fe:2, ff:4");
-            ucm_addState(states, "0-40:1.i, 41-fe:1., ff:1.i");
-            ucm_addState(states, "0-ff:1.i, 40:1.");
-            ucm_addState(states, "0-ff:1.i");
-            break;
-        case UCNV_DBCS:
-            /* DBCS: use MBCS data structure with a default state table */
-            if(states->minCharLength!=2 || states->maxCharLength!=2) {
-                fprintf(stderr, "error: DBCS codepage with min or max B/char!=2\n");
-                exit(U_INVALID_TABLE_FORMAT);
-            }
-            states->conversionType = UCNV_MBCS;
-            ucm_addState(states, "0-3f:3, 40:2, 41-fe:1, ff:3");
-            ucm_addState(states, "41-fe");
-            ucm_addState(states, "40");
-            ucm_addState(states, "");
-            break;
-        default:
-            fprintf(stderr, "ucm error: unknown charset structure\n");
-            exit(U_INVALID_TABLE_FORMAT);
-            break;
-        }
-    }
-
-    /*
-     * check that the min/max character lengths are reasonable;
-     * to do this right, all paths through the state table would have to be
-     * recursively walked while keeping track of the sequence lengths,
-     * but these simple checks cover most state tables in practice
-     */
-    if(states->maxCharLength<states->minCharLength) {
-        fprintf(stderr, "ucm error: max B/char < min B/char\n");
-        exit(U_INVALID_TABLE_FORMAT);
-    }
-
-    /* count non-direct states and compare with max B/char */
-    count=0;
-    for(state=0; state<states->countStates; ++state) {
-        if((states->stateFlags[state]&0xf)!=MBCS_STATE_FLAG_DIRECT) {
-            ++count;
-        }
-    }
-    if(states->maxCharLength>count+1) {
-        fprintf(stderr, "ucm error: max B/char too large\n");
-        exit(U_INVALID_TABLE_FORMAT);
-    }
-
-    if(states->minCharLength==1) {
-        int32_t action;
-
-        /*
-         * if there are single-byte characters,
-         * then the initial state must have direct result states
-         */
-        for(cell=0; cell<256; ++cell) {
-            entry=states->stateTable[0][cell];
-            if( MBCS_ENTRY_IS_FINAL(entry) &&
-                ((action=MBCS_ENTRY_FINAL_ACTION(entry))==MBCS_STATE_VALID_DIRECT_16 ||
-                 action==MBCS_STATE_UNASSIGNED)
-            ) {
-                break;
-            }
-        }
-
-        if(cell==256) {
-            fprintf(stderr, "ucm warning: min B/char too small\n");
-        }
-    }
-
-    /*
-     * make sure that all "next state" values are within limits
-     * and that all next states after final ones have the "direct"
-     * flag of initial states
-     */
-    for(state=states->countStates-1; state>=0; --state) {
-        for(cell=0; cell<256; ++cell) {
-            entry=states->stateTable[state][cell];
-            if((uint8_t)MBCS_ENTRY_STATE(entry)>=states->countStates) {
-                fprintf(stderr, "ucm error: state table entry [%x][%x] has a next state of %x that is too high\n",
-                    (int)state, (int)cell, (int)MBCS_ENTRY_STATE(entry));
-                exit(U_INVALID_TABLE_FORMAT);
-            }
-            if(MBCS_ENTRY_IS_FINAL(entry) && (states->stateFlags[MBCS_ENTRY_STATE(entry)]&0xf)!=MBCS_STATE_FLAG_DIRECT) {
-                fprintf(stderr, "ucm error: state table entry [%x][%x] is final but has a non-initial next state of %x\n",
-                    (int)state, (int)cell, (int)MBCS_ENTRY_STATE(entry));
-                exit(U_INVALID_TABLE_FORMAT);
-            } else if(MBCS_ENTRY_IS_TRANSITION(entry) && (states->stateFlags[MBCS_ENTRY_STATE(entry)]&0xf)==MBCS_STATE_FLAG_DIRECT) {
-                fprintf(stderr, "ucm error: state table entry [%x][%x] is not final but has an initial next state of %x\n",
-                    (int)state, (int)cell, (int)MBCS_ENTRY_STATE(entry));
-                exit(U_INVALID_TABLE_FORMAT);
-            }
-        }
-    }
-
-    /* is this an SI/SO (like EBCDIC-stateful) state table? */
-    if(states->countStates>=2 && (states->stateFlags[1]&0xf)==MBCS_STATE_FLAG_DIRECT) {
-        if(states->maxCharLength!=2) {
-            fprintf(stderr, "ucm error: SI/SO codepages must have max 2 bytes/char (not %x)\n", (int)states->maxCharLength);
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        if(states->countStates<3) {
-            fprintf(stderr, "ucm error: SI/SO codepages must have at least 3 states (not %x)\n", (int)states->countStates);
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        /* are the SI/SO all in the right places? */
-        if( ignoreSISOCheck ||
-           (states->stateTable[0][0xe]==MBCS_ENTRY_FINAL(1, MBCS_STATE_CHANGE_ONLY, 0) &&
-            states->stateTable[0][0xf]==MBCS_ENTRY_FINAL(0, MBCS_STATE_CHANGE_ONLY, 0) &&
-            states->stateTable[1][0xe]==MBCS_ENTRY_FINAL(1, MBCS_STATE_CHANGE_ONLY, 0) &&
-            states->stateTable[1][0xf]==MBCS_ENTRY_FINAL(0, MBCS_STATE_CHANGE_ONLY, 0))
-        ) {
-            states->outputType=MBCS_OUTPUT_2_SISO;
-        } else {
-            fprintf(stderr, "ucm error: SI/SO codepages must have in states 0 and 1 transitions e:1.s, f:0.s\n");
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        state=2;
-    } else {
-        state=1;
-    }
-
-    /* check that no unexpected state is a "direct" one */
-    while(state<states->countStates) {
-        if((states->stateFlags[state]&0xf)==MBCS_STATE_FLAG_DIRECT) {
-            fprintf(stderr, "ucm error: state %d is 'initial' - not supported except for SI/SO codepages\n", (int)state);
-            exit(U_INVALID_TABLE_FORMAT);
-        }
-        ++state;
-    }
-
-    sumUpStates(states);
-}
-
-/* find a fallback for this offset; return the index or -1 if not found */
-U_CAPI int32_t U_EXPORT2
-ucm_findFallback(_MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks,
-                 uint32_t offset) {
-    int32_t i;
-
-    if(countToUFallbacks==0) {
-        /* shortcut: most codepages do not have fallbacks from codepage to Unicode */
-        return -1;
-    }
-
-    /* do a linear search for the fallback mapping (the table is not yet sorted) */
-    for(i=0; i<countToUFallbacks; ++i) {
-        if(offset==toUFallbacks[i].offset) {
-            return i;
-        }
-    }
-    return -1;
-}
-
-/*
- * This function tries to compact toUnicode tables for 2-byte codepages
- * by finding lead bytes with all-unassigned trail bytes and adding another state
- * for them.
- */
-static void
-compactToUnicode2(UCMStates *states,
-                  uint16_t **pUnicodeCodeUnits,
-                  _MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks,
-                  UBool verbose) {
-    int32_t (*oldStateTable)[256];
-    uint16_t count[256];
-    uint16_t *oldUnicodeCodeUnits;
-    int32_t entry, offset, oldOffset, trailOffset, oldTrailOffset, savings, sum;
-    int32_t i, j, leadState, trailState, newState, fallback;
-    uint16_t unit;
-
-    /* find the lead state */
-    if(states->outputType==MBCS_OUTPUT_2_SISO) {
-        /* use the DBCS lead state for SI/SO codepages */
-        leadState=1;
-    } else {
-        leadState=0;
-    }
-
-    /* find the main trail state: the most used target state */
-    uprv_memset(count, 0, sizeof(count));
-    for(i=0; i<256; ++i) {
-        entry=states->stateTable[leadState][i];
-        if(MBCS_ENTRY_IS_TRANSITION(entry)) {
-            ++count[MBCS_ENTRY_TRANSITION_STATE(entry)];
-        }
-    }
-    trailState=0;
-    for(i=1; i<states->countStates; ++i) {
-        if(count[i]>count[trailState]) {
-            trailState=i;
-        }
-    }
-
-    /* count possible savings from lead bytes with all-unassigned results in all trail bytes */
-    uprv_memset(count, 0, sizeof(count));
-    savings=0;
-    /* for each lead byte */
-    for(i=0; i<256; ++i) {
-        entry=states->stateTable[leadState][i];
-        if(MBCS_ENTRY_IS_TRANSITION(entry) && (MBCS_ENTRY_TRANSITION_STATE(entry))==trailState) {
-            /* the offset is different for each lead byte */
-            offset=MBCS_ENTRY_TRANSITION_OFFSET(entry);
-            /* for each trail byte for this lead byte */
-            for(j=0; j<256; ++j) {
-                entry=states->stateTable[trailState][j];
-                switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
-                case MBCS_STATE_VALID_16:
-                    entry=offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
-                    if((*pUnicodeCodeUnits)[entry]==0xfffe && ucm_findFallback(toUFallbacks, countToUFallbacks, entry)<0) {
-                        ++count[i];
-                    } else {
-                        j=999; /* do not count for this lead byte because there are assignments */
-                    }
-                    break;
-                case MBCS_STATE_VALID_16_PAIR:
-                    entry=offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
-                    if((*pUnicodeCodeUnits)[entry]==0xfffe) {
-                        count[i]+=2;
-                    } else {
-                        j=999; /* do not count for this lead byte because there are assignments */
-                    }
-                    break;
-                default:
-                    break;
-                }
-            }
-            if(j==256) {
-                /* all trail bytes for this lead byte are unassigned */
-                savings+=count[i];
-            } else {
-                count[i]=0;
-            }
-        }
-    }
-    /* subtract from the possible savings the cost of an additional state */
-    savings=savings*2-1024; /* count bytes, not 16-bit words */
-    if(savings<=0) {
-        return;
-    }
-    if(verbose) {
-        printf("compacting toUnicode data saves %ld bytes\n", (long)savings);
-    }
-    if(states->countStates>=MBCS_MAX_STATE_COUNT) {
-        fprintf(stderr, "cannot compact toUnicode because the maximum number of states is reached\n");
-        return;
-    }
-
-    /* make a copy of the state table */
-    oldStateTable=(int32_t (*)[256])uprv_malloc(states->countStates*1024);
-    if(oldStateTable==NULL) {
-        fprintf(stderr, "cannot compact toUnicode: out of memory\n");
-        return;
-    }
-    uprv_memcpy(oldStateTable, states->stateTable, states->countStates*1024);
-
-    /* add the new state */
-    /*
-     * this function does not catch the degenerate case where all lead bytes
-     * have all-unassigned trail bytes and the lead state could be removed
-     */
-    newState=states->countStates++;
-    states->stateFlags[newState]=0;
-    /* copy the old trail state, turning all assigned states into unassigned ones */
-    for(i=0; i<256; ++i) {
-        entry=states->stateTable[trailState][i];
-        switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
-        case MBCS_STATE_VALID_16:
-        case MBCS_STATE_VALID_16_PAIR:
-            states->stateTable[newState][i]=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_UNASSIGNED, 0xfffe);
-            break;
-        default:
-            states->stateTable[newState][i]=entry;
-            break;
-        }
-    }
-
-    /* in the lead state, redirect all lead bytes with all-unassigned trail bytes to the new state */
-    for(i=0; i<256; ++i) {
-        if(count[i]>0) {
-            states->stateTable[leadState][i]=MBCS_ENTRY_SET_STATE(states->stateTable[leadState][i], newState);
-        }
-    }
-
-    /* sum up the new state table */
-    for(i=0; i<states->countStates; ++i) {
-        states->stateFlags[i]&=~MBCS_STATE_FLAG_READY;
-    }
-    sum=sumUpStates(states);
-
-    /* allocate a new, smaller code units array */
-    oldUnicodeCodeUnits=*pUnicodeCodeUnits;
-    if(sum==0) {
-        *pUnicodeCodeUnits=NULL;
-        if(oldUnicodeCodeUnits!=NULL) {
-            uprv_free(oldUnicodeCodeUnits);
-        }
-        uprv_free(oldStateTable);
-        return;
-    }
-    *pUnicodeCodeUnits=(uint16_t *)uprv_malloc(sum*sizeof(uint16_t));
-    if(*pUnicodeCodeUnits==NULL) {
-        fprintf(stderr, "cannot compact toUnicode: out of memory allocating %ld 16-bit code units\n",
-            (long)sum);
-        /* revert to the old state table */
-        *pUnicodeCodeUnits=oldUnicodeCodeUnits;
-        --states->countStates;
-        uprv_memcpy(states->stateTable, oldStateTable, states->countStates*1024);
-        uprv_free(oldStateTable);
-        return;
-    }
-    for(i=0; i<sum; ++i) {
-        (*pUnicodeCodeUnits)[i]=0xfffe;
-    }
-
-    /* copy the code units for all assigned characters */
-    /*
-     * The old state table has the same lead _and_ trail states for assigned characters!
-     * The differences are in the offsets, and in the trail states for some unassigned characters.
-     * For each character with an assigned state in the new table, it was assigned in the old one.
-     * Only still-assigned characters are copied.
-     * Note that fallback mappings need to get their offset values adjusted.
-     */
-
-    /* for each initial state */
-    for(leadState=0; leadState<states->countStates; ++leadState) {
-        if((states->stateFlags[leadState]&0xf)==MBCS_STATE_FLAG_DIRECT) {
-            /* for each lead byte from there */
-            for(i=0; i<256; ++i) {
-                entry=states->stateTable[leadState][i];
-                if(MBCS_ENTRY_IS_TRANSITION(entry)) {
-                    trailState=(uint8_t)MBCS_ENTRY_TRANSITION_STATE(entry);
-                    /* the new state does not have assigned states */
-                    if(trailState!=newState) {
-                        trailOffset=MBCS_ENTRY_TRANSITION_OFFSET(entry);
-                        oldTrailOffset=MBCS_ENTRY_TRANSITION_OFFSET(oldStateTable[leadState][i]);
-                        /* for each trail byte */
-                        for(j=0; j<256; ++j) {
-                            entry=states->stateTable[trailState][j];
-                            /* copy assigned-character code units and adjust fallback offsets */
-                            switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
-                            case MBCS_STATE_VALID_16:
-                                offset=trailOffset+MBCS_ENTRY_FINAL_VALUE_16(entry);
-                                /* find the old offset according to the old state table */
-                                oldOffset=oldTrailOffset+MBCS_ENTRY_FINAL_VALUE_16(oldStateTable[trailState][j]);
-                                unit=(*pUnicodeCodeUnits)[offset]=oldUnicodeCodeUnits[oldOffset];
-                                if(unit==0xfffe && (fallback=ucm_findFallback(toUFallbacks, countToUFallbacks, oldOffset))>=0) {
-                                    toUFallbacks[fallback].offset=0x80000000|offset;
-                                }
-                                break;
-                            case MBCS_STATE_VALID_16_PAIR:
-                                offset=trailOffset+MBCS_ENTRY_FINAL_VALUE_16(entry);
-                                /* find the old offset according to the old state table */
-                                oldOffset=oldTrailOffset+MBCS_ENTRY_FINAL_VALUE_16(oldStateTable[trailState][j]);
-                                (*pUnicodeCodeUnits)[offset++]=oldUnicodeCodeUnits[oldOffset++];
-                                (*pUnicodeCodeUnits)[offset]=oldUnicodeCodeUnits[oldOffset];
-                                break;
-                            default:
-                                break;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /* remove temporary flags from fallback offsets that protected them from being modified twice */
-    for(i=0; i<countToUFallbacks; ++i) {
-        toUFallbacks[i].offset&=0x7fffffff;
-    }
-
-    /* free temporary memory */
-    uprv_free(oldUnicodeCodeUnits);
-    uprv_free(oldStateTable);
-}
-
-/*
- * recursive sub-function of compactToUnicodeHelper()
- * returns:
- * >0 number of bytes that are used in unicodeCodeUnits[] that could be saved,
- *    if all sequences from this state are unassigned, returns the
- * <0 there are assignments in unicodeCodeUnits[]
- * 0  no use of unicodeCodeUnits[]
- */
-static int32_t
-findUnassigned(UCMStates *states,
-               uint16_t *unicodeCodeUnits,
-               _MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks,
-               int32_t state, int32_t offset, uint32_t b) {
-    int32_t i, entry, savings, localSavings, belowSavings;
-    UBool haveAssigned;
-
-    localSavings=belowSavings=0;
-    haveAssigned=FALSE;
-    for(i=0; i<256; ++i) {
-        entry=states->stateTable[state][i];
-        if(MBCS_ENTRY_IS_TRANSITION(entry)) {
-            savings=findUnassigned(states,
-                        unicodeCodeUnits,
-                        toUFallbacks, countToUFallbacks,
-                        MBCS_ENTRY_TRANSITION_STATE(entry),
-                        offset+MBCS_ENTRY_TRANSITION_OFFSET(entry),
-                        (b<<8)|(uint32_t)i);
-            if(savings<0) {
-                haveAssigned=TRUE;
-            } else if(savings>0) {
-                printf("    all-unassigned sequences from prefix 0x%02lx state %ld use %ld bytes\n",
-                    (unsigned long)((b<<8)|i), (long)state, (long)savings);
-                belowSavings+=savings;
-            }
-        } else if(!haveAssigned) {
-            switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
-            case MBCS_STATE_VALID_16:
-                entry=offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
-                if(unicodeCodeUnits[entry]==0xfffe && ucm_findFallback(toUFallbacks, countToUFallbacks, entry)<0) {
-                    localSavings+=2;
-                } else {
-                    haveAssigned=TRUE;
-                }
-                break;
-            case MBCS_STATE_VALID_16_PAIR:
-                entry=offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
-                if(unicodeCodeUnits[entry]==0xfffe) {
-                    localSavings+=4;
-                } else {
-                    haveAssigned=TRUE;
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    }
-    if(haveAssigned) {
-        return -1;
-    } else {
-        return localSavings+belowSavings;
-    }
-}
-
-/* helper function for finding compaction opportunities */
-static void
-compactToUnicodeHelper(UCMStates *states,
-                       uint16_t *unicodeCodeUnits,
-                       _MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks) {
-    int32_t state, savings;
-
-    /* for each initial state */
-    for(state=0; state<states->countStates; ++state) {
-        if((states->stateFlags[state]&0xf)==MBCS_STATE_FLAG_DIRECT) {
-            savings=findUnassigned(states,
-                        unicodeCodeUnits,
-                        toUFallbacks, countToUFallbacks,
-                        state, 0, 0);
-            if(savings>0) {
-                printf("    all-unassigned sequences from initial state %ld use %ld bytes\n",
-                    (long)state, (long)savings);
-            }
-        }
-    }
-}
-
-static int32_t
-compareFallbacks(const void *context, const void *fb1, const void *fb2) {
-    return ((const _MBCSToUFallback *)fb1)->offset-((const _MBCSToUFallback *)fb2)->offset;
-}
-
-U_CAPI void U_EXPORT2
-ucm_optimizeStates(UCMStates *states,
-                   uint16_t **pUnicodeCodeUnits,
-                   _MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks,
-                   UBool verbose) {
-    UErrorCode errorCode;
-    int32_t state, cell, entry;
-
-    /* test each state table entry */
-    for(state=0; state<states->countStates; ++state) {
-        for(cell=0; cell<256; ++cell) {
-            entry=states->stateTable[state][cell];
-            /*
-             * if the entry is a final one with an MBCS_STATE_VALID_DIRECT_16 action code
-             * and the code point is "unassigned" (0xfffe), then change it to
-             * the "unassigned" action code with bits 26..23 set to zero and U+fffe.
-             */
-            if(MBCS_ENTRY_SET_STATE(entry, 0)==MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, 0xfffe)) {
-                states->stateTable[state][cell]=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_UNASSIGNED);
-            }
-        }
-    }
-
-    /* try to compact the toUnicode tables */
-    if(states->maxCharLength==2) {
-        compactToUnicode2(states, pUnicodeCodeUnits, toUFallbacks, countToUFallbacks, verbose);
-    } else if(states->maxCharLength>2) {
-        if(verbose) {
-            compactToUnicodeHelper(states, *pUnicodeCodeUnits, toUFallbacks, countToUFallbacks);
-        }
-    }
-
-    /* sort toUFallbacks */
-    /*
-     * It should be safe to sort them before compactToUnicode2() is called,
-     * because it should not change the relative order of the offset values
-     * that it adjusts, but they need to be sorted at some point, and
-     * it is safest here.
-     */
-    if(countToUFallbacks>0) {
-        errorCode=U_ZERO_ERROR; /* nothing bad will happen... */
-        uprv_sortArray(toUFallbacks, countToUFallbacks,
-                       sizeof(_MBCSToUFallback),
-                       compareFallbacks, NULL, FALSE, &errorCode);
-    }
-}
-
-/* use a complete state table ----------------------------------------------- */
-
-U_CAPI int32_t U_EXPORT2
-ucm_countChars(UCMStates *states,
-               const uint8_t *bytes, int32_t length) {
-    uint32_t offset;
-    int32_t i, entry, count;
-    uint8_t state;
-
-    offset=0;
-    count=0;
-    state=0;
-
-    if(states->countStates==0) {
-        fprintf(stderr, "ucm error: there is no state information!\n");
-        return -1;
-    }
-
-    /* for SI/SO (like EBCDIC-stateful), double-byte sequences start in state 1 */
-    if(length==2 && states->outputType==MBCS_OUTPUT_2_SISO) {
-        state=1;
-    }
-
-    /*
-     * Walk down the state table like in conversion,
-     * much like getNextUChar().
-     * We assume that c<=0x10ffff.
-     */
-    for(i=0; i<length; ++i) {
-        entry=states->stateTable[state][bytes[i]];
-        if(MBCS_ENTRY_IS_TRANSITION(entry)) {
-            state=(uint8_t)MBCS_ENTRY_TRANSITION_STATE(entry);
-            offset+=MBCS_ENTRY_TRANSITION_OFFSET(entry);
-        } else {
-            switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
-            case MBCS_STATE_ILLEGAL:
-                fprintf(stderr, "ucm error: byte sequence ends in illegal state\n");
-                return -1;
-            case MBCS_STATE_CHANGE_ONLY:
-                fprintf(stderr, "ucm error: byte sequence ends in state-change-only\n");
-                return -1;
-            case MBCS_STATE_UNASSIGNED:
-            case MBCS_STATE_FALLBACK_DIRECT_16:
-            case MBCS_STATE_VALID_DIRECT_16:
-            case MBCS_STATE_FALLBACK_DIRECT_20:
-            case MBCS_STATE_VALID_DIRECT_20:
-            case MBCS_STATE_VALID_16:
-            case MBCS_STATE_VALID_16_PAIR:
-                /* count a complete character and prepare for a new one */
-                ++count;
-                state=(uint8_t)MBCS_ENTRY_FINAL_STATE(entry);
-                offset=0;
-                break;
-            default:
-                /* reserved, must never occur */
-                fprintf(stderr, "ucm error: byte sequence reached reserved action code, entry: 0x%02lx\n", (unsigned long)entry);
-                return -1;
-            }
-        }
-    }
-
-    if(offset!=0) {
-        fprintf(stderr, "ucm error: byte sequence too short, ends in non-final state %u\n", state);
-        return -1;
-    }
-
-    /*
-     * for SI/SO (like EBCDIC-stateful), multiple-character results
-     * must consist of only double-byte sequences
-     */
-    if(count>1 && states->outputType==MBCS_OUTPUT_2_SISO && length!=2*count) {
-        fprintf(stderr, "ucm error: SI/SO (like EBCDIC-stateful) result with %d characters does not contain all DBCS\n", (int)count);
-        return -1;
-    }
-
-    return count;
-}
-#endif
-
index bbb814b..446e11a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -351,8 +351,10 @@ int32_t udbg_enumByName(UDebugEnumType type, const char *value) {
  */
 U_CAPI const char *udbg_getPlatform(void)
 {
-#if U_PLATFORM_HAS_WIN32_API
+#if U_PLATFORM_USES_ONLY_WIN32_API
     return "Windows";
+#elif U_PLATFORM == U_PF_CYGWIN
+    return "Cygwin";
 #elif U_PLATFORM == U_PF_UNKNOWN
     return "unknown";
 #elif U_PLATFORM == U_PF_DARWIN
@@ -613,40 +615,6 @@ U_CAPI char *udbg_knownIssueURLFrom(const char *ticket, char *buf) {
 }
 
 
-#if !U_HAVE_STD_STRING
-const char *warning = "WARNING: Don't have std::string (STL) - known issue logs will be deficient.";
-
-U_CAPI void *udbg_knownIssue_openU(void *ptr, const char *ticket, char *where, const UChar *msg, UBool *firstForTicket,
-                                   UBool *firstForWhere) {
-  if(ptr==NULL) {
-    puts(warning);
-  }
-  printf("%s\tKnown Issue #%s\n", where, ticket);
-
-  return (void*)warning;
-}
-
-U_CAPI void *udbg_knownIssue_open(void *ptr, const char *ticket, char *where, const char *msg, UBool *firstForTicket,
-                                   UBool *firstForWhere) {
-  if(ptr==NULL) {
-    puts(warning);
-  }
-  if(msg==NULL) msg = "";
-  printf("%s\tKnown Issue #%s  \"%s\n", where, ticket, msg);
-
-  return (void*)warning;
-}
-
-U_CAPI UBool udbg_knownIssue_print(void *ptr) {
-  puts(warning);
-  return FALSE;
-}
-
-U_CAPI void udbg_knownIssue_close(void *ptr) {
-  // nothing to do
-}
-#else
-
 #include <set>
 #include <map>
 #include <string>
@@ -785,5 +753,3 @@ U_CAPI void udbg_knownIssue_close(void *ptr) {
   KnownIssues *t = static_cast<KnownIssues*>(ptr);
   delete t;
 }
-
-#endif
index 4bfb4cf..2f186e6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
diff --git a/source/tools/toolutil/unewdata.c b/source/tools/toolutil/unewdata.c
deleted file mode 100644 (file)
index 0fb9d43..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 1999-2010, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  unewdata.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 1999oct25
-*   created by: Markus W. Scherer
-*/
-
-#include <stdio.h>
-#include "unicode/utypes.h"
-#include "unicode/putil.h"
-#include "unicode/ustring.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "filestrm.h"
-#include "unicode/udata.h"
-#include "unewdata.h"
-
-struct UNewDataMemory {
-    FileStream *file;
-    uint16_t headerSize;
-    uint8_t magic1, magic2;
-};
-
-U_CAPI UNewDataMemory * U_EXPORT2
-udata_create(const char *dir, const char *type, const char *name,
-             const UDataInfo *pInfo,
-             const char *comment,
-             UErrorCode *pErrorCode) {
-    UNewDataMemory *pData;
-    uint16_t headerSize, commentLength;
-    char filename[512];
-    uint8_t bytes[16];
-    int32_t length;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return NULL;
-    } else if(name==NULL || *name==0 || pInfo==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-
-    /* allocate the data structure */
-    pData=(UNewDataMemory *)uprv_malloc(sizeof(UNewDataMemory));
-    if(pData==NULL) {
-        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-    
-    /* Check that the full path won't be too long */
-    length = 0;                                        /* Start with nothing */
-    if(dir != NULL  && *dir !=0)       /* Add directory length if one was given */
-    {
-       length += strlen(dir);
-       
-       /* Add 1 if dir doesn't end with path sep */
-        if (dir[strlen(dir) - 1]!= U_FILE_SEP_CHAR) {
-            length++;
-        }
-       }
-    length += strlen(name);            /* Add the filename length */
-
-    if(type != NULL  && *type !=0) { /* Add directory length if  given */
-        length += strlen(type);
-    }
-
-        
-     /* LDH buffer Length error check */
-    if(length  > ((int32_t)sizeof(filename) - 1))
-    {
-           *pErrorCode = U_BUFFER_OVERFLOW_ERROR;
-           uprv_free(pData);
-           return NULL;
-    }
-   
-    /* open the output file */
-    if(dir!=NULL && *dir!=0) { /* if dir has a value, we prepend it to the filename */
-        char *p=filename+strlen(dir);
-        uprv_strcpy(filename, dir);
-        if (*(p-1)!=U_FILE_SEP_CHAR) {
-            *p++=U_FILE_SEP_CHAR;
-            *p=0;
-        }
-    } else { /* otherwise, we'll output to the current dir */
-        filename[0]=0;
-    }
-    uprv_strcat(filename, name);
-    if(type!=NULL && *type!=0) {
-        uprv_strcat(filename, ".");
-        uprv_strcat(filename, type);
-    }
-    pData->file=T_FileStream_open(filename, "wb");
-    if(pData->file==NULL) {
-        uprv_free(pData);
-        *pErrorCode=U_FILE_ACCESS_ERROR;
-        return NULL;
-    }
-
-    /* write the header information */
-    headerSize=(uint16_t)(pInfo->size+4);
-    if(comment!=NULL && *comment!=0) {
-        commentLength=(uint16_t)(uprv_strlen(comment)+1);
-        headerSize+=commentLength;
-    } else {
-        commentLength=0;
-    }
-
-    /* write the size of the header, take padding into account */
-    pData->headerSize=(uint16_t)((headerSize+15)&~0xf);
-    pData->magic1=0xda;
-    pData->magic2=0x27;
-    T_FileStream_write(pData->file, &pData->headerSize, 4);
-
-    /* write the information data */
-    T_FileStream_write(pData->file, pInfo, pInfo->size);
-
-    /* write the comment */
-    if(commentLength>0) {
-        T_FileStream_write(pData->file, comment, commentLength);
-    }
-
-    /* write padding bytes to align the data section to 16 bytes */
-    headerSize&=0xf;
-    if(headerSize!=0) {
-        headerSize=(uint16_t)(16-headerSize);
-        uprv_memset(bytes, 0, headerSize);
-        T_FileStream_write(pData->file, bytes, headerSize);
-    }
-
-    return pData;
-}
-
-U_CAPI uint32_t U_EXPORT2
-udata_finish(UNewDataMemory *pData, UErrorCode *pErrorCode) {
-    uint32_t fileLength=0;
-
-    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-
-    if(pData!=NULL) {
-        if(pData->file!=NULL) {
-            /* fflush(pData->file);*/
-            fileLength=T_FileStream_size(pData->file);
-            if(T_FileStream_error(pData->file)) {
-                *pErrorCode=U_FILE_ACCESS_ERROR;
-            } else {
-                fileLength-=pData->headerSize;
-            }
-            T_FileStream_close(pData->file);
-        }
-        uprv_free(pData);
-    }
-
-    return fileLength;
-}
-
-/* dummy UDataInfo cf. udata.h */
-static const UDataInfo dummyDataInfo = {
-    sizeof(UDataInfo),
-    0,
-
-    U_IS_BIG_ENDIAN,
-    U_CHARSET_FAMILY,
-    U_SIZEOF_UCHAR,
-    0,
-
-    { 0, 0, 0, 0 },                 /* dummy dataFormat */
-    { 0, 0, 0, 0 },                 /* dummy formatVersion */
-    { 0, 0, 0, 0 }                  /* dummy dataVersion */
-};
-
-U_CAPI void U_EXPORT2
-udata_createDummy(const char *dir, const char *type, const char *name, UErrorCode *pErrorCode) {
-    if(U_SUCCESS(*pErrorCode)) {
-        udata_finish(udata_create(dir, type, name, &dummyDataInfo, NULL, pErrorCode), pErrorCode);
-        if(U_FAILURE(*pErrorCode)) {
-            fprintf(stderr, "error %s writing dummy data file %s" U_FILE_SEP_STRING "%s.%s\n",
-                    u_errorName(*pErrorCode), dir, name, type);
-            exit(*pErrorCode);
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-udata_write8(UNewDataMemory *pData, uint8_t byte) {
-    if(pData!=NULL && pData->file!=NULL) {
-        T_FileStream_write(pData->file, &byte, 1);
-    }
-}
-
-U_CAPI void U_EXPORT2
-udata_write16(UNewDataMemory *pData, uint16_t word) {
-    if(pData!=NULL && pData->file!=NULL) {
-        T_FileStream_write(pData->file, &word, 2);
-    }
-}
-
-U_CAPI void U_EXPORT2
-udata_write32(UNewDataMemory *pData, uint32_t wyde) {
-    if(pData!=NULL && pData->file!=NULL) {
-        T_FileStream_write(pData->file, &wyde, 4);
-    }
-}
-
-U_CAPI void U_EXPORT2
-udata_writeBlock(UNewDataMemory *pData, const void *s, int32_t length) {
-    if(pData!=NULL && pData->file!=NULL) {
-        if(length>0) {
-            T_FileStream_write(pData->file, s, length);
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-udata_writePadding(UNewDataMemory *pData, int32_t length) {
-    static const uint8_t padding[16]={
-        0xaa, 0xaa, 0xaa, 0xaa,
-        0xaa, 0xaa, 0xaa, 0xaa,
-        0xaa, 0xaa, 0xaa, 0xaa,
-        0xaa, 0xaa, 0xaa, 0xaa
-    };
-    if(pData!=NULL && pData->file!=NULL) {
-        while(length>=16) {
-            T_FileStream_write(pData->file, padding, 16);
-            length-=16;
-        }
-        if(length>0) {
-            T_FileStream_write(pData->file, padding, length);
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-udata_writeString(UNewDataMemory *pData, const char *s, int32_t length) {
-    if(pData!=NULL && pData->file!=NULL) {
-        if(length==-1) {
-            length=(int32_t)uprv_strlen(s);
-        }
-        if(length>0) {
-            T_FileStream_write(pData->file, s, length);
-        }
-    }
-}
-
-U_CAPI void U_EXPORT2
-udata_writeUString(UNewDataMemory *pData, const UChar *s, int32_t length) {
-    if(pData!=NULL && pData->file!=NULL) {
-        if(length==-1) {
-            length=u_strlen(s);
-        }
-        if(length>0) {
-            T_FileStream_write(pData->file, s, length*sizeof(UChar));
-        }
-    }
-}
-
-/*
- * Hey, Emacs, please set the following:
- *
- * Local Variables:
- * indent-tabs-mode: nil
- * End:
- *
- */
-
index 9cc3994..137fb49 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unewdata.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/uoptions.c b/source/tools/toolutil/uoptions.c
deleted file mode 100644 (file)
index e5ce64a..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2000-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  uoptions.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2000apr17
-*   created by: Markus W. Scherer
-*
-*   This file provides a command line argument parser.
-*/
-
-#include "unicode/utypes.h"
-#include "cstring.h"
-#include "uoptions.h"
-
-U_CAPI int U_EXPORT2
-u_parseArgs(int argc, char* argv[],
-            int optionCount, UOption options[]) {
-    char *arg;
-    int i=1, remaining=1;
-    char c, stopOptions=0;
-
-    while(i<argc) {
-        arg=argv[i];
-        if(!stopOptions && *arg=='-' && (c=arg[1])!=0) {
-            /* process an option */
-            UOption *option=NULL;
-            arg+=2;
-            if(c=='-') {
-                /* process a long option */
-                if(*arg==0) {
-                    /* stop processing options after "--" */
-                    stopOptions=1;
-                } else {
-                    /* search for the option string */
-                    int j;
-                    for(j=0; j<optionCount; ++j) {
-                        if(options[j].longName && uprv_strcmp(arg, options[j].longName)==0) {
-                            option=options+j;
-                            break;
-                        }
-                    }
-                    if(option==NULL) {
-                        /* no option matches */
-                        return -i;
-                    }
-                    option->doesOccur=1;
-
-                    if(option->hasArg!=UOPT_NO_ARG) {
-                        /* parse the argument for the option, if any */
-                        if(i+1<argc && !(argv[i+1][0]=='-' && argv[i+1][1]!=0)) {
-                            /* argument in the next argv[], and there is not an option in there */
-                            option->value=argv[++i];
-                        } else if(option->hasArg==UOPT_REQUIRES_ARG) {
-                            /* there is no argument, but one is required: return with error */
-                            option->doesOccur=0;
-                            return -i;
-                        }
-                    }
-
-                    if(option->optionFn!=NULL && option->optionFn(option->context, option)<0) {
-                        /* the option function was called and returned an error */
-                        option->doesOccur=0;
-                        return -i;
-                    }
-                }
-            } else {
-                /* process one or more short options */
-                do {
-                    /* search for the option letter */
-                    int j;
-                    for(j=0; j<optionCount; ++j) {
-                        if(c==options[j].shortName) {
-                            option=options+j;
-                            break;
-                        }
-                    }
-                    if(option==NULL) {
-                        /* no option matches */
-                        return -i;
-                    }
-                    option->doesOccur=1;
-
-                    if(option->hasArg!=UOPT_NO_ARG) {
-                        /* parse the argument for the option, if any */
-                        if(*arg!=0) {
-                            /* argument following in the same argv[] */
-                            option->value=arg;
-                            /* do not process the rest of this arg as option letters */
-                            break;
-                        } else if(i+1<argc && !(argv[i+1][0]=='-' && argv[i+1][1]!=0)) {
-                            /* argument in the next argv[], and there is not an option in there */
-                            option->value=argv[++i];
-                            /* this break is redundant because we know that *arg==0 */
-                            break;
-                        } else if(option->hasArg==UOPT_REQUIRES_ARG) {
-                            /* there is no argument, but one is required: return with error */
-                            option->doesOccur=0;
-                            return -i;
-                        }
-                    }
-
-                    if(option->optionFn!=NULL && option->optionFn(option->context, option)<0) {
-                        /* the option function was called and returned an error */
-                        option->doesOccur=0;
-                        return -i;
-                    }
-
-                    /* get the next option letter */
-                    option=NULL;
-                    c=*arg++;
-                } while(c!=0);
-            }
-
-            /* go to next argv[] */
-            ++i;
-        } else {
-            /* move a non-option up in argv[] */
-            argv[remaining++]=arg;
-            ++i;
-        }
-    }
-    return remaining;
-}
index 6f8f53b..e6d5cbf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uoptions.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/uparse.c b/source/tools/toolutil/uparse.c
deleted file mode 100644 (file)
index 373b67f..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2000-2012, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  uparse.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2000apr18
-*   created by: Markus W. Scherer
-*
-*   This file provides a parser for files that are delimited by one single
-*   character like ';' or TAB. Example: the Unicode Character Properties files
-*   like UnicodeData.txt are semicolon-delimited.
-*/
-
-#include "unicode/utypes.h"
-#include "unicode/uchar.h"
-#include "unicode/ustring.h"
-#include "unicode/utf16.h"
-#include "cstring.h"
-#include "filestrm.h"
-#include "uparse.h"
-#include "ustr_imp.h"
-
-#include <stdio.h>
-
-U_CAPI const char * U_EXPORT2
-u_skipWhitespace(const char *s) {
-    while(U_IS_INV_WHITESPACE(*s)) {
-        ++s;
-    }
-    return s;
-}
-
-U_CAPI char * U_EXPORT2
-u_rtrim(char *s) {
-    char *end=uprv_strchr(s, 0);
-    while(s<end && U_IS_INV_WHITESPACE(*(end-1))) {
-        *--end = 0;
-    }
-    return end;
-}
-
-/*
- * If the string starts with # @missing: then return the pointer to the
- * following non-whitespace character.
- * Otherwise return the original pointer.
- * Unicode 5.0 adds such lines in some data files to document
- * default property values.
- * Poor man's regex for variable amounts of white space.
- */
-static const char *
-getMissingLimit(const char *s) {
-    const char *s0=s;
-    if(
-        *(s=u_skipWhitespace(s))=='#' &&
-        *(s=u_skipWhitespace(s+1))=='@' &&
-        0==strncmp((s=u_skipWhitespace(s+1)), "missing", 7) &&
-        *(s=u_skipWhitespace(s+7))==':'
-    ) {
-        return u_skipWhitespace(s+1);
-    } else {
-        return s0;
-    }
-}
-
-U_CAPI void U_EXPORT2
-u_parseDelimitedFile(const char *filename, char delimiter,
-                     char *fields[][2], int32_t fieldCount,
-                     UParseLineFn *lineFn, void *context,
-                     UErrorCode *pErrorCode) {
-    FileStream *file;
-    char line[300];
-    char *start, *limit;
-    int32_t i, length;
-
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-
-    if(fields==NULL || lineFn==NULL || fieldCount<=0) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return;
-    }
-
-    if(filename==NULL || *filename==0 || (*filename=='-' && filename[1]==0)) {
-        filename=NULL;
-        file=T_FileStream_stdin();
-    } else {
-        file=T_FileStream_open(filename, "r");
-    }
-    if(file==NULL) {
-        *pErrorCode=U_FILE_ACCESS_ERROR;
-        return;
-    }
-
-    while(T_FileStream_readLine(file, line, sizeof(line))!=NULL) {
-        /* remove trailing newline characters */
-        length=(int32_t)(u_rtrim(line)-line);
-
-        /*
-         * detect a line with # @missing:
-         * start parsing after that, or else from the beginning of the line
-         * set the default warning for @missing lines
-         */
-        start=(char *)getMissingLimit(line);
-        if(start==line) {
-            *pErrorCode=U_ZERO_ERROR;
-        } else {
-            *pErrorCode=U_USING_DEFAULT_WARNING;
-        }
-
-        /* skip this line if it is empty or a comment */
-        if(*start==0 || *start=='#') {
-            continue;
-        }
-
-        /* remove in-line comments */
-        limit=uprv_strchr(start, '#');
-        if(limit!=NULL) {
-            /* get white space before the pound sign */
-            while(limit>start && U_IS_INV_WHITESPACE(*(limit-1))) {
-                --limit;
-            }
-
-            /* truncate the line */
-            *limit=0;
-        }
-
-        /* skip lines with only whitespace */
-        if(u_skipWhitespace(start)[0]==0) {
-            continue;
-        }
-
-        /* for each field, call the corresponding field function */
-        for(i=0; i<fieldCount; ++i) {
-            /* set the limit pointer of this field */
-            limit=start;
-            while(*limit!=delimiter && *limit!=0) {
-                ++limit;
-            }
-
-            /* set the field start and limit in the fields array */
-            fields[i][0]=start;
-            fields[i][1]=limit;
-
-            /* set start to the beginning of the next field, if any */
-            start=limit;
-            if(*start!=0) {
-                ++start;
-            } else if(i+1<fieldCount) {
-                *pErrorCode=U_PARSE_ERROR;
-                limit=line+length;
-                i=fieldCount;
-                break;
-            }
-        }
-
-        /* error in a field function? */
-        if(U_FAILURE(*pErrorCode)) {
-            break;
-        }
-
-        /* call the field function */
-        lineFn(context, fields, fieldCount, pErrorCode);
-        if(U_FAILURE(*pErrorCode)) {
-            break;
-        }
-    }
-
-    if(filename!=NULL) {
-        T_FileStream_close(file);
-    }
-}
-
-/*
- * parse a list of code points
- * store them as a UTF-32 string in dest[destCapacity]
- * return the number of code points
- */
-U_CAPI int32_t U_EXPORT2
-u_parseCodePoints(const char *s,
-                  uint32_t *dest, int32_t destCapacity,
-                  UErrorCode *pErrorCode) {
-    char *end;
-    uint32_t value;
-    int32_t count;
-
-    if(U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(s==NULL || destCapacity<0 || (destCapacity>0 && dest==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    count=0;
-    for(;;) {
-        s=u_skipWhitespace(s);
-        if(*s==';' || *s==0) {
-            return count;
-        }
-
-        /* read one code point */
-        value=(uint32_t)uprv_strtoul(s, &end, 16);
-        if(end<=s || (!U_IS_INV_WHITESPACE(*end) && *end!=';' && *end!=0) || value>=0x110000) {
-            *pErrorCode=U_PARSE_ERROR;
-            return 0;
-        }
-
-        /* append it to the destination array */
-        if(count<destCapacity) {
-            dest[count++]=value;
-        } else {
-            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-        }
-
-        /* go to the following characters */
-        s=end;
-    }
-}
-
-/*
- * parse a list of code points
- * store them as a string in dest[destCapacity]
- * set the first code point in *pFirst
- * @return The length of the string in numbers of UChars.
- */
-U_CAPI int32_t U_EXPORT2
-u_parseString(const char *s,
-              UChar *dest, int32_t destCapacity,
-              uint32_t *pFirst,
-              UErrorCode *pErrorCode) {
-    char *end;
-    uint32_t value;
-    int32_t destLength;
-
-    if(U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(s==NULL || destCapacity<0 || (destCapacity>0 && dest==NULL)) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    if(pFirst!=NULL) {
-        *pFirst=0xffffffff;
-    }
-
-    destLength=0;
-    for(;;) {
-        s=u_skipWhitespace(s);
-        if(*s==';' || *s==0) {
-            if(destLength<destCapacity) {
-                dest[destLength]=0;
-            } else if(destLength==destCapacity) {
-                *pErrorCode=U_STRING_NOT_TERMINATED_WARNING;
-            } else {
-                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
-            }
-            return destLength;
-        }
-
-        /* read one code point */
-        value=(uint32_t)uprv_strtoul(s, &end, 16);
-        if(end<=s || (!U_IS_INV_WHITESPACE(*end) && *end!=';' && *end!=0) || value>=0x110000) {
-            *pErrorCode=U_PARSE_ERROR;
-            return 0;
-        }
-
-        /* store the first code point */
-        if(pFirst!=NULL) {
-            *pFirst=value;
-            pFirst=NULL;
-        }
-
-        /* append it to the destination array */
-        if((destLength+U16_LENGTH(value))<=destCapacity) {
-            U16_APPEND_UNSAFE(dest, destLength, value);
-        } else {
-            destLength+=U16_LENGTH(value);
-        }
-
-        /* go to the following characters */
-        s=end;
-    }
-}
-
-/* read a range like start or start..end */
-U_CAPI int32_t U_EXPORT2
-u_parseCodePointRangeAnyTerminator(const char *s,
-                                   uint32_t *pStart, uint32_t *pEnd,
-                                   const char **terminator,
-                                   UErrorCode *pErrorCode) {
-    char *end;
-    uint32_t value;
-
-    if(U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if(s==NULL || pStart==NULL || pEnd==NULL) {
-        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* read the start code point */
-    s=u_skipWhitespace(s);
-    value=(uint32_t)uprv_strtoul(s, &end, 16);
-    if(end<=s || value>=0x110000) {
-        *pErrorCode=U_PARSE_ERROR;
-        return 0;
-    }
-    *pStart=*pEnd=value;
-
-    /* is there a "..end"? */
-    s=u_skipWhitespace(end);
-    if(*s!='.' || s[1]!='.') {
-        *terminator=end;
-        return 1;
-    }
-    s=u_skipWhitespace(s+2);
-
-    /* read the end code point */
-    value=(uint32_t)uprv_strtoul(s, &end, 16);
-    if(end<=s || value>=0x110000) {
-        *pErrorCode=U_PARSE_ERROR;
-        return 0;
-    }
-    *pEnd=value;
-
-    /* is this a valid range? */
-    if(value<*pStart) {
-        *pErrorCode=U_PARSE_ERROR;
-        return 0;
-    }
-
-    *terminator=end;
-    return value-*pStart+1;
-}
-
-U_CAPI int32_t U_EXPORT2
-u_parseCodePointRange(const char *s,
-                      uint32_t *pStart, uint32_t *pEnd,
-                      UErrorCode *pErrorCode) {
-    const char *terminator;
-    int32_t rangeLength=
-        u_parseCodePointRangeAnyTerminator(s, pStart, pEnd, &terminator, pErrorCode);
-    if(U_SUCCESS(*pErrorCode)) {
-        terminator=u_skipWhitespace(terminator);
-        if(*terminator!=';' && *terminator!=0) {
-            *pErrorCode=U_PARSE_ERROR;
-            return 0;
-        }
-    }
-    return rangeLength;
-}
-
-U_CAPI int32_t U_EXPORT2
-u_parseUTF8(const char *source, int32_t sLen, char *dest, int32_t destCapacity, UErrorCode *status) {
-    const char *read = source;
-    int32_t i = 0;
-    unsigned int value = 0;
-    if(sLen == -1) {
-        sLen = (int32_t)strlen(source);
-    }
-    
-    while(read < source+sLen) {
-        sscanf(read, "%2x", &value);
-        if(i < destCapacity) {
-            dest[i] = (char)value;
-        }
-        i++;
-        read += 2;
-    }
-    return u_terminateChars(dest, destCapacity, i, status);
-}
index 5ad766c..df0e79a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uparse.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/writesrc.c b/source/tools/toolutil/writesrc.c
deleted file mode 100644 (file)
index 278336f..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2005-2012, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  writesrc.c
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2005apr23
-*   created by: Markus W. Scherer
-*
-*   Helper functions for writing source code for data.
-*/
-
-#include <stdio.h>
-#include <time.h>
-#include "unicode/utypes.h"
-#include "unicode/putil.h"
-#include "utrie2.h"
-#include "cstring.h"
-#include "writesrc.h"
-
-static FILE *
-usrc_createWithHeader(const char *path, const char *filename,
-                      const char *generator, const char *header) {
-    char buffer[1024];
-    const char *p;
-    char *q;
-    FILE *f;
-    char c;
-
-    if(path==NULL) {
-        p=filename;
-    } else {
-        /* concatenate path and filename, with U_FILE_SEP_CHAR in between if necessary */
-        uprv_strcpy(buffer, path);
-        q=buffer+uprv_strlen(buffer);
-        if(q>buffer && (c=*(q-1))!=U_FILE_SEP_CHAR && c!=U_FILE_ALT_SEP_CHAR) {
-            *q++=U_FILE_SEP_CHAR;
-        }
-        uprv_strcpy(q, filename);
-        p=buffer;
-    }
-
-    f=fopen(p, "w");
-    if(f!=NULL) {
-        const struct tm *lt;
-        time_t t;
-
-        time(&t);
-        lt=localtime(&t);
-        if(generator==NULL) {
-            strftime(buffer, sizeof(buffer), "%Y-%m-%d", lt);
-            fprintf(f, header, filename, buffer);
-        } else {
-            fprintf(f, header, filename, generator);
-        }
-    } else {
-        fprintf(
-            stderr,
-            "usrc_create(%s, %s): unable to create file\n",
-            path!=NULL ? path : "", filename);
-    }
-    return f;
-}
-
-U_CAPI FILE * U_EXPORT2
-usrc_create(const char *path, const char *filename, const char *generator) {
-    // TODO: Add parameter for the first year this file was generated, not before 2016.
-    static const char *header=
-        "// Copyright (C) 2016 and later: Unicode, Inc. and others.\n"
-        "// License & terms of use: http://www.unicode.org/copyright.html\n"
-        "//\n"
-        "// Copyright (C) 1999-2016, International Business Machines\n"
-        "// Corporation and others.  All Rights Reserved.\n"
-        "//\n"
-        "// file name: %s\n"
-        "//\n"
-        "// machine-generated by: %s\n"
-        "\n\n";
-    return usrc_createWithHeader(path, filename, generator, header);
-}
-
-U_CAPI FILE * U_EXPORT2
-usrc_createTextData(const char *path, const char *filename, const char *generator) {
-    // TODO: Add parameter for the first year this file was generated, not before 2016.
-    static const char *header=
-        "# Copyright (C) 2016 and later: Unicode, Inc. and others.\n"
-        "# License & terms of use: http://www.unicode.org/copyright.html\n"
-        "# Copyright (C) 1999-2016, International Business Machines\n"
-        "# Corporation and others.  All Rights Reserved.\n"
-        "#\n"
-        "# file name: %s\n"
-        "#\n"
-        "# machine-generated by: %s\n"
-        "\n\n";
-    return usrc_createWithHeader(path, filename, generator, header);
-}
-
-U_CAPI void U_EXPORT2
-usrc_writeArray(FILE *f,
-                const char *prefix,
-                const void *p, int32_t width, int32_t length,
-                const char *postfix) {
-    const uint8_t *p8;
-    const uint16_t *p16;
-    const uint32_t *p32;
-    uint32_t value;
-    int32_t i, col;
-
-    p8=NULL;
-    p16=NULL;
-    p32=NULL;
-    switch(width) {
-    case 8:
-        p8=(const uint8_t *)p;
-        break;
-    case 16:
-        p16=(const uint16_t *)p;
-        break;
-    case 32:
-        p32=(const uint32_t *)p;
-        break;
-    default:
-        fprintf(stderr, "usrc_writeArray(width=%ld) unrecognized width\n", (long)width);
-        return;
-    }
-    if(prefix!=NULL) {
-        fprintf(f, prefix, (long)length);
-    }
-    for(i=col=0; i<length; ++i, ++col) {
-        if(i>0) {
-            if(col<16) {
-                fputc(',', f);
-            } else {
-                fputs(",\n", f);
-                col=0;
-            }
-        }
-        switch(width) {
-        case 8:
-            value=p8[i];
-            break;
-        case 16:
-            value=p16[i];
-            break;
-        case 32:
-            value=p32[i];
-            break;
-        default:
-            value=0; /* unreachable */
-            break;
-        }
-        fprintf(f, value<=9 ? "%lu" : "0x%lx", (unsigned long)value);
-    }
-    if(postfix!=NULL) {
-        fputs(postfix, f);
-    }
-}
-
-U_CAPI void U_EXPORT2
-usrc_writeUTrie2Arrays(FILE *f,
-                       const char *indexPrefix, const char *data32Prefix,
-                       const UTrie2 *pTrie,
-                       const char *postfix) {
-    if(pTrie->data32==NULL) {
-        /* 16-bit trie */
-        usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength+pTrie->dataLength, postfix);
-    } else {
-        /* 32-bit trie */
-        usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength, postfix);
-        usrc_writeArray(f, data32Prefix, pTrie->data32, 32, pTrie->dataLength, postfix);
-    }
-}
-
-U_CAPI void U_EXPORT2
-usrc_writeUTrie2Struct(FILE *f,
-                       const char *prefix,
-                       const UTrie2 *pTrie,
-                       const char *indexName, const char *data32Name,
-                       const char *postfix) {
-    if(prefix!=NULL) {
-        fputs(prefix, f);
-    }
-    if(pTrie->data32==NULL) {
-        /* 16-bit trie */
-        fprintf(
-            f,
-            "    %s,\n"         /* index */
-            "    %s+%ld,\n"     /* data16 */
-            "    NULL,\n",      /* data32 */
-            indexName,
-            indexName, 
-            (long)pTrie->indexLength);
-    } else {
-        /* 32-bit trie */
-        fprintf(
-            f,
-            "    %s,\n"         /* index */
-            "    NULL,\n"       /* data16 */
-            "    %s,\n",        /* data32 */
-            indexName,
-            data32Name);
-    }
-    fprintf(
-        f,
-        "    %ld,\n"            /* indexLength */
-        "    %ld,\n"            /* dataLength */
-        "    0x%hx,\n"          /* index2NullOffset */
-        "    0x%hx,\n"          /* dataNullOffset */
-        "    0x%lx,\n"          /* initialValue */
-        "    0x%lx,\n"          /* errorValue */
-        "    0x%lx,\n"          /* highStart */
-        "    0x%lx,\n"          /* highValueIndex */
-        "    NULL, 0, FALSE, FALSE, 0, NULL\n",
-        (long)pTrie->indexLength, (long)pTrie->dataLength,
-        (short)pTrie->index2NullOffset, (short)pTrie->dataNullOffset,
-        (long)pTrie->initialValue, (long)pTrie->errorValue,
-        (long)pTrie->highStart, (long)pTrie->highValueIndex);
-    if(postfix!=NULL) {
-        fputs(postfix, f);
-    }
-}
-
-U_CAPI void U_EXPORT2
-usrc_writeArrayOfMostlyInvChars(FILE *f,
-                                const char *prefix,
-                                const char *p, int32_t length,
-                                const char *postfix) {
-    int32_t i, col;
-    int prev2, prev, c;
-
-    if(prefix!=NULL) {
-        fprintf(f, prefix, (long)length);
-    }
-    prev2=prev=-1;
-    for(i=col=0; i<length; ++i, ++col) {
-        c=(uint8_t)p[i];
-        if(i>0) {
-            /* Break long lines. Try to break at interesting places, to minimize revision diffs. */
-            if( 
-                /* Very long line. */
-                col>=32 ||
-                /* Long line, break after terminating NUL. */
-                (col>=24 && prev2>=0x20 && prev==0) ||
-                /* Medium-long line, break before non-NUL, non-character byte. */
-                (col>=16 && (prev==0 || prev>=0x20) && 0<c && c<0x20)
-            ) {
-                fputs(",\n", f);
-                col=0;
-            } else {
-                fputc(',', f);
-            }
-        }
-        fprintf(f, c<0x20 ? "%u" : "'%c'", c);
-        prev2=prev;
-        prev=c;
-    }
-    if(postfix!=NULL) {
-        fputs(postfix, f);
-    }
-}
index c82bf3c..fdcf1f9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  writesrc.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1c158da..1ca111c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  xmlparser.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -209,7 +209,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
             goto exit;
         }
 
-        buffer=src.getBuffer(bytesLength);
+        buffer=toUCharPtr(src.getBuffer(bytesLength));
         if(buffer==NULL) {
             // unexpected failure to reserve some string capacity
             errorCode=U_MEMORY_ALLOCATION_ERROR;
@@ -278,7 +278,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
         pb=bytes;
         for(;;) {
             length=src.length();
-            buffer=src.getBuffer(capacity);
+            buffer=toUCharPtr(src.getBuffer(capacity));
             if(buffer==NULL) {
                 // unexpected failure to reserve some string capacity
                 errorCode=U_MEMORY_ALLOCATION_ERROR;
index aff9d88..75c8ed7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  xmlparser.h
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 02fe6eb..b156921 100644 (file)
@@ -121,7 +121,7 @@ $(ZICTARG):         $(OBJECTS) $(TDATA) yearistype $(srcdir)/tz2icu.h
                $(CC) $(CFLAGS) $(TZORIG_EXTRA_CFLAGS) $(LFLAGS) -I$(srcdir) $(OBJECTS) $(LDLIBS) -o $@
 
 $(TZ2ICUTARG): $(srcdir)/tz2icu.cpp $(srcdir)/tz2icu.h
-               $(CXX) -W -Wall  -I$(srcdir) -I$(top_srcdir)/common -pedantic $(srcdir)/tz2icu.cpp -o $@
+               $(CXX) $(CXXFLAGS) -I$(srcdir) -I$(top_srcdir)/common $(srcdir)/tz2icu.cpp -o $@
 
 $(ICUZDUMPTARG):       $(srcdir)/icuzdump.cpp
                $(LINK.cc)  -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/io  -pedantic $(srcdir)/icuzdump.cpp $(LIBICUUC) $(LIBICUDT) $(LIBICUI18N) $(LIBICUIO) $(LIBICUTOOLUTIL) -o $@
index 92d3eb6..91d5b37 100644 (file)
@@ -12,4 +12,5 @@
 Africa/Asmera ER
 America/Montreal CA
 Europe/Simferopol UA
+Pacific/Johnston UM
 
index 69c4848..3e5ed1d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  icuzdump.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
index def8f94..f0ee63e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 87fe3da..b88442f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************